# Changelog ## 0.4.2 ### Changed - Upgraded Toolbox Contract, React Shell, and Testkit dependencies to 0.2.2. - Moved the Toolbox icon and `add·ideas Toolbox` label to the fixed far-left block and placed Help, the XSLT-specific Gitea source link, Apps, and Personalize in reverse order in the fixed right cluster while keeping the app title and tagline centered. ## 0.4.1 ### Changed - Upgraded Toolbox Contract, React Shell, and Testkit dependencies to 0.2.1. - Adopted the stable shared top bar: the fixed left cluster contains Personalize, Apps, the XSLT-specific Gitea source link, and Help; the app title and one tagline remain centered; and the fixed far-right block contains the Toolbox icon and `add·ideas Toolbox` label. ## 0.4.0 ### Added - Added the unified Toolbox top bar with a centered app title, standard Help and Gitea source controls, Personalize, and Apps switching. - Added persistent System, Light, and Dark appearance choices shared with the Toolbox Portal. - Added a real dark CodeMirror configuration with dark editor surfaces, gutters, active lines, and syntax highlighting. ### Changed - Upgraded Toolbox Contract, React Shell, and Testkit dependencies to 0.2.0. - Replaced the app-specific Help and Source actions with the shared shell controls and manifest repository fallback. - Converted workbench controls, cards, diagnostics, dialogs, tables, and editor chrome to semantic theme variables. ## 0.3.2 ### Added - Added a typed Toolbox Contract v1 application definition and generated `toolbox-app.json` manifest. - Added the shared React application shell while retaining the XSLT-specific Help action. - Added standalone and toolbox-mode integration coverage, including nested-path static deployment checks. - Added deterministic, cross-time-zone release ZIP and SHA-256 generation with complete production dependency licence files. - Added a session-only SHA-256/revision trust gate that disables both transformation engines until the exact stylesheet is reviewed and confirmed. - Added conservative transformation input/output limits and a best-effort asynchronous deadline. - Added a prominent Source action and corresponding-source notice for the 0.3.2 tag. ### Changed - Made Vite build assets relocatable with a relative deployment base. - Resolved the lazily loaded SaxonJS runtime relative to the deployed application path. - Documented that the vendored SaxonJS 2.7 browser distribution is free to use under separate, non-open-source terms and is not part of the application's AGPL licensing. - Classified stylesheet processing conservatively and documented that executable stylesheets may access browser or network resources. - Documented that trusted SaxonJS can access same-site Toolbox data, send data over the network, or navigate away; the recommended portal CSP is defense in depth rather than containment. - Switched Toolbox SDK dependencies from local workspace links to the public token-free package registry. - Release packaging now refuses to overwrite same-version artifacts unless `--force` is explicit. ## 0.3.1 ### Added - Added global keyboard shortcut `Shift + Enter` to apply the current transformation. - Added global keyboard shortcut `F1` to open the help dialog. - Added shortcut hints for transformation and help actions. ### Changed - Bumped application version to `0.3.1`. ## 0.3.0 ### Added - Added browser-side SaxonJS dynamic compilation support. - Added support for raw XSLT 1.0, 2.0, and 3.0 transformations through the SaxonJS dynamic engine. - Added dynamic XSLT-to-SEF compilation in the browser using the full `SaxonJS2.js` browser artifact. - Added lazy loading for the SaxonJS browser compiler/runtime. - Added tests covering XSLT 1.0, XSLT 2.0, and XSLT 3.0 transformation scenarios. - Added project quality commands for type checking, linting, formatting, testing, building, and combined checks. ### Changed - Made `saxon-js-dynamic` the primary SaxonJS-based engine for raw XML + raw XSLT workflows. - Removed the earlier failed npm-bundled SaxonJS approach. - Removed the SEF-only SaxonJS placeholder from the main workflow. - Excluded vendored SaxonJS files from linting and formatting. - Cleaned up debug-only code and unused declarations. - Improved transformation engine registry and test coverage. ### Fixed - Fixed SaxonJS browser integration by using the full `SaxonJS2.js` artifact instead of `SaxonJS2.rt.js`. - Fixed dynamic compiler setup by providing a synthetic stylesheet base URI. - Fixed SaxonJS static parameter handling by passing an `XdmMap` instead of a plain JavaScript object. - Fixed browser compiler result extraction by reading `checkedOptions.principalResult`. - Removed duplicate XML output replacement after transformations. ## 0.2.0 - Added SaxonJS 2.7 as the default transformation engine. - Added lazy loading for the SaxonJS runtime so it is split into a separate build chunk. - Kept the native browser `XSLTProcessor` engine as selectable fallback. - Switched the default example stylesheet to XSLT 3.0 and added an `upper-case()` example. - Added a SaxonJS transformation test. - Updated README with SaxonJS runtime and licensing notes. ## 0.1.0 - Initial browser-only XSLT tools MVP. - Added three-panel XML/XSLT/output workbench. - Added native browser XSLTProcessor engine. - Added LocalStorage persistence, file open/save, overwrite confirmations, snippets, validation, and approximate explain table.