fix: offer recovery for blank desktop windows

React render failures now show a localized reload page, and renderer crashes offer native reload confirmation. Record renderer and load failures in existing diagnostics without automatic retry loops. Reload may lose unsaved input; the intermittent failure cause remains unconfirmed.

Release note: Recover from desktop rendering failures using a visible Reload action instead of being left without a recovery entry point.
This commit is contained in:
mesalogo
2026-09-15 08:07:08 +08:00
parent d4f1668c9b
commit b755951ecd
10 changed files with 339 additions and 14 deletions
+16
View File
@@ -34,6 +34,22 @@ afterEach(async () => {
})
describe('DesktopDiagnostics', () => {
it('persists renderer failure codes without storing raw error content', async () => {
const diagnostics = new DesktopDiagnostics(await temporaryDirectory())
for (const code of ['desktop.renderer.gone', 'desktop.renderer.load-failed']) {
await diagnostics.recordFailure({
component: 'desktop', stage: 'renderer', code,
error: new Error('private renderer details')
})
}
const records = await diagnostics.readRecent()
expect(records.map(record => record.code)).toEqual([
'desktop.renderer.gone', 'desktop.renderer.load-failed'
])
expect(records.every(record => record.message === 'Desktop renderer failed')).toBe(true)
expect(JSON.stringify(records)).not.toContain('private renderer details')
await diagnostics.dispose()
})
it('rotates within fixed file and byte bounds', async () => {
const directory = await temporaryDirectory()
let sequence = 0