<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tmix.git/TODO, branch master</title>
<subtitle>TDE pulseaudio mixer
</subtitle>
<id>https://git.ceux.org/tmix.git/atom?h=master</id>
<link rel='self' href='https://git.ceux.org/tmix.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.ceux.org/tmix.git/'/>
<updated>2026-05-15T23:22:41+00:00</updated>
<entry>
<title>Devices tab: per-sink/source port switching</title>
<updated>2026-05-15T23:22:41+00:00</updated>
<author>
<name>Calvin Morrison</name>
<email>calvin@pobox.com</email>
</author>
<published>2026-05-15T23:22:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ceux.org/tmix.git/commit/?id=f8fa47123887452f48d0b523289ca6990c8a2e25'/>
<id>urn:sha1:f8fa47123887452f48d0b523289ca6990c8a2e25</id>
<content type='text'>
Add Output port / Input port dropdowns in the Devices tab for any
sink or source that has 2+ ports. Selecting a port calls
pa_context_set_sink/source_port_by_index live. Active port selection
updates in-place when PA reports a port change externally.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>PA reconnect: recover cleanly when PulseAudio restarts</title>
<updated>2026-05-15T20:03:08+00:00</updated>
<author>
<name>Calvin Morrison</name>
<email>calvin@pobox.com</email>
</author>
<published>2026-05-15T20:03:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ceux.org/tmix.git/commit/?id=4a8a83f223bbc2b9d18ef91423c1ee807b297b35'/>
<id>urn:sha1:4a8a83f223bbc2b9d18ef91423c1ee807b297b35</id>
<content type='text'>
- On PA_CONTEXT_FAILED/TERMINATED, emit deviceRemoved for all devices
  so UI clears itself, then reconnect after 2s
- Skip pa_context_disconnect and stream detach locks when PA is already
  dead to avoid hang in pa_threaded_mainloop_stop
- Emit defaultOutputChanged(0)/defaultInputChanged(0) before deleting
  devices to prevent dangling pointer crash in TmixTray::setDevice
- Disconnect all device signals before close() to avoid use-after-free
  from cross-device wiring (source→recording levelChanged bridge)
- Icon: generate proper 22x22 (and 16/32/48) from source, install all sizes

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Recording popup, level meters, UX polish</title>
<updated>2026-05-15T19:02:25+00:00</updated>
<author>
<name>Calvin Morrison</name>
<email>calvin@pobox.com</email>
</author>
<published>2026-05-15T19:02:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ceux.org/tmix.git/commit/?id=e0c8fb0cdcb9c95e3efa60322c1733df0a965650'/>
<id>urn:sha1:e0c8fb0cdcb9c95e3efa60322c1733df0a965650</id>
<content type='text'>
- Recording tray icon opens popup (mics + active recording streams)
- Recording stream level meters forward from parent source signal
- RecordingTray subclass for single-click (no double-click needed)
- Context menu Set Default Output/Input shows checkmark when active
- Last DeviceWidget in each row hides its right separator
- Popup horizontal layout, configurable content (output/mic/apps)
- Single-click tray, right-click menu for Open Mixer
- Desktop file, icon, CMake install rules
- Window bring-to-front across workspaces (KWin::forceActiveWindow)

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Full mixer implementation — tray, popup, prefs, devices tab with port indicators</title>
<updated>2026-05-15T14:10:04+00:00</updated>
<author>
<name>Calvin Morrison</name>
<email>calvin@pobox.com</email>
</author>
<published>2026-05-15T14:10:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ceux.org/tmix.git/commit/?id=e776bc768cf9afca1867200e25d64d315cd72a3e'/>
<id>urn:sha1:e776bc768cf9afca1867200e25d64d315cd72a3e</id>
<content type='text'>
Adds the complete tmix feature set built since the initial skeleton:
balance knob, level meters, KLed mute button, system tray with scroll-wheel
volume and recording indicator, tray popup, preferences dialog, right-click
context menus, single-instance enforcement, scroll area, window geometry
persistence, and Devices tab with PA card profile switcher and live port
availability indicators (2-column layout, in-place updates on plug/unplug).

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
