Let the Device field be picked, not typed blind
Diagnosing capture on a real TV meant reading pactlSources off the screen and typing an exact PulseAudio source name back in through the same remote-driven text field — no way to copy-paste, easy to mistype, and the one piece of information (which source, if any, is actually RUNNING) was buried in a JSON dump. Added two choice() pickers bound to the same capture.device setting: one built from pactlSources (pulse/auto backends), one built from alsaCapturePcms (alsa backend), both parsed from diagnostics the service already collects — no new Luna method needed. Diagnostics already run once at boot, so the picker is populated immediately, before the user ever presses "Run diagnostics" by hand. Picking a value writes straight into capture.device, and the plain text field stays as the fallback for anything the parser misses. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
f3a4cddfd6
commit
0759cc00aa
@@ -191,6 +191,10 @@ async function main() {
|
||||
eq('stops again', $('state-pill').textContent, 'Stopped');
|
||||
|
||||
console.log('diagnostics');
|
||||
// Diagnostics run once automatically at boot, so the picker is already
|
||||
// there — the user should not have to press the button first.
|
||||
check('device picker already present from the boot-time diagnostics run',
|
||||
!!doc.querySelector('[data-path="capture.device"].choice'));
|
||||
click($('run-diagnostics'));
|
||||
await wait(200);
|
||||
check('diagnostics output shown',
|
||||
@@ -200,6 +204,17 @@ async function main() {
|
||||
await wait(200);
|
||||
check('log output shown', $('output').textContent.indexOf('browser mock') >= 0);
|
||||
|
||||
console.log('device picker');
|
||||
const picker = doc.querySelector('[data-path="capture.device"].choice');
|
||||
check('device picker appears once sources are known', !!picker);
|
||||
eq('picker starts on Automatic', picker.textContent, 'Automatic (@DEFAULT_MONITOR@)');
|
||||
click(picker); // Automatic -> tpcm_output.monitor
|
||||
await wait(600);
|
||||
eq('picking a source reaches settings',
|
||||
window.App.state.settings.capture.device, 'tpcm_output.monitor');
|
||||
eq('the plain device field reflects the pick',
|
||||
doc.querySelector('input[data-path="capture.device"]').value, 'tpcm_output.monitor');
|
||||
|
||||
console.log('navigation');
|
||||
fakeLayout(window);
|
||||
const tabs = doc.querySelectorAll('.tab');
|
||||
|
||||
Reference in New Issue
Block a user