Skip to content

Releases: Koncord/EnScript-IDE-Extension

v0.10.0

15 Jan 16:14

Choose a tag to compare

Release Notes - v0.10.0

🎉 What's New

P3D (MLOD) Model Viewer

  • P3D Viewing: View P3D model files directly in VS Code with 3D rendering
  • LOD Support: Switch between different Levels of Detail (LOD)
  • Mesh Details: Mesh properties display including vertices, faces, rvmats, and lod properties
  • Texture Preview: Integrated texture preview with support for .rvmat files

Preprocessor Support

  • Enhanced Preprocessor: Enhanced preprocessor support for EnScript with ambiguous defines
  • Enhanced Error Reporting: Improved error messages for preprocessor issues with unclosed directive detection
  • Directive Handling: Enhanced preprocessor lexer with better directive parsing

Image and Texture Preview

  • ImageSet Support: ImageSet preview capability
  • Textures Support: Support for EDDS and PAA image formats preview

Enfusion Config Parser

  • Enfusion Config Parser: Parser for Enfusion imageset, layout, ptc, emat files
  • Widget Styles: Parse and process widget styles

Code Formatting

  • AStyle Integration: Integrated AStyle code formatter for EnScript - keep your code clean and consistent

Syntax Highlighting Improvements

  • Major Syntax Overhaul: Complete rework of syntax highlighting
  • Doxygen Hover: Show Doxygen comments on hover for better code documentation
  • Updated Grammars: Improved grammar files for Enfusion and CPP configurations

UI/UX Enhancements

  • TypeScript Migration: Converted webview scripts to TypeScript for better type safety and maintainability
  • Common Styling: Unified CSS styles across various webviews for a consistent look and feel

🔧 Fixes & Improvements

  • Fixed VSCode forks compatibility issues (downgraded requirements to 1.105.1)
  • Updated activation event to trigger on workspaceContains for config.cpp
  • Resolved multiple linter errors and warnings throughout the codebase
  • Removed dumpClasses functionality and related unused commands
  • Code refactoring for better maintainability

Big thanks to @WoozyMasta for contributions!


Full Changelog: v0.9.0...v0.10.0

v0.9.0

19 Dec 15:29

Choose a tag to compare

Release Notes - v0.9.0

🎉 What's New

Diagnostic Suppression System

  • Comment-Based Suppression: Selectively disable specific diagnostics using // enscript-suppress[rule-id] comments
  • Flexible Control: Use // enscript-suppress to suppress all rules, or specify rule IDs in square brackets like [undeclared-variable, type-mismatch]
  • Inline & Next-Line Support: Works both inline and for the next line of code
  • Automatic Re-validation: Diagnostics automatically re-validate when configuration changes

Document Symbol Support

  • Enhanced Code Navigation: Full document symbol support for browsing and jumping to classes, methods, and variables
  • Position Tracking: Enhanced declaration parsing with precise position tracking

New Diagnostic Rules

  • Missing Override Detection: Catches when override keyword is missing in derived classes, with distinction between method overloads and overrides
  • Access Modifier Mismatch: Detects mismatched access modifiers in overridden methods
  • Variable Redeclaration: Variable shadowing rule now detects redeclarations in addition to shadowing

Enhanced Type System

  • Generic Type Recovery: Comprehensive generic type recovery and foreach variable type resolution
  • Auto Type Inference: Full type resolution for auto variables in foreach loops with inferred type display in hover
  • Typedef Resolution: Improved typedef resolution in type compatibility checks and method chaining
  • For Loop Scope: Updated for loop handling to properly reflect function-level scope with support for comma-separated variable declarations

Symbol Resolution Improvements

  • Modded Class Support: Enhanced class member resolution by merging definitions from modded and original classes
  • Inheritance Chain: Correctly traverse inheritance chain when resolving class members
  • Global Function Pointers: Support for global functions as function pointers in undeclared variable rule
  • Static Cast Handling: Special handling for static Cast method calls in undeclared entity rules

Parser & Analysis Enhancements

  • Constructor/Destructor Detection: Enhanced detection and error handling
  • Vector Type Handling: Refined numeric type promotion logic to exclude vector types, with improved compatibility checks for vector-like string literals
  • External File Diagnostics: Improved diagnostics handling for external files by checking document state

Engine Constants

  • Added script module and constant types to engine constants

🔧 Fixes & Improvements

  • Adjusted error reporting positions for unexpected ">" token and variable declarations
  • Simplified check method parameter type in VariableShadowingRule
  • Removed unused imports to satisfy ESLint rules
  • Code refactoring for better maintainability

