Extend support bundle with comprehensive diagnostics

Add 10 new diagnostic sections to _collect_support_info(): printer
connectivity/firmware, integration status (Spoolman, MQTT, HA),
network interfaces (subnets only), Python package versions, database
health, Docker environment, WebSocket connections, and log file info.
All data properly anonymized — no IPs, names, or serials included.
This commit is contained in:
maziggy
2026-02-09 10:19:48 +01:00
parent 48174d3a08
commit 8449e1c2e2
11 changed files with 738 additions and 7 deletions
@@ -281,6 +281,28 @@ describe('SystemInfoPage', () => {
expect(progressBars.length).toBeGreaterThan(0);
});
it('displays extended privacy disclosure items', async () => {
(api.getSystemInfo as ReturnType<typeof vi.fn>).mockResolvedValue(mockSystemInfo);
render(<SystemInfoPage />);
await waitFor(() => {
expect(screen.getByText("What's in the support bundle?")).toBeInTheDocument();
});
// Original items
expect(screen.getByText(/App version and debug mode/)).toBeInTheDocument();
expect(screen.getByText(/Debug logs \(sanitized\)/)).toBeInTheDocument();
// New diagnostic items
expect(screen.getByText(/Printer connectivity and firmware versions/)).toBeInTheDocument();
expect(screen.getByText(/Integration status \(Spoolman, MQTT, HA\)/)).toBeInTheDocument();
expect(screen.getByText(/Network interfaces \(subnets only\)/)).toBeInTheDocument();
expect(screen.getByText(/Python package versions/)).toBeInTheDocument();
expect(screen.getByText(/Database health checks/)).toBeInTheDocument();
expect(screen.getByText(/Docker environment details/)).toBeInTheDocument();
});
it('applies danger color for critical disk usage', async () => {
const criticalDiskUsage = {
...mockSystemInfo,
+6
View File
@@ -1809,6 +1809,12 @@ export default {
support: {
debugLoggingActive: 'Debug-Protokollierung ist aktiv',
manageLogs: 'Verwalten',
collectItem7: 'Drucker-Verbindungsstatus und Firmware-Versionen',
collectItem8: 'Integrationsstatus (Spoolman, MQTT, HA)',
collectItem9: 'Netzwerkschnittstellen (nur Subnetze)',
collectItem10: 'Python-Paketversionen',
collectItem11: 'Datenbankzustandsprüfungen',
collectItem12: 'Docker-Umgebungsdetails',
},
// File manager
+6
View File
@@ -1809,6 +1809,12 @@ export default {
support: {
debugLoggingActive: 'Debug logging is active',
manageLogs: 'Manage',
collectItem7: 'Printer connectivity and firmware versions',
collectItem8: 'Integration status (Spoolman, MQTT, HA)',
collectItem9: 'Network interfaces (subnets only)',
collectItem10: 'Python package versions',
collectItem11: 'Database health checks',
collectItem12: 'Docker environment details',
},
// File manager
+6
View File
@@ -2526,5 +2526,11 @@ export default {
support: {
debugLoggingActive: 'デバッグログが有効です',
manageLogs: '管理',
collectItem7: 'プリンター接続状態とファームウェアバージョン',
collectItem8: '連携状態(Spoolman、MQTT、HA)',
collectItem9: 'ネットワークインターフェース(サブネットのみ)',
collectItem10: 'Pythonパッケージバージョン',
collectItem11: 'データベース健全性チェック',
collectItem12: 'Docker環境の詳細',
},
};
+6
View File
@@ -324,6 +324,12 @@ export function SystemInfoPage() {
<li>• {t('support.collectItem4', 'Printer models and nozzle counts')}</li>
<li>• {t('support.collectItem5', 'Non-sensitive settings (themes, formats)')}</li>
<li>• {t('support.collectItem6', 'Debug logs (sanitized)')}</li>
<li>• {t('support.collectItem7', 'Printer connectivity and firmware versions')}</li>
<li>• {t('support.collectItem8', 'Integration status (Spoolman, MQTT, HA)')}</li>
<li>• {t('support.collectItem9', 'Network interfaces (subnets only)')}</li>
<li>• {t('support.collectItem10', 'Python package versions')}</li>
<li>• {t('support.collectItem11', 'Database health checks')}</li>
<li>• {t('support.collectItem12', 'Docker environment details')}</li>
</ul>
</div>
<div>