# Changelog

All notable changes are documented here, newest first. Releases up to `0.1.20` are upstream's
semantic versions; later entries use the timestamp scheme.

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

### Fixed

- `pnpm package` failed since the explainer was added (2026-10-28): `.vscodeignore` did not exclude `explainer/`, so vsce tried to pack its `node_modules` links ("not a file"). It now packages: 21 files, 644 KB.

### Added

- The explainer shows the theme: VS Code with SynthWave '84 and Neon Dreams on, the extension installed from its package.

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

### Added

- The explainer site is published: <https://synthwave-vscode.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-1916] - 2026-10-30 - 19:16

### Changed

- Repository: this fork now has its own, `gitlab.com/nifty-little-tools/vscode-extensions/synthwave-vscode`, in the README, the explainer and `package.json`. Robb Owen's original stays credited in the README's Credits, the explainer and `LICENSE`, and is kept as the git remote `upstream`, fetch only.

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

### Documentation

- README reordered to the workspace structure (`_templates/README.md`): the key line (MIT), Features, Installation (with upgrading), Usage, Parameters/Flags (settings and commands), How it works, Development, Privacy & security, Credits (Robb Owen's attribution and original text, unchanged) and Licence. Bold is written one way throughout.

### Fixed

- `explainer/package.json` declared AGPL-3.0 in an MIT repository; the field is gone (the package is private and `LICENSE` governs it).

## [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 this fork 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: "Building from source" names mise and the `packageManager` pin; it still described Volta, which this repository dropped for mise.

## [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

- `@vscode/vsce` 4 (from 3); 8 tests pass, `pnpm audit` clean.

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

### Added

- README `## Privacy & security`: no network requests or telemetry; settings live in VS Code's settings; the one write outside them is removing the old Neon Dreams patch from `workbench.html` when it is still present.

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

### Security

- Dependency CVE sweep (global §8): `pnpm update` within the declared ranges plus `pnpm audit --fix` overrides. `pnpm audit` went from 5 high, 6 moderate, 3 low to **none**: brace-expansion GHSA-qhr7-859c-m2p7 / GHSA-6j4f-fj2g-mc7p, markdown-it GHSA-gfr2-rv44-r23c, @azure/msal-node GHSA-xcx6-jx8p-x3h5, undici GHSA-xjj6-f33q-929c (all via `@vscode/vsce`, a dev tool). `pnpm test` passes.

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

### Changed

- Volta removed (deprecated); Node and pnpm now come from `mise.toml`.
- `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.

## [2026.9.16-118] - 2026-09-16 - 01:18

### Added

- **Settings section:** Settings, Extensions, SynthWave '84 now holds **Neon Dreams** (on or off, status bar
  toggle, brightness, glow off, and glow per colour: red, pink, yellow, green, blue) and **Editor Chrome**
  (editor gradient, tab stripe, activity bar stripe, badges, lightbulb).
- **Open Settings** command, also linked from the **Neon** status bar tooltip.
- **Reload prompt:** if the extension's own settings are missing when it starts or when Neon is toggled, it
  offers **Reload Window** instead of failing with "not a registered configuration". That error was
  reported after installing a new build over one already running; reloading the window resolves it.
- **Theme:** `semanticTokenColors` pin semantic highlighting to the palette (types and namespaces red,
  functions cyan, variables, properties and parameters pink, keywords yellow, numbers coral, comments
  lilac). TypeScript renders exactly as before, verified character by character.

### Changed

- **Commands:** Enable Neon Dreams and Disable Neon Dreams are gone. **Toggle Neon Dreams** and the status bar
  item replace them.
- **Theme palette for current VS Code:** checkbox and input borders are visible (`#b893ce99`, 3.05:1 on the
  editor background) and so is the keyboard focus ring (`focusBorder` `#1f212b` → `#ff7edb99`, 3.33:1).
  Bracket pairs use yellow, pink and cyan instead of VS Code's gold, orchid and blue; inlay hints use lilac
  `#848bbd`; suggestion and outline icons are coloured by kind from the palette; the modified-setting
  indicator and secondary buttons are themed.
- **Chrome CSS** is split into one file per setting under `src/chrome/`.
- **README** rewritten as a fork: what the fork does, attribution and licence, a settings reference, and
  Robb Owen's original introduction kept as he wrote it.

## [2026.9.16-27] - 2026-09-16 - 00:27

### Added

