aboutsummaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-28 10:20:44 -0400
committerCraig Jennings <c@cjennings.net>2026-06-28 10:20:44 -0400
commit1390ce7831017923637183fb82b02dd0f845cd71 (patch)
treef9fff7108d6003ef2314d4f30d80e42564603e08 /todo.org
parent24481542ea5d58bae3b4535ac20d79e86b3bcbd5 (diff)
downloaddotemacs-1390ce7831017923637183fb82b02dd0f845cd71.tar.gz
dotemacs-1390ce7831017923637183fb82b02dd0f845cd71.zip
chore(todo): file inbox items as tasks
Filed eight tasks from the inbox. Four under Theme-Studio Open Work: surface font-lock faces, contrast against distant-foreground, flag a face inheriting from itself, and outline the auto-dim text in the live preview. Four under Emacs Open Work: ai-term fullscreen-on-summon plus single-agent toggle, dashboard icons for URL bookmarks, a dashboard weather entry, and a nov sepia reading view. Each carries its findings in the body. Also folded an offline-capable Google Keep idea into the existing google-keep task as v2+ scope.
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org20
1 files changed, 20 insertions, 0 deletions
diff --git a/todo.org b/todo.org
index 402f60968..3ee0f76da 100644
--- a/todo.org
+++ b/todo.org
@@ -445,6 +445,14 @@ What we're verifying: in dirvish, d now duplicates the file at point (delete-to-
Expected: d duplicates; D names the exact targets and only deletes on yes; the files are gone with no trash copy. If sudo needs a password that shell-command can't supply, flag it — the delete may need to route through a tty instead.
** PROJECT [#A] Theme-Studio Open Work
Parent grouping the open theme-studio / theming issues; close each child independently.
+*** TODO [#C] theme-studio: surface font-lock faces in the studio :bug:studio:
+font-lock faces (keyword / string / comment / type / ...) are present in the inventory — they live in =emacs-default-faces.json= and the theme files (e.g. =distinguished.json=, =theme.json=), not =package-inventory.json=. So the data is there; the open question is why they don't appear in the studio pane. Investigate the studio UI's view/group assignment for core syntax faces and surface them where expected (or report that they already are, and where). From the roam inbox.
+*** TODO [#C] theme-studio: contrast calc should account for distant-foreground :feature:studio:
+The studio's contrast numbers ignore Emacs's distant-foreground swap — the color Emacs substitutes when fg/bg are too close. First document Emacs's algorithm (when the swap kicks in and how the threshold is computed), then find the fg/bg combination with the least contrast under that rule and report contrast against that worst case, not just the nominal fg. From the roam inbox.
+*** TODO [#C] theme-studio: flag a face inheriting from itself as a mistake :feature:studio:
+A face set to inherit from itself renders unexpectedly. When a face's inherit dropdown selects itself, mark it as an error: outline the dropdown (or zebra-stripe it — pick during build) with a terse tooltip describing the problem. Still allow saving (warning, not a block). Also identify other similar self-referential / invalid-combination error cases and apply the same warning pattern. From the roam inbox.
+*** TODO [#C] theme-studio: live preview should outline the auto-dim text, not the normal text :bug:studio:
+The live-preview outline currently marks the normal-theme text; it should outline the auto-dim variant instead. From the roam inbox.
*** 2026-06-28 Sun @ 06:53:32 -0400 wttrin captured in the studio inventory (4 faces)
Root cause was the inventory regex (fixed in a5fd0b4d): it only captured =/elpa/PKG-VERSION/= dirs, excluding wttrin's unversioned =/elpa/wttrin/= checkout. Confirmed on a clean wttrin load that =symbol-file= attributes its faces to =/elpa/wttrin/wttrin.elc= correctly. The live daemon's wttrin attribution was disturbed by the session's theme reloading (=symbol-file= returns nil; reload + unload-feature didn't repair it), so I did NOT regenerate the whole inventory from the daemon (that would have lost attribution for other packages too). Instead, surgically added wttrin's four file-loaded faces (=wttrin-instructions=, =wttrin-key=, =wttrin-mode-line-stale=, =wttrin-staleness-header=) to =package-inventory.json= from a clean batch load, regenerated =theme-studio.html= (make gen), and confirmed all studio gates green. wttrin is now a generic-preview app in the dropdown.
Two residuals, neither blocking: (a) the OTHER local-checkout packages the regex fix unblocks are not yet captured — that needs one full inventory regen in a freshly-restarted (clean) daemon, best run after Craig's next Emacs restart; (b) =wttrin-instructions-header= is eval-defined outside the checkout (the checkout defines =wttrin-instructions=, not =-instructions-header=), so it can't be captured here — it would need to land in =elpa/wttrin/wttrin.el=. Optional polish: a bespoke two-column-footer =renderWttrin= instead of the generic preview. Visual confirm filed under "Manual testing and validation".
@@ -717,6 +725,17 @@ Brainstorm complete 2026-06-22 — validated design at [[file:docs/design/vamp-m
Next: (1) revise the spec to the new direction; (2) spike the risky assumptions (mpd dumb-single-file-player contract; m3u =.desktop= on Hyprland); (3) =/start-work= against the revised spec — pure-helper extraction (review Migration Plan step 1) is the safe first phase. Priority [#C] is a placeholder pending Craig's call.
+** TODO [#C] ai-term: fullscreen on summon, toggle when only one agent :feature:
+Two behaviors for M-SPC (=cj/ai-term-next=) when bringing up an agent from a non-agent context:
+1. Summon fullscreen. Today the agent opens in its deliberate dock — 0.75 frame height on a laptop (=cj/ai-term-laptop-height=), a width fraction on desktop (=cj/--ai-term-default-size= / =-default-direction=) — so summoning from another buffer lands it at partial size and Craig hits =C-x 1= to fill the frame. When summoning (no agent window currently shown), open it fullscreen instead.
+2. Single-agent toggle. When exactly one agent exists, M-SPC currently self-cycles (=cj/--ai-term-next-agent-dir= wraps to the same dir, re-selecting the same window — a no-op). Repurpose it: with one agent, M-SPC toggles the window (show fullscreen if hidden, hide if shown), matching =cj/ai-term= (C-; a a). With 2+ agents, keep the cycle behavior.
+Touches the dock/toggle state machine (=cj/--ai-term-last-direction= / =-size= / =-was-bury= etc.), so implement carefully and keep the multi-agent cycle plus toggle-restore reversibility intact. From the roam inbox.
+** TODO [#C] dashboard: no icon for URL bookmarks :bug:
+URL bookmarks (eww / browser bookmarks, no file on disk) get no icon on the dashboard while file bookmarks get a file-type icon. The custom =dashboard-insert-bookmarks= override (=dashboard-config.el=) formats name-only, and dashboard assigns per-item icons from the bookmark's filename via =bookmark-get-filename= — which is nil for URL bookmarks, so they fall through. Fix: detect URL bookmarks (handler / location is a URL) and use a globe/web glyph (e.g. =nf-fa-globe= / =nf-md-web=). Screenshot: [[file:~/pictures/screenshots/2026-06-26_132059.png][2026-06-26_132059.png]]. From the roam inbox.
+** TODO [#C] dashboard: add a weather entry (wttrin) with an icon :feature:
+Put weather on the dashboard with a good illustrative icon, sourced from wttrin. Build on the release/0.4.0 wttrin now loaded via =:load-path= in =weather-config.el= (it carries the mode-line weather string plus auto-fit). Decide format (a current temp/conditions line vs a small forecast), refresh cadence, and placement/icon. From the roam inbox.
+** TODO [#C] nov: sepia reading view (dark bg, tan/sepia text) :feature:
+A sepia setting for =nov-mode=: keep a dark background, render the letters in a tan/sepia color. nov defines no faces of its own and leans on shr, so the path is buffer-local face-remapping (=face-remap-add-relative= on =default= / =shr-text= / =variable-pitch=) in a nov-mode hook, toggled per a sepia preference. Overlaps the "epub/nov reading color" note under "Route hardcoded theme colors through the theme" (the removed =#E8DCC0= sepia plus "needs a themeable reading face") — reconcile with that themeable-face direction. From the roam inbox.
** PROJECT [#B] Architecture review follow-up from 2026-05-03 :refactor:
High-level pass over =init.el=, =early-init.el=, and all 104 files in
@@ -3814,6 +3833,7 @@ After this work lands, mark the original "Finish terminal GPG pinentry configura
v1 (read-only) implemented and tested (Phases 1-3): the gkeepapi Python bridge (=scripts/google-keep/keep-bridge.py=, 12 tests), the elisp core + =cj/keep-refresh= renderer with atomic writes and async make-process (=modules/google-keep-config.el=, 15 ERT tests), un-orphaned under a =C-c k= prefix, graceful warning when gkeepapi/token/auth is missing. The pure JSON-to-org core is kept extractable per the spec. Live fetch needs the one-time gkeepapi + master-token setup — see "Google Keep v1 live setup and first fetch" under Manual testing and validation.
Next: v2 (read-write — create/edit back to Keep, with a staleness guard) per the spec, the immediate follow-on once the live read is confirmed. Later: list/checkbox rendering, package extraction.
Spec: [[file:docs/specs/google-keep-emacs-integration-spec.org][google-keep-emacs-integration-spec.org]] (Ready, 2 review rounds; all five decisions resolved 2026-06-25).
+Offline (from the roam inbox, "pocketbook" framing): make the integration usable without network — a local cache of fetched notes for offline read, and queued writes replayed on reconnect. Folds the standalone "a Google Keep integration that works offline" idea into v2+ scope.
** DONE [#C] Remove unused system-power keybindings :refactor:quick:solo:
CLOSED: [2026-06-28 Sun]
:PROPERTIES: