Repository navigation
Releases
v5.2.1
Changelog
All notable changes to the Shroom Space Theme extension are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[5.2.0] - 2026-10-08
Fixed
-
The extension destroyed the user's colour customisations.
applyAccentColorwroteworkbench.colorCustomizations = {}when the accent
was reset, erasing every customisation from every source. It also replaced the
whole object when setting an accent, dropping non-editor entries. -
The extension autoSwitch feature used extension IDs instead of theme
labels.workbench.colorThemematches against the theme label (Shroom
Space), not the publisher-prefixed ID (wyattau.shroom-space-theme). The old
value would have been silently ignored. -
The Tailwind plugin exposed colours from the wrong variants. Blue was the
variable colour that had been rotated away; pink, cyan and orange were from
the tritanopia and protanopia variants rather than the dark theme. -
Translucent backgrounds were composited over black instead of their real
backdrop. The light theme's banner reported 1.68:1 and is actually 7.07:1.
Bothwcag21andapcaLcwere affected.apcaLcadditionally composited
the background over the text (inverted layer order). -
Terminal ANSI palette: six of eight base colours were byte-identical to
their bright counterparts in every dark variant. Red, Green, Yellow, Blue,
Magenta and Cyan were all the same hex as BrightRed, BrightGreen,
BrightYellow, BrightBlue, BrightMagenta and BrightCyan. In a terminal this
means bold and coloured output is indistinguishable from regular output:
ls --colorcannot separate directories from symlinks, and a compiler cannot
visually separate errors from warnings.The bright colours are now derived by increasing CIELAB lightness while
holding hue, to the smallest step that separates the pair above 10 CIEDE2000
under normal vision, protanopia, deuteranopia and tritanopia. The same
pattern held in the light and tritanopia variants with different colours
collapsed; high contrast and monochrome were already correct.
Added
-
tools/fix-ansi-palette.js: derives bright ANSI colours from their base and
verifies separation under CVD simulation. Idempotent. -
tools/audit-vscode-tokens.js(npm run audit:vscode): committed, repeatable
audit against the VS Code colour registry. -
tools/string-what-if.js(npm run whatif): sweeps all 360 degrees of hue
for a token colour and reports the cost of every candidate. -
104 VS Code colour tokens the theme was missing: the agent and chat surfaces
(58), the modern UI family (30), and misc (16). Found by diffing the theme
against theregisterColorcalls on the VS Code main branch, which is a check
that had never been run -- the 943-token claim predated these features. Themes
now carry 1047 tokens. Each is derived from its variant's own palette through
explicit rules intools/fill-missing-tokens.js. -
tools/repair-palette.js(npm run palette): single entry point for the
palette tooling.repair [--dry-run],gamut,matrix. -
tools/cvd-matrix.js(npm run audit:cvd): per-variant CVD collision matrix
as a CI artifact. Reports all pairwise CIEDE2000 values per viewing condition
and per-colour exposure, which the palette audit's single worst-pair line
hides. The matrix is reported, not gated: an all-pairs threshold of 10 under
simulated dichromacy is not satisfiable for nine token colours, so a gate
would fail permanently and be ignored. -
CI builds the WASM previewer and fails when the committed artifact in
docs/previewer/is stale. It went stale once and was found by loading the
page in a browser.
Removed
tools/rotate-variable-hue.js. It applied a fixed +54 degree offset
unconditionally, so a second run rotated the variable another 54 degrees:
pink became salmon. The rotation is a one-shot decision baked into the
themes, not a repeatable step, and a non-idempotent tool beside idempotent
ones is how the wrong one gets run.
Documented
- The
apca-w3licence position: APCA is an internal analysis metric
transcribed from published constants, not shipped, and never asserted as a
conformance claim. WCAG 2.1 remains the only gate. RemovingapcaLcand
apcaAbswould cost the lightness-separation check, which would fall back to
a CIELAB L* gap -- weaker, but adequate.
[5.1.0] - 2026-10-07
Fixed
-
The variable token colour was confusable with the keyword under
deuteranopia and protanopia.#BE9AF7(keyword) and#89AEFF(variable)
differed only along the red-green axis, so they projected to#5E81C8and
#677EB3: 1.55 CIEDE2000 apart, functionally the same colour. No lightness
adjustment can fix this, because the deficiency removes the dimension they
differ on. Variables are now#E794D2, a +54 degree hue rotation that holds
lightness and chroma, taking the pair to 7.39. That is the best available:
every rotation that separates the pair further lands on another token's hue,
because nine token colours already fill the hue circle. -
A first attempt at the above searched the hue circle for maximum CVD
separation and picked amber, which reached 16.16 by landing the variable on
the constant colour's hue at 9.02 normal-vision separation. The problem was
moved, not solved. The search now constrains against introducing a new
collision. -
Contrast audit discarded the alpha channel before measuring. This was the
significant correctness bug in the audit layer.#726D8980on#24212Ewas
reported at 3.20:1; as rendered it is 1.77:1. Across the seven themes the bug
overstated 175 token pairs per theme, including pairs reported above 9:1 that
were actually below 1.3:1. Every ratio is now computed on the
alpha-composited pair. -
30 text tokens shipped below WCAG 2.1 AA once alpha was accounted for,
includingeditorLineNumber.foregroundandeditor.placeholderForegroundat
1.77:1. The alpha byte was stripped first, which is the largest single gain
and preserves the authored hue and lightness exactly; the four tokens still
short of AA after that were lightened along their own hue. -
Two dark-theme token colours were isoluminant.
#BE9AF7(keyword) and
#82AAFF(variable) both sat at CIELAB L* 70.0 and APCA |Lc| 54.4, so they
differed by hue alone. They were the same colour under achromatopsia and 1.66
CIEDE2000 apart under protanopia. Separated by lightness, holding hue. -
The light theme packed 8 token categories into a 5 Lc band, leaving six
pairs under 1 Lc apart. Relocated into free lightness space. -
focusBorderon the light theme measured 2.83:1, below the 3:1 that WCAG
2.2 SC 1.4.11 sets so a focus indicator stays perceivable. -
CVD simulation used Viénot matrices for tritanopia, which has no tritan
matrix; the two Brettel half-planes are not coplanar, so reusing the
protan/deutan plane is wrong rather than approximate. Tritanopia now uses
Brettel 1997. -
The light theme's own repair tool could not see it. The achievable |Lc|
range was computed asapcaAbs("#FFFFFF", bg), which is 0 on a light
background because APCA is polarity-asymmetric. The search range collapsed
and the theme's categories were reported as unseparable. -
The palette repair pipeline was not idempotent: the contrast stage and the
lightness stage each undid the other, because relocating a colour for
lightness separation could push it below AA. Separation now holds AA as a hard
constraint.
Added
-
color-science.js: WCAG 2.1, APCA (APCA-W3-0.1.9), CIELAB, CIEDE2000, and
CVD simulation. Every formula validated againstcolour-science0.4.7 and the
published APCA constants. Deliberately excludes CAM16-UCS: its gain over
CIEDE2000 here is marginal and a hand-transcribed CAM16 forward model is easy
to get subtly wrong. -
tests/palette-audit.js(npm run audit:palette): gates on alpha-composited
contrast and on APCA lightness separation between competing token colours, and
reports the closest simulated-CVD pair per theme as an ungated diagnostic. -
tools/repair-pipeline.js(npm run repair:palette): idempotent repair in
dependency order. -
tests/color-science.test.ts(42 tests): pins the colour library to an
external reference table, so a numerical regression fails rather than being
mirrored into the fixtures. Includes the linear-RGB regression test that
distinguishes a correct simulator from the gamma-space variant. -
docs/color-science.md: what each metric measures, what it does not, and the
limitations that remain.
Changed
-
The lint script now covers the whole repository, not just
src/. The audit
and build layer was never linted, which is how the alpha bug survived. Removed
dead code from the showcase and export generators along the way. -
Visual regression tests need updating: token colours moved. Run
npm run test:visual:updateand review the diff before committing. -
Documentation no longer claims the theme is "APCA compliant" or implies WCAG 3
conformance. APCA was removed from the W3C SIL drafts in 2023 and is a
candidate, not a standard. -
Documentation states plainly that mutual distinguishability under simulated
CVD is not achievable for a palette this size on one background, and that the
monochrome variant preserves semantic rank rather than token identity.
[5.0.0] - 2026-05-29
Added
- WASM theme previewer (previewer/): Rust/Leptos 0.7 CSR app compiled to WASM
- VS Code workbench mock (activity bar, sidebar, editor with syntax highlighting, terminal, status bar)
- Live theme switching across all 7 variants
- Rust syntax highlighting (keywords, strings, numbers, types, comments)
- i18n support (EN, ZH, JA)
- Colo...
v5.2.0
Changelog
All notable changes to the Shroom Space Theme extension are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[5.2.0] - 2026-10-08
Added
-
104 VS Code colour tokens the theme was missing: the agent and chat surfaces
(58), the modern UI family (30), and misc (16). Found by diffing the theme
against theregisterColorcalls on the VS Code main branch, which is a check
that had never been run -- the 943-token claim predated these features. Themes
now carry 1047 tokens. Each is derived from its variant's own palette through
explicit rules intools/fill-missing-tokens.js. -
tools/repair-palette.js(npm run palette): single entry point for the
palette tooling.repair [--dry-run],gamut,matrix. -
tools/cvd-matrix.js(npm run audit:cvd): per-variant CVD collision matrix
as a CI artifact. Reports all pairwise CIEDE2000 values per viewing condition
and per-colour exposure, which the palette audit's single worst-pair line
hides. The matrix is reported, not gated: an all-pairs threshold of 10 under
simulated dichromacy is not satisfiable for nine token colours, so a gate
would fail permanently and be ignored. -
CI builds the WASM previewer and fails when the committed artifact in
docs/previewer/is stale. It went stale once and was found by loading the
page in a browser.
Removed
tools/rotate-variable-hue.js. It applied a fixed +54 degree offset
unconditionally, so a second run rotated the variable another 54 degrees:
pink became salmon. The rotation is a one-shot decision baked into the
themes, not a repeatable step, and a non-idempotent tool beside idempotent
ones is how the wrong one gets run.
Documented
- The
apca-w3licence position: APCA is an internal analysis metric
transcribed from published constants, not shipped, and never asserted as a
conformance claim. WCAG 2.1 remains the only gate. RemovingapcaLcand
apcaAbswould cost the lightness-separation check, which would fall back to
a CIELAB L* gap -- weaker, but adequate.
[5.1.0] - 2026-10-07
Fixed
-
The variable token colour was confusable with the keyword under
deuteranopia and protanopia.#BE9AF7(keyword) and#89AEFF(variable)
differed only along the red-green axis, so they projected to#5E81C8and
#677EB3: 1.55 CIEDE2000 apart, functionally the same colour. No lightness
adjustment can fix this, because the deficiency removes the dimension they
differ on. Variables are now#E794D2, a +54 degree hue rotation that holds
lightness and chroma, taking the pair to 7.39. That is the best available:
every rotation that separates the pair further lands on another token's hue,
because nine token colours already fill the hue circle. -
A first attempt at the above searched the hue circle for maximum CVD
separation and picked amber, which reached 16.16 by landing the variable on
the constant colour's hue at 9.02 normal-vision separation. The problem was
moved, not solved. The search now constrains against introducing a new
collision. -
Contrast audit discarded the alpha channel before measuring. This was the
significant correctness bug in the audit layer.#726D8980on#24212Ewas
reported at 3.20:1; as rendered it is 1.77:1. Across the seven themes the bug
overstated 175 token pairs per theme, including pairs reported above 9:1 that
were actually below 1.3:1. Every ratio is now computed on the
alpha-composited pair. -
30 text tokens shipped below WCAG 2.1 AA once alpha was accounted for,
includingeditorLineNumber.foregroundandeditor.placeholderForegroundat
1.77:1. The alpha byte was stripped first, which is the largest single gain
and preserves the authored hue and lightness exactly; the four tokens still
short of AA after that were lightened along their own hue. -
Two dark-theme token colours were isoluminant.
#BE9AF7(keyword) and
#82AAFF(variable) both sat at CIELAB L* 70.0 and APCA |Lc| 54.4, so they
differed by hue alone. They were the same colour under achromatopsia and 1.66
CIEDE2000 apart under protanopia. Separated by lightness, holding hue. -
The light theme packed 8 token categories into a 5 Lc band, leaving six
pairs under 1 Lc apart. Relocated into free lightness space. -
focusBorderon the light theme measured 2.83:1, below the 3:1 that WCAG
2.2 SC 1.4.11 sets so a focus indicator stays perceivable. -
CVD simulation used Viénot matrices for tritanopia, which has no tritan
matrix; the two Brettel half-planes are not coplanar, so reusing the
protan/deutan plane is wrong rather than approximate. Tritanopia now uses
Brettel 1997. -
The light theme's own repair tool could not see it. The achievable |Lc|
range was computed asapcaAbs("#FFFFFF", bg), which is 0 on a light
background because APCA is polarity-asymmetric. The search range collapsed
and the theme's categories were reported as unseparable. -
The palette repair pipeline was not idempotent: the contrast stage and the
lightness stage each undid the other, because relocating a colour for
lightness separation could push it below AA. Separation now holds AA as a hard
constraint.
Added
-
color-science.js: WCAG 2.1, APCA (APCA-W3-0.1.9), CIELAB, CIEDE2000, and
CVD simulation. Every formula validated againstcolour-science0.4.7 and the
published APCA constants. Deliberately excludes CAM16-UCS: its gain over
CIEDE2000 here is marginal and a hand-transcribed CAM16 forward model is easy
to get subtly wrong. -
tests/palette-audit.js(npm run audit:palette): gates on alpha-composited
contrast and on APCA lightness separation between competing token colours, and
reports the closest simulated-CVD pair per theme as an ungated diagnostic. -
tools/repair-pipeline.js(npm run repair:palette): idempotent repair in
dependency order. -
tests/color-science.test.ts(42 tests): pins the colour library to an
external reference table, so a numerical regression fails rather than being
mirrored into the fixtures. Includes the linear-RGB regression test that
distinguishes a correct simulator from the gamma-space variant. -
docs/color-science.md: what each metric measures, what it does not, and the
limitations that remain.
Changed
-
The lint script now covers the whole repository, not just
src/. The audit
and build layer was never linted, which is how the alpha bug survived. Removed
dead code from the showcase and export generators along the way. -
Visual regression tests need updating: token colours moved. Run
npm run test:visual:updateand review the diff before committing. -
Documentation no longer claims the theme is "APCA compliant" or implies WCAG 3
conformance. APCA was removed from the W3C SIL drafts in 2023 and is a
candidate, not a standard. -
Documentation states plainly that mutual distinguishability under simulated
CVD is not achievable for a palette this size on one background, and that the
monochrome variant preserves semantic rank rather than token identity.
[5.0.0] - 2026-05-29
Added
-
WASM theme previewer (previewer/): Rust/Leptos 0.7 CSR app compiled to WASM
- VS Code workbench mock (activity bar, sidebar, editor with syntax highlighting, terminal, status bar)
- Live theme switching across all 7 variants
- Rust syntax highlighting (keywords, strings, numbers, types, comments)
- i18n support (EN, ZH, JA)
- Color palette display
- AI accent color extractor: k-means++ color extraction from uploaded images
- Maps extracted colors to Shroom Space accent presets via HSL distance
- Themes embedded at compile time via include_str!()
- Total dist size: 128KB (100KB WASM + 20KB JS + 1KB HTML)
- Deployed at: https://wyattau.github.io/shroom-theme/previewer/
-
Neovim colorscheme: 7 Lua files with 150+ highlight groups (editors/neovim/)
- TreeSitter groups, LSP semantic tokens, diagnostics, git signs
- Telescope, nvim-tree, which-key, indent-blankline support
- Terminal 16-color palette
- lazy.nvim compatible plugin structure
-
Helix theme: 7 TOML files with full palette/syntax/UI sections (editors/helix/)
-
Editor theme generator: tools/generate-editors.js
Changed
- README: added Neovim, Helix, icon theme recommendations
- Icon theme recommendation: Catppuccin Icons (Mocha) -- near-identical palette
- Material Icon Theme fallback config documented
[4.1.0] - 2026-05-29
Added
- Neovim colorscheme: 7 Lua files with 150+ highlight groups including TreeSitter, LSP semantic tokens, diagnostics, git signs, telescope, nvim-tree, which-key, and terminal colors (editors/neovim/)
- Helix theme: 7 TOML files with full palette, UI, syntax, diagnostic, and marker sections (editors/helix/)
- Editor theme generator: tools/generate-editors.js produces both Neovim and Helix themes from VS Code JSON
- lazy.nvim-compatible plugin structure with lua/shroom/init.lua loader
Changed
- README updated with Neovim and Helix installation instructions
[4.0.0] - 2026-05-27
Fixed
- Fix critical semantic token format: flattened
{ enabled, rules }wrapper to flatsemanticTokenColorsobject matching VS Code API spec - Added
"semanticHighlighting": trueto all 7 theme files - Fixed invalid selectors (
readonly->*.readonly,static->*.static, removedvariable.global) - Removed 24 non-standard semantic token types that VS Code ignores (module, tag, attribute, heading, bold, italic, strikethrough, link, punctuation, separator, bracket, controlKeyword, arithmeticOperator, bitwiseOperator, comparisonOperator, logicalOperator, assignmentOperator, component, directive, pipe, service, hook, component.tag, constant)
- Result: 32 valid VS Code standard semantic token rules per theme (down from 57 non-fun...
v5.1.0
Changelog
All notable changes to the Shroom Space Theme extension are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[5.1.0] - 2026-10-07
Fixed
-
The variable token colour was confusable with the keyword under
deuteranopia and protanopia.#BE9AF7(keyword) and#89AEFF(variable)
differed only along the red-green axis, so they projected to#5E81C8and
#677EB3: 1.55 CIEDE2000 apart, functionally the same colour. No lightness
adjustment can fix this, because the deficiency removes the dimension they
differ on. Variables are now#E794D2, a +54 degree hue rotation that holds
lightness and chroma, taking the pair to 7.39. That is the best available:
every rotation that separates the pair further lands on another token's hue,
because nine token colours already fill the hue circle. -
A first attempt at the above searched the hue circle for maximum CVD
separation and picked amber, which reached 16.16 by landing the variable on
the constant colour's hue at 9.02 normal-vision separation. The problem was
moved, not solved. The search now constrains against introducing a new
collision. -
Contrast audit discarded the alpha channel before measuring. This was the
significant correctness bug in the audit layer.#726D8980on#24212Ewas
reported at 3.20:1; as rendered it is 1.77:1. Across the seven themes the bug
overstated 175 token pairs per theme, including pairs reported above 9:1 that
were actually below 1.3:1. Every ratio is now computed on the
alpha-composited pair. -
30 text tokens shipped below WCAG 2.1 AA once alpha was accounted for,
includingeditorLineNumber.foregroundandeditor.placeholderForegroundat
1.77:1. The alpha byte was stripped first, which is the largest single gain
and preserves the authored hue and lightness exactly; the four tokens still
short of AA after that were lightened along their own hue. -
Two dark-theme token colours were isoluminant.
#BE9AF7(keyword) and
#82AAFF(variable) both sat at CIELAB L* 70.0 and APCA |Lc| 54.4, so they
differed by hue alone. They were the same colour under achromatopsia and 1.66
CIEDE2000 apart under protanopia. Separated by lightness, holding hue. -
The light theme packed 8 token categories into a 5 Lc band, leaving six
pairs under 1 Lc apart. Relocated into free lightness space. -
focusBorderon the light theme measured 2.83:1, below the 3:1 that WCAG
2.2 SC 1.4.11 sets so a focus indicator stays perceivable. -
CVD simulation used Viénot matrices for tritanopia, which has no tritan
matrix; the two Brettel half-planes are not coplanar, so reusing the
protan/deutan plane is wrong rather than approximate. Tritanopia now uses
Brettel 1997. -
The light theme's own repair tool could not see it. The achievable |Lc|
range was computed asapcaAbs("#FFFFFF", bg), which is 0 on a light
background because APCA is polarity-asymmetric. The search range collapsed
and the theme's categories were reported as unseparable. -
The palette repair pipeline was not idempotent: the contrast stage and the
lightness stage each undid the other, because relocating a colour for
lightness separation could push it below AA. Separation now holds AA as a hard
constraint.
Added
-
color-science.js: WCAG 2.1, APCA (APCA-W3-0.1.9), CIELAB, CIEDE2000, and
CVD simulation. Every formula validated againstcolour-science0.4.7 and the
published APCA constants. Deliberately excludes CAM16-UCS: its gain over
CIEDE2000 here is marginal and a hand-transcribed CAM16 forward model is easy
to get subtly wrong. -
tests/palette-audit.js(npm run audit:palette): gates on alpha-composited
contrast and on APCA lightness separation between competing token colours, and
reports the closest simulated-CVD pair per theme as an ungated diagnostic. -
tools/repair-pipeline.js(npm run repair:palette): idempotent repair in
dependency order. -
tests/color-science.test.ts(42 tests): pins the colour library to an
external reference table, so a numerical regression fails rather than being
mirrored into the fixtures. Includes the linear-RGB regression test that
distinguishes a correct simulator from the gamma-space variant. -
docs/color-science.md: what each metric measures, what it does not, and the
limitations that remain.
Changed
-
The lint script now covers the whole repository, not just
src/. The audit
and build layer was never linted, which is how the alpha bug survived. Removed
dead code from the showcase and export generators along the way. -
Visual regression tests need updating: token colours moved. Run
npm run test:visual:updateand review the diff before committing. -
Documentation no longer claims the theme is "APCA compliant" or implies WCAG 3
conformance. APCA was removed from the W3C SIL drafts in 2023 and is a
candidate, not a standard. -
Documentation states plainly that mutual distinguishability under simulated
CVD is not achievable for a palette this size on one background, and that the
monochrome variant preserves semantic rank rather than token identity.
[5.0.0] - 2026-05-29
Added
-
WASM theme previewer (previewer/): Rust/Leptos 0.7 CSR app compiled to WASM
- VS Code workbench mock (activity bar, sidebar, editor with syntax highlighting, terminal, status bar)
- Live theme switching across all 7 variants
- Rust syntax highlighting (keywords, strings, numbers, types, comments)
- i18n support (EN, ZH, JA)
- Color palette display
- AI accent color extractor: k-means++ color extraction from uploaded images
- Maps extracted colors to Shroom Space accent presets via HSL distance
- Themes embedded at compile time via include_str!()
- Total dist size: 128KB (100KB WASM + 20KB JS + 1KB HTML)
- Deployed at: https://wyattau.github.io/shroom-theme/previewer/
-
Neovim colorscheme: 7 Lua files with 150+ highlight groups (editors/neovim/)
- TreeSitter groups, LSP semantic tokens, diagnostics, git signs
- Telescope, nvim-tree, which-key, indent-blankline support
- Terminal 16-color palette
- lazy.nvim compatible plugin structure
-
Helix theme: 7 TOML files with full palette/syntax/UI sections (editors/helix/)
-
Editor theme generator: tools/generate-editors.js
Changed
- README: added Neovim, Helix, icon theme recommendations
- Icon theme recommendation: Catppuccin Icons (Mocha) -- near-identical palette
- Material Icon Theme fallback config documented
[4.1.0] - 2026-05-29
Added
- Neovim colorscheme: 7 Lua files with 150+ highlight groups including TreeSitter, LSP semantic tokens, diagnostics, git signs, telescope, nvim-tree, which-key, and terminal colors (editors/neovim/)
- Helix theme: 7 TOML files with full palette, UI, syntax, diagnostic, and marker sections (editors/helix/)
- Editor theme generator: tools/generate-editors.js produces both Neovim and Helix themes from VS Code JSON
- lazy.nvim-compatible plugin structure with lua/shroom/init.lua loader
Changed
- README updated with Neovim and Helix installation instructions
[4.0.0] - 2026-05-27
Fixed
- Fix critical semantic token format: flattened
{ enabled, rules }wrapper to flatsemanticTokenColorsobject matching VS Code API spec - Added
"semanticHighlighting": trueto all 7 theme files - Fixed invalid selectors (
readonly->*.readonly,static->*.static, removedvariable.global) - Removed 24 non-standard semantic token types that VS Code ignores (module, tag, attribute, heading, bold, italic, strikethrough, link, punctuation, separator, bracket, controlKeyword, arithmeticOperator, bitwiseOperator, comparisonOperator, logicalOperator, assignmentOperator, component, directive, pipe, service, hook, component.tag, constant)
- Result: 32 valid VS Code standard semantic token rules per theme (down from 57 non-functional)
Changed
- Updated dev dependencies (mocha 11.7.6 -> 11.3.0, @vscode/test-cli 0.0.12 -> 0.0.11) via npm audit fix
- Improved marketplace discoverability: added keywords (cosmic, purple, teal, pastel, minimal, modern, retina, comfortable, low-vision, a11y)
- Rewrote README with current feature set and accurate version requirements
- Updated package.json description for better marketplace search ranking
[3.1.0] - 2026-05-27
Changed
- Update Node.js minimum to 24 LTS (CI matrix: 24 + 26)
- Update TypeScript 5 -> 6
- Update ESLint 9 -> 10
- Update @types/vscode 1.105.0 -> 1.120.0
- Update @typescript-eslint 8.45 -> 8.60
- Update mocha 11.3 -> 11.7.6
- Update chai 6.2 -> 6.2.2
- Update @vscode/test-cli 0.0.11 -> 0.0.12
- Update @vscode/vsce 3.6 -> 3.9
- Add
engines.node: ">=24.0.0"to package.json - Add
skipLibCheck: trueand explicittypesto tsconfig.json for TypeScript 6 compatibility
Fixed
- TypeScript 6 type resolution: added explicit
types: ["node", "mocha"]to tsconfig.json
[3.0.0] - 2026-05-25
Added
- 211 new VS Code color tokens (732 -> 943 total, 100% of known VS Code API):
- activityBarTop: foreground, inactive foreground, border
- agentSession: background, foreground, border, icon colors
- chart: lines, bars, grid, axis colors
- gauge: background, foreground, border, tick marks
- inlineEdit: background, border, foreground, stroke colors
- scmGraph: history item, node, reference colors
- terminalSymbolIcon: foreground, variable, method, class, interface, enum, more
- workspaceOverlay: foreground, background, border
- radio: background, border, foreground, active states
- merge: incoming/outgoing/current content, headers, borders
- markdownAlert: tip, note, error, warning, caution colors
- Additional tokens across editor, debug, notebook, and UI categories
- Full VS Code color token API coverage achieved (943/943 known tokens)
- U...
v3.1.0
Changelog
All notable changes to the Shroom Space Theme extension are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[3.1.0] - 2026-05-27
Changed
- Update Node.js minimum to 24 LTS (CI matrix: 24 + 26)
- Update TypeScript 5 -> 6
- Update ESLint 9 -> 10
- Update @types/vscode 1.105.0 -> 1.120.0
- Update @typescript-eslint 8.45 -> 8.60
- Update mocha 11.3 -> 11.7.6
- Update chai 6.2 -> 6.2.2
- Update @vscode/test-cli 0.0.11 -> 0.0.12
- Update @vscode/vsce 3.6 -> 3.9
- Add
engines.node: ">=24.0.0"to package.json - Add
skipLibCheck: trueand explicittypesto tsconfig.json for TypeScript 6 compatibility
Fixed
- TypeScript 6 type resolution: added explicit
types: ["node", "mocha"]to tsconfig.json
[3.0.0] - 2026-05-25
Added
- 211 new VS Code color tokens (732 -> 943 total, 100% of known VS Code API):
- activityBarTop: foreground, inactive foreground, border
- agentSession: background, foreground, border, icon colors
- chart: lines, bars, grid, axis colors
- gauge: background, foreground, border, tick marks
- inlineEdit: background, border, foreground, stroke colors
- scmGraph: history item, node, reference colors
- terminalSymbolIcon: foreground, variable, method, class, interface, enum, more
- workspaceOverlay: foreground, background, border
- radio: background, border, foreground, active states
- merge: incoming/outgoing/current content, headers, borders
- markdownAlert: tip, note, error, warning, caution colors
- Additional tokens across editor, debug, notebook, and UI categories
- Full VS Code color token API coverage achieved (943/943 known tokens)
- Updated GitHub Actions: CodeQL v3 -> v4
Changed
- Token coverage increased from 80% to 100% (943 known VS Code API tokens)
- Updated metrics across documentation (EN, ZH, JA), ROADMAP, and package.json
[2.2.0] - 2026-05-25
Added
- 102 new VS Code color tokens across 7 categories (630 -> 732 total, 80% of VS Code API):
- Testing (32): coverage badges, test icons, message styles, peek borders
- Notebook (23): cell borders, backgrounds, scrollbar sliders, status icons
- Inline Chat (10): background, border, input styles, diff indicators
- Merge Editor (13): change backgrounds, conflict borders, common content
- List (5): icon foregrounds, focus backgrounds, inactive outlines
- Debug (11): token expression types, view labels, state backgrounds
- Diff Editor (8): move borders, unchanged regions, gutter backgrounds
- Export format validation report (
docs/validation.md) - Pre-commit hook: added
SKIP_HOOKS=1escape hatch and 120s timeout
Changed
- Token coverage increased from 69% to 80% (732/910 VS Code API tokens)
- Updated metrics across documentation (EN, ZH, JA), ROADMAP, and package.json
[2.1.1] - 2026-05-25
Fixed
- Pre-commit hook: added timeout (120s) and
SKIP_HOOKS=1environment variable bypass for slow environments - Internationalized docs (ZH, JA) synced with EN page: added interactive previewer, WCAG report link, language switcher, updated metrics
[2.1.0] - 2026-05-25
Added
- CSS custom properties export (
exports/css/*.css) with--shroom-*variables for web use - Tailwind CSS color palette plugin (
tools/tailwind-plugin.js) withbg-shroom-*,text-shroom-*utilities - Interactive theme previewer on documentation site with 7 theme variants and accent color switching
- WCAG 2.1 contrast report page (
docs/wcag.html) with calculated contrast ratios per theme - Simplified Chinese documentation (
docs/index.zh.html) - Japanese documentation (
docs/index.ja.html) - Programmatic theme generation from HSL base values (
src/theme-generator.ts) - Custom accent color via HSL values (
shroom-space.customAccentHslsetting withaccentColor: "custom") - Telemetry via VS Code TelemetryLogger API (activated, accentColorChanged, autoSwitchToggled events)
- GitHub CodeQL static analysis workflow (TypeScript/JavaScript)
- CI job matrix: Node.js 22 + 24
Changed
- Landing page updated: 732 tokens (80% coverage), 9 export formats, Downloads section, Settings section, Previewer
- Landing page nav: added Previewer, WCAG, language switcher (ZH, JA) links
package.jsondescription updated to reflect 630+ tokens and 9-format export- CI workflow: artifact names suffixed with Node.js version for matrix compatibility
- Pages workflow: no changes
[2.0.0] - 2026-05-24
Added
- Extension activation lifecycle (
src/extension.tsrewrite withactivate()/deactivate()) - User-configurable accent color override (7 options: purple, teal, green, amber, red, pink, cyan) via
shroom-space.accentColorsetting - Auto dark/light theme switching based on VS Code color theme changes via
shroom-space.autoSwitchsetting - Extension settings contribution in
package.json(contributes.configuration) mainandactivationEventsfields inpackage.json- 2 extension activation tests (module exports, accent color map coverage)
@types/sinondev dependency for test mocking
Changed
- Version bumped to 2.0.0
- 92 total tests (up from 90)
[1.3.0] - 2026-05-24
Added
- iTerm2 color scheme export (
.itermcolorsXML format) - Warp terminal theme export (
.yamlformat) - Alacritty TOML theme export (
.tomlformat) - Kitty terminal theme export (
.confformat) - CI validation for all 4 new export formats
- Download links for all export formats on landing page
Changed
- Total export formats: 4 -> 8 (32 -> 56 export files)
tools/convert.js: addedconvertToITerm2,convertToWarp,convertToAlacritty,convertToKittyfunctions- Warp export uses
simpleYamlStringifyinstead of YAML dependency
[1.2.0] - 2026-05-24
Added
- 10 missing VS Code color tokens added to all 7 themes (620 -> 630 total, 69% of VS Code API)
Changed
- Visual regression test references updated for new token colors
- Test minimum token count assertion updated to 500 (unchanged, within range)
[1.1.0] - 2026-05-24
Added
- SBOM generation tool (
tools/generate-sbom.js) producing SPDX 2.3 format npm run sbomscriptnpm run test:ciscript for full pipeline without VS Code host- Converted themes as GitHub Release assets on tag push
test-results/added to.gitignore
Changed
- Updated mocha@11.7.6 and sinon@22.0.0
- GitHub Actions pinned to version tags (v4/v5)
- CI: added SBOM generation and upload step
[1.0.0] - 2026-05-21
Added
- Playwright visual regression testing framework with 7 tests (one per theme)
tools/generate-theme-html.js: generates styled HTML pages from theme colors for screenshot capturetests/visual/visual-regression.spec.ts: pixel-diff comparison with 1% thresholdtests/visual/playwright.config.ts: Playwright configuration- 7 reference screenshots in
tests/visual/references/ npm run test:visual: runs visual regression testsnpm run test:visual:update: regenerates reference screenshots from scratchnpm run generate-visual-pages: generates HTML test pages- CI: Playwright visual regression tests run on every push
- CI: Visual regression diffs uploaded as artifacts on failure
- Extension icon (
icon.png) - mushroom and stars on dark cosmic background - 7 marketplace screenshots in
screenshots/directory - Marketplace metadata: description, keywords (cvd, accessibility, wcag, color-blind), gallery banner, screenshots
- Homepage URL updated to GitHub Pages site
Changed
- Version bumped to 1.0.0
package.jsondescription updated with full feature summary- Keywords expanded from 4 to 16 (added: dark, light, cvd, color-blind, deuteranopia, protanopia, tritanopia, high-contrast, monochrome, accessibility, wcag)
.gitignoreupdated to exclude generated visual test artifacts (pages/, diffs/, test-results/)- ROADMAP updated: Phases 4 and 5 marked completed
[0.3.0] - 2026-05-21
Added
- 509 new color tokens added to base dark theme (111 -> 620 total, 68% of VS Code API)
- All 509 tokens propagated to all 6 variant themes with proper color derivation:
- Light theme: background inversion, accent color adaptation for light surfaces
- Deuteranopia: green -> amber substitution
- Protanopia: red -> coral, green -> amber substitution
- Tritanopia: blue/teal -> pink/cyan, green -> lime substitution
- Monochrome: all accents -> differentiated grayscale
- High contrast: maximum brightness on pure black
- 70 new tokenColors entries per theme (11 -> 81 total) covering:
- Operators (arithmetic, bitwise, assignment, comparison, logical, type)
- Punctuation (separators, terminators, brackets, delimiters)
- Regular expressions
- Markdown/markup (headings, bold, italic, strikethrough, lists, links, code blocks, quotes)
- HTML/XML/JSX/TSX tags and attributes
- Decorators/annotations
- CSS/SCSS/Less property names, selectors, units, pseudo-classes
- JSON, YAML, TOML keys
- Shell operators and builtins
- SQL keywords
- GraphQL operations
- Rust lifetimes, types, operators
- Go types and packages
- Python operators, types, decorators
- Java/Kotlin types
- C/C++ types, structs, enums
- Environment variable definitions
- Diff markup (inserted, deleted)
- Invalid/deprecated tokens
- 51 new semanticTokenColors rules per theme (6 -> 57 total) covering:
- Type system: enum, struct, typeParameter, interface, namespace, module
- Functions: function, decorator, defaultLibrary variants
- Variables: constant, readonly, static, global, defaultLibrary
- Keywords: controlKeyword, operator modifiers
- Markup: heading, bold, italic, strikethrough, link
- Operators: arithmetic, bitwise, comparison, logical, assignment
- Modifiers: readonly, global, defaultLibrary, declaration
- Framework-specific: Angular (component, directive, pipe, service), React (hook, component.t...
v3.0.0
Changelog
All notable changes to the Shroom Space Theme extension are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[3.0.0] - 2026-05-25
Added
- 211 new VS Code color tokens (732 -> 943 total, 100% of known VS Code API):
- activityBarTop: foreground, inactive foreground, border
- agentSession: background, foreground, border, icon colors
- chart: lines, bars, grid, axis colors
- gauge: background, foreground, border, tick marks
- inlineEdit: background, border, foreground, stroke colors
- scmGraph: history item, node, reference colors
- terminalSymbolIcon: foreground, variable, method, class, interface, enum, more
- workspaceOverlay: foreground, background, border
- radio: background, border, foreground, active states
- merge: incoming/outgoing/current content, headers, borders
- markdownAlert: tip, note, error, warning, caution colors
- Additional tokens across editor, debug, notebook, and UI categories
- Full VS Code color token API coverage achieved (943/943 known tokens)
- Updated GitHub Actions: CodeQL v3 -> v4
Changed
- Token coverage increased from 80% to 100% (943 known VS Code API tokens)
- Updated metrics across documentation (EN, ZH, JA), ROADMAP, and package.json
[2.2.0] - 2026-05-25
Added
- 102 new VS Code color tokens across 7 categories (630 -> 732 total, 80% of VS Code API):
- Testing (32): coverage badges, test icons, message styles, peek borders
- Notebook (23): cell borders, backgrounds, scrollbar sliders, status icons
- Inline Chat (10): background, border, input styles, diff indicators
- Merge Editor (13): change backgrounds, conflict borders, common content
- List (5): icon foregrounds, focus backgrounds, inactive outlines
- Debug (11): token expression types, view labels, state backgrounds
- Diff Editor (8): move borders, unchanged regions, gutter backgrounds
- Export format validation report (
docs/validation.md) - Pre-commit hook: added
SKIP_HOOKS=1escape hatch and 120s timeout
Changed
- Token coverage increased from 69% to 80% (732/910 VS Code API tokens)
- Updated metrics across documentation (EN, ZH, JA), ROADMAP, and package.json
[2.1.1] - 2026-05-25
Fixed
- Pre-commit hook: added timeout (120s) and
SKIP_HOOKS=1environment variable bypass for slow environments - Internationalized docs (ZH, JA) synced with EN page: added interactive previewer, WCAG report link, language switcher, updated metrics
[2.1.0] - 2026-05-25
Added
- CSS custom properties export (
exports/css/*.css) with--shroom-*variables for web use - Tailwind CSS color palette plugin (
tools/tailwind-plugin.js) withbg-shroom-*,text-shroom-*utilities - Interactive theme previewer on documentation site with 7 theme variants and accent color switching
- WCAG 2.1 contrast report page (
docs/wcag.html) with calculated contrast ratios per theme - Simplified Chinese documentation (
docs/index.zh.html) - Japanese documentation (
docs/index.ja.html) - Programmatic theme generation from HSL base values (
src/theme-generator.ts) - Custom accent color via HSL values (
shroom-space.customAccentHslsetting withaccentColor: "custom") - Telemetry via VS Code TelemetryLogger API (activated, accentColorChanged, autoSwitchToggled events)
- GitHub CodeQL static analysis workflow (TypeScript/JavaScript)
- CI job matrix: Node.js 22 + 24
Changed
- Landing page updated: 732 tokens (80% coverage), 9 export formats, Downloads section, Settings section, Previewer
- Landing page nav: added Previewer, WCAG, language switcher (ZH, JA) links
package.jsondescription updated to reflect 630+ tokens and 9-format export- CI workflow: artifact names suffixed with Node.js version for matrix compatibility
- Pages workflow: no changes
[2.0.0] - 2026-05-24
Added
- Extension activation lifecycle (
src/extension.tsrewrite withactivate()/deactivate()) - User-configurable accent color override (7 options: purple, teal, green, amber, red, pink, cyan) via
shroom-space.accentColorsetting - Auto dark/light theme switching based on VS Code color theme changes via
shroom-space.autoSwitchsetting - Extension settings contribution in
package.json(contributes.configuration) mainandactivationEventsfields inpackage.json- 2 extension activation tests (module exports, accent color map coverage)
@types/sinondev dependency for test mocking
Changed
- Version bumped to 2.0.0
- 92 total tests (up from 90)
[1.3.0] - 2026-05-24
Added
- iTerm2 color scheme export (
.itermcolorsXML format) - Warp terminal theme export (
.yamlformat) - Alacritty TOML theme export (
.tomlformat) - Kitty terminal theme export (
.confformat) - CI validation for all 4 new export formats
- Download links for all export formats on landing page
Changed
- Total export formats: 4 -> 8 (32 -> 56 export files)
tools/convert.js: addedconvertToITerm2,convertToWarp,convertToAlacritty,convertToKittyfunctions- Warp export uses
simpleYamlStringifyinstead of YAML dependency
[1.2.0] - 2026-05-24
Added
- 10 missing VS Code color tokens added to all 7 themes (620 -> 630 total, 69% of VS Code API)
Changed
- Visual regression test references updated for new token colors
- Test minimum token count assertion updated to 500 (unchanged, within range)
[1.1.0] - 2026-05-24
Added
- SBOM generation tool (
tools/generate-sbom.js) producing SPDX 2.3 format npm run sbomscriptnpm run test:ciscript for full pipeline without VS Code host- Converted themes as GitHub Release assets on tag push
test-results/added to.gitignore
Changed
- Updated mocha@11.7.6 and sinon@22.0.0
- GitHub Actions pinned to version tags (v4/v5)
- CI: added SBOM generation and upload step
[1.0.0] - 2026-05-21
Added
- Playwright visual regression testing framework with 7 tests (one per theme)
tools/generate-theme-html.js: generates styled HTML pages from theme colors for screenshot capturetests/visual/visual-regression.spec.ts: pixel-diff comparison with 1% thresholdtests/visual/playwright.config.ts: Playwright configuration- 7 reference screenshots in
tests/visual/references/ npm run test:visual: runs visual regression testsnpm run test:visual:update: regenerates reference screenshots from scratchnpm run generate-visual-pages: generates HTML test pages- CI: Playwright visual regression tests run on every push
- CI: Visual regression diffs uploaded as artifacts on failure
- Extension icon (
icon.png) - mushroom and stars on dark cosmic background - 7 marketplace screenshots in
screenshots/directory - Marketplace metadata: description, keywords (cvd, accessibility, wcag, color-blind), gallery banner, screenshots
- Homepage URL updated to GitHub Pages site
Changed
- Version bumped to 1.0.0
package.jsondescription updated with full feature summary- Keywords expanded from 4 to 16 (added: dark, light, cvd, color-blind, deuteranopia, protanopia, tritanopia, high-contrast, monochrome, accessibility, wcag)
.gitignoreupdated to exclude generated visual test artifacts (pages/, diffs/, test-results/)- ROADMAP updated: Phases 4 and 5 marked completed
[0.3.0] - 2026-05-21
Added
- 509 new color tokens added to base dark theme (111 -> 620 total, 68% of VS Code API)
- All 509 tokens propagated to all 6 variant themes with proper color derivation:
- Light theme: background inversion, accent color adaptation for light surfaces
- Deuteranopia: green -> amber substitution
- Protanopia: red -> coral, green -> amber substitution
- Tritanopia: blue/teal -> pink/cyan, green -> lime substitution
- Monochrome: all accents -> differentiated grayscale
- High contrast: maximum brightness on pure black
- 70 new tokenColors entries per theme (11 -> 81 total) covering:
- Operators (arithmetic, bitwise, assignment, comparison, logical, type)
- Punctuation (separators, terminators, brackets, delimiters)
- Regular expressions
- Markdown/markup (headings, bold, italic, strikethrough, lists, links, code blocks, quotes)
- HTML/XML/JSX/TSX tags and attributes
- Decorators/annotations
- CSS/SCSS/Less property names, selectors, units, pseudo-classes
- JSON, YAML, TOML keys
- Shell operators and builtins
- SQL keywords
- GraphQL operations
- Rust lifetimes, types, operators
- Go types and packages
- Python operators, types, decorators
- Java/Kotlin types
- C/C++ types, structs, enums
- Environment variable definitions
- Diff markup (inserted, deleted)
- Invalid/deprecated tokens
- 51 new semanticTokenColors rules per theme (6 -> 57 total) covering:
- Type system: enum, struct, typeParameter, interface, namespace, module
- Functions: function, decorator, defaultLibrary variants
- Variables: constant, readonly, static, global, defaultLibrary
- Keywords: controlKeyword, operator modifiers
- Markup: heading, bold, italic, strikethrough, link
- Operators: arithmetic, bitwise, comparison, logical, assignment
- Modifiers: readonly, global, defaultLibrary, declaration
- Framework-specific: Angular (component, directive, pipe, service), React (hook, component.tag)
- Test: minimum 500 color token count assertion per theme
- Test: cross-theme color token consistency check (all variants match base theme key set)
Changed
- Light theme
activityBarBadge.foregroundchanged from#F5F2E8to#FFFFFFfor WCAG AA compliance (4.43:1 -> 4.97:1) - Version bumped to 0.3.0
- ROADMAP.md updated: Phase 2 marked completed
- 90 total tests (up from 76)
[0.2.0] - 2026-05-21
Added
- WCAG 2.1 contrast ratio validation integrated into
validate-themes.js wcag-contrast.jsmodule: relative luminance, contrast ratio, AA/AAA checks, theme pair auditing- Automa...
v1.0.0
Changelog
All notable changes to the Shroom Space Theme extension are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.0.0] - 2026-05-21
Added
- Playwright visual regression testing framework with 7 tests (one per theme)
tools/generate-theme-html.js: generates styled HTML pages from theme colors for screenshot capturetests/visual/visual-regression.spec.ts: pixel-diff comparison with 1% thresholdtests/visual/playwright.config.ts: Playwright configuration- 7 reference screenshots in
tests/visual/references/ npm run test:visual: runs visual regression testsnpm run test:visual:update: regenerates reference screenshots from scratchnpm run generate-visual-pages: generates HTML test pages- CI: Playwright visual regression tests run on every push
- CI: Visual regression diffs uploaded as artifacts on failure
- Extension icon (
icon.png) - mushroom and stars on dark cosmic background - 7 marketplace screenshots in
screenshots/directory - Marketplace metadata: description, keywords (cvd, accessibility, wcag, color-blind), gallery banner, screenshots
- Homepage URL updated to GitHub Pages site
Changed
- Version bumped to 1.0.0
package.jsondescription updated with full feature summary- Keywords expanded from 4 to 16 (added: dark, light, cvd, color-blind, deuteranopia, protanopia, tritanopia, high-contrast, monochrome, accessibility, wcag)
.gitignoreupdated to exclude generated visual test artifacts (pages/, diffs/, test-results/)- ROADMAP updated: Phases 4 and 5 marked completed
[0.3.0] - 2026-05-21
Added
- 509 new color tokens added to base dark theme (111 -> 620 total, 68% of VS Code API)
- All 509 tokens propagated to all 6 variant themes with proper color derivation:
- Light theme: background inversion, accent color adaptation for light surfaces
- Deuteranopia: green -> amber substitution
- Protanopia: red -> coral, green -> amber substitution
- Tritanopia: blue/teal -> pink/cyan, green -> lime substitution
- Monochrome: all accents -> differentiated grayscale
- High contrast: maximum brightness on pure black
- 70 new tokenColors entries per theme (11 -> 81 total) covering:
- Operators (arithmetic, bitwise, assignment, comparison, logical, type)
- Punctuation (separators, terminators, brackets, delimiters)
- Regular expressions
- Markdown/markup (headings, bold, italic, strikethrough, lists, links, code blocks, quotes)
- HTML/XML/JSX/TSX tags and attributes
- Decorators/annotations
- CSS/SCSS/Less property names, selectors, units, pseudo-classes
- JSON, YAML, TOML keys
- Shell operators and builtins
- SQL keywords
- GraphQL operations
- Rust lifetimes, types, operators
- Go types and packages
- Python operators, types, decorators
- Java/Kotlin types
- C/C++ types, structs, enums
- Environment variable definitions
- Diff markup (inserted, deleted)
- Invalid/deprecated tokens
- 51 new semanticTokenColors rules per theme (6 -> 57 total) covering:
- Type system: enum, struct, typeParameter, interface, namespace, module
- Functions: function, decorator, defaultLibrary variants
- Variables: constant, readonly, static, global, defaultLibrary
- Keywords: controlKeyword, operator modifiers
- Markup: heading, bold, italic, strikethrough, link
- Operators: arithmetic, bitwise, comparison, logical, assignment
- Modifiers: readonly, global, defaultLibrary, declaration
- Framework-specific: Angular (component, directive, pipe, service), React (hook, component.tag)
- Test: minimum 500 color token count assertion per theme
- Test: cross-theme color token consistency check (all variants match base theme key set)
Changed
- Light theme
activityBarBadge.foregroundchanged from#F5F2E8to#FFFFFFfor WCAG AA compliance (4.43:1 -> 4.97:1) - Version bumped to 0.3.0
- ROADMAP.md updated: Phase 2 marked completed
- 90 total tests (up from 76)
[0.2.0] - 2026-05-21
Added
- WCAG 2.1 contrast ratio validation integrated into
validate-themes.js wcag-contrast.jsmodule: relative luminance, contrast ratio, AA/AAA checks, theme pair auditing- Automated WCAG contrast report generation (
.reports/wcag-*.md) on every validation run tools/convert.js: multi-editor theme conversion tool generating 4 formats per theme:- TextMate
.tmTheme(Sublime Text, Atom, TextMate) - JetBrains
.icls(IntelliJ, WebStorm, PyCharm, GoLand) - Vim/Neovim
.vimcolor scheme - Windows Terminal JSON fragment
- TextMate
- 28 total export files across 4 formats for all 7 themes
npm run convertscript for on-demand theme conversion- CI: WCAG reports uploaded as artifacts on every run
- CI: Converted themes validated for parse correctness (XML, Vim syntax, JSON)
- CI: Converted themes uploaded as artifacts
- CI: GitHub Release includes multi-editor exports alongside
.vsix - Repository description updated from outdated "Monaspace font based Theme"
Changed
- All 7 theme text-foreground colors now pass WCAG AA (4.5:1 minimum contrast ratio)
- Version bumped from 0.1.0 to 0.2.0
Fixed
- Dark theme variants (base, deuteranopia, protanopia, tritanopia):
input.placeholderForegroundlightened from#726D89to#a29fb1(2.36:1 -> 4.50:1) - Dark theme variants:
activityBar.inactiveForeground,tab.inactiveForeground,titleBar.inactiveForegroundlightened from#726D89to#87839b(3.40:1 -> 4.59:1) - Dark theme variants:
terminal.ansiBrightBlacklightened from#726D89to#8b879e(3.20:1 -> 4.55:1) - Light theme:
editorError.foregroundadjusted from#B45353to#b05151(4.36:1 -> 4.53:1) - Light theme:
editorWarning.foregroundadjusted from#8C6D34to#886a32(4.31:1 -> 4.51:1) - Light theme:
input.placeholderForegrounddarkened from#948E9Eto#6b6672(2.59:1 -> 4.54:1) - Light theme:
list.highlightForegrounddarkened from#8B5F9Eto#724e82(3.35:1 -> 4.53:1) - Light theme:
activityBar.inactiveForeground,tab.inactiveForeground,titleBar.inactiveForegrounddarkened from#948E9Eto#635f6a(2.34:1 -> 4.60:1) - Light theme:
terminal.ansiBrightBlackdarkened from#948E9Eto#706c78(2.83:1 -> 4.57:1) - Light theme:
badge.foregroundadjusted from#F5F2E8to#f7f4ea(4.43:1 -> 4.51:1) - Monochrome:
input.placeholderForegroundlightened from#777777to#b1b1b1(2.17:1 -> 4.54:1) - Monochrome:
activityBar.inactiveForeground,tab.inactiveForeground,titleBar.inactiveForegroundlightened from#777777to#7a7a7a(4.42:1 -> 4.61:1) - Monochrome:
terminal.ansiBrightBlacklightened from#777777to#858585(3.81:1 -> 4.62:1) - High Contrast:
list.highlightForegroundlightened from#AD58FFto#bf7dff(3.38:1 -> 4.57:1)
[0.1.0] - 2026-05-20
Added
- Shroom Space Light theme (light variant with warm earth-tone palette)
- Shroom Space theme to package.json contributes (was present on disk but unlisted)
- Missing
propertysemantic token rule to deuteranopia, protanopia, tritanopia, monochrome, and high-contrast themes - Missing
namefield on tokenColors entry "Preprocessor, Annotations, Decorators, Attributes" in 5 variant themes - Comprehensive theme validation script (
validate-themes.js) with hex format, structure, accessibility, and manifest checks - 76-test suite covering theme structure, hex format validity, accessibility color distinguishability, and package manifest consistency
- Strict ESLint configuration with error-level rules:
no-console,no-debugger,prefer-const,no-unused-vars,no-explicit-any,explicit-function-return-type - Theme validation integrated into
npm testpipeline viapretestscript - Git pre-commit hook enforcing lint, compile, and validation before commits
- Showcase sample files for 8 programming languages
Changed
- High Contrast theme type changed from
dark/vs-darktohc/hc-blackfor proper VS Code high-contrast integration extension.ts: removed scaffold stub code (unused helloWorld command, vscode import), replaced with minimal activation stubextension.test.ts: replaced placeholderArray.indexOftest with 76 structural and semantic theme validation testseslint.config.mjs: all rules upgraded fromwarntoerror; addedno-console,no-debugger,prefer-const,@typescript-eslint/no-unused-vars,@typescript-eslint/no-explicit-any,@typescript-eslint/explicit-function-return-type,no-empty-function.vscode/tasks.json: replaced Windows CMD syntax with cross-platformnodecommand; added Validate Themes task- CI workflow: upgraded Node.js from 18 to 22; added separate lint and validation steps
- Publish workflow: upgraded Node.js from 20 to 22; added lint, validation, and test steps before packaging
LICENSE: replaced placeholder copyright with "Copyright 2024-2026 Wyatt Au"- Copyright headers in source files updated to "Copyright 2024-2026 Wyatt Au"
Fixed
- Deuteranopia:
editorBracketHighlight.foreground2andforeground4were identical (#FFCB6B), now differentiated (#74D7C8and#82AAFF) - Deuteranopia:
terminal.ansiCyanandterminal.ansiYellowwere identical (#FFCB6B), now#74D7C8and#FFCB6B - Protanopia: same bracket and terminal color collisions as deuteranopia, fixed with identical adjustments
- Tritanopia:
editorError.foregroundandeditorWarning.foregroundwere identical (#E68484), now#E68484and#89DDFF - Tritanopia:
notificationsWarningIcon.foregroundchanged from#E68484to#C3E88Dto distinguish from error icon - Tritanopia:
editorBracketHighlight.foreground2andforeground3were identical (#FF79C6), now#FF79C6and#C3E88D - Tritanopia:
terminal.ansiBlueandterminal.ansiMagentawere identical (#FF79C6), now#89DDFFand#FF79C6 - Monochrome:
editorError.foregroundandeditor.foregroundwere i...