📦 Dependencies

  • Bumped @types/node from 24.10.1 to 25.0.2
  • Bumped @types/vscode from 1.106.1 to 1.107.0
  • Bumped esbuild from 0.27.0 to 0.27.1
  • Bumped eslint from 9.39.1 to 9.39.2
  • Bumped typescript-eslint from 8.48.0 to 8.48.1
  • Bumped inversify from 7.10.4 to 7.10.6
  • Bumped marked from 16.4.2 to 17.0.1

Full Changelog: v0.8.0...v0.9.0

v0.8.0

01 Dec 22:32

Choose a tag to compare

Release Notes - v0.8.0

🎉 What's New

Debug Adapter Protocol (DAP) Support

  • DayZ Debug Server Integration: Implemented complete VSCode debugging integration for DayZ
  • Enfusion Debug Protocol: Added messaging layer for Enfusion debug protocol communication
  • Full debug adapter implementation with network buffer handling

Enhanced Type System

  • Generic Type Support: Improved type resolution for generic types and out parameters
  • Static Member Access: Enhanced member expression resolution to support static member access for class names
  • Typedef Resolution: Added full type resolution for typedefs in member expressions
  • Enum Arithmetic: Type resolution now supports arithmetic operations on enums
  • Cast Method Enhancement: Improved ClassName.Cast method type resolution with prioritized class name checks
  • Function Type Compatibility: Added special case handling for function types in type mismatch checks

New Diagnostic Rules

  • Variable Shadowing Detection: New rule to catch variable shadowing issues
  • Incorrect Ref Modifier Usage: Detects improper use of ref modifier in code

Symbol Resolution Improvements

  • Local Scope Priority: Symbol resolution now prioritizes local scopes for better accuracy
  • Modded Class Support: Enhanced inheritance chain checks and member resolution for modded classes
  • Private Members: Include private members in class definition search with updated visibility handling
  • Multiple Class Definitions: Properly merge all modded class definitions in member lookup

Parser Enhancements

  • Thread Keyword Support: Added support for the thread keyword
  • Lenient SDK Parsing: Enabled lenient parsing for SDK files to handle minor syntax issues (e.g., missing semicolons)

Hover Information

  • Inferred Type Display: Enhanced hover tooltips to show inferred types for parameters and variables

Engine Constants

  • Added widget type IDs
  • Added button mask constants

🔧 Fixes & Improvements

  • Fixed lint issues across the codebase
  • Improved error handling in logger
  • Removed unused imports
  • Code refactoring for better maintainability

📦 Dependencies

  • Updated to latest dependency versions
  • Bumped @types/node from 24.8.1 to 24.10.0
  • Bumped @eslint/js from 9.38.0 to 9.39.1
  • Bumped rimraf from 6.0.1 to 6.1.0

Full Changelog: v0.7.0...v0.8.0

v0.7.0

03 Nov 14:13
ce6cf2c

Choose a tag to compare

🎉 New Features

Type Checking & Diagnostics

  • Type Mismatch Detection: Comprehensive type checking for assignments, return statements, and function calls

    • Detects type mismatches in variable assignments and function returns
    • Validates function call parameter types with detailed error messages
    • Supports implicit conversions (string to vector, int to bool with warnings)
    • Handles bitwise operations on enums
    • Supports generic type parameters in assignments
    • Improved vector arithmetic operations and method call return type resolution
  • Enhanced Method Detection: Better undeclared method diagnostics

    • Specific diagnostics for static method call mismatches
    • Improved detection of static methods called on instances

Code Completion Improvements

  • Smart function/method completion with context-aware semicolon insertion based on return types
  • Enhanced completion item formatting
  • Keyword Completion: Added completion items for EnScript keywords

Syntax Highlighting

  • Updated syntax grammars with enhanced pattern matching for preprocessor directives

🐛 Bug Fixes

  • Fixed validation for generic type parameters (#10)
  • Resolved inherited method detection with proper class definition merging
  • Improved type checking for inherited methods
  • Allowed static method calls on instances where appropriate

🧪 Testing

  • Added comprehensive diagnostic test helpers
  • New unit tests for undeclared function/method rules
  • Enhanced test coverage for type mismatch scenarios

🔧 Parser & Analyzer Improvements

  • Enhanced error handling in ExpressionParser and Parser with detailed diagnostics
  • Improved TypeResolver with better arithmetic and bitwise operation handling
  • Enhanced symbol resolution utilities

Full Changelog: v0.6.1...v0.7.0

v0.6.1

27 Oct 14:58
167e59d

Choose a tag to compare

v0.6.1 Release Notes

  • feat: Add global SDK base declarations and enhance test setup with file loading
  • fix: Improve type resolution by creating stable cache keys based on scope context
  • chore: Update version from 0.6.0 to 0.6.1 in package.json

Full Changelog: v0.6.0...v0.6.1

First public release

26 Oct 22:01
ad2956a

Choose a tag to compare