aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--todo.org4
1 files changed, 3 insertions, 1 deletions
diff --git a/todo.org b/todo.org
index a9551bfe6..a0e022c99 100644
--- a/todo.org
+++ b/todo.org
@@ -381,7 +381,9 @@ Parent grouping the open theme-studio / theming issues; close each child indepen
*** 2026-06-24 Wed @ 18:09:26 -0400 theme-studio tier-1 simplifications landed
Behavior-preserving simplifications from the four-agent refactor/simplify assessment, all test-verified (full suite green). Landed: syncMockHeight + syncPkgHeight merged into syncPaneHeight(tableId, paneId); the dead generatorHues "manual" branch deleted (identical to fallback); locateInfoLine removed (fn + export + test, orphaned this session); the redundant pkgbody guard dropped (buildPkgTable self-guards); displayHex/displayName closures inlined; paintUI now calls worstCellHtml; generate.py's two nerd-icons loaders share _load_nerd_icons_artifact (sentinel keeps the null-file edge exact); face_coverage.classify rewritten with named locals (with a new characterization test). Two agent findings were wrong and skipped on verification: LOCATE_REG is live (read by previewSpan), and normalizePaletteEntryCore doesn't exist (hallucinated). Skipped on judgment: a RELEASED_BOX constant (mutable-dict aliasing hazard, only ~10 sites) and inlining apply_hover_box_default (its why-docstring earns the named function). Open for Craig: previewFaceAttrs (app-core.js) is test-only with a stale "the gate calls it" docstring — confirm delete vs keep.
*** TODO [#D] theme-studio app.js module split (tier 2) :refactor:studio:
-Optional structural change. app.js (927 lines) holds seven responsibility clusters. Split into controls.js / picker.js / locate.js / io.js / tables.js — near-zero runtime risk since generate.py concatenates source by token. Navigability win only; do it only if scrolling app.js becomes real friction.
+Optional structural change, navigability-only. The highest-value extraction landed (see below): controls.js. The remaining clusters (picker, locate, io, tables) are further optional splits with diminishing returns — do them only if scrolling app.js is still real friction, following the same token-at-position pattern controls.js proved.
+**** 2026-06-24 Wed @ 19:16:47 -0400 Extracted the control factories to controls.js
+Cut the contiguous dropdown / detail-editor / expander cluster (the custom color dropdown state + closeColorDropdown + mkColorDropdown through mkExpander, 205 lines) from app.js into controls.js, spliced back at a CONTROLS_J token via generate.py. app.js dropped 927 to 721 lines. The token sits at the exact extraction point, so the assembled page is byte-identical (just relocated source) — full suite green with no gate changes. mkBoxControl (a lone factory elsewhere in app.js) stayed put; it can join controls.js later.
*** TODO [#A] theme-studio: consistent assignment-view table columns :feature:studio:next:
All view-assignment tables should use one consistent column set and order, whatever view is selected: element name (sortable), lock, fg, bg, style, box (with a side expansion showing the selected color, as in UI faces), contrast, inheritance, size, preview text. No other columns at this design stage. When a view's elements can't take a given section, raise a signal and disable that section for that view; the disabled state is the visual cue. From the roam inbox 2026-06-16.
*** TODO [#B] Route hardcoded theme colors through the theme :refactor: