summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--todo.org123
1 files changed, 112 insertions, 11 deletions
diff --git a/todo.org b/todo.org
index 2fd99a29..a5780775 100644
--- a/todo.org
+++ b/todo.org
@@ -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=.
-