summaryrefslogtreecommitdiff
path: root/todo.org
AgeCommit message (Collapse)Author
3 daysfeat(restclient): add REST API client for interactive API explorationCraig Jennings
restclient.el + restclient-jq integration with SkyFi API templates, tutorial file, auto key injection from authinfo, 17 ERT tests.
6 dayschore: close completed tasks in todo (yasnippet, ERT checklist)Craig Jennings
6 daysfeat(org-noter): overhaul keybindings, dynamic split, background highlightCraig Jennings
- 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
6 dayschore: complete ERT test checklist [13/13]Craig Jennings
Remove eww-config (interactive wrappers, eww-mode state dependent). All modules now tested or evaluated and removed as untestable.
6 daysfix(chrono-tools): correct undefined variable in timer reset messageCraig Jennings
notification-package → notification-sound in cj/tmr-reset-sound-to-default. Also remove 10 untestable modules from ERT checklist [13/14].
6 daystest: add 38 tests for org-agenda-config and org-refile-configCraig Jennings
- 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)
6 daystest: add 86 new tests, fix 3 production bugs, fix 8 stale testsCraig Jennings
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
6 dayschore(todo): reorganize tasks by functional area, audit test coverageCraig Jennings
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.
7 daysrefactor(tasks): migrate todo.org to Open Work / Resolved formatCraig Jennings
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.
8 daysfeat(reveal): add org-reveal presentation workflow with ERT testsCraig Jennings
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.
8 daystest: add ERT coverage for modeline-config and hugo-configCraig Jennings
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.
2026-02-05chore(todo): add TRAMP/dirvish timestamp investigation taskCraig Jennings
Document attempted fixes and resources for future investigation of question marks appearing instead of file dates in remote directories.
2026-01-27chore(todo): adjust task priorities based on V2MOM alignmentCraig Jennings
Promoted org-capture perf to [#A] (daily bottleneck). Demoted ERT tests to [#B], and 5 non-urgent items to [#C].
2026-01-24test(prog-shell): add tests for cj/make-script-executableCraig Jennings
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.
2026-01-24chore: add .stignore to gitignore, add terminal pinentry TODOCraig Jennings
- Ignore .stignore (Syncthing config) - Add TODO [#C] for terminal GPG pinentry work (branch: terminal-pinentry)
2026-01-23fix(terminal): add console/mosh compatibilityCraig Jennings
- 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
2025-11-24session: Add session notes and org-noter TODOCraig Jennings
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.
2025-11-24feat(dwim-shell): fix M-D menu binding and enhance audio extractionCraig Jennings
- 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] 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-16chore: Mark org-appear toggle task as DONECraig Jennings
Completed implementation of cj/org-appear-toggle with C-c C-a keybinding. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-16chore: Updated tasksCraig Jennings
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14chore: updated tasksCraig Jennings
2025-11-14fix: Reapply dashboard, weather config fixes and todo updatesCraig Jennings
- dashboard-config.el: Change "Ebooks" to "Books" label - weather-config.el: Fix variable name to wttrin-favorite-location - todo.org: Add music player and mousetrap investigation tasks - history: Update command history 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14Revert "checking in modified/removed tests and other misc changes"Craig Jennings
This reverts commit 9d55ed149e100b4fb3ef6f5a79d263dcb26ce835.
2025-11-14checking in modified/removed tests and other misc changesCraig Jennings
2025-11-14feat(mousetrap): Add profile-based architecture and clickable lighterCraig Jennings
Implement comprehensive profile-based system for selective mouse event control with dynamic lighter and interactive toggling. Features: - Profile-based architecture (7 profiles: disabled, scroll-only, primary-click, scroll+primary, read-only, interactive, full) - Mode-specific configuration (dashboard, pdf-view, nov) - Dynamic keymap building based on current major mode - Clickable modeline lighter (🐭 when off, 🪤 when on) - Dynamic reconfiguration without Emacs reload - Mode inheritance support via derived-mode-p Profiles define which event categories are allowed: - primary-click: Left mouse button only - secondary-click: Middle and right buttons - drags: Drag selections - multi-clicks: Double and triple clicks - scroll: Mouse wheel/trackpad scrolling Default configuration: - dashboard-mode: primary-click (left-click only) - pdf-view-mode: full (all events) - nov-mode: full (all events) - Other modes: disabled (all events blocked) Tests: - 66 comprehensive tests across 5 test files - Unit tests for profile lookup and keymap building - Integration tests for mode switching and dynamic config - Lighter functionality and click interaction tests - All tests passing Known issue: - Dashboard-mode clicks blocked despite primary-click profile - Documented in todo.org for investigation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12perf: Merge performance branch - org-agenda cache, tests, and inbox zeroCraig Jennings
This squash merge combines 4 commits from the performance branch: ## Performance Improvements - **org-agenda cache**: Cache org-agenda file list to reduce rebuild time - Eliminates redundant file system scans on each agenda view - Added tests for cache invalidation and updates - **org-refile cache**: Optimize org-refile target building (15-20s → instant) - Cache eliminates bottleneck when capturing tasks ## Test Suite Improvements - Fixed all 18 failing tests → 0 failures (107 test files passing) - Deleted 9 orphaned test files (filesystem lib, dwim-shell-security, org-gcal-mock) - Fixed missing dependencies (cj/custom-keymap, user-constants) - Fixed duplicate test definitions and wrong variable names - Adjusted benchmark timing thresholds for environment variance - Added comprehensive tests for org-agenda cache functionality ## Documentation & Organization - **todo.org recovery**: Restored 1,176 lines lost in truncation - Recovered Methods 4, 5, 6 + Resolved + Inbox sections - Removed 3 duplicate TODO entries - **Inbox zero**: Triaged 12 inbox items → 0 items - Completed: 3 tasks marked DONE (tests, transcription) - Relocated: 4 tasks to appropriate V2MOM Methods - Deleted: 4 duplicates/vague tasks - Merged: 1 task as subtask ## Files Changed - 58 files changed, 29,316 insertions(+), 2,104 deletions(-) - Tests: All 107 test files passing - Codebase: Cleaner, better organized, fully tested 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11fix: Resolve Google Calendar password prompts via adviceCraig Jennings
Fixed oauth2-auto.el caching bug using Emacs advice system (survives updates). Root Cause: - oauth2-auto version 20250624.1919 has `or nil` on line 206 - This completely disables the internal hash-table cache - Every org-gcal sync requires decrypting oauth2-auto.plist from disk - GPG passphrase prompted every ~15 minutes (violated "Frictionless" value) The Fix (via advice): - Created cj/oauth2-auto--plstore-read-fixed with cache enabled - Applied as :override advice to oauth2-auto--plstore-read - Survives package updates (unlike direct modification) - Can be easily removed if upstream fixes the bug Changes: - modules/auth-config.el: * Added cj/oauth2-auto--plstore-read-fixed (lines 75-93) * Applied advice on package load (lines 96-98) * Added cj/clear-oauth2-auto-cache helper * Documented fix in commentary (lines 16-22) - todo.org: Mark #A priority task as DONE - docs/oauth2-auto-cache-fix.md: Detailed documentation Result: - Passphrase prompted ONCE per Emacs session (on cold start) - Subsequent org-gcal syncs use cached tokens (no prompts) - Workflow now frictionless as intended - Fix persists across package updates Upstream: - Bug acknowledged in code: "Assume cache is invalidated. FIXME" - Should report to: https://github.com/rhaps0dy/emacs-oauth2-auto - Simple fix: Remove `or nil` on line 206 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09updating tasksCraig Jennings
2025-11-08feat: Fix modeline lag and add org multi-level sort with comprehensive testsCraig Jennings
Performance improvement and new feature with full test coverage. ## Changes ### 1. Fix modeline line/column position lag (#A priority) - Replace expensive line-number-at-pos with cached %l/%c format specifiers - Enable line-number-mode explicitly for caching - Result: Instant modeline updates, zero performance overhead - Files: modules/modeline-config.el:81-83, modules/ui-config.el:53 ### 2. Implement multi-level org sorting - New function: cj/org-sort-by-todo-and-priority - Sorts by TODO status (TODO before DONE) AND priority (A→B→C→D) - Uses stable sorting: priority first, then TODO state - Gracefully handles empty sections (no error) - Bound to C-; o o (ordering → org sort) - Files: modules/org-config.el:278-299, modules/custom-ordering.el:253,267 ### 3. Comprehensive ERT test suite (12/12 passing) - Normal cases: Mixed TODO/DONE, multiple of same type, same priority - Boundary cases: Empty sections, single entries, no priorities - Error cases: Non-org-mode buffer - Test file: tests/test-org-sort-by-todo-and-priority.el ### 4. Testing improvements discovered - Disable org-mode hooks to avoid package dependencies in batch mode - org-sort-entries must be called from parent heading - Preserve priority cookie in org-get-heading (t t nil t) - Add condition-case to handle "Nothing to sort" gracefully ### 5. Minor cleanup - Comment out chime-debug setting (org-agenda-config.el:267) - Mark modeline lag task as DONE in todo.org ## Technical Details Modeline optimization: - line-number-at-pos is O(n) where n = current line - %l and %c are O(1) lookups from cached values Org sorting algorithm uses stable sort: 1. Sort by priority (A, B, C, D, unprioritized) 2. Sort by TODO status (preserves priority order within groups) Result: TODO [#A], TODO [#B], DONE [#A], DONE [#B], etc. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08fix: Resolve flyspell keybinding and mu4e sent folder sync issuesCraig Jennings
Two Method 1 quick wins shipped: 1. Fixed cj/flyspell-then-abbrev keybinding in org-mode - Autoload cookies were comments and never executed - Added explicit keybinding setup when module loads - Override org-mode's C-' binding (org-cycle-agenda-files) - Both C-' and C-c f now work in all buffers 2. Fixed mu4e sent folder not syncing (cmail account) - Root cause: mbsync aborted on Drafts errors before Sent - Changed ~/.mbsyncrc to explicit channels (like Gmail) - Synced 136 missing sent messages (May-Nov 7) - Now syncs 6 folders independently Files modified: - modules/flyspell-and-abbrev.el: Fixed keybindings (lines 235-251) - todo.org: Marked 2 tasks complete with documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07chore: Disable automatic syncs and triage inboxCraig Jennings
- Commented out mu4e-update-interval to stop email password prompts - Triaged 5 inbox items against V2MOM framework - Moved 4 items to Method 1 (frictionless improvements) - Split org keymaps task into Method 1 + someday-maybe components - Deleted unclear 'toggle org-agenda' task - Clarified org-appear toggle requirement for long links in tables - Updated Method 1 count from [8/14] to [8/18] - Added transient menu task to SOMEDAY-MAYBE - Cleared inbox for new items Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06chore: Update abbrev corrections and add flyspell TODOCraig Jennings
- Automatic abbrev_defs updates from spell corrections - Added TODO: investigate flyspell-then-abbrev keybinding loss in scratch 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06feat: Add high-priority task for Google Calendar password promptsCraig Jennings
Added comprehensive TODO to Method 1 (priority A) to fix the irritating issue where gcal-sync triggers password prompts every 15 minutes, interrupting workflow and breaking concentration. Task includes: - Current setup documentation (GPG agent, plstore, auth-source config) - Problem analysis (plstore cache, oauth2-auto token refresh) - Six investigation paths to try - File references for debugging - V2MOM alignment (violates "Frictionless" value) This is a daily irritant that needs fixing - password prompts every 15 minutes during calendar sync defeat the purpose of having 400-day GPG cache configured. Related files: - modules/auth-config.el (plstore and GPG configuration) - modules/org-gcal-config.el (org-gcal and oauth2-auto setup) - ~/.gnupg/gpg-agent.conf (GPG agent cache settings) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06feat: Add AssemblyAI transcription backend with speaker diarizationCraig Jennings
Integrated AssemblyAI as the third transcription backend alongside OpenAI API and local-whisper, now set as the default due to superior speaker diarization capabilities (up to 50 speakers). New Features: - AssemblyAI backend with automatic speaker labeling - Backend switching UI via C-; T b (completing-read interface) - Universal speech model supporting 99 languages - API key management through auth-source/authinfo.gpg Implementation: - Created scripts/assemblyai-transcribe (upload → poll → format workflow) - Updated transcription-config.el with multi-backend support - Added cj/--get-assemblyai-api-key for secure credential retrieval - Refactored process environment handling from if to pcase - Added cj/transcription-switch-backend interactive command Testing: - Created test-transcription-config--transcription-script-path.el - 5 unit tests covering all 3 backends (100% passing) - Followed quality-engineer.org guidelines (test pure functions only) - Investigated 18 test failures: documented cleanup in todo.org Files Modified: - modules/transcription-config.el - Multi-backend support and UI - scripts/assemblyai-transcribe - NEW: AssemblyAI integration script - tests/test-transcription-config--transcription-script-path.el - NEW - todo.org - Added test cleanup task (Method 3, priority C) - docs/NOTES.org - Comprehensive session notes added Successfully tested with 33KB and 4.1MB audio files (3s and 9s processing). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-05feat: Configure scratch buffer for org-mode with cursor at endCraig Jennings
- Set initial-major-mode to org-mode for *scratch* buffer - Add emacs-startup-hook to position cursor at end of buffer - Update greeting message comment syntax from ;; to # for org-mode - Re-enable debug flag reset on startup in early-init.el This makes the scratch buffer immediately ready for org-mode note-taking with cursor positioned for typing, eliminating manual mode switching and cursor movement. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04feat: Add LanguageTool integration for comprehensive grammar checkingCraig Jennings
Integrated LanguageTool as an on-demand grammar checker, replacing the previously disabled proselint checker. Changes: - Created scripts/languagetool-flycheck wrapper for flycheck integration - Converts LanguageTool JSON output to flycheck format - Includes suggestions in error messages - 30-second timeout for large files - Updated modules/flycheck-config.el: - Defined languagetool checker for text/markdown/org/gfm modes - Updated cj/flycheck-prose-on-demand to use LanguageTool - Added installation instructions (sudo pacman -S languagetool) - Improved documentation clarity - Usage: Press C-; ? in org/text/markdown files - Enables flycheck with LanguageTool - Shows errors in *Flycheck errors* buffer - On-demand only (no performance impact) - Updated docs/NOTES.org: - Added best practice: Test Emacs launch after non-trivial changes - Example: emacs --eval "(kill-emacs)" - Catches startup errors before committing - Disabled weather debug mode (wttrin-debug nil) - Marked todo.org grammar checker task as DONE LanguageTool catches real grammar issues (subject-verb agreement, tense, punctuation, common mistakes) that proselint missed. Installation: LanguageTool 6.6 (222MB) from Arch repos Dependencies: Python 3 (for wrapper script) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03chore: Update mood-line task in todo.org with actual implementation detailsCraig Jennings
Updated DONE task to reflect that we built a custom modeline instead of just switching to mood-line. Added comprehensive details about features, architecture, and bug fixes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03feat: Add org-appear and enable org emphasis renderingCraig Jennings
Changes: - Added org-appear package to show emphasis markers only when editing - Changed org-fontify-emphasized-text from nil to t to render bold/italic - Updated comment for org-hide-emphasis-markers to reference org-appear - org-appear reveals markers (* / _) only when cursor is on them - Also shows link markup and sub/superscripts when editing - Updated todo.org to mark org-appear task as DONE (Method 2: 3/5) Result: Cleaner org-mode editing experience with visual emphasis while maintaining clean appearance when not editing. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03test: Add unit tests for music config and org-contacts functionsCraig Jennings
Add comprehensive unit tests for various Emacs Lisp functions, covering M3U file handling, music file validation, and contact capture template finalization: - Tests for appending tracks to M3U files Tests for recursive music - collection Tests for completion table creation Tests for - extracting M3U basenames and files Tests for M3U file parsing - Tests for filename sanitization Tests for directory and file - validity checks Tests for org-contacts capture template - finalization Each test validates normal, boundary, and error conditions. These tests improve code reliability by verifying expected behavior across a range of scenarios.
2025-11-03feat: Upgrade diff-buffer-with-file to ediff and add difftastic for gitCraig Jennings
Two improvements for better diff experience: 1. **Upgraded cj/diff-buffer-with-file to use ediff** (custom-buffer-file.el) - Replaced basic unified diff with ediff-current-file - Now uses existing ediff config (horizontal split, j/k navigation) - C-; b D now launches interactive ediff instead of text diff - Simplified from 17 lines to 5 lines - Removed TODO comment about difftastic integration 2. **Added difftastic for git diffs** (vc-config.el) - Installed binary: difftastic 0.64.0 via pacman - Added difftastic.el package integrated with magit - Keybindings in magit-diff: - D → difftastic-magit-diff (dwim) - S → difftastic-magit-show - Provides structural, language-aware diffs for git changes - Better visualization of code structure changes **Result:** - Buffer vs file: Interactive ediff (can navigate, merge, revert) - Git history: Structural difftastic (language-aware visualization) - Right tool for each job Serves Method 3: "Make Fixing Emacs Frictionless" - Better diffs = easier debugging and code review Updated todo.org: Method 1 progress 7/13 (was 5/13) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03chore: Remove unused go-ts-mode-map forward declarationsCraig Jennings
Cleanup of already-fixed issue from commit 196b289. **Background:** - Bug was already fixed on Nov 2, 2025 (commit 196b289) - Original error: "void-variable go-ts-mode-map" - Fix moved keybindings from :bind clause to hook function - Keybindings now set after mode loads via cj/go-mode-keybindings **This Cleanup:** - Removed unused forward declarations (lines 34-35): - (defvar go-ts-mode-map) - (defvar go-mod-ts-mode-map) - These were artifacts from the original buggy implementation - No longer needed since keybindings use local-set-key in hook **Testing:** - ✓ File compiles cleanly without warnings - ✓ No references to these variables exist in codebase - ✓ Keybindings work correctly via hook function Updated todo.org to mark task as complete, documenting that it was already fixed and today's work was just cleanup. Serves Method 1: "Make Using Emacs Frictionless" - Quick win: ~2 minutes (just cleanup) - Reduces code clutter 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03fix: Implement missing cj/goto-git-gutter-diff-hunks functionCraig Jennings
Fixes void-function error when pressing C-; v d keybinding. **The Problem:** - Keybinding C-; v d referenced undefined function - Caused "Symbol's function definition is void" error - Prevented interactive jumping to git diff hunks **The Solution:** - Added cj/goto-git-gutter-diff-hunks to modules/vc-config.el - Uses consult-line with regex ^[+\-] to find diff markers - Enables interactive selection of any changed line in buffer - Properly documented with descriptive docstring **Function:** ```elisp (defun cj/goto-git-gutter-diff-hunks () "Jump to git-gutter diff hunks using consult. Searches for lines starting with + or - (diff markers) and allows interactive selection to jump to any changed line in the buffer." (interactive) (require 'git-gutter) (consult-line "^[+\\-]")) ``` **Testing:** - ✓ No linting issues (checkdoc clean) - ✓ Compiles cleanly (byte-compile warnings are expected deferred loads) - ✓ Function follows existing code patterns Serves Method 1: "Make Using Emacs Frictionless" - Quick win: estimated 15 min, actual 5 min - Removes error and enables useful git workflow feature Updated todo.org to mark task complete. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03refactor: Replace doom-modeline with mood-line and remove deprecated tree-sitterCraig Jennings
Method 2 improvements for cleaner, faster configuration: 1. **Replaced doom-modeline with mood-line** (modules/modeline-config.el) - Simplified from 70+ lines to ~10 lines (-40 lines net) - mood-line is lightweight, minimal, inspired by doom-modeline - Better performance with no dependencies - Keeps all essential features: buffer status, major mode, VCS, flycheck, cursor position, multiple-cursors counters 2. **Removed deprecated tree-sitter package** (modules/prog-general.el) - Deleted `(use-package tree-sitter)` - Now relies solely on Emacs 29+ built-in treesit with treesit-auto - treesit-auto continues to manage grammars automatically - No functionality lost, cleaner dependency tree Both changes serve Method 2: "Stop Problems Before They Appear" - Simpler code = fewer bugs - Fewer dependencies = less maintenance - Native features = better integration Updated todo.org to mark both tasks complete [2/5 in Method 2]. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03docs: Mark video-audio-recording tasks as complete in todo.orgCraig Jennings
Completed tasks: ✅ Fix video/audio recording module [#B] ✅ Add diagnostic command cj/recording-list-devices [#A] ✅ Add device selection UI [#A] ✅ Improve error messages [#B] ✅ Make device detection more flexible [#B] ✅ Add comprehensive test coverage [#A] Work summary: - Created 2 device selection workflows (manual + quick call setup) - Implemented smart device grouping with Bluetooth MAC normalization - Added diagnostic listing command - Built comprehensive test suite (9 files, 83 tests, 100% pass) - Refactored code for testability - Fixed all linting warnings Remaining open: - Validate recording startup [#B] - Add device testing command [#C] - Recording status display, presets, history (all [#C]) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03feat: Add device selection and diagnostics to recording moduleCraig Jennings
Add interactive device selection to fix recording with multiple audio devices. New features: - cj/recording-list-devices (C-; r d) - Show all available audio sources - cj/recording-select-devices (C-; r s) - Interactively select mic/monitor - cj/recording-parse-sources - Parse pactl output into structured data - Enhanced cj/recording-get-devices with graceful fallback to manual selection Improvements: - Works with PulseAudio and PipeWire - Supports USB devices (Jabra SPEAK 510) - Supports Bluetooth devices - Supports built-in laptop audio - Shows device state (RUNNING, SUSPENDED) during selection - Better error messages with actionable suggestions - Device selection persists across recordings Fixes recording breakage when plugging in external audio interfaces. Addresses Method 1 (Make Using Emacs Frictionless) from V2MOM. Closes #[#B] Fix video/audio recording module sub-tasks: - Add diagnostic command - Add device selection UI - Improve error messages - Make device detection more flexible 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03fix: Swap print keybinding and add confirmation promptCraig Jennings
Print operations are now safer and more intuitive: Keybinding changes: - C-; b p → copy file path (safe, common action) - C-; b P → print to PostScript (dramatic, requires shift) Print function improvements: - Add y-or-n-p confirmation before printing - C-u prefix skips confirmation and enables color printing - Prevents accidental waste of paper/toner Serves V2MOM Values: - Intuitive: Dramatic actions require shift key - Intuitive: Prevents muscle memory mistakes - Simple: Reliability through confirmation Also updated docs/NOTES.org with Makefile availability note. Closes inbox items from emacs-inbox-zero session (2025-11-03). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01chore: Update todo.org with new inbox items and music-config improvementsCraig Jennings
todo.org updates: - Added 2 new inbox items about printing keybindings - Reordered Method 1 tasks by priority - Removed blank lines (linter formatting) music-config.el improvements: - Added validation checks to cj/music--valid-file-p and cj/music--valid-directory-p - Fixed regex escaping in cj/music--m3u-file-tracks - Added new cj/music--append-track-to-m3u-file function for testing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01feat: Add session workflow framework and complete first inbox zeroCraig Jennings
Created emacs-inbox-zero session definition and validated it by executing the workflow. Processed 5 inbox items to zero in 10 minutes. Session Framework: - Created docs/sessions/ directory for session definitions - Added create-session.org (meta-workflow for creating sessions) - Added emacs-inbox-zero.org (weekly inbox processing workflow) - Updated NOTES.org with terminology and session tracking Inbox Zero Results: - Deleted 1 duplicate task (chime fix) - Moved 2 to Method 1: org-capture performance [#B], EMMS keybindings [#D] - Moved 2 to someday-maybe: dashboard icons, persistence files - Recognized perfectionism pattern (V2MOM Obstacle #4) Learnings captured in living documents: - Save Q&A answers incrementally during session creation - Capture useful context during triage (impact estimates, theories) - Validation by execution catches what theory misses Files reorganized: - Renamed docs files to UPPERCASE for consistency - Removed SESSION-HANDOFF-ACTIVE-PROJECT.org (replaced by NOTES.org) V2MOM Metrics fulfilled: - Weekly triage consistency: ✓ (2025-11-01) - Active todo count: 29 items (working toward < 20) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01admin: adding to inboxCraig Jennings
2025-11-01admin: rework todo to focus on the v2momCraig Jennings
- wrote a v2mom about what the config should deliver - focused the inbox only on tasks related to the v2mom - moved all other tasks to someday-maybe