From c1869fb1a320cf11a92ddf422136cbe450deaf5e Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Tue, 16 Jun 2026 00:14:17 -0500 Subject: chore(todo): close gptel string-model crash, file dedup + manual-test follow-ups Closed the gptel-switch-backend bug (fixed this session). Filed a VERIFY for the dedup decision (keep switch-backend or fold into change-model) and a manual-test VERIFY for the C-; a B interactive check. --- todo.org | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/todo.org b/todo.org index 369379924..0a9c5cacd 100644 --- a/todo.org +++ b/todo.org @@ -2784,9 +2784,15 @@ From the 2026-06 config audit, =modules/ai-conversations.el=: - =:248= — =write-region= straight at the target; crash mid-write truncates the only copy of the history (autosave hits this constantly). Temp + rename. - =:140= — three overlapping autosave mechanisms (after-send advice that fires before the response exists, post-response hook, 60s timer). Keep the hook; drop the advice (and likely the timer). -** TODO [#C] cj/gptel-switch-backend reintroduces the string-model crash :bug:quick:solo: +** DONE [#C] cj/gptel-switch-backend reintroduces the string-model crash :bug:quick:solo: +CLOSED: [2026-06-16 Tue] =modules/ai-config.el:272= — =(setq gptel-model model)= with the raw completing-read STRING — the documented wrong-type-argument-symbolp modeline hang (CLAUDE.md gotcha), reachable from C-; a B today. =cj/gptel-change-model= (C-; a m) already does backend+model switching and interns correctly. Intern here, or delete switch-backend and keep one command. From the 2026-06 config audit. +Fixed 2026-06-16: added pure helper =cj/gptel--model-to-symbol= (mirrors =cj/gptel--model-to-string=) and coerced the completing-read value through it before =(setq gptel-model ...)= in =cj/gptel-switch-backend=. 7 ERT tests for the helper (=tests/test-ai-config-model-to-symbol.el=); the existing switch-backend test (=tests/test-ai-config-gptel-commands.el=) updated from asserting the raw string to asserting a symbol + a =symbolp= crash-guard. Full suite green; helper and the redefined command are live in the daemon. Chose "intern" over deleting the redundant command — the dedup is the VERIFY below. + +** VERIFY [#C] Dedup gptel model-switch commands — keep switch-backend or fold into change-model :bug: +=cj/gptel-change-model= (C-; a m) already does backend+model switching and interns correctly, so =cj/gptel-switch-backend= (C-; a B) is arguably redundant now that its crash is fixed. Decision for Craig: keep both, or delete =cj/gptel-switch-backend= plus its C-; a B binding and keep one model-switch command. From the 2026-06 config-audit follow-up. + ** VERIFY [#C] theme-studio: alphabetize the assignment view list below the package divider :feature:quick:solo:studio:next: Deferred from the batch (no blocker, needs a focused studio pass). Plan: sort the package-faces entries alphabetically below the divider in the assignment view dropdown/list. Localized to the view-list build; held only to keep the batch from sprawling. Sort the assignment view list alphabetically anywhere below the divider for the package views. From the roam inbox 2026-06-15. @@ -4542,6 +4548,11 @@ No dedicated update path today — refreshing a pinned package means ad-hoc =cp= ** TODO Manual testing and validation Exercised once the phases above land. +*** VERIFY gptel C-; a B switches model without the modeline hang +What we're verifying: cj/gptel-switch-backend (C-; a B) now sets gptel-model to an interned symbol, so the switch completes without the wrong-type-argument-symbolp redisplay hang. Unit tests + a live helper eval already cover the coercion; this is the interactive end-to-end. +- Invoke cj/gptel-switch-backend (C-; a B) +- Pick a backend, then a model from its list +Expected: the modeline updates to the chosen model and Emacs stays responsive — no "Querying ..." hang, no wrong-type-argument backtrace. *** VERIFY org-faces color set in theme-studio reaches the agenda What we're verifying: editing an org-faces-* row in theme-studio, exporting, and deploying lands the new color on the real agenda's keyword/priority. The build-theme -> deftheme half and the live org-todo-keyword-faces / org-priority-faces wiring are already verified mechanically; this confirms the visual end-to-end with a human eye. - Open theme-studio in Chrome and pick "org-faces" from the application dropdown (it sits beside elfeed and mu4e) -- cgit v1.2.3