| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
Five level-2 subtrees moved into the Resolved section:
- Surface org narrowing + sparse-tree under C-; O
- F9 toggle restores single-window layout (older)
- AI-vterm scrollback history replaces agent buffer (older)
- Add ERT coverage for modules below 70%
- Fix Python tree-sitter font-lock query syntax error
Five child priorities bumped to match their parents.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The treesit-query-error redisplay flood diagnosed 2026-04-26 no
longer reproduces. Versions: emacs 30.2-3 (was 30.2-2 at the time
of the investigation, upgraded 2026-05-03), tree-sitter 0.26.8
(unchanged). The upstream Emacs version string is unchanged, but
the Arch package revision bump most likely carries a downstream
patch to treesit.c's predicate translation.
Verified by re-running the documented repro: the exact failing query
from python.el captures cleanly via `treesit-query-capture', and
`font-lock-ensure' on a real .py file under `python-ts-mode' returns
with no `treesit-query-error'. No local override needed.
Mark the todo.org entry DONE, fix the stale `inbox/' path on the
investigation-doc link (file now lives under `docs/'), update the
cross-reference from the grammar-bootstrap task to note this no
longer blocks it, and append a RESOLVED 2026-05-14 footer to the
investigation doc so future-me can see why it got closed.
|
| |
|
|
|
|
|
|
|
|
|
| |
After this session's coverage push (68.8% -> 86.5%), 28 of the 30
child modules listed in the coverage-below-70% task have crossed the
threshold. Mark them DONE with their new percentages, leave the two
genuinely-blocked modules (system-defaults.el at 8.3% and
system-commands.el at 69.4%) as TODO with notes explaining the
instrumentation-gap reason each is stuck.
Also: drop the stray =p= from the parent heading.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
The main "d" agenda view grows two new blocks. A VERIFICATION block lists tasks in the VERIFY TODO state, placed just above the day's SCHEDULE. An IN-PROGRESS block lists tasks in the DOING TODO state, placed just under SCHEDULE. The full block order is now: OVERDUE -> HIGH PRIORITY -> VERIFICATION -> SCHEDULE -> IN-PROGRESS -> PRIORITY B.
Scope matches the other blocks (every entry in `org-agenda-files`). Scheduled and deadlined entries are included -- a VERIFY task with a date appears in both VERIFICATION and SCHEDULE, mirroring how HIGH PRIORITY behaves. Habits are skipped via `cj/org-skip-subtree-if-habit`; PROJECT-keyword parents wouldn't match `(todo "VERIFY")` exact-state filters anyway, so no extra skip there.
Two new header defvars (`cj/main-agenda-verify-title`, `cj/main-agenda-doing-title`) for symmetry with the existing four. Both blocks reference the shared `cj/--main-agenda-prefix-format` so a format tweak still lands in one place.
Five new tests in `test-org-agenda-config-skip-functions.el` lock the block order, each new block's header / prefix-format / skip-function, and the include-scheduled-entries contract.
|
| |
|
|
|
|
|
|
|
|
| |
Coverage rerun after this session's test additions: 67.2% -> 68.8% (4716/6853 lines across 73 files).
Four modules crossed the 70% threshold and are marked DONE: browser-config 69.7% -> 81.6%, ui-config 64.5% -> 90.3%, custom-whitespace 64.6% -> 97.6%, jumper 64.6% -> 98.0%.
system-defaults stays open with a note: 8 new tests cover its helpers (`cj/disabled`, the gc-threshold hooks, `unpropertize-kill-ring`, `cj/log-comp-warning`) but the gauge still reads 1/12 because the sandboxed `(load ...)` used to skip startup side effects doesn't register with undercover's instrumentation. Closing it needs either a refactor that lets the module load via plain `(require)` in batch, or a different coverage strategy.
Other numbers refreshed where they shifted (ui-navigation 8.7% -> 54.2% from prior session, org-agenda-config 60.0% -> 67.3% from this session's project-name category work, etc.).
|
| |
|
|
|
|
| |
`org-agenda-custom-commands` inlined ` %i %-15:c%?-15t% s` four times across the "d" command's overdue / high-priority / schedule / priority-B blocks. New `cj/--main-agenda-prefix-format` defvar holds the literal once; every block now references the symbol so a format tweak lands in one place.
Regression test walks the "d" command's blocks and asserts each `org-agenda-prefix-format` cell resolves to the shared symbol -- a block that silently diverges fails the check.
|
| |
|
|
|
|
| |
Verifies docker is installed and the daemon is reachable, then either pulls a public image (when `TELEGA_DOCKER_IMAGE` is set) or announces the in-Emacs build path (`M-x telega-server-build`) for the user to run once. Telegram auth (phone + verification code) is interactive on first `M-x telega` and not scripted here.
Same shape as setup-email.sh: helpers are sourceable for bats, `main` runs only under direct execution. 7 bats tests stub `docker` and `command` so the suite never talks to the real daemon.
|
| |
|
|
|
|
| |
`dashboard-navigator-buttons' grows a Row 3 with a single Telegram entry (using the `nf-fa-telegram' icon, launching `telega'). The dashboard-mode-map gets a single-letter `g' shortcut to match the other launcher keys.
Two follow-up TODOs filed under the parent telegram task: the TDLib docker setup script (so a fresh-clone install can boot telega without a system-wide TDLib build) and a dashboard-icon-balance pass (Row 3 with one entry is asymmetric; decide whether to leave it or reorganize).
|
| |
|
|
|
|
| |
`cj/vterm-tmux-history' previously used `pop-to-buffer', which routed the history view through display-buffer-alist -- in an agent window that often meant a split or a hand-off to another window, costing the agent its frame slot. `switch-to-buffer' instead drops the history into the selected window directly; the existing quit handler already restores the origin in that same window via `set-window-buffer'.
New test asserts the in-place behavior: starting single-window with a vterm origin, invoking the command leaves `(one-window-p)` t with the history buffer in the original slot. The existing render test no longer needs its `pop-to-buffer' stub since `switch-to-buffer' works in batch.
|
| |
|
|
|
|
|
|
| |
When the agent buffer is the only window in the frame, F9 buries it (correct) but the next F9 redisplayed it as a side split instead of restoring the full-frame layout -- the display-saved path always called `display-buffer-in-direction`, which insists on a split.
New `cj/--ai-vterm-last-was-bury` flag tracks which toggle-off path ran. `cj/ai-vterm` sets it to t in the bury branch (one-window-p) and nil in the delete-window branch. `cj/--ai-vterm-display-saved` checks the flag at toggle-on: if t and the frame is still single-window, it replaces the selected window's buffer in place rather than splitting. Either branch consumes the flag so it never stays stale.
5 tests in test-ai-vterm--single-window-toggle.el cover the flag's set/clear paths, the still-one-window guard, and the end-to-end roundtrip.
|
| |
|
|
|
|
| |
Coverage snapshot rerun on 2026-05-13 -- selection-framework.el, keyboard-compat.el, and calibredb-epub-config.el all crossed the 70% threshold and got marked DONE; the remaining child tasks got their current numbers refreshed. The total moved from 65.4% to 67.2%.
Marked the [#A] "replace todo indicators with project name" enhancement DONE -- the agenda-category fix shipped in the prior commit. Also added a [#A] dashboard-icon follow-up on the Telegram task and a [#C] task to rebind org-noter insert-note onto =n=.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
I added two open-work entries:
- F9 toggle should restore single-window layout when AI-vterm was the only
window before toggle-off. Current behavior buries (correct) but
toggle-on splits.
- AI-vterm scrollback history should replace the agent buffer in place,
not split or pop a separate window.
|
| | |
|
| |
|
|
|
|
| |
Untrack .cask/, .localrepo/ (61M), emojis/ (7.2M), inbox/, todo.org,
v2mom.org, .time-zones.el. Move test-reporter-spec.org to docs/ (already
gitignored). Reduces tracked repo size significantly.
|
| |
|
|
|
|
|
|
|
|
| |
- Replace use-package gptel-magit hook with autoloads via
with-eval-after-load 'magit (loads gptel only on key press)
- Move org header defuns above use-package to fix load order
- Set gptel-include-reasoning to "*AI-Reasoning*" buffer
- Rebind rewrite to C-; a r, clear context to C-; a c
- Add test-ai-config-gptel-magit-lazy-loading.el (8 tests)
- Mark all ai-config cleanup items DONE in todo.org
|
| |
|
|
|
|
|
|
|
| |
- Move cj/gptel--fresh-org-prefix, cj/gptel--refresh-org-prefix,
cj/gptel-backend-and-model, cj/gptel-insert-model-heading out of
use-package :config to top level (fixes byte-compile warnings)
- Set gptel-include-reasoning to "*AI-Reasoning*" buffer
- Rebind rewrite to C-; a r, clear context to C-; a c
- Update todo.org with completed cleanup items
|
| |
|
|
|
|
|
|
| |
- Escape single quote in cj/ensure-gptel-backends docstring
- Wrap cj/gptel--available-backends docstring to 80 chars
- Add missing docstring to cj/gptel--model-to-string
- Rename cj/gptel--model->string to cj/gptel--model-to-string
- Mark stale model list task as DONE in todo.org
|
| |
|
|
|
|
|
|
| |
Update Anthropic model list to current: claude-opus-4-6, claude-sonnet-4-6,
claude-haiku-4-5-20251001. Fix gptel--system-message not picking up the
custom default.org directive (defvar set at load time before gptel-prompts
replaces the default entry). Add cleanup tasks for ai-config, calibredb,
and slack reaction workflow to todo.org.
|
| |
|
|
|
|
| |
Notifications silently failed: slack-room-im-p (nonexistent) replaced
with slack-im-p; slack-message-to-string replaced with slack-message-body.
Mark-as-read bound to nonexistent function; added cj/slack-mark-read-and-bury.
|
| |
|
|
|
| |
Update load-path, GitHub URL, and all project/package name
references to reflect the chime.el → Chime rename.
|
| |
|
|
|
| |
restclient.el + restclient-jq integration with SkyFi API templates,
tutorial file, auto key injection from authinfo, 17 ERT tests.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
- Move all org-noter bindings to C-; n prefix with which-key labels
- Remove F6 global binding, add i in pdf-view-mode for insert-note-dwim
- Auto-detect split direction from frame aspect ratio (threshold 1.4)
- Add background highlight on notes window focus (matches music-config)
- Fix session start to use find-file-noselect (keeps PDF visible)
- Fix split fraction (70/30 doc/notes)
- Replace hardcoded path with roam-dir from user-constants
- Update commentary to reflect new workflow
|
| |
|
|
|
| |
Remove eww-config (interactive wrappers, eww-mode state dependent).
All modules now tested or evaluated and removed as untestable.
|
| |
|
|
|
| |
notification-package → notification-sound in cj/tmr-reset-sound-to-default.
Also remove 10 untestable modules from ERT checklist [13/14].
|
| |
|
|
|
|
|
| |
- testutil-org.el: shared dynamic timestamp helpers (days-ago, days-ahead, today)
- org-agenda-config: 31 tests across 2 files (skip functions + add-files)
- org-refile-config: 7 tests for ensure-org-mode validation
- Remove prog-shell from checklist (fully covered by existing 9 tests)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New test coverage (86 tests across 7 files):
- custom-case: 43 tests (title-case-region, upcase-dwim, downcase-dwim)
- custom-datetime: 10 tests (all insert methods with mocked time)
- config-utilities: 11 tests (format-build-time type branching)
- org-capture-config: 22 tests (date-prefix + event-content)
Production bugs found and fixed:
- custom-case: title-case-region crashes on whitespace/punctuation-only input
(char-after returns nil when no word chars found)
- org-capture-config: browser branch missing empty-string guard on :initial
plist value, producing stray newline in capture output
- mousetrap-mode: keymap never registered in minor-mode-map-alist, so mode
was silently not blocking any mouse events. Now pushes/removes on toggle.
Additional fixes:
- local-repository: fix cons cell syntax bug in localrepo-initialize
(was calling vars as functions instead of using cons)
- dupre-theme tests: update rainbow-delimiter color expectations
- mousetrap tests: update dashboard profile (primary-click → scroll+primary)
- music completion test: bind completion-ignore-case to prevent pollution
- Delete redundant interactive recording test (duplicate of ERT version)
Refactoring:
- org-capture-config: extract cj/org-capture--date-prefix pure function
from cj/org-capture-format-event-headline for testability
Test checklist: todo.org updated to [11/25], removed untestable modules
|
| |
|
|
|
|
|
|
|
|
| |
Categorize all open tasks under: Org Mode, Presentations, Mail,
Media & Recording, UI/Keybindings/Completion, Testing & CI,
Code Architecture & Performance, File Management & Shell,
Authentication & Security, Metrics & Process.
Check off 7/31 modules with strong existing test coverage in the
ERT test tracking task.
|
| |
|
|
|
|
|
|
| |
Decouple task tracking from V2MOM strategic framework. Archive full
V2MOM history to v2mom.org, replace todo.org with flat task list under
Emacs Open Work / Emacs Resolved headings. Merge duplicate tasks
(org-noter, buttercup, localrepo, lorem-optimum). 29 open tasks, no
method grouping.
|
| |
|
|
|
|
|
| |
Replaced pandoc-based reveal.js export with native ox-reveal integration.
New org-reveal-config.el module provides offline, self-contained HTML export
with keybindings under C-; p. Includes setup script for reveal.js 5.1.0
and 34 ERT tests covering header template and title-to-filename helpers.
|
| |
|
|
|
|
|
| |
Add 67 tests across 6 new test files for modeline and hugo modules.
Refactor hugo-config: extract post-file-path and post-template helpers
from interactive new-post function for testability. Update todo.org
with test audit (31 modules), priority adjustments, and task cleanup.
|
| |
|
|
|
| |
Document attempted fixes and resources for future investigation
of question marks appearing instead of file dates in remote directories.
|
| |
|
|
|
| |
Promoted org-capture perf to [#A] (daily bottleneck). Demoted
ERT tests to [#B], and 5 non-urgent items to [#C].
|
| |
|
|
|
|
|
|
|
|
| |
9 tests covering:
- Normal: bash/python shebangs, already executable
- Boundary: no shebang, empty file, shebang on line 2, hash without !
- Edge: no buffer file, shebang with space
Closes TODO item for make-script-executable tests.
Also closes already-done ANSI codes TODO.
|
| |
|
|
|
| |
- Ignore .stignore (Syncthing config)
- Add TODO [#C] for terminal GPG pinentry work (branch: terminal-pinentry)
|
| |
|
|
|
|
|
|
| |
- Create terminal-compat.el for arrow key escape sequences
- Fix M-uppercase keybindings (M-O → M-S-o, etc.) that conflicted
with terminal escape sequences ESC O A/B/C/D
- Add GUI-only guards for emojify and icon rendering
- 18 keybindings updated across 13 modules with override comments
|
| |
|
|
|
|
| |
Added session notes for 2025-11-24 DWIM shell command work.
Added detailed TODO for org-noter workflow continuation with known issues and testing requirements.
Added TODO for dwim-shell-command status dashboard with implementation approaches.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fix dwim-shell-commands-menu keybinding in dirvish/dired
- Remove :after (dired dirvish) which prevented package loading
- Add :demand t to load package immediately at startup
- Move keybindings inside :config block after menu function definition
- M-D now works immediately in dirvish without manual trigger
- Enhance extract-audio-from-video function
- Fix :extensions parameter (was regex string, now proper list)
- Change from copy to AAC re-encoding for codec compatibility
- Add interactive bitrate selection (64k/96k/128k/192k)
- Fixes Opus codec compatibility issues with M4A containers
- Remove conflicting keybindings
- Remove music-config p binding in dirvish (was overriding path copy)
- Clean up extraneous requires/hooks from troubleshooting
- Add TODO for dwim-shell-command status dashboard [#D priority]
|
| |
|
|
| |
Completed implementation of cj/org-appear-toggle with C-c C-a keybinding.
|
| | |
|