diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-15 23:46:33 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-15 23:46:33 -0500 |
| commit | cbc9ffbee729a4c5b8f09a6c13b516eaf3c7c50f (patch) | |
| tree | 7fc339c3b8f3fcce19a9064bb9b64a14c21ec63a /todo.org | |
| parent | 6363552d57d6cb8af32e3468c04992abf099a06d (diff) | |
| download | dotemacs-cbc9ffbee729a4c5b8f09a6c13b516eaf3c7c50f.tar.gz dotemacs-cbc9ffbee729a4c5b8f09a6c13b516eaf3c7c50f.zip | |
build: add task-sorted target to archive resolved todo tasks
make task-sorted wraps todo-cleanup.el --archive-done, moving DONE/CANCELLED level-2 subtrees from Open Work into Resolved. Ran it: archived this session's closed tasks.
Diffstat (limited to 'todo.org')
| -rw-r--r-- | todo.org | 86 |
1 files changed, 41 insertions, 45 deletions
@@ -426,26 +426,11 @@ From the 2026-06 config audit, =modules/calendar-sync.el=: - =:1284= — curl runs without =--fail=: an HTTP 404/500 error page exits 0 and the HTML proceeds into conversion. - =:1229-1233= — =--parse-ics= returns nil for both garbage and a valid calendar with zero in-window events, so healthy near-empty calendars report "parse failed" in =calendar-sync-status=. Distinguish the cases. -** DONE [#B] C-s C-s vertico-repeat path never works :bug:quick:solo:next: -CLOSED: [2026-06-15 Mon] -Fixed in b62af096 (prior session): vertico-repeat-save added to minibuffer-setup-hook so a session exists for the second C-s. Re-verified live 2026-06-15: the hook is installed and cj/consult-line-or-repeat is defined. -:PROPERTIES: -:LAST_REVIEWED: 2026-06-13 -:END: -=modules/selection-framework.el:263= — =cj/consult-line-or-repeat= calls =vertico-repeat= on the second consecutive C-s, but nothing adds =vertico-repeat-save= to =minibuffer-setup-hook= (grep: zero hits config-wide), so it always signals "No Vertico session". Add the hook next to the vertico use-package block. From the 2026-06 config audit. -*** 2026-06-13 Sat @ 10:59:52 -0500 Fixed: vertico-repeat-save hooked -Added top-level =(add-hook 'minibuffer-setup-hook #'vertico-repeat-save)= after the vertico use-package block (placed top-level, not inside use-package, so the stub-use-package test exercises it; =vertico-repeat-save= is autoloaded, deferring the load to first minibuffer). New test asserts hook membership; 5/5 green; evaled into the live daemon (=:on-hook= now t). Awaiting Craig's confirm → DONE. - ** TODO [#B] "? = curated help menu" convention across modes :feature: From the calibredb keybindings work 2026-06-06. The pattern that worked: in a modal/major-mode buffer (calibredb), bind =?= to a curated transient of the frequent workflows, and move the package's own full dispatch to =H=. It fixes the "I can't discover the keys" problem that which-key can't help with (which-key only pops up after a prefix, not for top-level single keys in a mode-map). Task: survey the modes/modules Craig works in and identify where a =?= -> curated-help-menu (transient) makes sense. Candidates: any major-mode buffer with single-key bindings and no good discovery affordance -- calibredb (done), nov, dirvish, mu4e, ghostel/term, signel, pearl/linear, ELFeed, etc. For each, note whether =?= is free or already a help dispatch, and whether a curated menu (vs the package's own) adds value. Establish it as a convention (and maybe a small helper/macro to define a curated =?= menu consistently). -** DONE [#B] dirvish M (mark all files) marks every other file :bug:quick:solo:next: -CLOSED: [2026-06-15 Mon] -Rewrote cj/dired-mark-all-visible-files with dired-get-filename + file-directory-p and an if/else so dired-mark's own point-advance isn't doubled by forward-line. Added real-dired marked-count tests; retired the now-dead regex helper and its fake-buffer mock test. -=modules/dirvish-config.el:218= — =dired-mark= advances point to the next line itself; the loop's extra =forward-line 1= then skips it, so consecutive files are marked alternately. Live mis-marking on a key that feeds batch operations (delete/copy on marked files) — data-loss adjacent. Drop the manual forward-line when a mark was made (or =dired-unmark-all-marks= + mark dirs + =dired-toggle-marks=). The trivial line-predicate helper is tested; the loop isn't — add the marked-count test. From the 2026-06 config audit. - ** TODO [#B] Dupre diff-changed / diff-refine-changed legibility :bug: :PROPERTIES: :LAST_REVIEWED: 2026-06-11 @@ -997,11 +982,6 @@ Add the buffer-local var, set it on each "Run a test..." selection, use it as th *** TODO [#B] TS/JS coverage status sync Update the =dev-fkeys.el= header comment (L33) — TS/JS is no longer punted; the cmd-builder at L384 emits vitest/jest. Document the prefer-vitest fallback. -** DONE [#B] heavy-box comment inserts non-comment lines :bug:solo:next: -CLOSED: [2026-06-15 Mon] -cj/--comment-heavy-box now prefixes the interior empty/text lines with the comment char + suffix (like cj/--comment-box) so they stay valid comments in line-comment languages, and gained the min-length guard (small/negative widths now error cleanly instead of hitting make-string). The two characterization assertions that pinned the broken bare-* lines were updated to the corrected output. -=modules/custom-comments.el:427= — =cj/--comment-heavy-box= interior/empty lines carry no comment prefix, so in line-comment languages (elisp, Python) C-; C h injects syntax-breaking bare =*...= lines. The existing test characterizes the broken output (asserts =^\*.*\*$=). Prefix interiors like =cj/--comment-box= does; add the missing min-length validation (negative width hits make-string with a raw error); fix the test to assert corrected output. From the 2026-06 config audit. - ** TODO [#B] jumper: register collisions and dead-marker errors :bug:solo: :PROPERTIES: :LAST_REVIEWED: 2026-06-13 @@ -2429,10 +2409,6 @@ configuration (=text-config=, =diff-config=, =ledger-config=, Needs from Craig: this is measurement-first (perf), not a blind fix — it's the same bottleneck as the "optimize org-capture target building" debug task. Run /debug with debug-profiling to measure what actually costs the 15-20s (file count? regex? agenda rebuild?), then fix from the data. I won't restructure the refile/agenda scan without a profile. Say "let's debug it" and I'll profile + fix. =modules/org-roam-config.el:78-79= — org-roam is =:defer 1=, so its :config calls =cj/build-org-refile-targets= at 1s idle, BEFORE the 5s background timer (=org-refile-config.el:144-151=); on a cold cache the 30k-file scan runs inline and freezes Emacs at first idle. Drop the call — org-roam is loaded long before the 5s timer fires. Likely a player in the filed org-capture 15-20s perf task (=[#B] Optimize org-capture target building performance=) — check both together. From the 2026-06 config audit. -** DONE [#B] Scratch buffer background a shade lighter than default :feature:next: -CLOSED: [2026-06-15 Mon] -cj/scratch-apply-background remaps the *scratch* default background lighter (cj/scratch-background-lighten percent, default 5) via color-lighten-name, applied on the existing emacs-startup-hook. The percent is a tunable defcustom. Pure helper tested for the display-independent contract; the lightening itself is display-dependent (color-name-to-rgb), verified live in the daemon. -Make *scratch* just-noticeably lighter than the normal background so it reads as the scratch buffer. Simplest is a buffer-local face remap on *scratch*; Craig is fine routing it through org-faces if a theme hook is wanted. The exact lightening delta is an aesthetic call to tune visually. From the roam inbox. ** VERIFY [#B] Stale elpa gptel shadows the local fork — likely the gptel-magit root :bug:quick:solo:next: Needs from Craig: can't be done standalone. I tried deleting elpa/gptel-0.9.8.5 — the fork loaded fine and gptel-magit still worked via use-package autoloads, but package activation then printed "Unable to activate gptel-magit / Required gptel-0.9.8 unavailable" on every startup, so I reverted. To remove the shadow we must also resolve gptel-magit's package dependency: either drop gptel-magit's package dep (load it via load-path like the gptel fork), or repackage the fork into .localrepo as gptel. Tell me which and I'll do it; this pairs with the gptel-magit investigation. =elpa/gptel-0.9.8.5= is still installed alongside the =~/code/gptel= fork (=ai-config.el:383=); package activation puts the elpa dir + autoloads on load-path, so which copy wins depends on ordering, and a mixed load (fork .el + elpa .elc) produces "impossible" bugs. =gptel-magit= (elpa) declares gptel as a dependency, so IT may be pulling the stale copy — check this first when working the open "[#B] Investigate gptel-magit not working properly" task. Fix: =package-delete= the elpa gptel + remove from .localrepo so the fork is the only copy on disk. From the 2026-06 config audit. @@ -2821,16 +2797,6 @@ Needs from Craig: this is theme-side work, not a config edit — the music-confi Pull the music-config faces out to the theme (the config no longer defines faces directly): playlist name, status (paused, etc.), two mode colors per "button" (on vs off), a per-key symbol+text color, and a color for all other labels. Pairs with the 2026-06-14 face-stripping work (music-config faces were removed there and are currently undefined until the theme defines them). From the roam inbox 2026-06-15. ** TODO [#C] music: show song information in the modeline :feature: Show basic song information in the modeline, with streaming-source support too. Write a spec for this one first. From the roam inbox 2026-06-15. -** DONE [#C] theme-studio: drop the too-similar-colors message below the palette :refactor:studio:next: -CLOSED: [2026-06-15 Mon] -Removed the renderPaletteWarnings box (function, #palwarn element, .palwarn CSS) and its #deltatest browser gate. The per-chip nearest-ΔE tooltip stays (paletteWarnings still computes `nearest`), so the same info remains reachable inline. -Remove the too-similar-colors warning under the palette display. It isn't useful there; the same information is reachable per-assignment through the inline contrast field. From the roam inbox 2026-06-15. -** CANCELLED [#C] theme-studio: raise the max color spans to 5 :feature:studio: -CLOSED: [2026-06-15 Mon 22:52] -Increase the palette's maximum span count to 5, for a smoother, slower transition across a color. From the roam inbox. -*** CANCELLED which control caps below 5 — current maxes are all 8 -CLOSED: [2026-06-15 Mon 22:52] -On review the per-column span control, the ground span control, and regenColumn all already cap at 8 (well above 5), so there's no sub-5 limit to raise. Either 5 is already reachable, or the intended control is a different one (e.g. the generator emits base-only columns — spanCount is hardcoded 0 in palette-generator-ui.js). Need Craig to point at the control he's hitting. ** VERIFY [#C] theme-studio: compact the contrast column to a number :solo:quick:studio:next: Needs from Craig: clarify "colored like the current text." The contrast cell is crHtml in app.js — today it shows "N.N PASS/FAIL" colored by rating. Do you want (a) the number colored by its pass/fail rating (green/gray/red) with the verdict word dropped, or (b) the number colored in the face's own foreground (a legibility preview)? I'll do whichever; I won't guess on the aesthetic. Represent contrast as a colored number colored like the current text. The word "passed" is unnecessary @@ -4115,10 +4081,6 @@ The core functionality is implemented but needs debugging before it's production 3. Refine toggle behavior based on testing 4. Document the final keybindings and workflow -** DONE [#C] Page-down in a long completing-read selects and dismisses the list :bug:next: -CLOSED: [2026-06-15 Mon] -Bound <next>/<prior> to vertico-scroll-up/down in vertico-map, so Page-Up/Down page the candidate list instead of falling through to history (which selected and dismissed). Verified live (use-package :bind isn't reachable under make test). -In a very long completing-read (vertico), Page-Down selects an item and the list vanishes instead of paging, forcing a cancel. Investigate the completion stack's next-page handling; likely needs vertico-scroll-up / vertico-scroll-down bound in vertico-map. From the roam inbox. ** VERIFY [#C] page-signal pager account deregistered — re-registration needs your hands :PROPERTIES: :LAST_REVIEWED: 2026-06-12 @@ -4253,13 +4215,6 @@ Bake into the tool (a lint surfaced in the UI) or run as a build-time check (see :END: Craig, 2026-06-11 manual-test walk: the color picker's background is hard to distinguish from the page background. Give the picker panel a visibly distinct background or a highlighted border so it stands out. Pin with a gate asserting the picker element carries the distinct style. -** CANCELLED [#C] theme-studio reconsider the JSON show button :feature:quick:studio: -CLOSED: [2026-06-15 Mon 22:56] -:PROPERTIES: -:LAST_REVIEWED: 2026-06-13 -:END: -From the roam inbox: the =show= button for the raw JSON export does not fit the main theme-design workflow, but it may still be useful for debugging. Decide whether to hide it behind a debugging affordance, rename it, or remove it. Quick UI cleanup once the desired debugging surface is chosen; not marked solo because it is a workflow preference call. - ** TODO [#C] theme-studio: restrict the cursor row to its background :bug:studio: The UI table gives the cursor face the full control set (fg, B/I/U/S, box), but Emacs only honors the cursor face's :background. Its shape is cursor-type, not a face attribute, so every other control on that row is a no-op once the theme loads. Restrict the cursor row to just its background swatch so the studio doesn't present controls Emacs drops. ** TODO [#C] theme-studio terminal/ANSI colors :feature:studio: @@ -8431,3 +8386,44 @@ CLOSED: [2026-06-15 Mon] :LAST_REVIEWED: 2026-06-13 :END: =modules/ui-navigation.el= — the visited-file filter calls =(delq buf-file recently-killed-list)= where =buf-file= is a fresh string from =expand-file-name=, never =eq= to the =recentf-list= entries, so already-open files are never skipped (the skip logic is dead). Use =delete= (equal-based). Found 2026-06-12 while fixing the off-by-one above; the two bugs cancel exactly when one file is open, which is why it went unnoticed. +** DONE [#B] C-s C-s vertico-repeat path never works :bug:quick:solo:next: +CLOSED: [2026-06-15 Mon] +Fixed in b62af096 (prior session): vertico-repeat-save added to minibuffer-setup-hook so a session exists for the second C-s. Re-verified live 2026-06-15: the hook is installed and cj/consult-line-or-repeat is defined. +:PROPERTIES: +:LAST_REVIEWED: 2026-06-13 +:END: +=modules/selection-framework.el:263= — =cj/consult-line-or-repeat= calls =vertico-repeat= on the second consecutive C-s, but nothing adds =vertico-repeat-save= to =minibuffer-setup-hook= (grep: zero hits config-wide), so it always signals "No Vertico session". Add the hook next to the vertico use-package block. From the 2026-06 config audit. +*** 2026-06-13 Sat @ 10:59:52 -0500 Fixed: vertico-repeat-save hooked +Added top-level =(add-hook 'minibuffer-setup-hook #'vertico-repeat-save)= after the vertico use-package block (placed top-level, not inside use-package, so the stub-use-package test exercises it; =vertico-repeat-save= is autoloaded, deferring the load to first minibuffer). New test asserts hook membership; 5/5 green; evaled into the live daemon (=:on-hook= now t). Awaiting Craig's confirm → DONE. +** DONE [#B] dirvish M (mark all files) marks every other file :bug:quick:solo:next: +CLOSED: [2026-06-15 Mon] +Rewrote cj/dired-mark-all-visible-files with dired-get-filename + file-directory-p and an if/else so dired-mark's own point-advance isn't doubled by forward-line. Added real-dired marked-count tests; retired the now-dead regex helper and its fake-buffer mock test. +=modules/dirvish-config.el:218= — =dired-mark= advances point to the next line itself; the loop's extra =forward-line 1= then skips it, so consecutive files are marked alternately. Live mis-marking on a key that feeds batch operations (delete/copy on marked files) — data-loss adjacent. Drop the manual forward-line when a mark was made (or =dired-unmark-all-marks= + mark dirs + =dired-toggle-marks=). The trivial line-predicate helper is tested; the loop isn't — add the marked-count test. From the 2026-06 config audit. +** DONE [#B] heavy-box comment inserts non-comment lines :bug:solo:next: +CLOSED: [2026-06-15 Mon] +cj/--comment-heavy-box now prefixes the interior empty/text lines with the comment char + suffix (like cj/--comment-box) so they stay valid comments in line-comment languages, and gained the min-length guard (small/negative widths now error cleanly instead of hitting make-string). The two characterization assertions that pinned the broken bare-* lines were updated to the corrected output. +=modules/custom-comments.el:427= — =cj/--comment-heavy-box= interior/empty lines carry no comment prefix, so in line-comment languages (elisp, Python) C-; C h injects syntax-breaking bare =*...= lines. The existing test characterizes the broken output (asserts =^\*.*\*$=). Prefix interiors like =cj/--comment-box= does; add the missing min-length validation (negative width hits make-string with a raw error); fix the test to assert corrected output. From the 2026-06 config audit. +** DONE [#B] Scratch buffer background a shade lighter than default :feature:next: +CLOSED: [2026-06-15 Mon] +cj/scratch-apply-background remaps the *scratch* default background lighter (cj/scratch-background-lighten percent, default 5) via color-lighten-name, applied on the existing emacs-startup-hook. The percent is a tunable defcustom. Pure helper tested for the display-independent contract; the lightening itself is display-dependent (color-name-to-rgb), verified live in the daemon. +Make *scratch* just-noticeably lighter than the normal background so it reads as the scratch buffer. Simplest is a buffer-local face remap on *scratch*; Craig is fine routing it through org-faces if a theme hook is wanted. The exact lightening delta is an aesthetic call to tune visually. From the roam inbox. +** DONE [#C] theme-studio: drop the too-similar-colors message below the palette :refactor:studio:next: +CLOSED: [2026-06-15 Mon] +Removed the renderPaletteWarnings box (function, #palwarn element, .palwarn CSS) and its #deltatest browser gate. The per-chip nearest-ΔE tooltip stays (paletteWarnings still computes `nearest`), so the same info remains reachable inline. +Remove the too-similar-colors warning under the palette display. It isn't useful there; the same information is reachable per-assignment through the inline contrast field. From the roam inbox 2026-06-15. +** CANCELLED [#C] theme-studio: raise the max color spans to 5 :feature:studio: +CLOSED: [2026-06-15 Mon 22:52] +Increase the palette's maximum span count to 5, for a smoother, slower transition across a color. From the roam inbox. +*** CANCELLED which control caps below 5 — current maxes are all 8 +CLOSED: [2026-06-15 Mon 22:52] +On review the per-column span control, the ground span control, and regenColumn all already cap at 8 (well above 5), so there's no sub-5 limit to raise. Either 5 is already reachable, or the intended control is a different one (e.g. the generator emits base-only columns — spanCount is hardcoded 0 in palette-generator-ui.js). Need Craig to point at the control he's hitting. +** DONE [#C] Page-down in a long completing-read selects and dismisses the list :bug:next: +CLOSED: [2026-06-15 Mon] +Bound <next>/<prior> to vertico-scroll-up/down in vertico-map, so Page-Up/Down page the candidate list instead of falling through to history (which selected and dismissed). Verified live (use-package :bind isn't reachable under make test). +In a very long completing-read (vertico), Page-Down selects an item and the list vanishes instead of paging, forcing a cancel. Investigate the completion stack's next-page handling; likely needs vertico-scroll-up / vertico-scroll-down bound in vertico-map. From the roam inbox. +** CANCELLED [#C] theme-studio reconsider the JSON show button :feature:quick:studio: +CLOSED: [2026-06-15 Mon 22:56] +:PROPERTIES: +:LAST_REVIEWED: 2026-06-13 +:END: +From the roam inbox: the =show= button for the raw JSON export does not fit the main theme-design workflow, but it may still be useful for debugging. Decide whether to hide it behind a debugging affordance, rename it, or remove it. Quick UI cleanup once the desired debugging surface is chosen; not marked solo because it is a workflow preference call. |
