diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-15 02:14:57 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-15 02:14:57 -0500 |
| commit | 2a7d915d1256b58de8024c345fc144a62505da94 (patch) | |
| tree | 8d9ad5ce841dc57cb082a92e12aed3fda1ffbc03 /todo.org | |
| parent | 4945382a2b80f310becad5912e9d80aa0a7798a5 (diff) | |
| download | dotemacs-2a7d915d1256b58de8024c345fc144a62505da94.tar.gz dotemacs-2a7d915d1256b58de8024c345fc144a62505da94.zip | |
chore(todo): housekeeping — music spec closeout + module review progress
Three related housekeeping updates that piled up during the session.
The "Write spec on what's needed for music-config not to depend on
EMMS" task is DONE — spec lives at
docs/design/music-config-without-emms.org. Adds a follow-up TODO to
implement the spec, with the complexity and time estimates and the
acceptance checks the spec already defines.
The module-by-module review project moves from PROJECT to DOING. All
six review tracks (foundation, custom editing utilities, UI and
navigation, Org workflows, programming workflows, integrations and
applications) move to DOING with completion-review notes appended
under each. The notes summarize what was re-checked, what coverage
now exists, and which child tasks are still actionable.
Two new sub-TODOs add focused test coverage:
- "Add UI/navigation runtime smoke coverage" — font-config,
modeline-config, popper-config policy.
- "Add smoke coverage for lightweight programming modules with no
direct tests" — prog-general, prog-lisp, prog-training.
Diffstat (limited to 'todo.org')
| -rw-r--r-- | todo.org | 123 |
1 files changed, 112 insertions, 11 deletions
@@ -38,8 +38,36 @@ Tags are additive. For example, a small wrong-behavior fix can be =:feature:refactor:=. * Emacs Open Work - -** TODO [#B] Write spec on what's needed for music not to depend on EMMS +** DONE [#B] Write spec on what's needed for music-config not to depend on EMMS +CLOSED: [2026-05-15 Fri] +What if we were writing this as it's own package and couldn't use EMMS. What would that look like? +The spec should be in docs/ +Another task should be created to implement the spec +Spec written in [[file:docs/design/music-config-without-emms.org][Design: music-config Without EMMS]]. + +** TODO [#B] Implement EMMS-free music-config architecture :refactor: +Implement the design in [[file:docs/design/music-config-without-emms.org][Design: music-config Without EMMS]]. + +The implementation should make =music-config.el= load without EMMS, introduce +package-owned playlist and track state, add a =cj/music-playlist-mode= view, +and route playback through a small backend protocol with an initial =mpv= +backend. Preserve the current F10 and =C-; m= user workflows where practical, +and keep M3U load/save/edit/reload plus radio station creation working. + +Complexity estimate: high. This is a module rewrite with a new internal data +model, package-owned playlist mode, backend protocol, mpv process management, +and migration of existing EMMS-backed commands/tests. + +Time estimate: 2-4 focused days for an EMMS-free v1 with play/stop/next/previous, +M3U persistence, playlist UI, and focused tests. Add another 1-2 days if v1 +must include full mpv IPC support for pause, seek, and volume parity. + +Acceptance checks: +- =music-config.el= can be required in batch with no EMMS package installed. +- Existing focused music tests pass without EMMS preload or EMMS stubs except + where a compatibility adapter is explicitly under test. +- New tests cover playlist state, backend command dispatch, M3U persistence, + and the EMMS-free load smoke path. ** DONE [#B] Update gptel models :chore: CLOSED: [2026-05-14 Thu] Anthropic side: bumped Opus 4.6 → 4.7 (current frontier); Sonnet 4.6 @@ -907,7 +935,7 @@ Done 2026-05-15: - Focused tests passed for the new architecture smoke file and the affected agenda/refile helpers. -** PROJECT [#B] Module-by-module review and hardening :review: +** DOING [#B] Module-by-module review and hardening :review: Review every file in =modules/= and capture concrete bugs, tests, refactors, and design improvements as child tasks. This is intentionally separate from the @@ -939,8 +967,7 @@ Suggested review order: 6. Integrations and applications: mail, Slack, ERC, Elfeed, EWW, Dirvish, PDF, Calibre, music, recording/transcription, AI/rest tooling. -*** DONE [#B] Review foundation modules :review: -CLOSED: [2026-05-15 Fri] +*** DOING [#B] Review foundation modules :review: Scope: - =system-lib.el= @@ -1096,7 +1123,7 @@ Expected outcome: - Add a small test or validation helper around the computed package policy if package bootstrap is extracted. -*** TODO [#B] Review custom editing utility modules :review: +*** DOING [#B] Review custom editing utility modules :review: Scope: - =custom-buffer-file.el= @@ -1117,6 +1144,14 @@ Review progress: - =external-open.el= and =media-utils.el= reviewed 2026-05-03. See child tasks. - =custom-buffer-file.el= reviewed 2026-05-03. See child tasks. +Completion review 2026-05-15: +- Re-checked the scoped custom editing utility modules and their test files. +- The pure editing modules remain well covered by focused ERT tests. +- Remaining actionable issues are already logged below: process-launch + hardening and coverage for =external-open.el= / =media-utils.el=, + destructive buffer/file keybinding policy, and explicit cross-module + autoload/require boundaries. + **** TODO [#B] Harden external process launching in =external-open.el= and =media-utils.el= :security:refactor: =external-open.el= and =media-utils.el= use shell command strings for launching @@ -1192,7 +1227,7 @@ Expected outcome: - Add a simple module-load smoke test if this becomes part of the load-graph refactor. -*** TODO [#B] Review UI and navigation modules :review: +*** DOING [#B] Review UI and navigation modules :review: Scope: - =ui-config.el= @@ -1212,6 +1247,28 @@ Review progress: - =font-config.el=, =ui-theme.el=, =selection-framework.el=, =ui-navigation.el=, and =popper-config.el= have little direct test coverage. +Completion review 2026-05-15: +- Re-checked the scoped UI/navigation modules and current tests. +- =mousetrap-mode.el=, =ui-navigation.el=, =ui-theme.el=, + =selection-framework.el=, and selected modeline/UI helpers now have focused + tests, but the font/modeline/popper runtime policy remains under-tested. +- Existing cleanup below covers the disabled =popper-config.el= load-graph + issue; added a separate test-gap task for the remaining UI smoke coverage. + +**** TODO [#B] Add UI/navigation runtime smoke coverage :tests: + +Several UI modules are mostly top-level runtime configuration and currently +have only partial helper coverage. The highest-value missing assertions are: +- =font-config.el=: font fallback/daemon frame setup does not error when + optional fonts or emoji packages are absent. +- =modeline-config.el=: runtime segment assembly handles missing VC/project + data and does not signal in non-file buffers. +- =popper-config.el=: if the module remains in =init.el= while disabled, a + smoke test should prove requiring it is an intentional no-op. + +Keep these tests batch-safe by stubbing frame/font/package functions rather +than depending on a graphical session. + **** TODO [#B] Decide whether =popper-config.el= should exist while disabled :cleanup: =popper-config.el= is required by =init.el=, but the only =use-package popper= @@ -1226,7 +1283,7 @@ Expected outcome: This is low priority, but it is a good example of load graph noise to clean up during the =init.el= deferral work. -*** TODO [#B] Review Org workflow modules :review: +*** DOING [#B] Review Org workflow modules :review: Scope: - =org-config.el= @@ -1262,6 +1319,16 @@ Review progress: file selection/package loading, Org export defaults, Babel templates, and contact/Mu4e boundaries. +Completion review 2026-05-15: +- Re-checked the scoped Org workflow modules and their test coverage. +- The broad parser/cache/helper areas now have useful focused tests, especially + =calendar-sync.el=, agenda/refile helpers, org-roam helpers, org-noter, Hugo, + reveal, and webclipper processing. +- Remaining issues are already logged below, including security-sensitive + calendar config and Babel evaluation policy, cache lifecycle/timer behavior, + org-roam destructive workflow guardrails, executable checks, capture-template + smoke tests, and Org workflow ownership documentation. + **** PROJECT [#A] Split personal calendar configuration from =calendar-sync.el= :security:refactor: =calendar-sync.el= is a reusable sync engine, but it also defines the personal @@ -1509,7 +1576,7 @@ Recommended improvement: - Link this note from the Org workflow review task and the broader load-graph refactor. -*** TODO [#B] Review programming workflow modules :review: +*** DOING [#B] Review programming workflow modules :review: Scope: - =prog-c.el= @@ -1539,6 +1606,28 @@ Review progress: YAML. - =test-runner.el= has direct tests, but project-scoping is still a design gap. +Completion review 2026-05-15: +- Re-checked the scoped programming workflow modules and current tests. +- =dev-fkeys.el=, coverage modules, formatter wiring, keyboard compatibility, + and test-runner helpers have meaningful focused coverage. +- Remaining issues are logged below: F4 project capability classification, + LSP ownership and smoke coverage, tree-sitter auto-install policy, Git clone + process handling, shell-script executable policy, and formatter process + boundaries. + +**** TODO [#C] Add smoke coverage for lightweight programming modules with no direct tests :tests: + +Several low-risk programming modules currently have little or no direct test +surface, especially =prog-general.el=, =prog-lisp.el=, and +=prog-training.el=. Most behavior is package/hook configuration, so this should +stay narrow: +- require the modules with package side effects stubbed, +- assert key hooks/settings that this config owns, +- ensure batch loading does not trigger external installs or downloads. + +Prioritize this after the LSP and tree-sitter policy tasks, because those +changes will define the stable assertions. + **** TODO [#B] Revisit F4 project classification vs actual project capabilities :ux: =dev-fkeys.el= classifies a project as =interpreted= if it has @@ -1648,7 +1737,7 @@ Expected outcome: - Keep existing formatter wiring tests and add command-construction tests if a helper is extracted. -*** TODO [#B] Review integrations and application modules :review: +*** DOING [#B] Review integrations and application modules :review: Scope: - AI/rest: =ai-config.el=, =ai-conversations.el=, =restclient-config.el= @@ -1671,6 +1760,19 @@ Review progress: =dashboard-config=, =mail-config=, =show-kill-ring=, =system-commands=, and =wrap-up= as high-value test targets. +Completion review 2026-05-15: +- Re-checked the scoped integration/application modules with risky-pattern and + test-coverage searches. +- Many integration modules now have focused tests, including AI config, + restclient, mail helpers, Slack commands, Dirvish helpers, music, + recording/transcription, system commands, browser/help/jumper/reconcile, and + undead buffer helpers. +- Remaining issues are already logged below, especially system command safety, + REST key persistence, mail privacy/lifecycle policy, quick-video timers and + temp state, shell-heavy dwim/recording command hardening, AI conversation + persistence coverage, calendar operational behavior, Dirvish dependency/path + hardening, EWW/Elfeed network helpers, and Slack which-key registration. + **** TODO [#B] Make system restart/shutdown commands more defensive :safety: =system-commands.el= exposes high-impact shell commands through a convenience @@ -4336,4 +4438,3 @@ CLOSED: [2026-05-14 Thu 23:39] After =b7c6b2c=, the EPUB text block is centered with `set-window-margins' at `(natural - nov-text-width) / 2' each side -- but the *rendered* text is a bit narrower than `nov-text-width' columns, because `shr' wraps at word boundaries, so the typical line ends a few columns short of the fill width. The text is left-aligned within its `nov-text-width'-wide fill region, so the unused tail of that region adds to the right margin -- the block reads as shifted left of center. Adjusting `cj/nov-margin-percent' (the `+'/`-' keys) re-flows and happens to look better at some widths (probably the line-ending pattern lands tighter), which is the same effect, not a real difference. Plan: in `cj/nov-update-layout', after the render, measure the actual widest line (`(save-excursion (goto-char (point-min)) (let ((m 0)) (while (not (eobp)) (end-of-line) (setq m (max m (current-column))) (forward-line 1)) m))') and center on *that* instead of on `nov-text-width'. Or, cheaper but coarser: bias the left margin by a small fudge (a column or two). The measure-the-text approach is correct; do it if it's not too slow on big chapters (it scans the buffer once per render -- the buffer's already in memory, so likely fine). =modules/calibredb-epub-config.el=, =tests/test-calibredb-epub-config.el=. - |