- **Neon toggle:** a **Neon** status bar item (shown while SynthWave '84 is the active theme) and a
  "Toggle Neon Dreams" command flip the glow on and off.

### Changed

- **Neon Dreams v3, fewer limits:** the CSS now applies window-wide from the decoration type alone,
  gated on the class VS Code gives the active theme. The glow reaches hovers and peek views, the tab,
  activity bar and editor accents no longer need an open editor, and nothing applies under another
  theme. No text is decorated any more, so the per-editor bookkeeping is gone. Verified in editors,
  hovers and with no editor open on VS Code 1.137.

### Fixed

- `editor_chrome.css`: removed a lightbulb rule whose selector list was invalid (a missing comma made
  browsers drop it) and the redundant rule before it; the remaining rule already styles every lightbulb.
- Theme: removed `activityBar.dropBackground`, a colour VS Code no longer reads.

### Removed

- `src/js/theme_template.js`, the script the pre-v2 patch injected into VS Code.

## [2026.9.16-6] - 2026-09-16 - 00:06

### Changed

- **Neon Dreams v2, no more "corrupt installation":** the glow no longer patches VS Code's
  `workbench.html`. It now rides on one editor decoration per visible document, whose styles carry
  nested CSS: `&.mtkN` rules restyle the five glow colours, and `:root:has(&)` carries the editor
  chrome. It applies immediately, needs no restart or administrator rights, and survives VS Code
  updates. The `mtkN` ids are derived from the theme the same way VS Code assigns them.
- **Commands:** Enable and Disable Neon Dreams toggle the new `synthwave84.neonDreams` user setting.
  Both also remove the 0.1.20 patch from VS Code's files if it is still there.
- **Settings apply live:** `synthwave84.brightness` and `synthwave84.disableGlow` no longer need the
  command re-run.
- **Engine:** `^1.74.0` → `^1.90.0`, because the nested CSS needs the newer Chromium that VS Code
  ships. Verified on VS Code 1.137.
- **Activation:** `onStartupFinished`, so an enabled glow returns with every window.
- **Theme file:** 22 trailing commas removed so the extension can read it as strict JSON; the parsed
  data is identical.

### Fixed

- A brightness below about 0.063 produced a 7-digit hex colour and silently dropped the glow. The
  alpha is now always two digits.
- Activation no longer writes `extensionName` and `cntx` onto the extension host's shared
  `globalThis`.
- A missing workbench file is no longer reported as "run as administrator".

### Added

- `src/neon.js` (the pure CSS and token-id logic) with `node --test` checks, run by `pnpm test`.
- Runtime messages localised through `vscode.l10n` (`l10n/bundle.l10n.json`, English baseline).

## [2026.9.15-244] - 2026-09-15 - 02:44

### Changed

- **Attribution:** this fork's work is © Arziel under the same MIT licence. `LICENSE` keeps Robb
  Owen's 2019 notice and adds Arziel's; `package.json` names Arziel as `author` and Robb Owen under
  `contributors`; the README opens with a notice crediting Robb Owen and linking the original
  repository.
- **Default branch:** `master` → `main` (local rename; it still tracks upstream `origin/master`).
- **Line endings:** `.gitattributes` normalises the repository to LF (`* text=auto eol=lf`, binaries
  marked). Working-tree files that were checked out as CRLF were converted; no content changes.
- **Docs:** the README links the pre-0.1.0 Custom CSS method to upstream's guide, pinned at commit
  `ecfa2fe`, and its Contributing section no longer sends contributors to upstream's guide.

### Removed

- `synthwave84.css`, `synthwave84-noglow.css` and `README_LEGACY.md`: assets for the pre-0.1.0
  "Custom CSS and JS" glow method, superseded by Neon Dreams. They remain available upstream at
  `ecfa2fe`.
- `CONTRIBUTING.md`: upstream's contribution guide and code of conduct, which directed contributors
  and conduct reports to the original author.

## [2026.9.15-224] - 2026-09-15 - 02:24

### Changed

- **Engine:** `engines.vscode` `^1.33.0` → `^1.74.0`. The `onCommand:` activation events are gone:
  VS Code generates them from `contributes.commands` since 1.74.
- **Localisation:** manifest strings moved to `package.nls.json` (`en` baseline). Commands use
  `category` instead of a hard-coded `Synthwave '84:` title prefix; palette text is unchanged. The
  theme `label` stays literal because VS Code stores it as the `workbench.colorTheme` value.
- **Settings:** `synthwave84.brightness` is validated to 0–1 in the Settings UI. Both settings are
  `application`-scoped, because Neon Dreams writes them into the VS Code install for every workspace.
- **Metadata:** declared `license: MIT` (matching `LICENSE`) and
  `capabilities.untrustedWorkspaces.supported: true`, so the Neon commands stay available in
  Restricted Mode. The extension never reads workspace files.
- **Package manager:** npm → pnpm (`package-lock.json` replaced by `pnpm-lock.yaml`). Added
  `@vscode/vsce` 3.9.2 and `pnpm package` (`vsce package --no-dependencies`), so no stray
  `node_modules` ships. The marketplace `0.1.20` VSIX bundled an undeclared `semver`.
- **Toolchain (security):** Volta pins Node 24.21.0 and pnpm 12.4.1. The machine default was Node
  24.17.0, which predates the 24.18.1 security release: CVE-2026-56846, CVE-2026-56848,
  CVE-2026-58043 (high); CVE-2026-56850, CVE-2026-58040, CVE-2026-58041, CVE-2026-58042,
  CVE-2026-58045 (medium); CVE-2026-56847, CVE-2026-58039, CVE-2026-58044 (low).
- **Version:** moved to the timestamp scheme. The `HHMM` part drops its leading zero because semver
  forbids leading zeros in numeric pre-release identifiers, and `vsce` rejects them.

### Added

- `.markdownlint.jsonc` and `CHANGELOG.md`; `*.vsix` is gitignored.
- README: "Building from source" section; existing markdownlint warnings fixed.
