<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs.git/modules/video-audio-recording.el, branch v0.7.2</title>
<subtitle>my Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs.git/atom?h=v0.7.2</id>
<link rel='self' href='https://git.cjennings.net/dotemacs.git/atom?h=v0.7.2'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/'/>
<updated>2026-02-27T00:37:07+00:00</updated>
<entry>
<title>feat(recording): intuitive labels, show muted devices, add app names</title>
<updated>2026-02-27T00:37:07+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-27T00:37:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=8de47fd766fe57c7f89960ee110b209a946024cb'/>
<id>urn:sha1:8de47fd766fe57c7f89960ee110b209a946024cb</id>
<content type='text'>
Rework quick-setup device picker:
- Labels: [in use], [ready], [available], [muted] instead of
  PulseAudio jargon (RUNNING/IDLE/SUSPENDED)
- Muted devices now shown (previously hidden) so users can see
  all connected hardware and understand why a device is unsuitable
- Sink step shows which apps are playing through each output:
  "JDS Labs Element IV [in use] (Firefox, Spotify)"
- Prompt changed from "audio output to monitor" to "audio output
  to capture" to avoid PulseAudio monitor terminology confusion
- Sort order: in use → ready → available → muted
</content>
</entry>
<entry>
<title>feat(recording): replace icons with text state labels in quick-setup</title>
<updated>2026-02-27T00:12:59+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-27T00:12:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=5eb90dbbd18cf9b22d83fe31303fbb09099088ed'/>
<id>urn:sha1:5eb90dbbd18cf9b22d83fe31303fbb09099088ed</id>
<content type='text'>
Replace hard-to-distinguish nerd font icons with clear text labels:
  Jabra SPEAK 510 Mono [active - running]
  Shure MV7+ Analog Stereo [active - idle]
  Ryzen HD Audio Controller [inactive - suspended]

Both mic and sink steps use the same labeling. Devices sorted
running → idle → suspended. Removed mic-active-p and sink-active-p
helpers — state now comes directly from the verbose pactl parsers
via get-available-mics/sinks which return (name description state).
</content>
</entry>
<entry>
<title>feat(recording): add mic indicators and fix misleading sink icon</title>
<updated>2026-02-27T00:01:10+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-27T00:01:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=ed5e3f61d00a9462801e15179fcceca65315050a'/>
<id>urn:sha1:ed5e3f61d00a9462801e15179fcceca65315050a</id>
<content type='text'>
Mic step now shows 󰍬 with green/dim coloring to indicate which mics
are actively in use (RUNNING state), with active mics sorted to top.

Changed sink inactive icon from 󰖁 (slashed speaker, reads as
"broken/muted") to 󰖀 (plain speaker, reads as "no streams right
now"). Active sinks still show 󰕾.
</content>
</entry>
<entry>
<title>fix(recording): remove drift detection that overrides explicit sink choice</title>
<updated>2026-02-26T23:51:40+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-26T23:51:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=f47573e8eddb02db7f3cbf79a8c1825bf1b32323'/>
<id>urn:sha1:f47573e8eddb02db7f3cbf79a8c1825bf1b32323</id>
<content type='text'>
Validation Check 2 (default sink drifted) would silently replace the
user's explicit sink selection from quick-setup with the default sink's
monitor on every recording start. Removed it — if the device still
exists, trust the user's choice. The no-audio warning (Check 3) already
catches wrong-sink scenarios.

Also fix commentary: device selection does not persist across sessions
(both vars are plain defvar), and update validation section to match
the two remaining checks.
</content>
</entry>
<entry>
<title>feat(recording): show sinks with active audio indicators in quick-setup</title>
<updated>2026-02-26T23:46:11+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-26T23:46:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=46af687f2444754657000116178eeb80addd5a52'/>
<id>urn:sha1:46af687f2444754657000116178eeb80addd5a52</id>
<content type='text'>
Quick-setup (C-; r s) is now a two-step flow: pick a mic, then pick an
audio output sink. Sinks display 󰕾/󰖁 icons with green/dim coloring to
indicate which have active audio streams, with active sinks sorted to
the top. The chosen sink's .monitor is set as the system audio device.

This replaces the old auto-default-sink approach, letting users see
where audio is actually going and pick the right sink in one command.
</content>
</entry>
<entry>
<title>fix(recording): replace blocking y-or-n-p with non-blocking warning</title>
<updated>2026-02-26T23:15:57+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-26T23:15:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=c43805f86a6f6b87a3f75ab8ece2610905344ec9'/>
<id>urn:sha1:c43805f86a6f6b87a3f75ab8ece2610905344ec9</id>
<content type='text'>
The no-audio warning was a y-or-n-p prompt that blocked recording start.
This fires too often in legitimate scenarios (starting before a meeting
connects, during silence). Replace with a message in the echo area and
diagnostic steps logged silently to *Messages*. Also add pre-recording
validation to the Commentary section.
</content>
</entry>
<entry>
<title>feat(recording): validate system audio device before recording</title>
<updated>2026-02-26T23:08:19+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-26T23:08:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=58ef63abd5a9187ee93609f142cb21a933da16c5'/>
<id>urn:sha1:58ef63abd5a9187ee93609f142cb21a933da16c5</id>
<content type='text'>
Add pre-recording validation that catches stale or drifted system audio
devices before they cause silent recordings. When the default audio
output changes (Bluetooth reconnect, device switch) between setup and
recording, the monitor device is auto-updated. Warns if no audio is
currently playing through the monitored sink.

Co-Authored-By: Craig Jennings &lt;c@cjennings.net&gt;
</content>
</entry>
<entry>
<title>fix(test): add missing testutil require for sanitize-org-body tests</title>
<updated>2026-02-06T22:20:45+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-06T19:51:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=36491e1c4d2b04196ab18d275b834933e8cae2fb'/>
<id>urn:sha1:36491e1c4d2b04196ab18d275b834933e8cae2fb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(recording): rewrite device setup, fix video stop, update modeline icons</title>
<updated>2026-02-06T19:12:44+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-06T19:00:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=c603124f6487604baee5aab590e1432e99570ca8'/>
<id>urn:sha1:c603124f6487604baee5aab590e1432e99570ca8</id>
<content type='text'>
Video stop fix: kill wf-recorder (producer) first on Wayland so ffmpeg
gets clean EOF, then signal process group. Replaces sit-for with
poll-based wait-for-exit. Fixes zero-byte output files.

Device selection: rewrite quick setup to show all available mics with
PulseAudio descriptions, auto-detect default sink monitor for system
audio. Skip confirmation dialog, add Cancel option to mic list.

Modeline: replace red dot emoji with nerd font icons (mic/camcorder).
Rename quick-setup-for-calls to quick-setup, rebind C-; r s / C-; r S.

173 recording tests pass (was 165).
</content>
</entry>
<entry>
<title>fix(video-recording): kill orphan wf-recorder on Wayland</title>
<updated>2026-02-03T14:54:51+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-03T14:54:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=3c9f31b2f1249a2f5911a300ad48a894443d3009'/>
<id>urn:sha1:3c9f31b2f1249a2f5911a300ad48a894443d3009</id>
<content type='text'>
On Wayland, video recording uses a shell pipeline: wf-recorder | ffmpeg.
When stopping, SIGINT only reaches ffmpeg, leaving wf-recorder running
as an orphan. This blocks subsequent recordings (0-byte files or no file).

Fix:
- On stop: explicitly pkill wf-recorder before interrupting ffmpeg
- On start: kill any orphan wf-recorder from previous crashes
- Increase finalization wait from 0.2s to 0.5s for proper cleanup
</content>
</entry>
</feed>
