# Changelog

All notable changes to the "vectorizer" extension will be documented in this file.

## [2026.10.31-249] - 2026-10-31 - 02:49

### Fixed

- `.vscodeignore` excludes `explainer/`, and `engines.vscode` is ^1.140.0 to match `@types/vscode`. Packaging still fails: its script calls a `vsce` that is not installed, and it bundles the native `sharp`, which pnpm and vsce do not yet agree on (plan Phase 9).

## [2026.10.31-117] - 2026-10-31 - 01:17

### Added

- The explainer site is published: <https://vectoriser.niftylittletools.dev/> (GitLab Pages, built from `explainer/` by the new `.gitlab-ci.yml`), its `site` set for canonical links and the sitemap, and the README's **Live:** line.

## [2026.10.30-1844] - 2026-10-30 - 18:44

### Changed

- Renamed **Vectoriser** (British spelling, owner decision): the extension `name` and `displayName`, the command id (`vectoriser.traceToSvg`), the output channel, the settings panel, both logos, the README and the explainer.
- Repository: `gitlab.com/nifty-little-tools/vscode-extensions/vectoriser`, in `package.json` (was a group that does not exist), the README and the explainer.

## [2026.10.29-1959] - 2026-10-29 - 19:59

### Documentation

- README rewritten to the workspace structure (`_templates/README.md`): the key line, Parameters/Flags (every control of the settings panel with its default), Development and Licence. It had listed the `vectorizer.traceToSvg` command as a setting; the extension has no settings.

### Fixed

- `vscode:prepublish` ran `npm run compile`; it runs `pnpm run compile` (the workspace uses pnpm only).

## [2026.10.28-2156] - 2026-10-28 - 21:56

### Added

- **Explainer site** (`explainer/`, global §11): a static Astro page in the house Cyanotype style that says what the extension is, what it does, how to run it, and its privacy terms, written from this README. It is light by default with its theme remembered, has a toggleable intro and the privacy notice, and loads nothing from a third party. Built from the workspace's shared template (`_explainer/`), copied unchanged and checked by `check_conformance.py`; only `src/site.js` (its words) is this tool's own. It is published once the tool's domain is chosen (plan Phase 8). The README gains an "Explainer site" section.

### Fixed

- README: build steps use mise and pnpm (`pnpm compile`, `pnpm package`) instead of npm and npx.

## [2026.10.27-926] - 2026-10-27 - 09:26

### Changed

- Tooling: pnpm 12.15.0, the newest 12.x, pinned in `mise.toml` and in `packageManager` with its sha512; the lockfile's own pnpm entry follows, so `pnpm install --frozen-lockfile` passes on the new pin.

## [2026.10.27-911] - 2026-10-27 - 09:11

### Changed

- **Relicensed to AGPL-3.0** (owner decision 2026-10-27): `LICENSE` was a 15-byte stub reading only "# MIT License"; it is now the verbatim AGPL-3.0 text, and `package.json` says `AGPL-3.0-only`.
- `sharp` 0.35.5 and `esbuild` 0.28 as direct dependencies, replacing the overrides that forced them; TypeScript 7 (the compile uses only `tsc`). sharp verified natively: libvips 8.18.7 renders a PNG.

### Removed

- `opm.png` (5.6 MB) and `opm.svg`, unused test images (owner decision 2026-10-27).

## [2026.10.26-1926] - 2026-10-26 - 19:26

### Added

- README `## Privacy & security`: traces the chosen image on your machine and writes the SVG beside it; no network requests, telemetry or stored settings.

## [2026.10.26-1833] - 2026-10-26 - 18:33

### Security

- Dependency CVE sweep (global §8): `pnpm update` within the declared ranges plus overrides for `esbuild` 0.25 (GHSA-67mh-4wv8-2f99) and `sharp` 0.35.5 (libvips / libheif / librsvg advisories). `pnpm audit` went from 3 high, 1 moderate to **none**. `pnpm compile` passes; the sharp move from 0.33/0.34 to 0.35 is not yet exercised at runtime.
- `pnpm-workspace.yaml` `allowBuilds`: `esbuild` true.

## [2026.10.26-1813] - 2026-10-26 - 18:13

### Changed

- Initialised as a git repository on `main`, with a `.gitignore` (`node_modules/`, `out/`, `*.vsix`, `*.tsbuildinfo`).
- npm lockfile replaced by `pnpm-lock.yaml` (`pnpm import`, same resolved versions).
- `.gitattributes` normalising line endings to LF (`* text=auto eol=lf`) and marking binaries.
- `mise.toml` pinning Node 24 and pnpm 12.12.1 (global §9; replaces any hand-installed toolchain).
- `packageManager` pinned to `pnpm@12.12.1` with its sha512, so corepack in CI uses the same pnpm.
- `package.json` version moved to the timestamp scheme (`2026.1.191100` was not the `YYYY.M.D-HHMM` form).

## [2026.1.191100] - 2026-01-19 - 11:00

### Fixed

- Resolved gear/image tiling in Mask mode by implementing a multi-stage buffer normalization that ensures a 4-channel RGBA format is always passed to the tracing engine.

## [2026.1.191053] - 2026-01-19 - 10:53

### Added

- Manual "Process" button for explicitly triggering the trace operation.
- Performance optimization: Webview preview now utilizes a downscaled buffer (max 800px) for near-instant results.
- Full-resolution buffer reserved for final saving to ensure high-quality output.
- Integrated numeric inputs for all slider controls with real-time bidirectional synchronization.
- Zoom controls in the preview area: Zoom In, Zoom Out, and Fit to View.
- Interactive tooltips for all setting parameters and UI controls.
- New layout structure: Distinct main application area (image + sidebar) and a global footer for status and saving.

### Changed

- Optimized tracing engine parameters: reduced quantization cycles and switched to random sampling for improved speed.
- Set lower default values for number of colors and geometric parameters to ensure snappy performance on first load.
- Images now fit within the viewport by default and are contained within a responsive wrapper.

### Fixed

- Resolved issue where processed images failed to render by ensuring the presence of an alpha channel in the source buffer.
- Corrected path overlay positioning and visibility.

## [2026.1.190920] - 2026-01-19 - 09:20

### Added

- Initial release of Vectorizer extension.
- Support for PNG, JPG, JPEG, and BMP files.
- Interactive Webview for live parameter tuning.
- Sharp-based image compositing for multiple selections.
- ImageTracerJS integration for high-quality SVG generation.
- Path overlay feature for comparison between raster and vector.
- Color and Mask (monochrome) tracing modes.
