diff options
| author | Craig Jennings <c@cjennings.net> | 2025-11-05 12:40:19 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2025-11-05 12:40:19 -0600 |
| commit | a98320429f74fca6d9440cd56ba549aa982c0f54 (patch) | |
| tree | 2c7091fa68fbd1f6427bed8eeb823541180a80ce /docs/NOTES.org | |
| parent | ebd439a84180b6f3258be43ac3ce3788cbe21b6d (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.org | 715 |
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) |
