# Changelog ## 0.8.3 - Removed the now-unused `tads3.useExperimentalParser` setting and the unused `litegraph.js`/`cytoscape` dependencies ## 0.8.2 ### Added - **File icon theme** — light/dark themed file icons for TADS3 file types (`.t`, `.h`, `.t3`, `.t3m`). ### Fixed - **Various TADS3 grammar parsing gaps** the Tads3v2 grammar now handles: anonymous object expressions with semicolon-separated properties (`(object: Super { a=1; b=2; })`), `for`-in loops with extra/reordered counter locals and no-`local` bindings, `foreach` without `local`, trailing commas in call args, `[badness N]` qualifiers nested in grammar alternations, `step` used as an identifier, and comma-operator statements. - **Preprocessor could drop a file's trailing `;`** — `postProcessPreprocessedResult`'s line-count trim could cut a genuine terminating `;` when preprocessing surplus (from macro-expansion line drift) landed mid-file instead of at the end; it's now recovered when evidence of a real terminator being cut is detected. - **for-in/foreach loop variables missing from scope locals** — `local x` in `for (local x in ...)` and `foreach (local x in ...)` are now registered as visible locals (go-to-definition, locals-at-cursor). ### Removed - **Original Tads3 parser/lexer** — the pre-Tads3v2 ANTLR grammar and generated parser/lexer/listener/visitor files under `server/src/parser` have been deleted now that the Tads3v2 AST-based pipeline (`workerV2`) fully covers standard-library parsing. `Tads3v2.g4` is now the only grammar source. - **Cached library feature** — dropped disk caching of parsed adv3/adv3Lite library symbols (`tads3.enableLibraryCache` setting, `tads3.clearCache` command) along with its supporting code in `parse-workers-manager.ts`. It added complexity without a clear performance win now that parsing is fast. - **Unused configuration settings** — removed `tads3.adv3.library`, `tads3.adv3Lite.library`, `tads3.lib`, and `tads3.include`, none of which were ever read by the extension. ## 0.8.1 ### Fixed - **Preprocessor line-ending regression on Windows** — fixed `preprocessTads3Files` handling of CRLF input/output so line mapping remains correct across files and directives. ## 0.8.0 ### Added - **Total preprocessor rewrite (optimized)** — the preprocessor pipeline has been rebuilt for better throughput and lower overhead on large projects. - **Call hierarchy support** — inspect incoming and outgoing call relationships for methods/functions directly from the editor. - **Smarter completions** — completion suggestions now use more contextual information, improving relevance while writing code. - **Visual map renderer rewrite with React Flow** — the map view internals were modernized for better visual appearance. - **Disassembler features** — new commands for disassembling methods and, when needed, complete game disassembly. ### Fixed - **Major parsing performance improvement (SLL-first parsing)** — parsing now avoids LL mode for very large library files, reducing full-project parse time from 19s to 3s. - **Intrinsic parsing coverage expanded** — parser support now includes intrinsic declarations that were previously missing since 0.7.0 when the parser was remade. - **Debug hover member evaluation bug** — evaluating members while debugging now resolves correctly. - **Tree parent containment bug** — fixed incorrect containment/parent relationships in tree data structures. - **Virtual document UX improvements** — preprocessed and assembly virtual documents now open in a more disposable workflow (easy close, no save prompt). ### Notes - **Main focus of this release:** parser/preprocessor architecture and performance, plus major developer-experience features (call hierarchy, smarter completions, disassembly, and map renderer modernization). ## 0.7.0 ### Added - **Experimental Tads3v2 parser** — a new ANTLR4-based parser + pipeline (`workerV2`) built on a typed AST layer. It produces the same `DocumentSymbol` output as the original parser but uses a cleaner visitor-based design that will underpin future language intelligence improvements. - **Tads3v2AstEvaluator** — New module for evaluating and traversing ASTs (Abstract Syntax Trees) produced by the Tads3v2 parser. This lays the groundwork for future features such as static code analysis, symbol resolution, type inference, and advanced refactoring directly in the LSP. In the long run, a robust evaluator will enable smarter code completions, deeper diagnostics, and improved semantic understanding of code in the editor. - **FROBD DAP debugger support** (frobd binary is required) - **Propertyset support in the outline** — `propertyset` blocks now appear as named container nodes in the document outline (e.g. `*DobjOpen`), with their methods listed as children using the expanded names (e.g. `checkDobjOpen`, `actionDobjOpen`). - **`tads3.useExperimentalParser` setting** — choose between the original parser (`worker`) and the new Tads3v2 parser (`workerV2`). Defaults to `true` (new parser). Set to `false` to revert to the original. Requires a restart after change. - **Parser performance** — pre-filling the ANTLR token buffer before parsing (`tokens.fill()`) yields a ~3× speedup on large library files. Applied to both workers. - VS Code theme coloring in the map view ## 0.6.5 ### Added - Handy Completion snippets added for all objects deriving from 'Thing'. - Improved code completions: expand templates to snippets during completions ### Fixed - Better error reporting if utf-8 is used in paths - code actions - allow simple assignment expressions to be expanded into local assignments. - Adding new project files now adds language specific headers. Currently supported language codes are: en_us, sv_se, de_de, cs_cz. ## 0.6.4 ### Added - code actions - now there's a code action to allow a quickfix for creating local variables. - A snippet is created when adding classes via auto completions, this in unison with code actions and function signatures will help increase code writing effiency. ### Fixed - The current parameter in the signature helper now works better. - A bug concering the signature helper was fixed. (Issue #42) - Cached symbols stopped working in 0.6.3, now it is working again. - The preprocessor now works even if there's warnings in the current source code. (This used to cause the parser not being able to update the symbols when a file was saved.) - Adding line breaks in the text will now translate the symbols so they are still clickable, even if no save has been done. ## 0.6.3 ### Fixed - Upgrades of dependencies - the client/server now adheres to the language server protocol of version 9.0.1. - Macro definitions lookup now goes to the correct row. - The extension downloader now caches files correctly, displays the options better and doesn't crash on cancel. Also, the abort button is removed. - Makefile autocompletions works better by not trying to add -source/-lib and focusing only on autocompleting filepaths. - go to definitions now walks hierarchically up the inheritance chain to the first object definitions regarding properties. - Going to macro definitions now goes to the correct row. - Completions can now automatically suggest members/inherited members of the class while writing code blocks in methods. - Completions now suggests macro definitions. - Go to references now returns more hits than before. - Grammar adjustment for the Parser, anonymous object declaration on root level is now parsed too. - Bug fixed that caused some preprocessed files to become shorter and causing the parser to fail. ## 0.6.2-alpha ### Fixed - Script folder is longer created in another language besides Tads2/Tads3 - A fix was made to make the install extension script download and install all extensions. (Sometimes it didn't work.) - The extension installer is refined to allow offline installations using cached extensions. - Setting for producing only workspace symbols via CMD/CTRL-T was missing. It is now added. The way library files was filtered was a bit flawed and has been changed. ### Removed - The formatter providers are now disabled since they don't behave as expected all the time. ## 0.6.1-alpha ### Fixed - Configuration for name of script folder - link provider fix - hover provider fix - signature provider fix - replay script fix - XML->JSON conversion of textmate language syntax ## 0.6.0-alpha ### Added - Signature help provider for functions/methods. Now a help dialog will appear above when writing function/method calls where documenation, total parameters per signature and current parameter are visualized. - Implementation provider, get easily access to all classes inheriting the specified class. To use: right click on the name of the class and select "Go to Implementations"/"Find all Implementations". - References provider, easy access to all references of a certain keyword, To use: right click on the keyword and select "Go to References"/"Find all References". - Document formatter provider, formats the current document. To use: right click in the document and select "Format document". - Document range formatter provider, formats a selected range within a document. To use: select lines and right click in the document and select "Format Selection". - File completions are now available for the tads3 makefile. File uri's are collected based on the project's structure and directories specified via -FL -FI flags in the makefile. - Links are added to the makefile so every (valid) tads source file uri can be opened up with a ctrl-click. - Added icon for the extension for the marketplace. - Added a view for game scripts in the explorer pane. Now scripts can be run by right clicking it and selecting either: "Restart & run script" / "Run script" (Automatic script generation is only possible in the windows version right now. ) ### Fixed - Snippets renamed to be easier accessable for Room, Things, Actor, ActorState - Fixes/tweaks here and there. - Spell fix (Thanks to StridingDragon) ## 0.5.1-alpha ### Fixed - Removes the dialog for tads2 project, so it won't show up on other types of projects. ## 0.5.0-alpha ### Added - Tads2 support! Tads2 projects now has the same support for many of the features that Tads3 projects has, e.g the outliner, visual map, goto-definitions, workspace symbols, game runner etc. - A setting was added to only produce workspace symbol (CTRL-T) result from project files and not library files (might increase performance on larger projects). ### Fixed - the property "in" is no longer called unnamed in the outliner. - Ctrl-clicking on a symbol name will not populate a (redundant) match from the same file and position any longer. - Snippets are now added differently depending on library used. Different snippets will appear depending on using Tads3 adv3/adv3Lite or Tads2. - snippets for interpolated expressions such as \<\\> \<\\> \<\\> or as \<\\>\<\\>\<\\> has been added. As well snippets and auto pairing for \quotes\ - Auto pairing quotes/aphostrophes/comments won't happen inside strings anymore. ### Notes - The requirements for Tads2 support is having access to the "t3make" compiler, the tads2 compiler ("tadsc" on linux/mac or tc32.exe on windows) as well as the library path. Modify if needed the following settings: - "tads.preprocessor.path" (default value: "t3make") - "tads2.compiler.path" (default value: "tadsc" for usage with frobtads, use tc32.exe for windows) - "tads2.library.path" (default value: "/usr/local/share/frobtads/tads2/") When opening up a folder containing a tads2 project the extension will automatially try to find the "main" file in order to preprocess all the other files. If it can't find a single such file it will give a quickpick menu showing the candidates. If escaping/cancelling that quickpick menu you'll receive a full open file window selection next time a file in the project is saved. When a main file is found all the files are preprocessed and parsed. (This information is also added to README.md under the section "First time users - Tads2 notes") ## 0.4.0-alpha ### Added - A command to add files and create makefile entries has been added - Macro definitions are now also indexed and can be peeked upon and opened up with CTRL-click. ### Fixed - Fixed an issue with definitions of propertyset that weren't displayed correctly - Fixed issue with the errors parser so it now displays the correct source file of the error - Fixed issue so that all symbols are found with the workspace symbol search (CTRL-T) - Fixed issue that was caused by auto closing quote pairs within strings Many thanks to John Ziegler for the extensive bug reporting! ### Notes - If earlier versions has been used the library cache might need be cleared, or you will still suffer from numerical artefacts in the outliner on propertyset symbols. - Run the command with ctrl-shift-P: "Tads3 command: Clear cache for standard libraries adv3/adv3Lite." - Either: restart vscode, or run the following command with ctrl-shift-P: "Tads3 command: Set which makefile (.t3m)..." (this will trigger a complete reparse) ## 0.3.0-alpha ### Added - A workspace symbol provider is added. You can now use the key combination CTRL-T and use fuzzy search to locate a symbol located in any file. - Now the visual map, if opened, auto redraws itself on each new save that leads to a successful parse. - A warning dialog is shown when the user tries to compile the project without setting -Fy or -Fo in the makefile Thank you John Ziegler for bringing up the idea of a workspace symbol provider! ### Fixed - Fixed an issue that caused a dialog to select a tads3 Makefile to appear in other languages besides tads3 - Fixed an error that was caused by cancelling the create new tads3 project dialog - Expand Content-Security-Policy to allow inline script (so map level buttons can used) - Map levels can only be changed to existing planes # Changelog ## 0.2.0-alpha ### Added - Hovering on classes, objects, methods and properties now reveals documentation from library source code - Text Completion reveals documentation on class level Thank you for the suggestions Tomáš Bláha and Luděk Šťastný! ### Fixed Different OS Platform issues and tweaks: - Fixed a bug that filtered libraries incorrectly on windows platform. - Fixed a bug that didn't display outliner symbols on windows platform (caused by case insensitive file paths). - Fixed a log output bug that always displayed adv3Lite even though adv3 library was used - Fixed a link issue on windows, file paths are now universally handled in the LinkProvider - Fixed create new project command: linux default lib/include dirs removed if not existing (like on windows) - Fixed making sure t3make path is within quotes during compilation - Slightly better efficiency during cached library import/export - Add guarding so the preprocessing command cannot be spammed with too frequent saving Major thanks to Jost Schenck for helping out with several bugs on the windows platform! ## 0.1.0-alpha ### Added - Added LinkProvider (Filenames in include directives is now possible to ctrl-click) - Added HoverProvider (for templates, now all templates will be shown above when hovering over a class/- object) - Templates gets added to the outliner ### Fixed - Now Searches first for the default makefile to Makefile.t3m, so Makefile-web.t3m or others aren't favored first. - Now Reparses the whole project on changing makefiles via command "setMakefile" and improves user feedback during parsing. - Improves parser for some cases that weren't covered before (Only affected the logs by cluttering them) - Fixes diagnostics row issue that caused compiler errors to be misplaced by one row - Fixes Codelens issue where an error would show upon clicking a preprocessed codelens while the map editor was visible - Fixes issue where preprocessed cached documents not always kept the same length as the correspondent unprocessed text - Now ensures that obj folder is existing during diagnosis, so there will be no (strange) error reporting on that. ### Notes - If earlier versions has been used the cache needs to be cleared to make use of the HoverProvider (since the standard library needs to be reparsed.) This is easiest done in two steps: - Run the command with ctrl-shift-P: "Tads3 command: Clear cache for standard libraries adv3/adv3Lite." - Restart vscode ## 0.0.6-alpha Initial alpha release