aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-15 23:51:49 -0500
committerCraig Jennings <c@cjennings.net>2026-06-15 23:51:49 -0500
commit8a1ae3ba99b8f93a9af32cd7aa5ccc7d50dbbaf3 (patch)
tree0cd55f2af3118a0df1ca91b5e6e68b03bb636d3d
parentcbc9ffbee729a4c5b8f09a6c13b516eaf3c7c50f (diff)
downloaddotemacs-8a1ae3ba99b8f93a9af32cd7aa5ccc7d50dbbaf3.tar.gz
dotemacs-8a1ae3ba99b8f93a9af32cd7aa5ccc7d50dbbaf3.zip
chore(todo): resolve :next: sweep — fixes closed, rest parked as VERIFY
Close the tasks fixed this session and park the rest as VERIFY with what's needed (fixture / measurement / design pick / confirm). Child-priority sync bumps, lint mechanical fixes, and PROPERTIES-drawer repairs from the wrap-up cleanup.
-rw-r--r--todo.org14
1 files changed, 7 insertions, 7 deletions
diff --git a/todo.org b/todo.org
index 652f8065f..369379924 100644
--- a/todo.org
+++ b/todo.org
@@ -51,20 +51,20 @@ Add a button on the theme-studio page that runs the make deploy-wip target local
Needs from Craig: the exact repro (palette JSON + click sequence, or a quick screen capture). I traced it and couldn't reproduce from the code: updateColor (the "update selected" path) already excludes the selected entry from its uniqueness check (j!==i), and the fg/bg chips are selectable — paletteChip wires d.onclick -> selectColor(i), with the lock only blocking removal, not selection. The "already exists" wording is addColor's message, which is only reached via applyEdit when selectedIdx is null (i.e. no chip selected). So the trigger is a state I can't see statically — selection getting lost before "update", or a second entry already named "fg". With the precise steps I can pin it; I won't guess-patch the palette-update path on an [#A] bug since a wrong fix there corrupts themes.
Selecting the fg tile, changing its value, and clicking update errors that an fg already exists instead of updating it. The update path treats a reassign as an add. From the roam inbox.
** VERIFY [#A] calendar-sync drops final occurrences, resurrects cancelled meetings :bug:solo:next:
-Needs from Craig: a real .ics fixture (or two) that reproduces both symptoms — a recurring event missing its final occurrence, and a cancelled meeting that reappears. This is RFC-5545 recurrence handling (RRULE/UNTIL/EXDATE/STATUS:CANCELLED); I won't guess-patch the parser without a failing case to test against. Drop a sanitized .ics and I'll write the characterization test + fix.
:PROPERTIES:
:LAST_REVIEWED: 2026-06-13
:END:
+Needs from Craig: a real .ics fixture (or two) that reproduces both symptoms — a recurring event missing its final occurrence, and a cancelled meeting that reappears. This is RFC-5545 recurrence handling (RRULE/UNTIL/EXDATE/STATUS:CANCELLED); I won't guess-patch the parser without a failing case to test against. Drop a sanitized .ics and I'll write the characterization test + fix.
RFC 5545 conformance holes in =modules/calendar-sync.el=, all agenda-visible (from the 2026-06 config audit):
- =:973,1015,1024= — UNTIL treated as exclusive (strict =calendar-sync--before-date-p=); RFC and Google make it inclusive, so the LAST instance of every UNTIL-bounded series vanishes. Tests assert loose count ranges, so it's unpinned. Allow equality.
- =:578= — comma-separated EXDATE lists (Google emits them) never parse; the exclusion drops silently and cancelled occurrences reappear on the agenda. Split on "," before parsing; no comma-case test exists.
- =:902= — timed events without DTEND render as all-day (time lost); multi-day all-day spans collapse to one day (end date unused, exclusive-DTEND unhandled). Emit start-time-only stamps and org date ranges.
** VERIFY [#A] Native compilation disabled config-wide; GC at stock 800KB :bug:next:
-Needs from Craig: re-enabling native-comp config-wide is a stability/perf judgment, not a mechanical fix. Was it disabled deliberately (a crash, a build without native-comp, async-warning noise)? If you want it back on, confirm and I'll re-enable + raise the GC threshold and verify a clean full launch; otherwise this stays parked. I won't flip it blind.
:PROPERTIES:
:LAST_REVIEWED: 2026-06-13
:END:
+Needs from Craig: re-enabling native-comp config-wide is a stability/perf judgment, not a mechanical fix. Was it disabled deliberately (a crash, a build without native-comp, async-warning noise)? If you want it back on, confirm and I'll re-enable + raise the GC threshold and verify a clean full launch; otherwise this stays parked. I won't flip it blind.
From the 2026-06 config audit (verified against the live daemon). =early-init.el:69= =(setq native-comp-deferred-compilation nil)= — the obsolete alias of =native-comp-jit-compilation= — turns JIT native compilation OFF entirely, not "synchronous" as the comment claims: 19 .eln files exist for 184 packages, ~100 of 121 modules run interpreted for the daemon's lifetime, and system-defaults.el:42-44's speed-3/8-jobs/always-compile settings are dead. Plus =early-init.el:113-116= restores =gc-cons-threshold= to the captured STOCK default (800000, verified) post-startup — frequent small GC pauses forever. Together these plausibly feed the filed org-capture 15-20s task more than anything in the capture path itself. Actions: retest the old "Selecting deleted buffer" race on 30.2 and re-enable JIT (or AOT sweep); set a deliberate 16-64MB threshold (or gcmh). Check both before burning time on the capture-perf debug task.
** TODO [#A] Unified popup placement and dismissal rules :feature:
@@ -2464,7 +2464,7 @@ Spec draft: [[id:fe980b12-451a-4d8b-a550-d99f9ec49f45][theme-studio-semantic-the
Design a Modus-inspired layered Theme Studio output path: palette data, semantic role mappings, face templates, and a generated theme wrapper. Keep the current flat JSON-to-theme converter as the compatibility/default path while proving a layered, self-contained generated theme. Include advisory semantic rules as a possible validation layer, not v1 enforcement.
-*** TODO [#C] theme-studio palette generator source modes for base-only vs ground-aware palettes :feature:
+*** TODO [#B] theme-studio palette generator source modes for base-only vs ground-aware palettes :feature:
:PROPERTIES:
:LAST_REVIEWED: 2026-06-14
:END:
@@ -3810,7 +3810,7 @@ Surface current-buffer or project-wide errors and warnings. Useful
both as a "what's broken right now" check and as input to the
patch-narrative buffer / commit-intent workbench above.
-*** TODO [#D] gptel-magit activation fails on velox :bug:quick:
+*** TODO [#C] gptel-magit activation fails on velox :bug:quick:
:PROPERTIES:
:LAST_REVIEWED: 2026-06-01
:END:
@@ -4019,10 +4019,10 @@ compose, and the three =prog-*= modules. See the design doc for the
full translation table, migration steps, tests, and risks.
** VERIFY [#C] music-config option-combination audit + tests :test:next:
-Deferred from the batch — this is a sizable test-writing audit (pairwise option combinations + new ERT coverage for music-config), better as its own focused /add-tests or /pairwise-tests session than crammed into a bug-fix sweep. No blocker; say the word and I'll run /pairwise-tests over the option space.
:PROPERTIES:
:LAST_REVIEWED: 2026-06-06
:END:
+Deferred from the batch — this is a sizable test-writing audit (pairwise option combinations + new ERT coverage for music-config), better as its own focused /add-tests or /pairwise-tests session than crammed into a bug-fix sweep. No blocker; say the word and I'll run /pairwise-tests over the option space.
Two-part task surfaced 2026-05-28 during the Signel verify walk — generalized from the "are there combinations of options that we'd want to disallow together" question.
@@ -4197,10 +4197,10 @@ build-theme.el's UI tier passes inherit=nil to --attrs, so a UI face that relies
** TODO [#C] theme-studio: elfeed ignores theme assignments :studio:studio:
The preview shows theme colors, but elfeed itself renders all-white with no variation. Note: this may be the shr-rendered entry/article view (elfeed-show), where color often comes from the document rather than the theme — confirm whether the symptom is in the search list or the article view. From the roam inbox.
** VERIFY [#C] theme-studio face-consistency check :feature:studio:next:
-Needs from Craig: this is an open-ended feature, not a bug — it needs a spec first (what "consistency" means: which faces are compared, what rule flags an inconsistency, how it's surfaced in the UI). Give me the check's definition (or say "brainstorm a spec") and I'll build it; parked until then.
:PROPERTIES:
:LAST_REVIEWED: 2026-06-10
:END:
+Needs from Craig: this is an open-ended feature, not a bug — it needs a spec first (what "consistency" means: which faces are compared, what rule flags an inconsistency, how it's surfaced in the UI). Give me the check's definition (or say "brainstorm a spec") and I'll build it; parked until then.
Rule taxonomy captured in [[file:docs/design/theme-studio-face-rules.org][docs/design/theme-studio-face-rules.org]] (Design Rules vs Fidelity Rules). The two checks below map to those two rule kinds. Both surface structural-attribute (weight/slant/underline/box/overline/height) issues; color is the theme's design and out of scope.
1. Theme cross-cutting consistency (primary, per Craig 2026-06-09): the theme has deliberate cross-cutting rules — e.g. headings/titles are bold, links are underlined, errors/warnings/success are bold. Flag where the theme BREAKS ITS OWN rule (a heading that isn't bold, a link that isn't underlined). The designer declares the rules; the check finds the violators. This is the "tell me where I broke the rule" guardrail.
@@ -8388,10 +8388,10 @@ CLOSED: [2026-06-15 Mon]
=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:
+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.
=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.