All notable changes to this project will be documented in this file.
- chore: moved from nightly to a weekly automated release since issues and development have slowed down.
- docs: reconcile contradictory reload-prompt descriptions (#236)
- reload prompt dismiss appears broken due to stacked notifications (#235)
- resolve high-severity js-yaml vulnerability (CVE-2026-59870)
- update outdated dev dependencies (lint-staged, tsx) (#231)
- resolve 3 high-severity npm audit vulnerabilities
- chore(deps-dev): bump @types/node from 26.1.1 to 26.1.2 (#226)
- chore(deps-dev): bump lint-staged from 17.1.0 to 17.2.0 (#225)
- chore(deps-dev): bump @biomejs/biome from 2.5.5 to 2.5.6 (#224)
- remove vim fold markers from all source files (#218)
- prompt to reload after regenerating theme JSON (#217)
- Update in-repo skill files with new official Ravenwood light palette (#214)
- optimize light mode palette from everforest defaults to official Ravenwood light (#212)
- Extract base.ts 1110-line monolith into grouped sub-builders + fix hardcoded opacity (#206)
- Architecture: union-type Configuration, deduplicate syntax rules, add test coverage (#208)
- migrate isNewlyInstalled to globalState (#203)
- terminal.border and terminalOverviewRuler.border use visible bg4/bg5 instead of blending bg (#201)
- visible borders under terminal header and in sidebar on base dark theme (#198)
- ci: add npm audit step to CI workflow (#210)
- semantic: add semantic token rules for Stylus (#118)
- semantic: add semantic token rules for SASS (#117)
- Realm Themes: 8 new static themes inspired by Norse cosmology, ported from the former Ravenwood Realms companion extension:
- Ravenwood Asgard (dark) — golden/majestic, golds and royal purples
- Ravenwood Vanaheim (dark) — verdant/fertile, deep greens and earth browns
- Ravenwood Alfheim (light) — ethereal/luminous, pastels and silvery whites
- Ravenwood Svartalfheim (dark) — subterranean, deep indigos and charcoal
- Ravenwood Nidavellir (dark) — forge/industry, amber and molten gold
- Ravenwood Jotunheim (dark) — cold/vast, ice blues and frost whites
- Ravenwood Muspelheim (dark) — fire/primordial, deep reds and magma
- Ravenwood Helheim (dark) — desolate/muted, muted purples and greys
- Each realm uses the same 910 workbench color keys and full semantic token coverage as the base themes
- Realm palettes live in
src/palette/realms/and are generated at build time viagenerateThemes.ts getSemanticFromPalette()added tosrc/semantic.tsas a palette-direct variant ofgetSemantic()
- semantic: add semantic token rules for SQL (#106)
- semantic: add semantic token rules for Diff (#108)
- semantic: add semantic token rules for JSON (#109)
- semantic: add semantic token rules for YAML (#110)
- semantic: add semantic token rules for TOML (#111)
- semantic: add semantic token rules for Pug (#112)
- semantic: add semantic token rules for Proto (#113)
- semantic: add semantic token rules for LaTeX (#114)
- semantic: add semantic token rules for Markdown (#115)
- semantic: add semantic token rules for reStructuredText (#116)
- chore: updated sponsor and buy me a coffee link
- chore: untrack generated theme JSON files (themes/ now gitignored, regenerated by
npm run compile)
- semantic: add semantic token rules for C (#100)
- semantic: add semantic token rules for CSS (#101)
- semantic: add semantic token rules for PowerShell (#102)
- semantic: add semantic token rules for GraphQL (#103)
- semantic: add semantic token rules for Shell/Bash (#104)
- semantic: add semantic token rules for Fish (#105)
- syntax: expand C TextMate scopes (currently 5 rules) (#60)
- syntax: expand Java TextMate scopes (currently 5 rules) (#61)
- syntax: expand Tmux TextMate scopes with yellow and blue categories (#62)
- syntax: expand C++ TextMate scopes with yellow, green, and purple categories (#63)
- syntax: expand SQL TextMate scopes with grey, orange, and purple categories (#64)
- syntax: expand F# TextMate scopes with grey, red, orange, and aqua categories (#65)
- syntax: expand Dockerfile TextMate scopes with grey, red, and blue categories (#66)
- syntax: expand Erlang TextMate scopes with orange, aqua, and blue categories (#67)
- syntax: expand Haskell TextMate scopes with grey, red, and purple categories (#68)
- syntax: expand CoffeeScript TextMate scopes with yellow and blue categories (#69)
- syntax: expand C# TextMate scopes with grey, orange, and blue categories (#70)
- syntax: expand TypeScript TextMate scopes with red, yellow, and blue categories (#71)
- syntax: expand Fish TextMate scopes (currently 5 rules) (#72)
- syntax: expand Go TextMate scopes (currently 6 rules) (#73)
- syntax: expand PureScript TextMate scopes (currently 5 rules) (#74)
- syntax: expand HTML TextMate scopes (currently 5 rules) (#75)
- syntax: expand LaTeX TextMate scopes (currently 5 rules) (#76)
- syntax: expand Perl TextMate scopes (currently 6 rules) (#77)
- syntax: expand Dart TextMate scopes (currently 6 rules) (#78)
- chore: updated sponsor and buy me a coffee link
- chore: untrack generated theme JSON files
- syntax: expand Common Lisp TextMate scopes (currently 4 rules) (#59)
- syntax: expand Elixir TextMate scopes (currently 3 rules) (#58)
- Full VS Code Workbench Color Key Coverage: Audited the theme against the official VS Code theme color reference and closed all gaps. The theme now ships 910 of 910 official core VS Code workbench color keys (100% coverage), up from ~72% in 1.0.0. Added ~160 previously missing keys across every major UI surface:
- Command Center:
commandCenter.*(9 keys — entire section previously missing) - Source Control Graph:
scmGraph.*(13 keys — entire section previously missing) - Gauge:
gauge.*(7 keys — entire section previously missing) - Markdown Alerts:
markdownAlert.*(5 keys — entire section previously missing) - Agent Session:
agentSession*,agentStatusIndicator.*,aiCustomizationManagement.*(5 keys — entire section previously missing) - Terminal Symbol Icons:
terminalSymbolIcon.*(19 keys — entire family previously missing) - Bracket Pair Guides:
editorBracketPairGuide.*(12 keys — active + inactive × 6) - Numbered Indent Guides:
editorIndentGuide.background1-6+activeBackground1-6(12 keys) - Inline Edit (new schema):
inlineEdit.gutterIndicator.*(10 keys),inlineEdit.original/modified*,inlineEdit.tabWillAccept*(12 keys) - Merge Editor:
mergeEditor.*(13 keys — entire section previously missing) - Multi-cursor:
editorMultiCursor.*(4 keys) - Radio buttons:
radio.*(7 keys) - Editor borders:
editor.selectionHighlightBorder,editor.wordHighlight*Border,editor.findMatch*Border,editor.rangeHighlightBorder,editor.symbolHighlightBorder,editorError/Warning/Info/Hint.border(13 keys) - Editor misc:
editorUnicodeHighlight.*,editor.linkedEditingBackground,editor.compositionBorder,editorLineNumber.dimmedForeground,editor.foldPlaceholderForeground,editor.inactiveLineHighlightBackground,editorLightBulbAi.foreground,editorBracketMatch.foreground,editor.placeholder.foreground - Editor gutter:
editorGutter.*SecondaryBackground(3),editorGutter.commentGlyphForeground,editorGutter.commentUnresolvedGlyphForeground,editorGutter.commentDraftGlyphForeground,editorGutter.foldingControlForeground,editorGutter.itemGlyphForeground,editorGutter.itemBackground - Overview ruler:
editorOverviewRuler.wordHighlightTextForeground,editorOverviewRuler.bracketMatchForeground,editorOverviewRuler.inlineChatInserted/Removed,editorOverviewRuler.commentDraftForeground,editorOverviewRuler.commentForeground,editorOverviewRuler.commentUnresolvedForeground - Diff editor:
diffEditor.unchangedRegion*(4 keys),diffEditorOverview.*(2 keys) - Editor comments widget:
editorCommentsWidget.*(5 keys) - Terminal:
terminal.findMatchBorder,terminal.findMatchHighlightBorder,terminal.inactiveSelectionBackground,terminal.initialHintForeground,terminalOverviewRuler.border,terminalStickyScroll.border,terminalCommandDecoration.*(3 keys) - Chat (official keys):
chat.editedFileForeground,chat.linesAdded/RemovedForeground,chat.requestCodeBorder,chat.requestBubbleBackground,chat.requestBubbleHoverBackground,chat.checkpointSeparator,chat.thinkingShimmer,chatManagement.sashBorder - Minimap:
minimap.selectionOccurrenceHighlight,minimap.foregroundOpacity,minimap.infoHighlight,minimap.chatEditHighlight,editorMinimap.inlineChatInserted - Tabs:
tab.selected*(3 keys),tab.dragAndDropBorder,tab.activeBorderTop,tab.unfocusedActiveBorderTop,tab.unfocusedInactiveBackground,tab.hoverBorder,tab.unfocusedHoverBorder,tab.*ModifiedBorder(4 keys) - Editor group:
editorGroup.focusedEmptyBorder,editorGroup.dropIntoPrompt*(3 keys),sideBySideEditor.*(2 keys) - Lists/trees:
list.focusHighlightForeground,list.focusAndSelectionOutline,list.inactiveFocusOutline,list.dropBetweenBackground,listFilterWidget.*(4 keys),tree.inactiveIndentGuidesStroke - Activity bar:
activityBar.dropBorder,activityWarningBadge.*,activityErrorBadge.* - Profiles:
profileBadge.*,profiles.sashBorder - Side bar:
sideBarActivityBarTop.border,sideBarTitle.background,sideBarTitle.border,sideBarStickyScroll.shadow - Panel:
panel.dropBorder,panelTitle.border,panelTitleBadge.*,panelSectionHeader.border,outputView.background,outputViewStickyScroll.background - Status bar:
statusBar.debuggingBorder - Banner:
banner.*(3 keys — entire section previously missing) - Settings:
settings.dropdownListBorder,settings.focusedRowBorder,settings.settingsHeaderHoverForeground - Notebook:
notebook.editorBackground,notebook.cellEditorBackground,notebook.inactiveSelectedCellBorder,notebookEditorOverviewRuler.runningCellForeground,notebook.outputContainerBorderColor - Testing:
testing.*.retired(6 keys),testing.coverCountBadgeForeground,testing.message.error.badge*(3 keys) - Welcome page:
welcomePage.progress.background,welcomePage.tileBackground,welcomePage.tileBorder - Search editor:
searchEditor.*(3 keys),search.resultsInfoForeground - Suggest widget:
editorSuggestWidget.focusHighlightForeground,editorSuggestWidget.selectedForeground,editorSuggestWidget.selectedIconForeground,editorSuggestWidgetStatus.foreground - Peek view:
peekViewEditor.matchHighlightBorder,peekViewEditorStickyScroll*(2 keys) - Debug:
debugToolBar.border,debugTokenExpression.type,editor.stackFrameHighlightBackground,editor.focusedStackFrameHighlightBackground,editor.inlineValues*(2 keys) - Charts:
charts.lines,chart.*(3 keys) - Quick picker:
quickInputList.*(3 keys) - Misc:
disabledForeground,widget.border,window.*(2 keys),textPreformat.*(2 keys),textSeparator.foreground,toolbar.hoverOutline,toolbar.activeBackground,editorActionList.*(4 keys),checkbox.disabled.*(2 keys),checkbox.select*(2 keys),scrollbar.background,actionBar.toggledBackground,simpleFindWidget.sashBorder,git.blame.editorDecorationForeground,extensionIcon.sponsorForeground,extensionIcon.privateForeground,mcpIcon.starForeground,inlineChat.foreground,menubar.selectionForeground,extensionButton.border,editorMarkerNavigation*.headerBackground(3 keys),editorStickyScrollGutter.background,editorGhostText.border,editorHoverWidget.foreground
- Command Center:
- Renamed 5 stale keys to current VS Code names:
editorPlaceholder.foreground→editor.placeholder.foregroundpanel.stickyScroll.*→panelStickyScroll.*(3 keys)diffEditorOverviewRuler.*→diffEditorOverview.*(2 keys)settings.settingsHeaderHoverBackground→settings.settingsHeaderHoverForegroundeditor.fold.background(duplicate dead key at line 164) — removed
- Fixed misspelled key:
notebook.outputContainerBorder→notebook.outputContainerBorderColor - Corrected 1.0.0 changelog: The 1.0.0 entry claimed "complete VS Code theming coverage" and listed deprecated
chat.*keys (chat.border,chat.messageBackground,chat.input*,chat.codeBlockBackground) as additions. These were not official VS Code keys. The claim was premature — actual coverage at 1.0.0 was ~72%. This release achieves the real 100%. - syntax: expand Makefile TextMate scopes (currently 3 rules) (#52)
- syntax: expand TOML TextMate scopes (currently 4 rules) (#53)
- syntax: expand Git/INI TextMate scopes (currently 4 rules) (#54)
- syntax: expand YAML TextMate scopes (currently 3 rules) (#55)
- syntax: expand Pug TextMate scopes (currently 4 rules) (#56)
- syntax: expand Protobuf TextMate scopes (currently 3 rules) (#57)
- syntax: expand JSX TextMate scopes (#51)
- syntax: expand Shell/Bash TextMate scopes (#41)
- syntax: expand JavaScript TextMate scopes (#40)
- syntax: expand R TextMate scopes (#42)
- semantic: add semantic token rules for JSX (#119)
- semantic: add semantic token rules for Html/Xml (#120)
- semantic: add semantic token rules for Dart (#38)
- semantic: add semantic token rules for Swift (#27)
- semantic: add semantic token rules for Scala (#24)
- semantic: add semantic token rules for Kotlin (#28)
- semantic: add semantic token rules for OCaml (#37)
- semantic: add semantic token rules for PureScript (#34)
- semantic: add semantic token rules for CoffeeScript (#35)
- semantic: add semantic token rules for Haskell (#36)
- semantic: add semantic token rules for Perl (#39)
- ~64 deprecated/nonexistent VS Code core keys that were shipped in 1.0.0 but are not in the official VS Code theme color reference:
- 10 deprecated
chat.*keys:chat.background,chat.foreground,chat.border,chat.messageBackground,chat.messageForeground,chat.inputBackground,chat.inputForeground,chat.inputBorder,chat.inputFocusBorder,chat.codeBlockBackground,chat.requestForeground - 16 old-schema
inlineEdit.*keys:inlineEdit.background,inlineEdit.border,inlineEdit.insertedBackground,inlineEdit.removedBackground,inlineEdit.insertedTextBackground,inlineEdit.removedTextBackground,inlineEdit.insertedTextColor,inlineEdit.removedTextColor,inlineEdit.focusedBackground,inlineEdit.focusedBorder,inlineEdit.indicator.*,inlineEdit.label.* - 12
commentThread.*/ extracommentsView.*keys (not in official reference) - 4 deprecated
button.*keys:button.hoverForeground,button.focusBorder,button.focusBackground,button.focusForeground - 4 deprecated
activityBarTop.*keys:activityBarTop.border,activityBarTop.dropBackground,activityBarTop.activeFocusBorder - 2 deprecated
breadcrumb.*keys:breadcrumb.focusBackground,breadcrumb.activeSelectionBackground interactive.background,interactive.requestBackground,extensionBadge.background,extensionBadge.foreground,welcomePage.buttonBackground,welcomePage.buttonHoverBackground,welcomePage.selectionBackground,walkthrough.stepBackground,imagePreview.border,textCodeBlock.border,activityBar.dropBackground,notebook.focusedRowBorder,terminalCommandGuide.activeForeground,testing.coveredBranchBackground,testing.message.error.decorationForeground
- 10 deprecated
- Version: 1.0.0 → 1.1.0
- Workbench color key count: ~485 → 971 (net: +160 official keys added, ~64 deprecated keys removed)
- Official VS Code key coverage: ~72% → 100% (910/910 core keys)
- Structural test threshold: Minimum workbench key count raised from 600 to 900
- Test suite: Updated
test/structural.test.tsto verify corrected key names and removed deprecated key references
-
Expanded VS Code Theming Coverage: Added ~240 workbench color keys covering major UI surfaces added in VS Code 1.95–1.125. (Note: this release did not achieve full coverage — ~72% of official keys were present. Full 100% coverage was achieved in 1.1.0.)
- Chat / Agent / AI:
chatParticipant.*,chatStatus.*,chatSession.*,chatEdit.*,agent.*,agentDashboard.*,simpleChat.*,terminalChat.*,editorChat.* - Editor:
editorStickyScroll.*,editor.foldBackground,editor.selectionForeground,editorCursor.background,editorPane.background,editorOverviewRuler.background - Terminal:
terminal.background,terminal.border,terminal.selection*,terminal.findMatch*,terminalCommandGuide.*,terminalStickyScroll.*,terminal.hoverHighlightBackground - Minimap:
minimap.background,minimapSlider.* - Breadcrumb:
breadcrumb.background,breadcrumbPicker.background - Activity Bar Top:
activityBarTop.*(keys for the new top bar) - Inline Edit:
inlineEdit.*(old schema — replaced with official schema in 1.1.0) - Testing Coverage:
testing.cover*(9 keys for code coverage colors) - Diff Editor:
diffEditor.move.*,diffEditor.inserted/removedLineBackground,diffEditorGutter.*,diffEditorOverviewRuler.*(renamed todiffEditorOverview.*in 1.1.0) - Multi-Diff Editor:
multiDiffEditor.*(3 keys) - Comments:
commentsView.*(official keys),commentThread.*(removed in 1.1.0 — not in official reference) - Buttons / Inputs:
button.border,inputOption.active*,inputOption.hoverBackground - Lists / Trees:
list.filterMatch*,list.deemphasizedForeground,tree.table* - Status Bar:
statusBar.focusBorder,statusBarItem.*Hover*,statusBarItem.offline* - And more:
multiDiffEditor.*,merge.common*,gitDecoration.renamedResourceForeground,walkthrough.*,welcomePage.*,menu.*,dropdown.listBackground,panelSection.*,panel.stickyScroll.*(renamed topanelStickyScroll.*in 1.1.0),sideBar.*,debugView.*,settings.*,extensionButton.*,notification*.border,editorWidget.resizeBorder,notebook.*,notebookScrollbarSlider.*,editorHoverWidget.highlightForeground,editorHoverWidget.statusBarBackground
- Chat / Agent / AI:
-
WCAG Contrast Test Suite: Added
test/contrast.test.ts— 168 tests across 7 categories that verify every palette variant meets accessibility thresholds:- Primary text contrast (AA minimum, all variants achieve AAA)
- Grey text contrast (AA-large minimum)
- Badge contrast on background and foreground
- Dim variant integrity (darker and desaturated vs parent)
- Foreground tint (not pure white/black)
- Background tint (not neutral grey)
- Background gradient smoothness
-
Workbench Key Coverage Tests: Added 5 tests to
test/structural.test.tsverifying dark/light key parity, minimum key count (≥600), and presence of all critical namespaces.
- Version: 0.3.5 → 1.0.0 — marking the theme's first stable release
- VS Code Engine:
^1.95.0→^1.97.0— ensuring compatibility with all modern theming keys - @types/vscode:
1.95.0→^1.97.0— enabling type-safe access to newer color keys - Test Suite: Grew from 81 to 254 tests across 19 suites, covering structural integrity, palette accuracy, WCAG contrast, scope safety, syntax sync, and build combinations
- expand Stylus TextMate scopes (currently 2 rules) (#47)
- expand PHP TextMate scopes (#43)
- syntax: expand Clojure TextMate scopes (currently 3 rules) (#44)
- syntax: expand Kotlin TextMate scopes (currently 4 rules) (#46) (#127)
- syntax: expand PowerShell TextMate scopes (currently 4 rules) (#45) (#126)
- syntax: consolidate duplicate GraphQL sections and fix fold marker style inconsistency (#107) (#125)
- syntax: expand VimL TextMate scopes (currently 4 rules) (#48) (#124)
- correct CMake color mappings per review feedback (#50) (#123)
- syntax: expand CMake TextMate scopes (currently 3 rules) (#50) (#122)
- syntax: expand JSON TextMate scopes (currently 3 rules) (#49) (#121)
- add missing Common Lisp fold marker in semantic.ts
- semantic: add semantic token rules for Elixir (#22)
- semantic: add semantic token rules for Erlang (#19) (#98)
- semantic: add semantic token rules for Ruby (#20) (#97)
- semantic: add semantic token rules for Common Lisp (#21) (#96)
- semantic: add semantic token rules for R (#23)
- semantic: add semantic token rules for Lua (#33)
- semantic: add semantic token rules for Groovy (#32)
- semantic: add semantic token rules for Clojure (#30)
- semantic: add semantic token rules for PHP (#29)
- semantic: add semantic token rules for Julia (#25)
- removed agent skills from being packaged in the vsix build
- semantic: add semantic token rules for F# (#26) (#87)
- use gh release create --generate-notes instead of custom script
- create GitHub Releases on tag push (was publishing to marketplaces only)
- syntax: expand GraphQL TextMate scopes (currently 6 rules) (#79) (#86)
- syntax: expand SASS/SCSS TextMate scopes (currently 5 rules) (#80) (#85)
- test: add 81-test suite (structural, palette, sync, scope-safety, build-combos) + wire into CI
- docs: pass — remove colorblind statement, fix outdated toolchain refs, update language coverage
- add .agents/skills/ravenwood for cross-agent context + dependency audit in nightly release
- docs: reference .agents/skills/ravenwood in AGENTS.md
- semantic: add semantic token rules for Elm (#31) (#81)
- ci: remove sensitive comment from nightly release workflow
- ci: use RELEASE_TOKEN (PAT) for nightly release merge and push
- ci: fix nightly release — use PR merge with admin bypass for branch protection
- ci: add nightly release workflow — auto version bump, changelog, tag
- Semantic Token Expansion: Added LSP semantic token mappings for Java (11 tokens: class, interface, enum, enumMember, namespace, typeParameter, function, method, parameter, variable, property), C# (11 tokens: same set), and C++ (12 tokens: class, struct, enum, enumMember, namespace, typeParameter, function, method, parameter, variable, field). Expanded Python from 3 to 10 tokens (added function, method, parameter, variable, decorator, enumMember, namespace). Expanded Go from 8 to 11 tokens (added field, constant, typeParameter).
- Syntax Rule Expansion: Expanded TextMate rules for 7 previously thin-coverage languages: CoffeeScript (1→6 rules), Perl (1→6), Elm (2→8), Lua (2→7), OCaml (3→8), Julia (4→7), and Tmux (1→6). Both
default.tsanditalic.tsupdated in sync. - Dart Sample: Added
samples/dart.dartcovering classes, enums, generics, annotations, and string interpolation — the only language with syntax rules but no sample file.
- Documentation Pass: Added
CONFIGURATION.md(full reference for all 12 settings) andARCHITECTURE.md(module layout, runtime regeneration flow, build-time hook, palette/workbench/syntax walkthrough). RefreshedREADME.mdwith the 4 previously-missing config options (darkSelection,lightSelection,diagnosticTextBackgroundOpacity,highContrast), a requirements note, and a build section. Added JSDoc to every exported function, class, method, and interface insrc/. - Rust Syntax Expansion: Expanded Rust TextMate rules from 5 to 9 rules (added functions, macros, lifetimes, types/struct/enum/trait names,
Self, generic type parameters, constants, control flow keywords, operators). Expanded Rust LSP semantic tokens from 3 to 15 tokens (addedstruct,enum,trait,typeAlias,function,method,parameter,variable,field,constant,lifetime,module), scoped to:rustto match the Go/TS/Python pattern. - Python Syntax Expansion: Added f-string interpolation, magic/dunder methods, decorator names, type hints, explicit control-flow keywords, and operators. Grew from 4 to 8 rules.
- Swift Syntax Expansion: Added explicit keywords, storage types/operators, type names, functions, class/constant coverage. Grew from 2 to 7 rules.
- SQL Syntax Expansion: Added explicit keywords (CREATE/DROP/ALTER/control), all SQL functions (not just aggregates), table/column names, type names, and variables. Grew from 2 to 5 rules.
- Go Generics: Added
entity.name.type.parameter.goandentity.name.type.generic.goto the Go type rule so post-Go-1.18 generic type parameters render consistently with named types.
- Toolchain Modernization: Upgraded to TypeScript 7.0.2 (native compiler) and bumped
engines.vscodeto^1.95.0. Replaced theeslint+typescript-eslint+prettierstack with Biome 2.5.x (Rust-based, single tool for lint + format) becausetypescript-eslintv8 does not support TS 7 and TS 7 ships no programmatic API. Husky upgraded to 9.1.7 (thepreparescript now runshuskyinstead ofhusky install).tsconfig.jsonnow usestarget/libes2022,strict: true,skipLibCheck: true, and an explicittypes: ["node"]. - Workbench Refactor: Extracted the ~95% shared token map from
material.ts/flat.ts/highContrast.tsinto a newsrc/workbench/base.ts. Each style file is now a thin wrapper that callsgetBaseWorkbenchTokens()and spreads its specific overrides. ThehighContrastconfig flag overlay is shared viaapplyHighContrastFlag(). - Build-Time Deduplication: Removed the duplicated
Utilsclass fromsrc/hook/generateThemes.ts. Both runtime and build-time now share a single puregetThemeData()helper in the newsrc/themeData.ts. - Variant Validation: Variant-dispatching functions (
getPalette,getWorkbench,getSelectionColors,getCursorColor,getWorkbenchVariantColors) now throw on unknown variants instead of silently falling back to light. - Palette Type Safety: Each palette export file is annotated
satisfies Partial<Palette>so misspelled keys fail at compile time. - Explicit Return Types: All exported functions and methods across
src/now have explicit return-type annotations.
- Invalid Theme Colors: Removed stray
}characters inside template literals inflat.ts(editorMarkerNavigation{Error,Warning,Info}.background) andhighContrast.ts(same three pluschat.requestBorder). These produced invalid hex values like#da636280}that VS Code would reject. - Unhandled Async:
index-client.tsnow awaits theme regeneration and surfaces errors viawindow.showErrorMessage. TheonDidChangeConfigurationsubscription is pushed intocontext.subscriptions(was leaked previously).activate()now accepts anExtensionContext. - isNewlyInstalled Race:
Utils.isNewlyInstalled()is nowasyncand awaits the flag-file write before returning, preventing repeated "newly installed" triggers. - italicComments Default:
getSyntax()now defaultsitalicComments ?? true, matching the documented default when the config is unset. - tokenColors Typing:
ThemeData.tokenColorsis now typedSyntaxRule[]instead ofunknown[]. - Dead Syntax Rule: Removed the "TypeScript blue" rule in
default.ts/italic.tswhoseentity.name.type.module.tsscope shadowed the earlier "TypeScript white" rule. Also removed the dead "TSX white" rule shadowed by "TSX blue" for the same.tsxscope. - Misnamed Syntax Rules: "Scala grey"/"Scala red" (on
.groovyscopes) renamed to "Groovy grey"/"Groovy red". "PHP blue" (on.cppscopes) renamed to "C++ blue" and relocated from the PHP section to the C++ section. - Overbroad Scala Scope: The "Scala yellow" rule used the generic
entity.name.classscope (no.scalasuffix), which overrode class colors for ALL languages. Fixed toentity.name.class.scala. - Italic-Mode Go Regression: Restored the missing
Go orange/Go yellow/Go greenrules initalic.ts. Previously Go type names rendered blue in italic mode but yellow in default mode due to the missingGo yellowrule. - Modeline Typo: Fixed
fmr={{{{,}}}}:→fmr={{{,}}}:inhighContrast.ts.
- Go Semantic Tokens: Added semantic token support for Go including namespace, type, struct, interface, function, method, variable, and parameter tokens.
- Background Colors: Fixed inconsistent bg0/bg1/bg values in dark/medium palette - all three were identical (#1a1f1c) and are now distinct (#141814, #1a1f1c, #222822).
- Theme Generation: Fixed async/await bug in generateThemes.ts where Promise.all was not being awaited, causing potential race conditions.
- Type Safety: Added ThemeData and SyntaxRule interfaces for improved TypeScript type safety.
- Code Quality: Standardized file header format across all TypeScript source files.
- Major Theme Refresh: Upgraded to 0.2.0 to mark significant visual improvements and codebase refactoring.
- Go Syntax Highlighting: Added comprehensive syntax support for the Go programming language, including specific colors for keywords (
go,chan,map), types, functions, and packages to match the Ravenwood palette. - Light Mode Consistency: Unified the panel and editor background colors in light mode to remove distracting contrast blocks.
- Workbench Architecture: Modularized workbench logic for better maintainability.
- Critical Visual Bug: Resolved a syntax error in
scrollbarSlider.backgroundthat caused the scrollbar to appear red in dark mode. - Build Process: Resolved build pipeline issues and cleaned up version history.
- Modular workbench architecture: centralized shared UI logic (selection, cursor, and diagnostic colors) in
src/workbench/common.tsfor better maintainability.
- Refined the "Ravenwood Emerald" palette:
- Deepened dark backgrounds for a more immersive forest feel.
- Saturated dark mode foregrounds (Green, Yellow, Aqua, Blue, Purple) for better "pop".
- Deepened light mode colors to improve cohesion and readability.
- Standardized workbench UI:
- Updated Checkbox, Dropdown, and Widget backgrounds to use consistent palette steps.
- Improved input validation contrast for the light variant.
- Removed the reload prompt: The extension now updates the theme dynamically and silently when configuration changes are detected, providing a more seamless experience.
- Updated project description and metadata.
- Fixed critical syntax errors in workbench template strings that resulted in invalid color values.
- Restored and corrected async theme generation logic in utility classes.
- Added custom logo to the extension
- Added icon field to package.json for marketplace display
- Added files array to properly include logo in package
- Optimized light theme colors for better visibility:
- Darkened foreground colors by ~30% for improved readability
- Darkened grey UI colors by ~25% for better contrast
- Applied changes across all light theme variants (soft, medium, hard)
- Updated copyright email addresses from
i@sainnhe.devtosupport@raythurman.dev - Fixed workflow artifact names from
everforesttoravenwood
- Initial release of Ravenwood.
- Custom "Ravenwood Emerald" color palette.
- Deepened dark background contrast.
- Forked and rebranded from Everforest.