feat(dac-wizard): extend DAC info to all steps and done summary

- Add DAC short name to pulse config filename for multi-DAC support
- Add getCreatedConfigPaths() for dynamic file path generation
- Show configured DAC name/description in done step
- Add configuredFor translation to all locales (EN/ES/FR/DE)
This commit is contained in:
vicrodh committed 2026-02-03 02:38:49 -06:00
1 parent c3ae0a2e6a
commit e6d5c1ae7d
5 files changed
+44 -4

No files matched your search

+40 -4
View File
@@ -243,6 +243,7 @@
// Generate pulse config command based on selected apps // Generate pulse config command based on selected apps
function generatePulseConfig(): string[] { function generatePulseConfig(): string[] {
const fileName = dacNodeName ? `99-qbz-bitperfect-${dacShortName()}.conf` : '99-qbz-bitperfect.conf';
const rules = selectedApps.map(app => { const rules = selectedApps.map(app => {
const matchKey = app === 'QBZ' ? 'application.name' : 'application.process.binary'; const matchKey = app === 'QBZ' ? 'application.name' : 'application.process.binary';
const matchValue = app === 'QBZ' ? 'QBZ' : app.toLowerCase(); const matchValue = app === 'QBZ' ? 'QBZ' : app.toLowerCase();
@@ -254,7 +255,7 @@
return [ return [
'mkdir -p ~/.config/pipewire/pipewire-pulse.conf.d', 'mkdir -p ~/.config/pipewire/pipewire-pulse.conf.d',
`cat > ~/.config/pipewire/pipewire-pulse.conf.d/99-qbz-bitperfect.conf << 'EOF'`, `cat > ~/.config/pipewire/pipewire-pulse.conf.d/${fileName} << 'EOF'`,
'# QBZ DAC Setup - Per-App Bit-Perfect', '# QBZ DAC Setup - Per-App Bit-Perfect',
'pulse.rules = [', 'pulse.rules = [',
rules, rules,
@@ -263,6 +264,16 @@
]; ];
} }
// Get created config file paths for summary
function getCreatedConfigPaths(): string[] {
const name = dacNodeName ? dacShortName() : null;
return [
`~/.config/pipewire/pipewire.conf.d/${name ? `99-qbz-dac-${name}.conf` : '99-qbz-dac.conf'}`,
`~/.config/pipewire/pipewire-pulse.conf.d/${name ? `99-qbz-bitperfect-${name}.conf` : '99-qbz-bitperfect.conf'}`,
`~/.config/wireplumber/wireplumber.conf.d/${name ? `99-qbz-dac-${name}.conf` : '99-qbz-dac.conf'}`
];
}
// Generate WirePlumber config with user's DAC node name // Generate WirePlumber config with user's DAC node name
function generateWireplumberConfig(): string[] { function generateWireplumberConfig(): string[] {
const rates = Array.from(selectedSampleRates).sort((a, b) => a - b); const rates = Array.from(selectedSampleRates).sort((a, b) => a - b);
@@ -633,12 +644,19 @@
<div class="done-content"> <div class="done-content">
<CheckCircle size={64} class="done-icon" /> <CheckCircle size={64} class="done-icon" />
{#if dacCapabilities?.description || dacNodeName}
<div class="done-dac-info">
<span class="done-dac-label">{$t('dacWizard.done.configuredFor')}</span>
<span class="done-dac-name">{dacCapabilities?.description || dacShortName()}</span>
</div>
{/if}
<div class="done-summary"> <div class="done-summary">
<h4>{$t('dacWizard.done.summary')}</h4> <h4>{$t('dacWizard.done.summary')}</h4>
<ul class="config-list"> <ul class="config-list">
<li><code>~/.config/pipewire/pipewire.conf.d/99-qbz-dac.conf</code></li> {#each getCreatedConfigPaths() as path}
<li><code>~/.config/pipewire/pipewire-pulse.conf.d/99-qbz-bitperfect.conf</code></li> <li><code>{path}</code></li>
<li><code>~/.config/wireplumber/wireplumber.conf.d/99-qbz-dac.conf</code></li> {/each}
</ul> </ul>
</div> </div>
</div> </div>
@@ -1157,6 +1175,24 @@
color: var(--accent-primary); color: var(--accent-primary);
} }
.done-dac-info {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
}
.done-dac-label {
font-size: 13px;
color: var(--text-muted);
}
.done-dac-name {
font-size: 18px;
font-weight: 600;
color: var(--text-primary);
}
.done-summary { .done-summary {
text-align: center; text-align: center;
} }
+1
View File
@@ -1065,6 +1065,7 @@
"title": "Einrichtung abgeschlossen", "title": "Einrichtung abgeschlossen",
"subtitle": "Ihr DAC ist für Bit-Perfect-Wiedergabe konfiguriert.", "subtitle": "Ihr DAC ist für Bit-Perfect-Wiedergabe konfiguriert.",
"summary": "Erstellte Konfigurationen:", "summary": "Erstellte Konfigurationen:",
"configuredFor": "Konfiguriert für:",
"close": "Schließen" "close": "Schließen"
}, },
"error": { "error": {
+1
View File
@@ -1123,6 +1123,7 @@
"done": { "done": {
"title": "Setup Complete", "title": "Setup Complete",
"subtitle": "Your DAC is configured for bit-perfect playback.", "subtitle": "Your DAC is configured for bit-perfect playback.",
"configuredFor": "Configured for:",
"summary": "Created configs:", "summary": "Created configs:",
"close": "Close" "close": "Close"
}, },
+1
View File
@@ -1123,6 +1123,7 @@
"done": { "done": {
"title": "Configuración Completa", "title": "Configuración Completa",
"subtitle": "Tu DAC está configurado para reproducción bit-perfect.", "subtitle": "Tu DAC está configurado para reproducción bit-perfect.",
"configuredFor": "Configurado para:",
"summary": "Configs creados:", "summary": "Configs creados:",
"close": "Cerrar" "close": "Cerrar"
}, },
+1
View File
@@ -1064,6 +1064,7 @@
"done": { "done": {
"title": "Configuration terminée", "title": "Configuration terminée",
"subtitle": "Votre DAC est configuré pour la lecture bit-perfect.", "subtitle": "Votre DAC est configuré pour la lecture bit-perfect.",
"configuredFor": "Configuré pour :",
"summary": "Configurations créées :", "summary": "Configurations créées :",
"close": "Fermer" "close": "Fermer"
}, },