summaryrefslogtreecommitdiff
path: root/init.el
AgeCommit message (Collapse)Author
10 daysfeat(calendar-sync): multi-calendar support with property testsHEADmainCraig 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-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-16feat(calendar-sync): Add automatic timezone detection and chronological sortingCraig Jennings
Implemented calendar-sync.el as a complete replacement for org-gcal, featuring: **Core Functionality:** - One-way sync from Google Calendar to Org (via .ics URL) - UTC to local timezone conversion for all event timestamps - Chronological event sorting (past → present → future) - Non-blocking sync using curl (works reliably in daemon mode) **Automatic Timezone Detection:** - Detects timezone changes when traveling between timezones - Tracks timezone offset in seconds (-21600 for CST, -28800 for PST, etc.) - Triggers automatic re-sync when timezone changes detected - Shows informative messages: "Timezone change detected (UTC-6 → UTC-8)" **State Persistence:** - Saves sync state to ~/.emacs.d/data/calendar-sync-state.el - Persists timezone and last sync time across Emacs sessions - Enables detection even after closing Emacs before traveling **User Features:** - Interactive commands: calendar-sync-now, calendar-sync-start/stop - Keybindings: C-; g s (sync), C-; g a (start auto-sync), C-; g x (stop) - Optional auto-sync every 15 minutes (disabled by default) - Clear status messages for all operations **Code Quality:** - Comprehensive test coverage: 51 ERT tests (100% passing) - Refactored UTC conversion into separate function - Clean separation of concerns (parsing, conversion, formatting, sorting) - Well-documented with timezone behavior guide and changelog **Migration:** - Removed org-gcal-config.el (archived in modules/archived/) - Updated init.el to use calendar-sync - Moved gcal.org to .emacs.d/data/ for machine-independent syncing - Removed org-gcal appointment capture template Files modified: modules/calendar-sync.el:442, tests/test-calendar-sync.el:577 Files created: data/calendar-sync-state.el, tests/testutil-calendar-sync.el Documentation: docs/calendar-sync-timezones.md, docs/calendar-sync-changelog.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14fix(ui): Fix cursor color updates with post-command-hookCraig Jennings
The cursor color was not updating correctly when switching buffers or modifying files. The original implementation used window-buffer-change and other specific hooks, but these were insufficient and internal buffers were interfering with cursor color updates. Root cause: - Cursor color is global (one cursor for all of Emacs) - Previous hooks fired in internal buffer contexts (*Echo Area*, *temp*) - This caused cursor to be set to white (unmodified) even when in read-only buffers like dashboard Solution: - Use post-command-hook which runs after every command in current buffer - Ignore internal buffers (names starting with space) - Cache optimization prevents redundant set-cursor-color calls Behavior now: - Dashboard (read-only): Red cursor - Unmodified file: White cursor - Modified file: Green cursor - After save: White cursor Tests: - Added 9 integration tests in test-ui-cursor-color-integration.el - Tests verify hook installation, buffer switching, modification tracking - All 27 tests passing (18 unit + 9 integration) Integration tests catch issues that unit tests miss: - Unit tests verified state detection logic (✓) - Integration tests verify hooks fire at right times (✓ now) - Integration tests verify real buffer switching behavior (✓ now) Cleanup: - Removed debug code from init.el - Removed debug-cursor-color.el temporary file 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09feat:system: Add system utility library with executable checkCraig Jennings
Introduce a new `system-lib.el` module providing low-level system utility functions, including function `cj/executable-exists-p` to check for the availability of programs in PATH. Integrate this library in `init.el`. test(system): Add unit tests for executable check function Create comprehensive unit tests for `cj/executable-exists-p` in `system-lib.el`, ensuring coverage of normal, boundary and error scenarios.
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-10-31init:doc:correcting comment on video captureCraig Jennings
2025-10-27maint:vc install org-msg, disable debugging on org-gcalCraig Jennings
2025-10-27refactor: Rename custom-file-buffer to custom-buffer-fileCraig Jennings
Renamed the module 'custom-file-buffer' to 'custom-buffer-file' to ensure consistency across the codebase. This change affects module imports and test files. Additionally, new module 'system-commands.el' has been created to handle system power and session management commands, removing these functionalities from 'wip.el'.
2025-10-27chore:init.el: remove commented import for show-kill-ringCraig Jennings
Clean up the code by removing an unnecessary commented-out import line for show-kill-ring in the initialization file.
2025-10-27chore(init): remove test status comments from require statementsCraig Jennings
Removed comments indicating test status for required modules to clean up and simplify the init.el file.
2025-10-27feat:browser-config: Integrate browser configuration and add testsCraig Jennings
- Move `browser-config` from 'Modules In Test' to active modules - Refactor browser handling functions for better error handling: - Introduce `cj/--do-apply-browser-choice` and - `cj/--do-choose-browser` Return status symbols for success and - error cases Add comprehensive unit tests in - `tests/test-browser-config.el` Focus on internal `cj/--do-*` - functions and file I/O using temp files Validate return values and - ensure isolated tests with setup/teardown functions Ensure - consistent handling of browser configurations and improve - initialization logic
2025-10-27feat:jumper: Integrate and enhance 'jumper' module with testsCraig Jennings
Enable 'jumper' module by uncommenting its require statement in init.el. Enhance 'jumper' by adding detailed documentation, refactoring logic into internal functions, and updating keybinding setup for better usability. Integrate 'which-key' for improved keybinding assistance. Add comprehensive unit tests for 'jumper' functionalities to ensure reliability.
2025-10-26feat:text-generation: improve and rename lorem generatorCraig Jennings
Rename `lorem-generator.el` to `lorem-optimum.el` for fun. Enhance text tokenization, Markov chain learning, and text generation functions. Introduce new configuration variables for training files and improve efficiency with vectorized access. Add comprehensive benchmarks and unit tests under `tests/`. This improves performance and lays groundwork for further extensions.
2025-10-26chore: Remove redundant autoload directives from modulesCraig Jennings
Remove unnecessary autoload directives from various functions across multiple modules, cleaning up the codebase and improving readability. These directives were redundant and not needed for the current project setup.
2025-10-26chore:init.el: update comments and modules loading statusCraig Jennings
Refined comments to note completion of module tests. Removed outdated function and disabled a module. Adjusted 'org-roam-config' for test addition.
2025-10-26chore:init:change marker identifying test progressionCraig Jennings
2025-10-25feat:erc: Enable IRC client in dashboard and update keybindingsCraig Jennings
Uncommented ERC client initialization in `init.el`. Replaced "cj/erc-start-or-switch" with "cj/erc-switch-to-buffer-with-completion" in dashboard. Altered keybindings to use "C-; E" instead of "C-c e" for ERC commands. Defined a new keymap "cj/erc-keymap" for better command organization. Removed deprecated `locate-library` checks and `cj/erc-command-map`. Refined code layout for clarity.
2025-10-25chore:init: Remove obsolete eradio-config require statementCraig Jennings
The eradio-config dependency has been removed from the init file, potentially because it is no longer needed or has been deprecated.
2025-10-23feat:browser: Add browser configuration moduleCraig Jennings
Introduce `browser-config.el` to handle browser selection and configuration within Emacs. This module discovers available browsers, allows user selection through `M-x cj/choose-browser`, and persists the choice while supporting all link types.
2025-10-23chore:init: remove commented-out prog-lsp require lineCraig Jennings
Clean up init.el by removing the unnecessary commented require statement for prog-lsp.
2025-10-23style(init.el): Update module requirements and commentsCraig Jennings
Reorganize and comment out certain module requirements for clarity. Include comments to indicate test progress and modules in development.
2025-10-20maint: gptel: fetch_page: needs major work so disabling for nowCraig Jennings
2025-10-15add quick video capture to initCraig Jennings
2025-10-12maint: remaining custom functions grouped into separate modulesCraig Jennings
2025-10-12maint: assemble file and buffer operations into single moduleCraig Jennings
2025-10-12feat: mousetrap-mode: move mousetrap-mode from wip into moduleCraig Jennings
2025-10-12changing repositoriesCraig Jennings