aboutsummaryrefslogtreecommitdiff
path: root/scripts/theme-studio
Commit message (Collapse)AuthorAgeFilesLines
...
* fix(theme-studio): hold the package preview heightCraig Jennings9 days2-2/+2
| | | | Selecting a compact package (auto-dim, with a 2-row face table and a short preview) collapsed the package section and shortened the page. A 60vh floor on the preview keeps the section sized to the largest of the columns, the preview, or that floor, so switching packages no longer shrinks the page.
* fix(theme-studio): name exported themes from the source filenameCraig Jennings9 days2-5/+7
| | | | The converter took the theme name from the JSON's internal name field, so every draft whose field read "theme" overwrote theme-theme.el. It now uses the JSON file's basename, so WIP.json becomes WIP-theme.el and each draft lands under its own name. The reload target derives the load name from the basename too, and a regression test pins it: the filename wins over the internal field.
* feat(theme-studio): auto-dim split previewCraig Jennings9 days8-5/+142
| | | | | | | | auto-dim-other-buffers is a package face, not a theme face, so build-inventory.el (it scans only elpa/straight packages) never listed it and the studio couldn't theme it. This adds it as a bespoke app. The preview is a vertical split: the focused window on the left in real syntax colors, the same code on the right collapsed to the single auto-dim-other-buffers face, the way Emacs renders a non-selected window. Both panes follow the language selector. A trailing row shows auto-dim-other-buffers-hide, whose foreground matches the background so it vanishes when dimmed. A #autodimtest gate covers the split, the uniform recolor, and language sync.
* fix(theme-studio): keep dropdown color names legibleCraig Jennings9 days3-3/+32
| | | | | | The color-picker popup colored each row's name and hex for contrast against the swatch, but the rows sit on the popup's fixed dark background. A mid or dark swatch (the blues past blue-1) got near-black text that vanished on the dark popup. The text now inherits the popup foreground for every real palette color. Only the solid "default" row, whose background is the color itself, still contrasts against its own fill. I moved the decision into dropdownRowTextColor with unit coverage, including a dark-swatch regression case.
* chore(theme-studio): drop scratch theme JSONs, ignore working artifactsCraig Jennings9 days5-43430/+0
| | | | Remove the distinguished-revised, distinguished-test, dupre-rebuild, dupre-revised, and sterling2 experiment snapshots, and ignore WIP.json and themes/theme-theme.el so working scratch stays out of the tree.
* feat(theme-studio): make targets for the build-theme converterCraig Jennings9 days1-1/+34
| | | | theme-studio-theme converts a Theme Studio JSON export to themes/<name>-theme.el. theme-studio-theme-load disables the custom themes and loads one in the running Emacs. theme-studio-theme-reload chains the two. Each delegates to the scripts/theme-studio/Makefile and errors clearly when its required JSON or THEME argument is missing.
* feat(theme-studio): palette generator and preview fidelityCraig Jennings9 days15-503/+2953
| | | | | | | | | | Two strands land together because the generated theme-studio.html bundles every source file into one page and can't be split cleanly. The palette generator is a preview-first panel: palette-generator-core.js plans the palette and palette-generator-ui.js draws it. Generated colors stay inspectable and tunable through the existing selector, and committing one creates a normal base column. It adds source-mode and scheme controls, a configurable accent count, and color names from color-names.json. For preview fidelity, syntax and UI colors now resolve through the real Emacs inherit chains, so the preview matches how Emacs renders the theme. resolveSyntaxFg pins dec to ty (Emacs has no decorator face) and otherwise follows comment-delimiter to comment, doc to string, property to variable, function-call to function-name. resolveUiAttr walks mode-line-inactive to mode-line and line-number-current-line to line-number. The decorator label now reads "decorator to type" to match the type face Emacs uses for it. Design recorded in the two theme-studio specs under docs/.
* Update theme studio palette workflowCraig Jennings10 days28-1792/+51998
|
* Add theme studio box color controlsCraig Jennings10 days5-32/+75
|
* Shorten theme studio reset erase labelsCraig Jennings10 days5-33/+32
|
* Clarify theme studio reset and erase actionsCraig Jennings10 days5-38/+83
|
* Add theme studio face color step arrowsCraig Jennings10 days7-30/+158
|
* Preview selected theme studio chip while pickingCraig Jennings10 days4-12/+40
|
* Change theme studio spans to endpoint divisionsCraig Jennings10 days6-35/+72
|
* Remove theme studio save buttonCraig Jennings10 days4-29/+10
|
* Fix theme studio span endpoint tilesCraig Jennings10 days7-31/+57
|
* Sort theme studio dropdown colors by lightnessCraig Jennings10 days4-8/+38
|
* Fix theme studio ground endpoint editCraig Jennings10 days3-6/+28
|
* Fix theme studio fg endpoint selectionCraig Jennings10 days3-6/+30
|
* Refine theme studio tile name editingCraig Jennings10 days5-8/+43
|
* Make theme studio column delete saferCraig Jennings10 days5-10/+31
|
* Add theme studio Rust and Zig samplesCraig Jennings10 days5-4/+95
|
* Add theme studio column deleteCraig Jennings10 days7-12/+103
|
* Refactor theme studio palette testsCraig Jennings10 days9-679/+835
|
* Add theme studio palette clear and lock togglesCraig Jennings10 days3-10/+112
|
* Fix theme studio ground column orderCraig Jennings10 days2-12/+34
|
* Fix theme studio bg-prefixed span inferenceCraig Jennings10 days4-12/+26
|
* Fix theme studio style button stateCraig Jennings10 days2-2/+26
|
* Fix theme studio bg-like imported colorsCraig Jennings10 days5-44/+111
|
* Add theme studio column selection and reorder controlsCraig Jennings10 days3-10/+120
|
* Set theme studio default picker colorCraig Jennings10 days3-12/+14
|
* Group numeric color names by stemCraig Jennings10 days5-4/+16
|
* Treat legacy color names as base columnsCraig Jennings10 days5-4/+28
|
* Split theme studio generator data and templateCraig Jennings10 days4-384/+394
|
* Add theme studio default face drift summaryCraig Jennings10 days3-1/+102
|
* Pin theme studio preview links and column exportsCraig Jennings10 days4-10/+58
|
* Add theme studio generated file checkCraig Jennings10 days2-1/+12
|
* Rename theme studio column browser gateCraig Jennings10 days4-10/+10
|
* Pin theme studio generated defaultsCraig Jennings10 days1-0/+32
|
* Refactor theme studio face assemblyCraig Jennings10 days8-61/+205
|
* Rename theme studio color model to columnsCraig Jennings10 days5-187/+187
|
* Guard theme studio package face coverageCraig Jennings10 days1-0/+35
|
* Extract theme studio default face adapterCraig Jennings10 days3-81/+203
|
* Update theme studio color columns and defaultsCraig Jennings10 days10-460/+30503
|
* chore(theme-studio): record verification passes, file preview-fix tasksCraig Jennings12 days1-415/+584
| | | | Five manual checks verified, closing the contrast-cell and preview-bg bugs. An audit of the bespoke previews found three face mislinks (org headline-todo, erc input/default swap, flycheck delimiter swap) — filed with picker-visibility and Rust+Zig sample tasks. WIP theme picks up the revised steel selections.
* chore(theme-studio): snapshot WIP palette filesCraig Jennings12 days6-431/+31817
|
* fix(theme-studio): derive box bevel colors from the face backgroundCraig Jennings13 days5-16/+150
| | | | The released/pressed bevel was a flat translucent white/black overlay, which reads weaker than the box Emacs draws. reliefColors in colormath.js now ports Emacs 30's x_alloc_lighter_color: highlight = bg x1.2, shadow = bg x0.6, an additive boost for dark backgrounds, and the same-color fallback for pure black and white. boxCss takes the face's effective bg and derives both edges from it. Pressed swaps the pair, and the translucent pair remains only when no bg is known. Width stays 1px because dupre's :line-width -1 draws 1px lines in Emacs too. The gap was color strength, not width. Five node tests pin hand-computed fixtures from the C source, and a new #beveltest gate pins the wiring.
* fix(theme-studio): re-rate fallback contrast cells on default-fg changeCraig Jennings13 days2-2/+30
| | | | A default-fg (p) change only re-rated the covered overlay faces. UI-face and package ratios that fall back to the default fg kept their old number until something else rebuilt the tables. The p branch now runs the same repaint as a ground-bg change. The new #contrasttest assertion drives the real syntax dropdown (unlocking a locked p row for the test) so the handler wiring is pinned, not just the repaint helper.
* fix(theme-studio): scope applyGround and repaint faces on ground changeCraig Jennings13 days2-6/+56
| | | | The contrast cells already rated a two-color face's own fg-on-bg. They read wrong because applyGround blanketed every .ex cell (the per-face preview cells included) with the ground bg, and a ground-bg change never repainted the UI or package tables. The preview showed fg on the ground bg next to a correct fg-on-face-bg ratio, and ground-dependent ratios went stale. applyGround now blankets only the code panes and syntax example cells and repaints UI faces through paintUI. The ground-bg handler also rebuilds the package table and preview. New #contrasttest assertions pin the two-color pair in both tables, preview-bg survival, and ground-change re-rating.
* fix(theme-studio): guard Chrome profile dir and bound headless rendersCraig Jennings13 days1-2/+5
| | | | A headless render with an empty --user-data-dir falls back to the real Chrome profile and takes its SingletonLock. A hung render held that lock for 18 hours on 2026-06-09, blocking every interactive Chrome launch. The runner now refuses to run the browser gates when mktemp fails, and each render runs under timeout --kill-after so a wedged Chrome dies in seconds.