1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
|
#+TITLE: Inbox - V2MOM Aligned Tasks
#+AUTHOR: Craig Jennings
#+DATE: 2025-10-31
#+FILETAGS: :v2mom:active:
* Instructions
This inbox contains ONLY tasks that serve the V2MOM vision. Before adding any task here, ask:
1. Does it serve the Vision?
2. Does it align with the Values?
3. Is it addressed in the Methods?
4. Does it overcome an Obstacle?
5. Does it improve a Metric?
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
** DONE [#A] Remove network check from startup (saves 1+ seconds)
CLOSED: [2025-10-31 Fri]
✅ Deleted blocking ping check. Startup improved from 6.2s to 5.4s.
Now uses package priorities: .localrepo (200) > online repos (25).
** TODO [#A] Fix cj/goto-git-gutter-diff-hunks (missing function causing errors)
Quick win - 15 minutes. Just needs to be defined.
** DONE [#A] Fix chime-check throw with no catch block
CLOSED: [2025-11-01 Fri]
Error: "(no-catch --cl-block-chime-check-- nil)"
Chime was throwing to a catch block that doesn't exist.
Location: chime package - chime-check() function at line 1540
Fix: Changed defun to cl-defun to provide implicit catch block for cl-return-from.
Fixed in ~/code/chime.el/chime.el:1540
Added regression test: test-integration-startup-early-return-on-validation-failure
Created Makefile with test targets (unit, integration, all, by-file, by-name)
Updated README.org with Development/Testing section
All integration tests pass (5/5) ✅
** DONE [#A] Implement cj/diff-buffer-with-file (compare buffer with saved version)
CLOSED: [2025-10-31 Fri]
Bound to C-; b D. Weekly need satisfied.
** TODO [#B] Fix go-ts-mode-map keybinding error (void-variable)
Error: "Debugger entered--Lisp error: (void-variable go-ts-mode-map)"
Location: modules/prog-go.el - trying to bind keys before mode loads.
Fix: Wrap keybinding in with-eval-after-load or check if variable is bound.
** TODO [#B] Fix org-noter (reading/annotation workflow currently "so painful")
High priority - daily pain point.
** TODO [#B] Fix video/audio recording module (use constantly, just broke)
Main issue: No way to select audio devices when multiple are available.
Plugging in external audio interface broke recording - only captured input, not output.
Use constantly, needs to work reliably.
*** TODO [#A] Add diagnostic command cj/recording-list-devices
Show ALL available PulseAudio/PipeWire sources.
Helps debug why auto-detection fails.
User can copy device names if needed.
*** TODO [#A] Add device selection UI
Prompt user to select mic and system audio sources.
Cache selected devices for future recordings.
Allow switching devices without restarting Emacs.
*** TODO [#B] Improve error messages
Show which devices were found/not found.
Include actual pactl output in error messages.
Suggest manual device configuration.
*** TODO [#B] Make device detection more flexible
Try multiple regex patterns for different audio setups.
Fallback to prompting user to select from list.
Support both PulseAudio and PipeWire.
*** TODO [#B] Validate recording startup
Check process status after starting.
Parse ffmpeg output for errors.
Show actual ffmpeg command for debugging.
*** TODO [#C] Add device testing command cj/recording-test-devices
Records 3 seconds of audio.
Plays it back.
Confirms devices work before real recording.
*** TODO [#C] Add recording status display (optional via flag, default off)
Show "Recording: 00:05:23" in modeline or echo area.
Timer showing duration.
File size updating.
*** TODO [#C] Add recording presets
Screencast (video + audio, high quality).
Podcast (audio only, voice optimized).
Meeting (balanced, lower filesize).
Quick note (audio, low quality, small file).
*** TODO [#C] Build recording history buffer
*Recordings* buffer showing history.
Duration, file size, location.
Quick actions: play, delete, rename, move.
*** TODO [#C] Add post-processing hooks
Auto-compress after recording.
Move to cloud sync directory.
Generate transcript (once transcription workflow exists).
** TODO [#B] Fix mail attachment workflow (currently awkward)
Daily workflow improvement.
** TODO [#B] Optimize org-agenda performance using built-in profiler
THE BOTTLENECK. Currently 30+ seconds, target < 5 seconds.
Use M-x profiler-start before Method 3 debug-profiling.el is built.
** TODO [#B] Optimize org-capture target building performance
15-20 seconds every time capturing a task (12+ times/day).
Major daily bottleneck - minutes lost waiting, plus context switching cost.
** TODO [#C] Fix grammar checker performance (currently disabled)
Currently disabled because it breaks flow when writing.
** TODO [#D] Fix EMMS keybinding inconsistency with other buffers
EMMS keybindings conflict with standard buffer keybindings, causing mistypes.
Results in accidental destructive actions (clearing buffers), requires undo + context switch.
Violates Intuitive value - muscle memory should help, not hurt.
* Method 2: Stop Problems Before They Appear
** TODO [#B] Migrate from Company to Corfu
:PROPERTIES:
:COMPLETE_CONFIG: [[file:docs/someday-maybe.org::1611][todo.org:1611-1639]]
:END:
Complete config already exists in someday-maybe.org. Just needs to be executed.
** TODO [#C] Switch to mood-line
Already researched. Lighter modeline.
** TODO [#C] Remove deprecated tree-sitter package (rely on treesit-auto)
Already have treesit-auto installed. Just remove old package.
** TODO [#C] Add org-appear (show emphasis markers only when point is on them)
Cleaner org files, supports Intuitive value.
** TODO [#C] Integrate prescient with Corfu (smart sorting)
Already using prescient with vertico. Extend to Corfu after migration.
* Method 3: Make *Fixing* Emacs Frictionless
** TODO [#B] Build debug-profiling.el module
Reusable profiling infrastructure for any future performance work.
** 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.
For true offline reproducibility, need to cache treesitter grammars separately.
** TODO [#C] Integrate Buttercup (behavior-driven integration tests)
Complex workflow testing capability.
** TODO [#C] Build localrepo out (package snapshot system)
Repeatable installs and safe rollbacks.
** TODO [#C] Integrate difftastic (structural diffs)
Structural diffs that show semantic changes. Hook into cj/diff-buffer-with-file.
* Method 4: Contribute to the Emacs Ecosystem
** TODO [#C] Set up package-lint for elisp linting (chime, org-msg, wttrin)
Catch packaging issues automatically.
** TODO [#C] Set up melpazoid CI for MELPA submissions
Validates packages meet MELPA standards.
** TODO [#C] Set up elisp-check GitHub Action
Zero-config CI for Emacs packages.
** TODO [#C] Integrate undercover.el for test coverage
Measure and track test coverage over time.
* Method 5: Be Kind To Your Future Self
** TODO [#C] Add transcription workflow
:PROPERTIES:
:COMPLETE_CONFIG: [[file:docs/someday-maybe.org::2][todo.org:2-99]]
:END:
Complete code already exists in someday-maybe.org. Need today and recurring.
** TODO [#C] Implement org-reveal presentation workflow
Create reveal.js slides from org-mode.
* Method 6: Develop Disciplined Engineering Practices
** TODO [#A] First weekly triage by Sunday (establish habit)
SCHEDULED: <2025-11-03 Sun>
Review this inbox, cancel stale items, keep < 20 active. Track in calendar.
** TODO [#B] Track current metrics baseline
- [ ] Measure current startup time (time emacs --eval '(save-buffers-kill-emacs)')
- [ ] Count current active todos
- [ ] Set up tracking document for weekly metrics
** TODO [#C] Set up monthly research:shipped ratio tracking
Can't research next thing until current thing is implemented.
* Emacs Config Inbox
** DONE [#A] Irritant: Print should be keybound to capital P
CLOSED: [2025-11-03 Sun]
Swapped keybindings:
- C-; b p → copy file path (safe, common action)
- C-; b P → print to PS (dramatic, requires shift)
** DONE [#A] Irritant: send buffer to printer must have confirmation
CLOSED: [2025-11-03 Sun]
Added y-or-n-p confirmation to cj/print-buffer-ps.
C-u prefix skips confirmation and prints in color.
|