Generate the theme catalog from real themes instead of a hand table

The derivation landed in decision 0018 with the catalog and the terminal ANSI
palette still fixed tables written by hand. tools/theme-gen reads the
TextMate themes under assets/themes/ and emits the catalog and the reference
vectors, so the anchors a palette is derived from are the ones the theme
actually ships rather than the ones somebody transcribed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SPYebLiN2w4TqnHUYGdECq
This commit is contained in:
Metal Agent
2026-09-01 12:51:25 -07:00
co-authored by Claude Opus 5
parent 7bee985279
commit 401760d670
108 changed files with 72648 additions and 12 deletions
+418
View File
@@ -0,0 +1,418 @@
{
"colors": {
"activityBar.background": "#FDF0ED",
"activityBar.dropBackground": "#F9CEC380",
"activityBar.foreground": "#06060CE6",
"activityBarBadge.background": "#E84A72",
"activityBarBadge.foreground": "#06060C",
"badge.background": "#F9CBBE",
"badge.foreground": "#06060C",
"breadcrumbPicker.background": "#FADAD1",
"button.background": "#F9CBBE",
"button.foreground": "#06060C",
"debugToolBar.background": "#FDF0ED",
"diffEditor.insertedTextBackground": "#07DA8C1A",
"diffEditor.removedTextBackground": "#F43E5C1A",
"dropdown.background": "#FADAD1",
"dropdown.listBackground": "#F9CBBE",
"editor.background": "#FDF0ED",
"editor.findMatchBackground": "#F9CEC380",
"editor.findMatchHighlightBackground": "#F9CEC34D",
"editor.findRangeHighlightBackground": "#F9CEC31A",
"editor.hoverHighlightBackground": "#F9CEC34D",
"editor.lineHighlightBackground": "#F9CBBE4D",
"editor.rangeHighlightBackground": "#F9CBBE80",
"editor.selectionBackground": "#F9CBBE80",
"editor.selectionHighlightBackground": "#F9CEC380",
"editor.wordHighlightBackground": "#F9CEC380",
"editor.wordHighlightStrongBackground": "#F9CEC380",
"editorBracketMatch.background": "#F9CEC380",
"editorBracketMatch.border": "#F9CEC300",
"editorCodeLens.foreground": "#F9CEC380",
"editorCursor.background": "#FDF0ED",
"editorCursor.foreground": "#E84A72",
"editorError.foreground": "#F43E5C",
"editorGroup.border": "#1A1C231A",
"editorGroup.dropBackground": "#F9CEC34D",
"editorGroupHeader.tabsBackground": "#FDF0ED",
"editorGutter.addedBackground": "#07DA8CB3",
"editorGutter.deletedBackground": "#F43E5CB3",
"editorGutter.modifiedBackground": "#1EAEAEB3",
"editorIndentGuide.activeBackground": "#F9CBBE",
"editorIndentGuide.background": "#F9CBBE80",
"editorLineNumber.activeForeground": "#06060C80",
"editorLineNumber.foreground": "#06060C1A",
"editorOverviewRuler.addedForeground": "#07DA8CB3",
"editorOverviewRuler.border": "#F9CBBE1A",
"editorOverviewRuler.bracketMatchForeground": "#06060CB3",
"editorOverviewRuler.deletedForeground": "#F43E5CB3",
"editorOverviewRuler.errorForeground": "#F43E5CE6",
"editorOverviewRuler.findMatchForeground": "#F9CEC3",
"editorOverviewRuler.modifiedForeground": "#1EAEAEB3",
"editorOverviewRuler.warningForeground": "#1EB980B3",
"editorRuler.foreground": "#F9CEC34D",
"editorSuggestWidget.highlightForeground": "#E84A72",
"editorUnnecessaryCode.opacity": "#000000B3",
"editorWarning.foreground": "#1EB980B3",
"editorWidget.background": "#FADAD1",
"editorWidget.border": "#FADAD1",
"errorForeground": "#F43E5C",
"extensionButton.prominentBackground": "#E84A72",
"extensionButton.prominentHoverBackground": "#E73665",
"focusBorder": "#1A1C231A",
"foreground": "#06060C",
"gitDecoration.addedResourceForeground": "#1EB980B3",
"gitDecoration.deletedResourceForeground": "#F43E5C",
"gitDecoration.ignoredResourceForeground": "#06060C4D",
"gitDecoration.modifiedResourceForeground": "#AF5427",
"gitDecoration.untrackedResourceForeground": "#1EB980",
"input.background": "#F9CBBE",
"inputOption.activeBorder": "#E7366580",
"inputValidation.errorBackground": "#F43E5C80",
"inputValidation.errorBorder": "#F43E5C00",
"list.activeSelectionBackground": "#F9CBBE80",
"list.activeSelectionForeground": "#06060C",
"list.dropBackground": "#F9CEC380",
"list.errorForeground": "#F43E5CE6",
"list.focusBackground": "#F9CBBE80",
"list.focusForeground": "#06060C",
"list.highlightForeground": "#E84A72",
"list.hoverBackground": "#F9CBBE80",
"list.hoverForeground": "#06060C",
"list.inactiveFocusBackground": "#F9CBBE80",
"list.inactiveSelectionBackground": "#F9CBBE4D",
"list.inactiveSelectionForeground": "#06060C",
"list.warningForeground": "#1EB980B3",
"panelTitle.activeBorder": "#E84A72",
"peekView.border": "#1A1C231A",
"peekViewEditor.background": "#FADAD1",
"peekViewEditor.matchHighlightBackground": "#F9CEC380",
"peekViewResult.background": "#FADAD1",
"peekViewResult.matchHighlightBackground": "#F9CEC380",
"peekViewResult.selectionBackground": "#F9CBBE80",
"peekViewTitle.background": "#FADAD1",
"pickerGroup.foreground": "#E84A72E6",
"progressBar.background": "#E84A72",
"scrollbar.shadow": "#16161C4D",
"scrollbarSlider.activeBackground": "#F9CEC3E6",
"scrollbarSlider.background": "#F9CEC380",
"scrollbarSlider.hoverBackground": "#F9CEC3B3",
"selection.background": "#AF542780",
"sideBar.background": "#FDF0ED",
"sideBar.dropBackground": "#F9CEC34D",
"sideBar.foreground": "#06060CB3",
"sideBarSectionHeader.background": "#FDF0ED",
"sideBarSectionHeader.foreground": "#06060CB3",
"statusBar.background": "#FDF0ED",
"statusBar.debuggingBackground": "#AF5427",
"statusBar.debuggingForeground": "#06060C",
"statusBar.foreground": "#06060CB3",
"statusBar.noFolderBackground": "#FDF0ED",
"statusBarItem.hoverBackground": "#F9CBBE",
"statusBarItem.prominentBackground": "#F9CBBE",
"statusBarItem.prominentHoverBackground": "#F9CEC3",
"tab.activeBorder": "#E84A72",
"tab.border": "#FDF0ED00",
"tab.inactiveBackground": "#FDF0ED",
"terminal.ansiBlue": "#26BBD9",
"terminal.ansiBrightBlue": "#3FC4DE",
"terminal.ansiBrightCyan": "#6BE4E6",
"terminal.ansiBrightGreen": "#3FDAA4",
"terminal.ansiBrightMagenta": "#F075B5",
"terminal.ansiBrightRed": "#EC6A88",
"terminal.ansiBrightYellow": "#FBC3A7",
"terminal.ansiCyan": "#59E1E3",
"terminal.ansiGreen": "#29D398",
"terminal.ansiMagenta": "#EE64AC",
"terminal.ansiRed": "#E95678",
"terminal.ansiYellow": "#FAB795",
"terminal.foreground": "#06060C",
"terminal.selectionBackground": "#F9CEC380",
"terminalCursor.background": "#06060C",
"terminalCursor.foreground": "#F9CEC3B3",
"textLink.activeForeground": "#E73665",
"textLink.foreground": "#E84A72",
"titleBar.activeBackground": "#FDF0ED",
"titleBar.inactiveBackground": "#FDF0ED",
"walkThrough.embeddedEditorBackground": "#FADAD1",
"widget.shadow": "#16161C4D"
},
"displayName": "Horizon Bright",
"name": "horizon-bright",
"semanticHighlighting": true,
"tokenColors": [
{
"scope": "comment",
"settings": {
"fontStyle": "italic",
"foreground": "#33333380"
}
},
{
"scope": "constant",
"settings": {
"foreground": "#DC3318"
}
},
{
"scope": "constant.character.escape",
"settings": {
"foreground": "#1D8991"
}
},
{
"scope": "entity.name",
"settings": {
"foreground": "#F77D26"
}
},
{
"scope": "entity.name.function",
"settings": {
"foreground": "#1D8991"
}
},
{
"scope": "entity.name.tag",
"settings": {
"fontStyle": "normal",
"foreground": "#DA103F"
}
},
{
"scope": [
"entity.name.type",
"storage.type.cs"
],
"settings": {
"foreground": "#F77D26"
}
},
{
"scope": "entity.other.attribute-name",
"settings": {
"fontStyle": "normal",
"foreground": "#DC3318"
}
},
{
"scope": "entity.other.inherited-class",
"settings": {
"foreground": "#F6661E"
}
},
{
"scope": "entity.other.attribute-name.id",
"settings": {
"foreground": "#1D8991"
}
},
{
"scope": [
"entity.other.attribute-name.pseudo-element",
"entity.other.attribute-name.pseudo-class"
],
"settings": {
"foreground": "#F6661E"
}
},
{
"scope": [
"entity.name.variable",
"variable"
],
"settings": {
"foreground": "#DA103F"
}
},
{
"scope": "keyword",
"settings": {
"fontStyle": "normal",
"foreground": "#8A31B9"
}
},
{
"scope": "keyword.operator",
"settings": {
"foreground": "#333333"
}
},
{
"scope": [
"keyword.operator.new",
"keyword.operator.expression",
"keyword.operator.logical",
"keyword.operator.delete"
],
"settings": {
"foreground": "#8A31B9"
}
},
{
"scope": "keyword.other.unit",
"settings": {
"foreground": "#DC3318"
}
},
{
"scope": "markup.quote",
"settings": {
"fontStyle": "italic",
"foreground": "#F6661EB3"
}
},
{
"scope": [
"markup.heading",
"entity.name.section"
],
"settings": {
"foreground": "#DA103F"
}
},
{
"scope": "markup.bold",
"settings": {
"fontStyle": "bold",
"foreground": "#8A31B9"
}
},
{
"scope": "markup.italic",
"settings": {
"fontStyle": "italic",
"foreground": "#1D8991"
}
},
{
"scope": [
"markup.inline.raw",
"markup.fenced_code.block"
],
"settings": {
"foreground": "#DC3318"
}
},
{
"scope": "markup.underline.link",
"settings": {
"foreground": "#F6661E"
}
},
{
"scope": "storage",
"settings": {
"fontStyle": "normal",
"foreground": "#8A31B9"
}
},
{
"scope": [
"string.quoted",
"string.template"
],
"settings": {
"foreground": "#F6661E"
}
},
{
"scope": "string.regexp",
"settings": {
"foreground": "#DC3318"
}
},
{
"scope": "string.other.link",
"settings": {
"foreground": "#DC3318"
}
},
{
"scope": "support",
"settings": {
"foreground": "#F77D26"
}
},
{
"scope": "support.function",
"settings": {
"foreground": "#1D8991"
}
},
{
"scope": "support.variable",
"settings": {
"foreground": "#DA103F"
}
},
{
"scope": [
"support.type.property-name",
"meta.object-literal.key"
],
"settings": {
"foreground": "#DA103F"
}
},
{
"scope": "support.type.property-name.css",
"settings": {
"foreground": "#333333"
}
},
{
"scope": [
"variable.language"
],
"settings": {
"fontStyle": "italic",
"foreground": "#F77D26"
}
},
{
"scope": "variable.parameter",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": "string.template meta.embedded",
"settings": {
"foreground": "#333333"
}
},
{
"scope": "punctuation.definition.tag",
"settings": {
"fontStyle": "normal",
"foreground": "#DA103FB3"
}
},
{
"scope": "punctuation.separator",
"settings": {
"foreground": "#333333"
}
},
{
"scope": "punctuation.definition.template-expression",
"settings": {
"foreground": "#8A31B9"
}
},
{
"scope": "punctuation.section.embedded",
"settings": {
"foreground": "#8A31B9"
}
},
{
"scope": "punctuation.definition.list",
"settings": {
"foreground": "#DC3318"
}
}
],
"type": "light"
}