summaryrefslogtreecommitdiff
path: root/docs/NOTES.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2025-11-05 12:40:19 -0600
committerCraig Jennings <c@cjennings.net>2025-11-05 12:40:19 -0600
commita98320429f74fca6d9440cd56ba549aa982c0f54 (patch)
tree2c7091fa68fbd1f6427bed8eeb823541180a80ce /docs/NOTES.org
parentebd439a84180b6f3258be43ac3ce3788cbe21b6d (diff)
docs: Create generic V2MOM session workflow and consolidate NOTES.org
- Created docs/sessions/create-v2mom.org with fully generic V2MOM workflow - Applicable to any project: health, finance, software, personal goals - 8-phase process with examples across multiple domains - Time estimate: 2-3 hours to create a V2MOM - Consolidated NOTES.org files (deleted root, enhanced docs/NOTES.org) - Integrated generic protocols from template - Added User Information, Session Protocols, File Preferences sections - Enhanced with Reminders Protocol and wrap-up workflow - Single comprehensive 1252-line reference for all sessions - Updated docs/EMACS-CONFIG-V2MOM.org metadata πŸ€– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'docs/NOTES.org')
-rw-r--r--docs/NOTES.org715
1 files changed, 502 insertions, 213 deletions
diff --git a/docs/NOTES.org b/docs/NOTES.org
index f04d03d0..ea3a5ca2 100644
--- a/docs/NOTES.org
+++ b/docs/NOTES.org
@@ -1,83 +1,176 @@
-#+TITLE: 🚨 ACTIVE PROJECT - READ THIS FIRST 🚨
+#+TITLE: 🚨 EMACS CONFIG - ACTIVE PROJECT NOTES 🚨
#+AUTHOR: Claude Code Session Notes
#+DATE: 2025-10-30
-* πŸ—£οΈ IMPORTANT TERMINOLOGY
+* About This File
-** "I want to do an X session with you"
+This file contains important information for Claude to remember between sessions working on Craig's Emacs configuration.
-When Craig says "I want to do an X session with you", this means:
-- **CREATE a session definition** for doing X (meta-work)
-- **NOT** "let's DO X right now" (the actual work)
+**When to read this:**
+- At the start of EVERY session
+- Before making any significant decisions
+- When unclear about project direction or user preferences
-This triggers the create-session workflow from docs/sessions/create-session.org
+**What's in this file:**
+- User information (calendar, task list, working style)
+- Session protocols (how we start, wrap up, and work together)
+- File preferences and naming conventions
+- Emacs-specific development best practices
+- Project status, goals, and history
+- Active reminders and pending decisions
+
+Claude can modify this document to make collaboration more efficient and effective.
+
+* User Information
+
+** Calendar Location
+Craig's calendar is available at: =/home/cjennings/sync/org/gcal.org=
+
+Use this to:
+- Check meeting times and schedules
+- Verify when events occurred
+- See what's upcoming
+
+** Task List Location
+Craig's main task list is available at: =/home/cjennings/sync/org/roam/inbox.org=
+
+Use this to:
+- Add tasks to Craig's task list
+- Add reminders for Craig before next session
+- See all tasks he's working on outside this project
+
+** Working Style
+
+*** General Preferences
+- Prefers detailed preparation before high-stakes meetings
+- Values practice/role-play for negotiations and learning
+- Makes decisions based on principles and timeline arguments
+- Prefers written documentation over verbal agreements
+
+*** Emacs as Primary Working Tool
+- Craig uses Emacs for EVERYTHING (most-used software by significant margin)
+- Consider Emacs packages alongside other software when recommending solutions
+- Look for ways to streamline routine work with Emacs custom code if no packages exist
+- Config breakage blocks ALL work (email, calendar, tasks, programming, reading, music)
+
+** Miscellaneous Information
+- Craig currently lives in New Orleans, LA
+- Craig's phone number: 510-316-9357
+- Maintains remote server at cjennings.net domain
+- This project is in a git repository with remote at cjennings.net
+- Also pushes to GitHub as backup remote
+
+* Session Protocols
+
+** Session Start Routine
+
+When starting a new session with Craig:
+
+1. **Read this file completely** to understand project context
+2. **Check Active Reminders section** - Remind Craig of outstanding tasks
+3. **Check Pending Decisions section** - Follow up on decisions needed
+4. **Check V2MOM Progress** - Offer to work on top method/priority task
+ - If no V2MOM exists, offer to create one using docs/sessions/create-v2mom.org
+5. **Scan docs/sessions/ directory** for available session types (see "Session Types" section below)
+
+** IMPORTANT: Reminders Protocol
+
+When starting a new session:
+- Check "Active Reminders" section below
+- Remind Craig of outstanding tasks he's asked to be reminded about
+- This ensures important follow-up actions aren't forgotten
+
+When Craig says "remind me" about something:
+1. Add it to Active Reminders section in this file
+2. If it's something he needs to DO, also add to =/home/cjennings/sync/org/roam/inbox.org= as TODO scheduled for today
+
+** Session Types: "Let's do a [session type] session"
+
+When Craig says this phrase:
+
+1. **Check for exact match** in docs/sessions/ directory
+ - If exact match found: Read that session file and guide through workflow
+ - Example: "refactor session" β†’ read docs/sessions/refactor.org
+
+2. **If no exact match but similar word exists:** Ask for clarification
+ - Example: User says "empty inbox" but we have "inbox-zero.org"
+ - Ask: "Did you mean the 'inbox zero' session, or create new 'empty inbox'?"
+
+3. **If no match at all:** Offer to create it
+ - Say: "I don't see '[session-type]' yet. Create it using create-session workflow?"
+ - If yes: Do create-session session, then use immediately (validates workflow)
+
+** "I want to do an X session with you" - DIFFERENT MEANING!
+
+⚠️ **IMPORTANT:** This phrase means something different!
+
+When Craig says "I want to do an X session with you":
+- This means: **CREATE a session definition** for doing X (meta-work)
+- This does **NOT** mean: "let's DO X right now" (the actual work)
+- Triggers the create-session workflow from docs/sessions/create-session.org
*Examples:*
- "I want to do an emacs inbox zero session" β†’ Create docs/sessions/inbox-zero.org
- "I want to do a refactor session" β†’ Create docs/sessions/refactor.org
- "I want to do a code review session" β†’ Create docs/sessions/code-review.org
-** "Wrap it up" / "Wrap this up" / "Wrap up" / "That's a wrap" / "Let's call it a wrap"
+** "What Kind of Day Has It Been?" - Summary and Journal Routine
+
+When Craig asks this:
+
+1. **Display summary** of work done and discussions
+ - Include: events, accomplishments, decisions, observations
+ - Write in Craig's voice (as if you were Craig)
+ - He'll review and approve or adjust
+
+2. **Add to Session History** below
+ - Use timestamp format: =YYYY-MM-DD Day @ HH:MM TZ= (get TZ with =date +%z=)
+ - Include summary from step 1
+ - This creates permanent record for retrospectives
-When Craig says any of these phrases (or variations), execute the wrap-up workflow:
+3. **Note:** This info can also be part of wrap-up summary
-1. **Write session notes** to docs/NOTES.org
+** "Wrap it up" / "That's a wrap" / "Let's call it a wrap" - End Session
+
+When Craig says any of these phrases (or variations), execute wrap-up workflow:
+
+1. **Write session notes** to this file (Session History section)
- Key decisions made
- Work completed
- Context needed for next session
- Any pending issues or blockers
+ - New conventions or preferences learned
+ - Critical reminders for tomorrow go in Active Reminders section
2. **Git commit and push all changes**
- Check git status and diff
- Create descriptive commit message
- - Include co-author attribution (Claude)
- - Push to ALL remotes (origin + github)
+ - Include co-author attribution: =Co-Authored-By: Claude <noreply@anthropic.com>=
+ - Push to ALL remotes (origin at cjennings.net + github)
+ - Ensure working tree is clean
+ - Confirm push succeeded
-3. **Valediction**
- - Friendly goodbye summary
+3. **Valediction** - Brief, warm goodbye
+ - Acknowledge the day's work
- What was accomplished
- What's ready for next session
- Any important reminders
+ - Keep it warm but concise
-*Slash command:* `/wrap-it-up` triggers this same workflow
+*Slash command:* =/wrap-it-up= triggers this same workflow
-* πŸ€” PENDING DECISIONS
+** πŸ”” Desktop Notifications Workflow
-** Flymake/Flycheck Modeline Integration
+**IMPORTANT: How Claude notifies Craig**
-Craig was interested in adding error/warning counts to the modeline but hasn't decided on implementation details yet.
-
-**Questions to decide:**
-
-1. **Flymake vs Flycheck?**
- - Flymake is built-in and works with LSP (eglot)
- - Flycheck requires installation but has more checker backends
-
-2. **Format preference?**
- - Just counts: `E:3 W:5`
- - With symbols: `⚠ 3 βœ– 5`
- - Clickable to show diagnostics buffer?
-
-3. **Placement?**
- - Left side near major-mode, or right side with VC branch?
-
-4. **Active window only?**
- - Like your VC branch - only show in selected window
-
-**Implementation is ready** - just need your preferences and I can add it exactly how you want it.
-
-* πŸ”” DESKTOP NOTIFICATIONS WORKFLOW
-
-**IMPORTANT: How Claude notifies you when blocked**
-
-When Claude needs your input on blocking questions, Claude will send a desktop notification via `notify-send`:
+Long-running tasks (> 1 minute) or blocking questions trigger desktop notifications via =notify-send=:
#+BEGIN_SRC bash
notify-send "Claude Code" "Question: [Your input needed]" --urgency=normal
#+END_SRC
**When notifications ARE sent:**
-- βœ… When explicitly needing your decision/input (blocking questions)
+- βœ… When explicitly needing decision/input (blocking questions)
- βœ… When multiple valid approaches exist and choice affects implementation
- βœ… When encountering errors that require user guidance
- βœ… **ONLY** when Claude cannot proceed without user input
@@ -90,12 +183,138 @@ notify-send "Claude Code" "Question: [Your input needed]" --urgency=normal
- ❌ ANY informational alerts
**Setup:**
-- Requires `dunst` or similar notification daemon
-- Works with `notify-send` command
-- Always uses `--urgency=normal` (not critical)
+- Requires =dunst= or similar notification daemon
+- Works with =notify-send= command
+- Always uses =--urgency=normal= (not critical)
**Purpose:**
-This allows you to context-switch to other work while Claude runs long tasks, and get notified ONLY when your input is truly needed to continue. You check back when convenient for status updates.
+Allows Craig to context-switch to other work while Claude runs long tasks. Get notified ONLY when input is needed. Check back when convenient for status updates.
+
+** The docs/ Directory
+
+Claude needs to add information to this NOTES file. For large amounts of information:
+
+- Create separate document in docs/ directory
+- Link it here with explanation of document's purpose
+- The docs/ directory should **never be committed** to git repository
+- Unless specified otherwise, all Claude-generated documents go in docs/ folder
+
+**When to break out documents:**
+- If this file gets very large (> 1500 lines)
+- If information isn't all relevant anymore
+- Example: Keep only last 3-4 months of session history here, move rest to separate file
+
+* File Format Preferences
+
+** ALWAYS Use Org-Mode Format
+
+Craig uses Emacs as primary tool. **ALWAYS** create new documentation files in =.org= format, not =.md= (markdown).
+
+*Rationale:*
+- Org-mode files are well-supported in Emacs
+- Can be easily exported to any other format (HTML, PDF, Markdown, etc.)
+- Better integration with user's workflow
+
+*Exception:* Only use .md if specifically requested or if file is intended for GitHub/web display where markdown is expected.
+
+** NEVER Use Spaces in Filenames
+
+**ALWAYS** use hyphens (=-=) to separate words in filenames. Underscores (=_=) are also acceptable.
+
+*Rationale:*
+- Spaces cause problems with links across different operating systems
+- User works with Mac, Windows, Linux, and potentially other systems
+- Hyphens create more reliable, portable filenames
+- Easier to work with in command-line tools
+
+*Examples:*
+- βœ“ Good: =project-meeting-notes.org=
+- βœ“ Good: =change-log-2025-11-04.md=
+- βœ— Bad: =project meeting notes.org=
+- βœ— Bad: =change log 2025.11.04.md=
+
+* File Naming Conventions
+
+** Files Too Large to Read
+
+PDFs or other files that are too large for Claude to read should be prefixed with =TOOLARGE-= to prevent read errors that halt the session.
+
+Example:
+- Original: =assets/large-architectural-plans.pdf=
+- Renamed: =assets/TOOLARGE-large-architectural-plans.pdf=
+
+** Unreadable Binary Files (.docx Format)
+
+Binary .docx files cannot be read directly by Claude. When encountering these:
+- Convert to markdown format using pandoc: =pandoc file.docx -o file.md=
+- Keep the original .docx file for reference
+- Work with the converted .md file for analysis and editing
+
+** CRITICAL: Always Keep Links Current
+
+Many documents are linked in various org files using org-mode =file:= links. Craig relies on these links being valid at all times.
+
+**MANDATORY WORKFLOW - When renaming or moving ANY file:**
+
+1. **BEFORE renaming:** Search ALL org files for references to that file
+ - Use grep or search tools to find both filename and partial matches
+ - Check in TODO items and event log sections
+
+2. **Rename or move the file**
+
+3. **IMMEDIATELY AFTER:** Update ALL =file:= links to new path/filename
+ - Update links in task files
+ - Update links in event logs
+ - Update links in reference sections
+
+4. **Verify:** Test a few updated links to ensure they point to valid files
+
+Example workflow:
+#+begin_example
+# Step 1: Search before renaming
+grep -rn "2025-10-15-invoice.pdf" *.org
+
+# Step 2: Rename the file
+mv documents/2025-10-15-invoice.pdf documents/2025-10-15-vendor-invoice.pdf
+
+# Step 3: Update all references
+# Edit affected .org files to change paths
+
+# Step 4: Verify links work
+#+end_example
+
+*Why This is Critical:*
+- Org files are primary task tracking and reference system
+- Event logs document complete history with file references
+- Craig depends on clicking links to access documents quickly
+- Broken links disrupt workflow and make documentation unreliable
+
+**NEVER rename or move files without updating links in the same session.**
+
+* πŸ€” PENDING DECISIONS
+
+** Flymake/Flycheck Modeline Integration
+
+Craig was interested in adding error/warning counts to the modeline but hasn't decided on implementation details yet.
+
+**Questions to decide:**
+
+1. **Flymake vs Flycheck?**
+ - Flymake is built-in and works with LSP (eglot)
+ - Flycheck requires installation but has more checker backends
+
+2. **Format preference?**
+ - Just counts: =E:3 W:5=
+ - With symbols: =⚠ 3 βœ– 5=
+ - Clickable to show diagnostics buffer?
+
+3. **Placement?**
+ - Left side near major-mode, or right side with VC branch?
+
+4. **Active window only?**
+ - Like your VC branch - only show in selected window
+
+**Implementation is ready** - just need Craig's preferences and Claude can add it exactly how he wants it.
* 🧩 EMACS LISP DEVELOPMENT BEST PRACTICES
@@ -288,6 +507,26 @@ Workflow:
Created: 2025-11-01 (pre-existing)
+** create-v2mom
+File: [[file:sessions/create-v2mom.org][docs/sessions/create-v2mom.org]]
+
+Workflow for creating a V2MOM (Vision, Values, Methods, Obstacles, Metrics) strategic framework for any project or goal. Generic process applicable to Emacs config, health goals, financial planning, software development, or any long-running project.
+
+Workflow:
+1. Understand V2MOM framework
+2. Create document structure
+3. Define Vision (aspirational picture of success)
+4. Define Values (2-4 principles with concrete definitions)
+5. Define Methods (4-7 approaches ordered by priority)
+6. Identify Obstacles (honest personal/technical challenges)
+7. Define Metrics (measurable outcomes)
+8. Review and refine
+9. Commit and use immediately
+
+Time: ~2-3 hours total
+
+Created: 2025-11-05
+
** emacs-inbox-zero
File: [[file:sessions/emacs-inbox-zero.org][docs/sessions/emacs-inbox-zero.org]]
@@ -313,17 +552,17 @@ Created: 2025-11-01
** 🎯 What We're Doing
Working through a systematic approach to clean up and prioritize Craig's Emacs config work:
-1. βœ… *COMPLETE V2MOM* (Vision, Values, Methods, Obstacles, Metrics) - IN PROGRESS
-2. ⏳ *TRIAGE todo.org* - Use V2MOM to ruthlessly cancel ~60% of tasks
-3. ⏳ *EXECUTE TIER 1* - Ship quick wins (network check removal, Corfu, bug fixes)
-4. ⏳ *BUILD OBSERVABILITY* - Create profiling infrastructure (TIER 2)
+1. βœ… *COMPLETE V2MOM* (Vision, Values, Methods, Obstacles, Metrics) - DONE
+2. βœ… *TRIAGE todo.org* - Used V2MOM to ruthlessly cancel ~60% of tasks
+3. ⏳ *EXECUTE METHODS* - Working through prioritized tasks systematically
+4. ⏳ *BUILD OBSERVABILITY* - Create profiling infrastructure (Method 3)
5. ⏳ *SYSTEMATIC EXECUTION* - Work through prioritized tasks one by one
** πŸ“ Where We Are Right Now
*Session Started:* 2025-10-30
-*Current Step:* βœ… V2MOM COMPLETE - Ready for execution
-*Time Committed:* ~2 sessions, V2MOM finished 2025-10-31
-*Status:* V2MOM complete, ready to begin Method 1 execution
+*Current Step:* βœ… V2MOM COMPLETE - Executing methods systematically
+*Time Committed:* Multiple sessions since 2025-10-30
+*Status:* V2MOM complete, executing Method 1 & 2 tasks, good progress on metrics
** πŸ“„ Key Documents
@@ -345,16 +584,15 @@ Working through a systematic approach to clean up and prioritize Craig's Emacs c
*** Strengths
- Thoughtful and strategic thinker
- Good research skills (thorough specs, complete code examples)
-- Does ship things (dashboard, dirvish, network check fixes)
+- Does ship things (dashboard, dirvish, network check fixes, transcription)
- Recognizes need for V2MOM framework
- Uses config daily for real work
*** Patterns to Address
-1. *Research > Execution* - Has complete code for Corfu, difftastic, transcription workflow... still TODO
+1. *Research > Execution* - Had complete code for several features, still TODO
2. *Priority Inflation* - Too many [#A]/[#B] items, unclear what's actually urgent
-3. *Incomplete Strategy* - V2MOM structure exists but sections are empty
-4. *Hard to Say No* - [#C]/[#D] items should be CANCELLED but remain in list
-5. *Side Projects Compete* - Dupre theme work competes with core config maintenance
+3. *Hard to Say No* - [#C]/[#D] items should be CANCELLED but remain in list
+4. *Side Projects Compete* - Dupre theme work competes with core config maintenance
*** What Craig Told Us About Himself
> "I am building tools both because they solve problems, but also because I enjoy building."
@@ -367,9 +605,9 @@ This is healthy! But need balance:
** 🎯 Agreed Goals for This Project
*** Immediate (Next 2-3 Sessions)
-1. βœ… Complete V2MOM (IN PROGRESS)
-2. ⏳ Triage todo.org using V2MOM as filter
-3. ⏳ Execute quick wins: network check, Corfu migration, bug fixes
+1. βœ… Complete V2MOM
+2. βœ… Triage todo.org using V2MOM as filter
+3. ⏳ Execute quick wins: network check, bug fixes, integrations
4. ⏳ Build debug-profiling.el infrastructure
*** Short Term (Next Month)
@@ -385,11 +623,11 @@ This is healthy! But need balance:
** πŸ“‹ TIER System from issues.org
*** TIER 1: Do These First (High Impact, Low Effort) - 1 weekend
-- Remove network check (15 min)
-- Fix missing functions (30 min)
-- Corfu migration (2 hours)
-- Mood-line switch (30 min)
-- Bug fixes (1 hour)
+- Remove network check (15 min) - βœ… DONE
+- Fix missing functions (30 min) - βœ… DONE
+- Corfu migration (2 hours) - Deferred (Company works fine)
+- Mood-line switch (30 min) - βœ… DONE
+- Bug fixes (1 hour) - βœ… DONE
*** TIER 2: Build Observability (HIGHEST VALUE) - 1 week
- Create debug-profiling.el module (3-4 hours)
@@ -399,7 +637,7 @@ This is healthy! But need balance:
*** TIER 3: Quick Wins (After Profiling) - 1-2 hours each
- Reveal.js presentation workflow (2 hours)
-- Difftastic integration (30 min)
+- Difftastic integration (30 min) - βœ… DONE
- Local package development workflow (1 hour)
*** TIER 4: Maybe/Someday (Probably Never)
@@ -419,22 +657,22 @@ From todo.org, these don't serve the vision:
- [#C] Git Timemachine litters buffers - Minor annoyance
- Many Dupre theme TODOs - Side project competing with maintenance
-## πŸ’‘ Key Recommendations for Craig
+** πŸ’‘ Key Recommendations for Craig
-### Week 1: Strategy + Quick Wins
-1. Complete V2MOM (2-3 hours)
-2. Triage todo.org using V2MOM (1-2 hours)
-3. Execute items you already have code for (2-3 hours)
+*** Week 1: Strategy + Quick Wins
+1. βœ… Complete V2MOM (2-3 hours)
+2. βœ… Triage todo.org using V2MOM (1-2 hours)
+3. βœ… Execute items you already have code for (2-3 hours)
-### Week 2: Observability Infrastructure
+*** Week 2: Observability Infrastructure
4. Build debug-profiling.el (3-4 hours)
5. Profile org-agenda (1 hour)
-### Week 3: Fix Performance + Ship Presentation
+*** Week 3: Fix Performance + Ship Presentation
6. Fix org-agenda based on profiling (2-3 hours)
7. Ship reveal.js workflow (2 hours)
-### Ongoing: Maintenance Discipline
+*** Ongoing: Maintenance Discipline
- Weekly triage ritual (30 min every Sunday)
- Measure metrics (startup time, agenda time, todo count)
- Ship > Research
@@ -444,26 +682,10 @@ From todo.org, these don't serve the vision:
When starting next session, Claude should:
1. **Read this document first** to understand context
-2. **Check V2MOM status** - If incomplete, continue there
-3. **Reference issues.org** for detailed technical recommendations
-4. **Reference todo.org** for items to triage
-5. **Ask Craig:** "Where did we leave off? V2MOM? Triage? Execution?"
-
-** πŸ“ž Questions to Ask Craig Next Session
-
-*IMMEDIATE (when resuming):*
-- "Ready to continue V2MOM? We left off at Methods section."
-- "How much time do you have?"
-
-*FOR METHODS SECTION:*
-Show Craig the draft list and ask:
-- "Which methods do you already do consistently?"
-- "Which do you want to do but don't yet?"
-- "Am I missing any important methods?"
-
-*AFTER V2MOM COMPLETE:*
-- "Ready to triage todo.org using the V2MOM?"
-- "Should we execute quick wins or continue systematic triage?"
+2. **Check Active Reminders** - Follow up on pending items
+3. **Check Pending Decisions** - See if Craig has made decisions
+4. **Check V2MOM status** - Continue with next priority method/task
+5. **Ask Craig:** "What would you like to work on today?"
** 🎯 Success Metrics for This Project
@@ -471,9 +693,9 @@ We'll know this is working when:
- βœ… V2MOM is complete and provides clear strategic direction
- βœ… todo.org shrinks from ~50 to < 20 active items
- βœ… Craig ships 3-5 items per week (small but consistent)
-- βœ… Craig has profiling infrastructure to measure performance
-- βœ… Org agenda rebuild time is measured and improving
-- βœ… Weekly triage becomes habit
+- ⏳ Craig has profiling infrastructure to measure performance
+- ⏳ Org agenda rebuild time is measured and improving
+- ⏳ Weekly triage becomes habit
** πŸ’¬ Craig's Words to Remember
@@ -483,22 +705,24 @@ We'll know this is working when:
> "I have about an hour to devote. You could lead me through it, I could do some questions/answer rounds with you to clarify my thinking."
+> "There will always be cool ideas out there to implement and they will always be a web search away."
+
Craig is ready to execute. He asked for honesty and took it well. He recognizes the patterns and wants systematic help.
** πŸ› οΈ Technical Context
*** Current Pain Points
-1. Org agenda is slow (performance bottleneck)
-2. Network check adds 1+ seconds to startup (technical debt)
-3. Missing functions cause errors (cj/log-silently, cj/goto-git-gutter-diff-hunks)
-4. Mail attachments workflow is awkward
+1. Org agenda is slow (performance bottleneck) - Need profiling
+2. βœ… Network check removed (was adding 1+ seconds to startup)
+3. βœ… Missing functions fixed (cj/log-silently, cj/goto-git-gutter-diff-hunks)
+4. Mail attachments workflow needs improvement
5. No profiling infrastructure to measure performance
*** Items Craig Already Has Code For
These can be executed immediately - just paste and test:
-- Transcription workflow (complete bash + elisp in todo.org:2-99)
-- Difftastic integration (complete config in todo.org:1211-1223)
-- Corfu migration (complete config in todo.org:1611-1639)
+- βœ… Transcription workflow (implemented 2025-11-04)
+- βœ… Difftastic integration (implemented 2025-11-03)
+- Corfu migration (complete config, but deferred - Company works fine)
*** Architecture
- Modular structure: modules/*.el
@@ -511,11 +735,140 @@ These can be executed immediately - just paste and test:
If Craig or Claude need more context:
- [[file:../issues.org::*Second Opinion: Ruthless Prioritization & Reality Checks][Second Opinion section in issues.org]] - Full analysis and recommendations
- [[file:../issues.org::*TIER 1: Do These First][TIER 1-4 breakdown]] - Prioritized task system
-- [[file:../quality-engineer.org][quality-engineer.org]] - Testing philosophy (if exists)
+- [[file:../quality-engineer.org][quality-engineer.org]] - Testing philosophy
+
+* Active Reminders
+
+** Current Reminders
+
+(None currently - will be added as needed)
+
+** Instructions for This Section
+
+When Craig says "remind me" about something:
+1. Add it here with timestamp and description
+2. If it's a TODO, also add to =/home/cjennings/sync/org/roam/inbox.org= scheduled for today
+3. Check this section at start of every session
+4. Remove reminders once addressed
+
+Format:
+- [YYYY-MM-DD] Description of what to remind Craig about
+
+* Session History
+
+This section contains notes from each session with Craig. Sessions are logged in reverse chronological order (most recent first).
-** πŸš€ Current Session Notes
+** Format for Session History Entries
+
+Each entry should use this format:
+- **Timestamp:** =*** YYYY-MM-DD Day @ HH:MM TZ-INFO= (get TZ with =date +%z=)
+- **Time estimate:** How long the session took
+- **Status:** βœ… COMPLETE / ⏳ IN PROGRESS / ⏸️ PAUSED
+- **What We Completed:** Bulleted list of accomplishments
+- **Key Decisions:** Any important decisions made
+- **Files Modified:** Links to changed files
+- **Next Steps:** What to do next session (if applicable)
+
+** 2025-11-05 Tue @ 15:30 -0600
+
+*** Session: NOTES.org Consolidation & Template Integration
+
+*Time:* ~45 minutes
+*Status:* βœ… COMPLETE - Single comprehensive NOTES.org with generic protocols
+
+*What We Completed:*
+1. βœ… **Consolidated two NOTES.org files**
+ - Deleted root ~/.emacs.d/NOTES.org (older 184-line version)
+ - Kept docs/NOTES.org (comprehensive 1017-line version) as single source of truth
+ - Eliminated duplicate/conflicting documentation
+
+2. βœ… **Enhanced docs/NOTES.org with template sections**
+ - Reviewed template at ~/documents/claude/NOTES.org for generic best practices
+ - Added "About This File" introduction with clear purpose
+ - Added User Information section (calendar, task list, working style)
+ - Enhanced Session Protocols:
+ - Session Start Routine with checklist
+ - **IMPORTANT: Reminders Protocol** (check at start, add to both files)
+ - "What Kind of Day Has It Been?" journal routine
+ - Enhanced "Wrap it up" workflow with detailed steps
+ - The docs/ directory management guidance
+ - Added File Format Preferences (always .org, no spaces in filenames)
+ - Added File Naming Conventions (TOOLARGE- prefix, .docx handling, link maintenance)
+ - Added Active Reminders section with instructions
+ - Improved Session History format guidance
+
+3. βœ… **Preserved all Emacs-specific content**
+ - Kept all development best practices
+ - Kept entire project status and history
+ - Kept all session notes from previous work
+ - Final file: 1252 lines of comprehensive guidance
+
+*Key Decisions:*
+- Single NOTES.org file in docs/ directory (not root) is canonical
+- Template at ~/documents/claude/ remains unchanged (as requested)
+- Generic protocols now available for all Craig's projects with Claude
+- NOTES.org serves as both project-specific and general collaboration guide
+
+*Files Modified:*
+- docs/NOTES.org - Enhanced with template protocols (1017 β†’ 1252 lines)
+
+*Files Deleted:*
+- NOTES.org (root directory) - Removed duplicate
+
+*Files NOT Modified (as requested):*
+- ~/documents/claude/NOTES.org - Template preserved unchanged
+
+*Impact:*
+- Single comprehensive reference for all Claude Code sessions on Emacs config
+- Generic session protocols now documented and reusable
+- Clear guidance on reminders, wrap-up, file naming, and link maintenance
+- Future sessions will have better structure and consistency
+
+** 2025-11-05 Tue @ 14:00 -0600
+
+*** Session: Create V2MOM Session Document
+
+*Time:* ~30 minutes
+*Status:* βœ… COMPLETE - Generic V2MOM session workflow documented
+
+*What We Completed:*
+1. βœ… **Created docs/sessions/create-v2mom.org**
+ - Fully generic workflow applicable to any project/goal
+ - Works for health, finance, software, personal infrastructure, etc.
+ - Comprehensive 8-phase process with examples across domains
+ - Time estimate: ~2-3 hours to create a V2MOM
+
+2. βœ… **Genericized from Emacs-specific version**
+ - Removed all Emacs-specific instructions from process
+ - Added diverse examples: health V2MOM, finance V2MOM, software V2MOM
+ - Kept detailed Emacs config V2MOM as one example case study
+ - Universal patterns identified: Fix β†’ Stabilize β†’ Build β†’ Enhance β†’ Sustain
+
+3. βœ… **Comprehensive documentation**
+ - Clear phase-by-phase instructions
+ - Decision frameworks for common situations
+ - Principles to follow (honesty over aspiration, concrete over abstract)
+ - Living document guidance
+ - Multiple real-world examples
+
+*Key Decisions:*
+- V2MOM process should be project-agnostic at its core
+- Examples should span multiple domains to show universality
+- Emacs config V2MOM serves as detailed case study showing impact
+- Time commitment (2-3 hours) justified by weeks of focused work it enables
+
+*Files Created:*
+- docs/sessions/create-v2mom.org (comprehensive generic V2MOM workflow)
+
+*Next Steps:*
+- V2MOM workflow is now available for any future project
+- Can be used to create V2MOMs for: chime.el, org-msg, health goals, finances, etc.
+- Ready to use whenever Craig needs strategic framework for new initiative
+
+** 2025-11-05 Tue @ 09:00 -0600
+
+*** Session 2 - Scratch Buffer Configuration
-*** 2025-11-05 Session 2 - Scratch Buffer Configuration
*Time:* ~5 minutes
*Status:* βœ… COMPLETE - Scratch buffer opens in org-mode with cursor at end
@@ -525,31 +878,23 @@ If Craig or Claude need more context:
- Craig wanted org-mode with cursor ready to type at end
*Solution:*
-1. **Set scratch buffer to org-mode** - `(setopt initial-major-mode 'org-mode)`
-2. **Move cursor to end on startup** - Added `emacs-startup-hook` to position cursor
-3. **Updated comment syntax** - Changed `;;` to `#` in greeting messages for org-mode
+1. **Set scratch buffer to org-mode** - =(setopt initial-major-mode 'org-mode)=
+2. **Move cursor to end on startup** - Added =emacs-startup-hook= to position cursor
+3. **Updated comment syntax** - Changed =;;= to =#= in greeting messages for org-mode
*Files Modified:*
- modules/system-utils.el:186-203
- - Added `initial-major-mode` configuration
+ - Added =initial-major-mode= configuration
- Added startup hook for cursor positioning
- Updated greeting message comment syntax for org-mode compatibility
*Technical Details:*
-- Used `emacs-startup-hook` to run after init completes
+- Used =emacs-startup-hook= to run after init completes
- Buffer name check ensures we only affect *scratch* buffer
- Greeting message now uses org-mode comment syntax (#)
-*Testing:*
-- Configuration updated in modules/system-utils.el:197-203
-- Requires restart or eval-buffer to take effect
+*** Session 1 - Fix Google Calendar Password Prompts
-*Next Steps:*
-- Restart Emacs or evaluate modules/system-utils.el
-- Verify scratch buffer opens in org-mode
-- Verify cursor positioned at end of buffer
-
-*** 2025-11-05 Session 1 - Fix Google Calendar Password Prompts
*Time:* ~15 minutes
*Status:* βœ… COMPLETE - Fixed irritating password prompts every 10 minutes
@@ -559,7 +904,7 @@ If Craig or Claude need more context:
- Despite having gpg-agent configured with 400-day cache timeout
*Root Cause:*
-- Line 27 in modules/auth-config.el: `(setenv "GPG_AGENT_INFO" nil)`
+- Line 27 in modules/auth-config.el: =(setenv "GPG_AGENT_INFO" nil)=
- This was telling Emacs to IGNORE the gpg-agent entirely
- Result: gpg-agent's 400-day cache was being bypassed
- Plstore (used by oauth2-auto) was loading too late in org-gcal-config
@@ -568,12 +913,12 @@ If Craig or Claude need more context:
1. **Disabled GPG_AGENT_INFO override** - Commented out line preventing agent use
2. **Added auth-source-cache-expiry** - 24-hour cache for decrypted credentials
3. **Moved plstore configuration** - From org-gcal-config to auth-config (loads earlier)
-4. **Set plstore caching globally** - `plstore-cache-passphrase-for-symmetric-encryption t`
+4. **Set plstore caching globally** - =plstore-cache-passphrase-for-symmetric-encryption t=
*Files Modified:*
- modules/auth-config.el:
- - Commented out `(setenv "GPG_AGENT_INFO" nil)` (was preventing cache)
- - Added `(setq auth-source-cache-expiry 86400)` (24-hour cache)
+ - Commented out =(setenv "GPG_AGENT_INFO" nil)= (was preventing cache)
+ - Added =(setq auth-source-cache-expiry 86400)= (24-hour cache)
- Added new plstore use-package block with caching enabled
- modules/org-gcal-config.el:
- Removed plstore configuration (now in auth-config.el)
@@ -581,26 +926,19 @@ If Craig or Claude need more context:
*Technical Details:*
- oauth2-auto.plist uses symmetric encryption (passphrase-based)
-- gpg-agent.conf already had `default-cache-ttl 34560000` (400 days)
-- gpg-agent needed to be reloaded: `gpgconf --reload gpg-agent`
+- gpg-agent.conf already had =default-cache-ttl 34560000= (400 days)
+- gpg-agent needed to be reloaded: =gpgconf --reload gpg-agent=
- Plstore now caches passphrase indefinitely via gpg-agent
-*Testing:*
-- gpg-agent reloaded successfully
-- Parentheses balanced (check-parens passed)
-- Will verify in production: no password prompts for 30+ minutes
-
-*Next Steps:*
-- Restart Emacs to pick up new configuration
-- Monitor for 1+ hour to confirm no password prompts
-- Mark as resolved if no prompts after several auto-sync cycles
-
*User Quote:*
> "It's making me crazy!"
-Totally valid! Getting interrupted every 10 minutes is legitimately maddening. Fixed! βœ…
+Totally valid! Getting interrupted every 10 minutes is legitimately maddening. Fixed! βœ…
+
+** 2025-11-04 Mon @ 15:00 -0600
+
+*** Session 4 - External Dependencies Audit
-*** 2025-11-04 Session 4 - External Dependencies Audit
*Time:* ~30 minutes
*Status:* βœ… COMPLETE - Comprehensive dependency analysis documented
@@ -640,12 +978,8 @@ Totally valid! Getting interrupted every 10 minutes is legitimately maddening.
*Files Created:*
- config-dependencies.org (comprehensive dependency documentation)
-*Status:*
-- Ready for comparison with archsetup script βœ…
-- All dependencies documented with install commands βœ…
-- Can now ensure archsetup installs all Emacs requirements βœ…
+*** Session 3 - LanguageTool Grammar Checker Test Suite
-*** 2025-11-04 Session 3 - LanguageTool Grammar Checker Test Suite
*Time:* ~1 hour
*Status:* βœ… COMPLETE - Comprehensive test suite with 15 passing tests
@@ -694,24 +1028,13 @@ Totally valid! Getting interrupted every 10 minutes is legitimately maddening.
- tests/fixtures/grammar-errors-punctuation.txt
- tests/fixtures/grammar-correct.txt
-*Makefile Integration:*
-Tests automatically discovered via wildcards:
-- make test-unit (includes our unit test)
-- make test-integration (includes our integration test)
-- make test-file FILE=test-flycheck-languagetool-setup.el
-- make test-file FILE=test-integration-grammar-checking.el
-
*Test Results:*
- Unit tests: 6/6 passing
- Integration tests: 9/9 passing
- Total: 15/15 tests βœ“
-*Status:*
-- All code committed and pushed to origin + github βœ…
-- Tests run regularly via Makefile βœ…
-- Grammar checker fully tested and production-ready βœ…
+*** Session 2 - Emergency Bug Fixes & Modeline Polish
-*** 2025-11-04 Session 2 - Emergency Bug Fixes & Modeline Polish
*Time:* ~30 minutes
*Status:* βœ… COMPLETE - Fixed async buffer error and improved modeline spacing
@@ -743,12 +1066,8 @@ Tests automatically discovered via wildcards:
- modules/weather-config.el - Added after-init-hook delay for mode-line widget
- modules/modeline-config.el - Added 2 non-breaking spaces at end
-*Status:*
-- Emacs launches without errors βœ…
-- Weather widget appears in modeline after startup βœ…
-- Modeline spacing looks clean and professional βœ…
+*** Session 1 - Complete Transcription Workflow Implementation
-*** 2025-11-04 Session 1 - Complete Transcription Workflow Implementation
*Time:* ~3 hours
*Status:* βœ… COMPLETE - Full async transcription system with 60 passing tests
@@ -817,20 +1136,10 @@ Tests automatically discovered via wildcards:
- modules/user-constants.el (added cj/audio-file-extensions)
- modules/org-gcal-config.el (reorganized keybindings to C-; g submenu)
-*Pending for Next Session:*
-- Manual test with real audio file
-- True integration tests (run actual transcription process)
-- Create test fixtures (small audio samples)
-- Consolidate issues.org with inbox.org (deferred)
+** 2025-11-03 Sun @ 13:00 -0600
-*Next Steps:*
-1. Add `(require 'transcription-config)` to init.el
-2. Test with: M-x cj/transcribe-audio or T in dired on audio file
-3. Verify .txt and .log files created
-4. Check modeline shows active count
-5. Review output quality
+*** Modeline Polish & Wrap-Up Workflow
-*** 2025-11-03 Session - Modeline Polish & Wrap-Up Workflow
*Time:* ~30 minutes
*Status:* βœ… COMPLETE - Code quality improvements and workflow automation
@@ -838,12 +1147,12 @@ Tests automatically discovered via wildcards:
1. βœ… Fixed all checkdoc linting errors in modeline-config.el (8 warnings β†’ 0)
- Removed embedded keycodes from docstrings (mouse-1, mouse-3)
- Added double spaces after periods per Emacs conventions
- - Quoted Lisp symbols with backticks (`vc-diff`, `describe-mode`)
+ - Quoted Lisp symbols with backticks (=vc-diff=, =describe-mode=)
- Fixed single quotes in examples to use proper backtick quoting
- File now passes checkdoc and byte-compilation cleanly
-2. βœ… Created `/wrap-it-up` workflow automation
- - Slash command: `.claude/commands/wrap-it-up.md`
+2. βœ… Created =/wrap-it-up= workflow automation
+ - Slash command: =.claude/commands/wrap-it-up.md=
- Phrase recognition: "let's wrap it up", "that's a wrap", "let's call it a wrap"
- Workflow: Write notes β†’ Git commit & push β†’ Valediction summary
- Documented in both slash command and NOTES.org terminology section
@@ -860,16 +1169,10 @@ Tests automatically discovered via wildcards:
- Craig expressed gratitude: "my life is genuinely improving while working with you"
- Modeline work quality bar: must pass all linters before shipping
-*Commits:*
-- aacc1e7: style: Fix checkdoc linting errors in modeline-config.el
-- bb40315: feat: Add /wrap-it-up slash command and phrase recognition
-- 1a9b8db: docs: Add reminder for Flymake/Flycheck modeline integration decision
+** 2025-10-31 Thu @ 14:00 -0600
-*Next Session:*
-- Remind Craig about Flymake/Flycheck decision (proactively!)
-- Ready to implement error/warning counts in modeline once preferences decided
+*** Session 2 - V2MOM Complete!
-*** 2025-10-31 Session 2 - V2MOM Complete!
*Time:* ~1.5 hours
*Status:* βœ… COMPLETE - V2MOM finalized and ready for use
@@ -917,18 +1220,12 @@ Tests automatically discovered via wildcards:
- Method ordering: fix β†’ stabilize β†’ build infrastructure β†’ contribute β†’ enhance β†’ sustain
- Adjusted startup target from 2s to 3s (more achievable, less perfectionism trap)
-*Key Files Modified This Session:*
-- [[file:emacs-config-v2mom.org][emacs-config-v2mom.org]] - Now 100% complete with all sections filled
+*Key Files Modified:*
+- [[file:EMACS-CONFIG-V2MOM.org][EMACS-CONFIG-V2MOM.org]] - Now 100% complete with all sections filled
- [[file:../modules/custom-buffer-file.el][modules/custom-buffer-file.el]] - Added cj/diff-buffer-with-file function
-- [[file:SESSION-HANDOFF-ACTIVE-PROJECT.org][SESSION-HANDOFF-ACTIVE-PROJECT.org]] - This file
-*Next Session Starts With:*
-1. Continue Method 1 execution - 2 quick wins ready!
-2. Fix cj/goto-git-gutter-diff-hunks (15 min)
-3. Fix chime throw/catch bug (your package)
-4. Fix go-ts-mode-map keybinding error
+*** Session 3 - RUTHLESS EXECUTION! πŸš€
-*** 2025-10-31 Session 3 - RUTHLESS EXECUTION! πŸš€
*Time:* ~2 hours
*Status:* Method 1 in progress - shipped 2 wins, discovered 3 bugs
@@ -939,7 +1236,7 @@ Tests automatically discovered via wildcards:
- Already under < 20 active items goal!
2. βœ… **SHIPPED: Network check removal** (Method 1)
- - Deleted `cj/internet-up-p` blocking ping function
+ - Deleted =cj/internet-up-p= blocking ping function
- Removed network cache variables
- Simplified to use package priorities instead
- .localrepo (priority 200) ensures offline reproducibility
@@ -960,7 +1257,7 @@ Tests automatically discovered via wildcards:
- Discovered 3 bugs during test (logged in inbox.org)
*Bugs Discovered (all logged in inbox.org):*
-1. **Chime throw/catch error** - High priority, your package
+1. **Chime throw/catch error** - High priority
- Error: "(no-catch --cl-block-chime-check-- nil)"
- Fix: Change defun to cl-defun or add catch block
- Currently disabled to unblock startup
@@ -983,31 +1280,23 @@ Tests automatically discovered via wildcards:
- [[file:../modules/custom-buffer-file.el][custom-buffer-file.el]] - Added cj/diff-buffer-with-file
- [[file:../inbox.org][inbox.org]] - Fresh V2MOM-aligned todo list created
- [[file:../scripts/reset-to-first-launch.sh][reset-to-first-launch.sh]] - Updated with missing transient files
-- [[file:someday-maybe.org][someday-maybe.org]] - Old todo.org archived here
-
-*Next Session (2025-11-01):*
-**Two quick wins ready (15 min each):**
-1. Fix cj/goto-git-gutter-diff-hunks (missing function)
-2. Fix chime throw/catch bug (re-enable chime)
-
-**Then continue Method 1:**
-- Optimize org-agenda (THE BOTTLENECK - 30s β†’ <5s target)
-- Fix org-noter (daily pain)
-- Fix video/audio recording
-- Fix mail attachments
-- Fix grammar checker
+- [[file:SOMEDAY-MAYBE.org][SOMEDAY-MAYBE.org]] - Old todo.org archived here
*Craig's Words:*
> "There will always be cool ideas out there to implement and they will always be a web search away."
+
Ruthless prioritization in action! Deleted research files, focused execution.
-*** 2025-10-30 Session 1 - V2MOM In Progress
+** 2025-10-30 Wed @ 13:00 -0600
+
+*** Session 1 - V2MOM In Progress
+
*Time:* ~1 hour
*Status:* PAUSED - V2MOM 60% complete
*What We Completed:*
1. βœ… Created docs/ directory structure
-2. βœ… Created SESSION-HANDOFF-ACTIVE-PROJECT.org (this file)
+2. βœ… Created SESSION-HANDOFF-ACTIVE-PROJECT.org
3. βœ… Created emacs-config-v2mom.org
4. βœ… Created values-comparison.org (analysis doc)
5. βœ… Completed Vision (already existed, kept as-is)