Releases: prmichaelsen/freemarker-vscode
Release list
v0.1.9 — remove dead activation event onFileSystem:ftl
Removes the dead onFileSystem:ftl activation event from package.json.
The event fires only when VS Code opens a URI with scheme ftl: (the FileSystemProvider extension-point trigger). No FileSystemProvider is registered; the declaration has been on disk since v0.0.4 (March 2025, commit 41bdcd3 — the same scaffolding commit that introduced the v0.1.8 dead command declarations). onStartupFinished (still declared) preserves the current activation behavior — no user-visible change.
Two side finds logged for future wakes:
- The
.vsixships ~30 MB ofaws-sdkpulled in byclient/src/components/telemetry/Logger.tseven though telemetry defaults tofalse.vsceitself flags 'consider bundling your extension.' Phase 2 architecture wake. onStartupFinishedis eager (every VS Code launch activates the extension). A switch toonLanguage:ftlis a deliberate behavior change for lazy activation. Phase 2 architecture wake.
tsc -b clean; 30 / 30 jest tests pass.
v0.1.8 — remove dead command declarations
Removes freemarker-vscode.addFile and freemarker-vscode.checkForUpdates from contributes.commands — both were declared since v0.0.4 (March 2025) with no registerCommand site, so invoking them from the Command Palette returned 'command not found'.
The remaining contributed command (freemarker-vscode.debugParser — "FreeMarker: Debug parser") is unchanged.
README.md "Commands" section trimmed from three entries to one to stay consistent with what actually works.
No test-surface change; tsc clean; 30/30 jest tests green.
See CHANGELOG.md for full details.
v0.1.7
fix(freemarker-vscode): v0.1.7 — wire VS Code Settings UI to runtime + Metrics.Hover cleanup
Bug fix
package.json declared the six user-facing settings under freemarker-vscode.*:
freemarker-vscode.watcherfreemarker-vscode.go-to-referencefreemarker-vscode.diagnosticsfreemarker-vscode.go-to-implementationsfreemarker-vscode.semantic-tokensfreemarker-vscode.telemetry
…but client/src/extension.ts read them via workspace.getConfiguration('freemarker-language-server').get(...). The two namespaces did not match, so toggling any of these settings in the VS Code Settings UI had no runtime effect. v0.1.7 renames the runtime namespace to match the user-facing one. The LSP transport id ('freemarker-language-server', used in new LanguageClient(...)) is unchanged — that is the internal client/server handshake name, not a config namespace.
Folded-in cleanup
- Removed three dead
featureflags fromextension.tsthat had no consumer:fileSystemProvider,testAdapter,debugParser. The corresponding keys (file-system,test-explorer) were not declared inpackage.json, so this is a no-op for the user-facing surface. - Removed the dead
Metrics.Hover.*block fromclient/src/components/telemetry/Metrics.ts(Hover.Cache.Hit,Hover.Cache.Miss,Hover.Found,Hover.NotFound). No publisher since v0.1.1 migrated hover from the client-side provider to the LSP server.
Tests
- 30 jest tests, all green.
- tsc -b: clean.
Out of scope (logged for a future wake)
package.json declares freemarker-vscode.addFile and freemarker-vscode.checkForUpdates commands with no registerCommand(...) site in client/src/. Either the registrations are missing or the declarations are stale; resolving this is a follow-on wake.
v0.1.6 — builtin documentationUri anchor drift fix
v0.1.6 — builtin documentationUri anchor drift fix
Per-anchor audit against the live FreeMarker manual surfaced ~24 builtin records whose #ref_builtin_<name> fragment didn't match any id= on the parent page. v0.1.6 introduces a BUILTIN_URL_OVERRIDES map consulted before the category-default URL builder. Every [Reference](url) link from hover/completion now lands on a verified anchor (or the correct page for the two deprecated builtins with no per-name anchor).
Covered
- Cross-page (route to
ref_builtins_expert.html):eval,interpret,new,has_content, plus the eightis_*builtins (which share#ref_builtin_isType). - Shared anchor on the category page:
min/max→#ref_builtin_min_max;round/floor/ceiling/int→#ref_builtin_rounding;string(numeric) →#ref_builtin_string_for_number;date/time/datetime→#ref_builtin_date_datetype;iso_utc/iso_local→#ref_builtin_date_iso. - No per-name anchor (page-only URL):
defaultandexistsare deprecated builtins the manual exposes only as page content.
Verification
tsc -bclean; 30 jest tests (up from 27).- Post-fix HEAD + anchor audit: all 86 unique catalog URLs return 200 (29 pages); all 65 URLs that carry a fragment land on a verified
id=on the parent page.
Closes the 'known limitation' the v0.1.5 changelog flagged for follow-on remediation.
v0.1.5 — fix 4x 404 documentationUri
Fix four broken canonical URLs introduced in v0.1.4:
break,continue→ref_directive_list.html(loop-control documented inside<#list>)nested→ref_directive_macro.html(page h1: "macro, nested, return")return→ref_directive_function.html(page h1: "function, return")
HEAD-check audit of v0.1.4's 33 unique reference pages surfaced these four 404s. Sibling-URL invariants added to directives.test.ts to guard against regression. 27 jest tests still passing; tsc clean.
Known limitation: pre-existing anchor drift in the 105 builtin #ref_builtin_<name> fragments (round/floor collapse under #ref_builtin_rounding; date/time/datetime use ref_builtin_date_* suffixed forms; eval/interpret/is_* live on ref_builtins_expert.html). Users following these links land on the correct page but not the correct subsection. Remediation is a follow-on wake.
See CHANGELOG.md for full notes.
v0.1.4 — documentationUri on catalogs + Reference link in hover/completion
Phase 1.x enrichment. Both DirectiveRecord and BuiltinRecord gain a required documentationUri field carrying the canonical freemarker.apache.org reference URL. All 33 directives + 81 builtins populated. catalogHoverMarkdown emits Reference on the trailing line; directive + builtin completion items do the same. 27 jest tests (up from 25), all green.
v0.1.3 — expanded test fixtures + broadened hover/completion coverage
Expands the integration test surface from 7 mocha tests to ~106 (94 hover + 9 completion + 3 diagnostics). Adds 8 new .ftl fixtures covering the directive catalog (~22 directives), builtin catalog (~52 builtins), nested directives, a realistic email-template, mixed FTL+HTML, and multi-site completion contexts. helper.ts memoizes the LSP-activation sleep so the expanded suite stays tractable. Jest unit tests unchanged (25, all green).
v0.1.2 — Phase 1 LSP: directive completion + builtin completion + catalog-fed hover + tests
Phase 1 ships
- v0.1.0: phase-1 catalog (32 directives + 82 builtins) + directive autocomplete
- v0.1.1: server-side catalog-fed hover + builtin
?autocomplete - v0.1.2: Jest unit tests (server) + Mocha electron integration tests
Install
Download freemarker-vscode-0.1.2.vsix from this release and install via VS Code:
code --install-extension freemarker-vscode-0.1.2.vsix
Or in the UI: Extensions → … → Install from VSIX.
Marketplace listing
Marketplace publish is pending the VS Code Marketplace PAT — the .vsix is install-ready in the meantime.
Publisher inside the archive: prmichaelsen.