aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-16 01:13:39 -0500
committerCraig Jennings <c@cjennings.net>2026-06-16 01:13:39 -0500
commit2908174f30afbce61941f19f1696539b0eb48884 (patch)
treee4804baa997ae18727cb86ea9a8a60fce7c0b0e8
parent202cf4306d10128de79fefad26d14a1719f04d1e (diff)
downloaddotemacs-2908174f30afbce61941f19f1696539b0eb48884.tar.gz
dotemacs-2908174f30afbce61941f19f1696539b0eb48884.zip
chore(todo): mark dashboard font-lock fix (Cause A) done
Cause A of the dashboard-theming task is fixed and committed. Causes B (item color, themeable not hardcoded) and C (enable file/section icons, per-filetype color) stay open.
-rw-r--r--todo.org20
1 files changed, 20 insertions, 0 deletions
diff --git a/todo.org b/todo.org
index 0a9c5cacd..15fcbed1c 100644
--- a/todo.org
+++ b/todo.org
@@ -44,6 +44,26 @@ Tags are additive. For example, a small wrong-behavior fix can be
=:bug:quick:=, and a feature that requires internal restructuring can be
=:feature:refactor:=.
* Emacs Open Work
+** DOING [#B] Dashboard theming broken: font-lock strips faces; items + icons :bug:
+Investigated 2026-06-16. Three independent causes make the live dashboard render banner, headings, and items in the default face, with no file/section icons. Diagnosis grounded in live daemon inspection (face props, overlays, font-lock state).
+
+*** Cause A — banner + section headings render default ("Banner Text not gold")
+=global-font-lock-mode= (enabled at startup, =early-init.el:311=) fontifies the =*dashboard*= buffer. Dashboard applies the banner title (=dashboard-banner-logo-title=) and section headings (=dashboard-heading=) via the =face= TEXT PROPERTY. font-lock owns the =face= property and strips manually-applied ones it didn't set via keywords, so those faces get cleared on render (every line carries =fontified t=, the jit-lock fingerprint). The theme is fine: =dashboard-banner-logo-title= computes to #dab53d gold and =dashboard-heading= to #67809c — they're stripped at render, not missing. This is a regression of the 2026-05-22 fix "Dashboard navigator icons and section titles uncolored" (7496), which worked before font-lock ran in this buffer.
+FIX A — DONE 2026-06-16, commit =202cf430=: exclude dashboard-mode from global font-lock — =(setq font-lock-global-modes '(not dashboard-mode))= at top level in =dashboard-config.el= (top-level so it runs even though the use-package =:config= errors on a void nerd-icons symbol under the test harness). Banner is gold again and the headings pick up =dashboard-heading=. TDD test =tests/test-dashboard-config-font-lock.el=; full suite green; live in the daemon. Causes B and C still open below.
+
+*** Cause B — project/bookmark/recent items have no color
+Items and the navigator are painted by a =dashboard-items-face= button OVERLAY (overlays survive font-lock, which is why Cause A didn't touch them). But in =WIP-theme.el= =dashboard-items-face= is just =(:inherit widget-button)= — unspecified foreground, so it renders in the default color. 7496 had colored it (steel+2) in the now-retired Dupre theme; that color never carried into WIP. Per 7496, the navigator and items share =dashboard-items-face=, so coloring it colors both (separating them is the open task "Color dashboard navigator independently of list items", 7740).
+FIX B: give =dashboard-items-face= (and =dashboard-no-items-face=) an explicit =:foreground= in the WIP theme. Craig's color choice.
+
+*** Cause C — no icons on items or section titles
+=dashboard-set-file-icons= and =dashboard-set-heading-icons= are both nil in the live config (=dashboard-config.el= sets =dashboard-display-icons-p t= + =dashboard-icon-type 'nerd-icons= but never the two enable toggles), so dashboard renders no file/section icons. Only the custom navigator row has icons.
+FIX C: set =dashboard-set-file-icons t= (file/project/bookmark icons) and optionally =dashboard-set-heading-icons t= (section-title icons) in =dashboard-config.el=. Icon color: nerd-icons colors file icons per-filetype by default; a uniform theme color needs overriding the icon face — decide per-type vs uniform.
+
+*** Studio angle
+To set the item color from theme-studio instead of hand-editing =WIP-theme.el=, the studio's dashboard app must expose =dashboard-items-face= as editable — the "list items unthemed" half of task 2418 (theme-studio: dashboard preview icons missing, list items unthemed).
+
+*** Next
+Confirm Fix A to persist it; pick the item color (Fix B); decide the icon enable + color policy (Fix C).
** VERIFY [#A] theme-studio: deploy-wip button on the browser page :feature:studio:next:
Needs from Craig: a mechanism choice before I build it. The page is served from file://, so a button can't run make directly. Two options: (a) a tiny localhost helper the page POSTs to (it runs make deploy-wip), or (b) the page writes a watched trigger file that a small daemon/timer picks up. Pick (a) or (b) and I'll implement + test it.
Add a button on the theme-studio page that runs the make deploy-wip target locally (build WIP.json into the theme, live-reload the daemon). The page is served from file://, so the browser can't run make directly. Needs a local bridge: a tiny localhost helper the button POSTs to, or a watched trigger file the page writes. Pick the mechanism before building. From the roam inbox 2026-06-15.