diff options
Diffstat (limited to 'todo.org')
| -rw-r--r-- | todo.org | 153 |
1 files changed, 134 insertions, 19 deletions
@@ -17,7 +17,7 @@ If the answer is "no" to all five → DON'T ADD IT. V2MOM is located at: [[file:docs/emacs-config-v2mom.org][emacs-config-v2mom.org]] Research/ideas that don't serve vision: [[file:docs/someday-maybe.org][someday-maybe.org]] -* Method 1: Make Using Emacs Frictionless [7/13] +* Method 1: Make Using Emacs Frictionless [8/14] ** DONE [#A] Remove network check from startup (saves 1+ seconds) CLOSED: [2025-10-31 Fri] @@ -194,6 +194,52 @@ Generate transcript (once transcription workflow exists). Daily workflow improvement. +** TODO [#A] Fix Google Calendar password prompts every 15 minutes + +IRRITANT: gcal-sync triggers password prompts approximately every 15 minutes, +interrupting workflow and breaking focus. This defeats the purpose of having +passphrase caching configured. + +**Current Setup:** +- GPG agent configured with 400-day cache (gpg-agent.conf): + - default-cache-ttl 34560000 + - max-cache-ttl 34560000 + - allow-loopback-pinentry enabled +- Plstore caching enabled (auth-config.el:54): + - plstore-cache-passphrase-for-symmetric-encryption t + - plstore-encrypt-to nil (symmetric encryption) +- Auth-source cache: 24 hours (auth-config.el:31) +- Auto-sync interval: 30 minutes (org-gcal-config.el:50) + +**Problem:** +Despite proper GPG agent caching, oauth2-auto.plist prompts for passphrase +every ~15 minutes during gcal-sync operations. This suggests: +1. plstore may not be using GPG agent cache properly for symmetric encryption +2. oauth2-auto token refresh might be bypassing cache +3. EPinentry mode may need explicit configuration (currently commented out) + +**Goal:** +Passphrase should be entered ONCE per Emacs session, then cached until Emacs +closes. No interruptions during normal work. + +**Investigation Paths:** +1. Check if oauth2-auto respects plstore passphrase caching +2. Investigate plstore symmetric encryption cache behavior with GPG agent +3. Test enabling epa-pinentry-mode 'loopback (auth-config.el:42) +4. Check oauth2-auto token refresh cycle vs password prompt timing +5. Consider oauth2-auto configuration options for token persistence +6. Review org-gcal or oauth2-auto issues for similar problems + +**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) +- oauth2-auto.plist (encrypted OAuth tokens - prompts every access?) + +**Related:** +This violates the "Frictionless" value - interruptions every 15 minutes during +calendar sync breaks concentration and workflow momentum. + ** TODO [#B] Optimize org-agenda performance using built-in profiler THE BOTTLENECK. Currently 30+ seconds, target < 5 seconds. @@ -204,9 +250,26 @@ Use M-x profiler-start before Method 3 debug-profiling.el is built. 15-20 seconds every time capturing a task (12+ times/day). Major daily bottleneck - minutes lost waiting, plus context switching cost. -** TODO [#C] Fix grammar checker performance (currently disabled) +** DONE [#C] Fix grammar checker performance (currently disabled) +CLOSED: [2025-11-04 Mon] + +✅ **Installed and configured LanguageTool for comprehensive grammar checking** + +Replaced disabled grammar checker with on-demand LanguageTool integration: +- Installed LanguageTool 6.6-2 from Arch repos (222MB) +- Created wrapper script: scripts/languagetool-flycheck (Python 3) +- Integrated with flycheck for on-demand checking via C-; ? +- Removed proselint (redundant - LanguageTool catches more) +- No performance impact: only runs when explicitly invoked +- Installation instructions added to modules/flycheck-config.el commentary + +LanguageTool catches: +- Real grammar errors (subject-verb agreement, tense, etc.) +- Missing punctuation (commas, periods) +- Common mistakes (could of → could have) +- Style issues (redundant phrases, wordiness) -Currently disabled because it breaks flow when writing. +Workflow: Open org/text/markdown file → press C-; ? → see errors in *Flycheck errors* buffer ** TODO [#D] Fix EMMS keybinding inconsistency with other buffers @@ -214,7 +277,7 @@ EMMS keybindings conflict with standard buffer keybindings, causing mistypes. Results in accidental destructive actions (clearing buffers), requires undo + context switch. Violates Intuitive value - muscle memory should help, not hurt. -* Method 2: Stop Problems Before They Appear [2/5] +* Method 2: Stop Problems Before They Appear [3/5] ** TODO [#B] Migrate from Company to Corfu :PROPERTIES: @@ -223,15 +286,37 @@ Violates Intuitive value - muscle memory should help, not hurt. Complete config already exists in someday-maybe.org. Just needs to be executed. -** DONE [#C] Switch to mood-line +** DONE [#C] Switch to mood-line (actually: built custom modeline) CLOSED: [2025-11-03 Sun] -✅ Replaced doom-modeline with mood-line in modules/modeline-config.el -- Simplified from 70+ lines to ~10 lines of configuration -- mood-line is lightweight, minimal, inspired by doom-modeline -- Better performance with no dependencies -- Features: buffer status, major mode, VCS, flycheck, cursor position -- Net reduction: -40 lines of configuration code +✅ **Built custom modeline (better than mood-line)** + +Went beyond mood-line and created a fully custom modeline using only built-in +Emacs functionality to avoid native-compilation issues. Features: + +**Architecture:** +- Named segment system using defvar-local (easy to reorder) +- Emacs 30 built-in right-alignment (mode-line-format-right-align) +- All segments marked as risky-local-variable for proper evaluation + +**Interactive Features:** +- Color-coded buffer names (green=writeable, red=read-only, gold=overwrite) +- VC branch with git symbol () and state-based coloring +- Mouse click handlers: buffer name (prev/next), branch (vc-diff), mode (describe-mode) +- Help-echo tooltips on all segments +- String truncation for narrow windows (< 100 chars wide) +- Active-window-only display for branch and misc-info (less clutter) + +**Layout:** +- Left: Major mode, buffer name, position (L:# C:#) +- Right: Git branch, chime notifications + +**Bug Fixes:** +- Disabled async native compilation (prevented "Selecting deleted buffer" errors) +- Fixed difftastic loading (:demand → :defer) +- Abstracted buffer status colors to user-constants.el + +Inspired by Prot's modeline design. See commit c0c4b17. ** DONE [#C] Remove deprecated tree-sitter package (rely on treesit-auto) CLOSED: [2025-11-03 Sun] @@ -242,21 +327,31 @@ CLOSED: [2025-11-03 Sun] - treesit-auto continues to manage tree-sitter grammars automatically - No functionality lost, cleaner dependency tree -** TODO [#C] Add org-appear (show emphasis markers only when point is on them) +** DONE [#C] Add org-appear (show emphasis markers only when point is on them) +CLOSED: [2025-11-03 Sun] -Cleaner org files, supports Intuitive value. +✅ Added org-appear package to modules/org-config.el +- Shows emphasis markers (* / _) only when cursor is on them +- Also shows link markup and sub/superscripts when editing +- Changed org-fontify-emphasized-text from nil to t (line 75) +- Updated comment on line 71 to reference org-appear +- Cleaner editing experience while maintaining visual clarity ** TODO [#C] Integrate prescient with Corfu (smart sorting) Already using prescient with vertico. Extend to Corfu after migration. -* Method 3: Make *Fixing* Emacs Frictionless [0/5] +* Method 3: Make *Fixing* Emacs Frictionless [1/4] ** TODO [#B] Build debug-profiling.el module Reusable profiling infrastructure for any future performance work. -** TODO [#C] Document localrepo limitations (treesitter grammars not included) +** TODO [#C] Build localrepo out (package snapshot system) + +Repeatable installs and safe rollbacks. + +*** TODO [#C] Document localrepo limitations (treesitter grammars not included) .localrepo only contains packages from package.el archives. Treesitter grammars are downloaded separately by treesit-auto on first use. @@ -266,10 +361,6 @@ For true offline reproducibility, need to cache treesitter grammars separately. Complex workflow testing capability. -** TODO [#C] Build localrepo out (package snapshot system) - -Repeatable installs and safe rollbacks. - ** DONE [#C] Integrate difftastic (structural diffs) CLOSED: [2025-11-03 Sun] @@ -288,6 +379,29 @@ CLOSED: [2025-11-03 Sun] Result: Better diffs everywhere - ediff for interactive buffer comparison, difftastic for understanding git changes. +** TODO [#C] Remove orphaned dwim-shell-security tests and unused production code + +Why: 12 tests in test-dwim-shell-security.el fail because the functions they test +are inside a use-package :config block (dwim-shell-config.el:101-108) that only +loads when the dwim-shell-command package is available. During batch testing, +the package isn't loaded, so functions are never defined (void-function errors). + +These are PDF password protection and ZIP encryption functions that likely have +never been used in practice - they're placeholder code from initial setup. + +What to delete: +1. Test file: tests/test-dwim-shell-security.el (12 failing tests) +2. Production functions in modules/dwim-shell-config.el (lines ~302-347): + - cj/dwim-shell-commands-pdf-password-protect (lines 302-324) + - cj/dwim-shell-commands-pdf-password-unprotect (lines 326-347) + - cj/dwim-shell-commands-create-encrypted-zip (search for it) + - cj/dwim-shell-commands-remove-zip-encryption (search for it) + +After deletion: Run "make test-all" to confirm 18 failures → 6 failures +(only benchmark performance tests remain, which are environment-dependent). + +Aligns with: Reducing test failures from 18 to 6, cleaning up unused code. + * Method 4: Contribute to the Emacs Ecosystem [0/4] ** TODO [#C] Set up package-lint for elisp linting (chime, org-msg, wttrin) @@ -336,3 +450,4 @@ Review this inbox, cancel stale items, keep < 20 active. Track in calendar. Can't research next thing until current thing is implemented. * Emacs Config Inbox +** TODO cj/flyspell-then-abbrev loses keybinding in scratch org-mode buffer |
