summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
15 hoursfeat(keyboard): add GUI key translation for M-S- bindingsHEADmainCraig Jennings
Rename terminal-compat.el to keyboard-compat.el and add GUI support. Problem: M-S-o and other Meta+Shift bindings didn't work in GUI mode. GUI Emacs receives M-O (uppercase) but bindings use M-S-o syntax. Terminal can't use M-O due to arrow key escape sequence conflicts. Solution: Use key-translation-map in GUI mode to translate M-O -> M-S-o for all 18 Meta+Shift keybindings. Terminal fixes unchanged. Also fix two test issues: - Remove expected-fail from expand-weekly test (timezone fix resolved it) - Add helpful install messages to dependency-checking tests
36 hoursfeat(calendar-sync): add timezone conversion for TZID-qualified eventsCraig Jennings
Events with TZID parameters (e.g., DTSTART;TZID=Europe/Lisbon) were displaying in the source timezone instead of local time. Added: - calendar-sync--extract-tzid: extracts TZID from property lines - calendar-sync--convert-tz-to-local: converts using date command - Modified parse-timestamp to accept optional TZID parameter - Modified parse-event to extract and pass TZID through pipeline Includes 40 new tests covering extraction, conversion, and integration.
46 hoursfix(dashboard): correct banner title centeringCraig Jennings
Override dashboard-insert-banner-title to allow manual offset adjustment. Fixes title not being centered under banner image.
46 hoursfeat(dirvish): add wallpaper setter with X11/Wayland supportCraig Jennings
cj/set-wallpaper uses feh on X11, swww on Wayland. Replaces nitrogen-based lambda with proper function.
46 hoursfeat(env): add X11 and Wayland detection functionsCraig Jennings
env-x11-p returns t when on X11 (not Wayland). env-wayland-p checks WAYLAND_DISPLAY env var, works with XWayland.
46 hoursfeat(music): add dirvish keybinding for EMMS playlistCraig Jennings
Bind + to cj/music-add-dired-selection in dirvish-mode-map.
46 hoursstyle(font): increase default height to 140Craig Jennings
Better readability at current display scaling.
3 daysfix(recording): add Wayland support using wf-recorderCraig Jennings
x11grab produces black video on Wayland. Now detects session type and uses wf-recorder for screen capture on Wayland, falling back to x11grab on X11. wf-recorder pipes H264 to ffmpeg for audio mixing.
4 daysfix(transcription): add T keybinding to dirvish-mode-mapCraig Jennings
Dirvish uses its own keymap rather than inheriting from dired-mode-map, so the transcription keybinding needs to be explicitly added.
7 dayschore(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].
7 dayschore: untrack calendar sync generated dataCraig Jennings
These files change every sync and don't belong in version control.
7 daysfeat(calendar-sync): re-enable auto-sync on startupCraig Jennings
Freeze bugs are fixed; safe to auto-sync again.
7 daysfix(calendar-sync): resolve freeze on DST transitions and large ICS filesCraig Jennings
Two bugs caused Emacs to freeze during calendar sync: 1. split-events used catastrophic regex (\(.\|\n\)*?) on multi-MB ICS data. Replaced with buffer-based search-forward (0.011s for 4.5MB). 2. add-days used midnight for date arithmetic. On DST fall-back days, adding 86400s to midnight CDT yields 11pm CST (same date), creating an infinite loop. Fixed by using noon so ±1h DST shift stays correct.
7 daysfix(org-drill): switch from local load-path to VC package installCraig Jennings
Use :vc to install org-drill from GitHub instead of :load-path to local clone. Add dupre color palette reference image.
8 daysfix(font-config): update font settings and fix env-gui-p callCraig Jennings
- Change default font to BerkeleyMono Nerd Font - Increase default height from 110 to 130 - Fix env-gui-p call (remove unused frame argument)
8 dayschore: untrack minibuffer history fileCraig Jennings
8 dayschore(theme): add color palette reference filesCraig Jennings
- show-palette.sh: terminal script displaying colors with ANSI true color - dupre-color-palette.html: visual HTML reference for all theme colors
8 daystest(theme): add comprehensive tests for dupre-themeCraig Jennings
29 ERT tests covering: - Palette existence and color format validation - Semantic color resolution (dupre-get-color) - dupre-with-colors macro binding - Theme loading and face attributes - Org-mode, diff, UI, and error/warning faces Tests skip gracefully for optional packages (vertico, rainbow-delimiters).
8 daysfeat(theme): restructure dupre-theme into modular architectureCraig Jennings
Split monolithic theme into three files following modus-themes pattern: - dupre-palette.el: 30 base colors + 28 semantic mappings - dupre-faces.el: 150+ face definitions organized by package - dupre-theme.el: thin entry point that loads palette and faces Applied 60-30-10 color design rule: - 60% neutrals (grays for comments, metadata, lower headings) - 30% signature blue (#67809c) for keywords, links, directories - 10% accents (gold for h1, green for strings, terracotta for functions)
9 daysfix(tests): fix failing tests across multiple modulesCraig Jennings
- test-org-noter: add org-id require for org-id-uuid - test-org-agenda: update to expect 4 base files (pcal added) - test-org-refile: fix lambda signatures for directory-files-recursively - test-org-sort: stub cj/custom-keymap, cj/org-map, org-dir - test-calendar-sync: mark Saturday weekday test as expected-fail (timezone issue)
9 daystest(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.
9 daysfix(ai-config): remove redundant autoload for cj/toggle-gptelCraig Jennings
9 dayschore: add .stignore to gitignore, add terminal pinentry TODOCraig Jennings
- Ignore .stignore (Syncthing config) - Add TODO [#C] for terminal GPG pinentry work (branch: terminal-pinentry)
9 daysfix(abbrev): correct broken abbreviation substitutionsCraig Jennings
- commmitting → committing (was "not") - contstruction → construction (was "carrollton") - dialate → dilate (was "to") - feelingn → feeling (was "up") - inclluding → including (was empty) - remeditation → remediation (was "schedule") - stoory → story (was "short") - valiedate → validate (was "visible") - Remove walkthrough, differentname, sunroom (valid words)
9 daysfeat(system): start server for pinentry-emacs, exclude airootfs from recentfCraig Jennings
9 daysfix(org-roam): bind dailies keys after keymap existsCraig Jennings
9 daysfix(org-refile): skip airootfs directories to avoid permission errorsCraig Jennings
9 daysfix(chrono-tools): fix trailing paren in time-zones bindingCraig Jennings
9 dayschore(Makefile): add targets alias for helpCraig Jennings
9 daysdocs: add CLAUDE.md for auto-loaded instructionsCraig Jennings
- Create CLAUDE.md at repo root with session-context update rule - Key rules summary for commits, files, wrap-up
9 daysfeat(email): add password decryption to setup scriptCraig Jennings
- Add password decryption loop to scripts/setup-email.sh - Decrypt .gpg files from assets/mail-passwords/ to ~/.config/ - Add encrypted password files (.gmailpass.gpg, .cmailpass.gpg) - Fix missing paren in text-config.el that broke config parsing - Clean up mail-config.el
10 daysfix(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
2026-01-14fix(calendar-sync): disable auto-start to prevent freezeCraig Jennings
Proton calendar download causes Emacs to freeze. Disabled auto-sync by default until root cause is investigated. Manual sync still available via C-; g s keybinding.
2026-01-13chore(data): update calendar sync state and historyCraig Jennings
Updated calendar sync state after auto-sync.
2026-01-10feat(dirvish): update shortcuts for health and homelab projectsCraig Jennings
Changed ph to phl for homelab, added phx for new health project. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09feat(dirvish): add project shortcuts and remove scratch font overrideCraig Jennings
Added dirvish quick-access shortcuts for homelab, kit, and nextjob projects. Removed 16pt font size override from scratch buffer startup hook.
2025-12-02feat(calendar-sync): multi-calendar support with property testsCraig Jennings
Added multi-URL calendar sync supporting Google and Proton calendars. Each calendar syncs to separate file with per-calendar state tracking. Added 13 property-based tests for RRULE expansion. Total: 150 tests passing.
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-24refactor(keybindings): reorganize time-zones and kill-buffer-and-window bindingsCraig Jennings
Move time-zones from C-x c to M-C for easier access. Move cj/kill-buffer-and-window from M-C to C-; b k to group with other buffer operations. Updated documentation and which-key labels. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21feat(org-noter): implement custom org-noter workflowCraig Jennings
Implemented custom org-noter workflow with F6 keybinding: - Creates notes files as org-roam nodes in org-roam-directory - Title prompt with pre-slugified default, notes-on-{slug}.org format - F6 toggles notes window visibility when session active - Preserves PDF fit setting on toggle - Deferred org-roam integration to prevent PDF open hang Also fixed: quick-sdcv quit binding, calendar-sync sentinel buffer error Added 30 ERT tests for title-to-slug and template generation functions
2025-11-21chore(weather): update location listCraig Jennings
- Add Huntington Beach, CA - Reorder locations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21fix(org-noter): remove duplicate org-roam integration callCraig Jennings
- Removed duplicate org-noter-enable-org-roam-integration call - Fixed indentation in when block for pdftools integration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21fix: add quick-sdcv quit binding and fix calendar-sync sentinelCraig Jennings
- Add 'q' keybinding in quick-sdcv-mode to quit-window for easier dictionary dismissal while reading epubs - Fix "Selecting deleted buffer" error in calendar-sync by checking buffer-live-p before accessing process buffer in sentinel 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18session: Update calendar sync state and command historyCraig Jennings
- Updated gcal.org with 377 events from successful RRULE expansion - Updated sync state with latest sync timestamp - Updated command history 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18feat(dirvish): Add project clipper shortcut (pc)Craig Jennings
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18feat(calendar-sync): Add RRULE support and refactor expansion functionsCraig Jennings
Implements complete recurring event (RRULE) expansion for Google Calendar with rolling window approach and comprehensive test coverage. Features: - RRULE expansion for DAILY, WEEKLY, MONTHLY, YEARLY frequencies - Support for INTERVAL, BYDAY, UNTIL, and COUNT parameters - Rolling window: -3 months to +12 months from current date - Fixed COUNT parameter bug (events no longer appear beyond their limit) - Fixed TZID parameter parsing (supports timezone-specific timestamps) - Replaced debug messages with cj/log-silently Refactoring: - Extracted helper functions to eliminate code duplication: - calendar-sync--date-to-time: Date to time conversion - calendar-sync--before-date-p: Date comparison - calendar-sync--create-occurrence: Event occurrence creation - Refactored all expansion functions to use helper functions - Reduced code duplication across daily/weekly/monthly/yearly expansion Testing: - 68 tests total across 5 test files - Unit tests for RRULE parsing, property extraction, weekly expansion - Integration tests for complete RRULE workflow - Tests for helper functions validating refactored code - All tests passing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17feat: add org keymap under C-; O with cache clear bindingCraig Jennings
Created general org operations keymap at C-; O separate from specialized org-table and org-drill keymaps. Added C-; O c binding for clearing org-element cache to fix org-todo state change errors.
2025-11-17fix: increase calendar-sync curl timeout from 10 to 30 secondsCraig Jennings
10-second timeout was too aggressive for slower networks or delayed Google servers. Increased to 30 seconds to prevent timeout errors while still preventing indefinite hangs.
2025-11-17session: update command historyCraig Jennings