summaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org84
1 files changed, 77 insertions, 7 deletions
diff --git a/todo.org b/todo.org
index 126dc62f..8c7d51b7 100644
--- a/todo.org
+++ b/todo.org
@@ -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.
@@ -295,13 +341,17 @@ CLOSED: [2025-11-03 Sun]
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.
@@ -311,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]
@@ -333,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)
@@ -381,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