Repository navigation
Use native Save As for desktop palette exports - #108
Conversation
- Retry partial native writes and reject stalled writes with localized feedback - Add regressions for saved content, cancellation, and failure cleanup - Prevent automatic feedback dismissal from masking recovery failures - Update the unreleased changelog
Automated review and fixesPushed Findings
Verification: E2E Fixed by GPT 6.1 Sol |
Desktop palette export currently uses a Blob anchor download. On the tested macOS 27.0.1 M6 installation this twice left the released app inaccessible while its main thread waited in WebKit's download destination / sandbox extension path.
Route .kpal exports through the existing saveBlobToFile helper: Tauri uses native Save As and the filesystem plugin, while the web app retains browser downloads. Cancellation is silent, errors show localized feedback, and a later successful save clears that feedback. Add translations and localized guide notes.
Fixes #104.
Validation:
npm run lint: passed.npm run build: passed (includes TypeScript checks).npm test: 860 passed, 1 skipped, 0 failed.npm run test:docs: 3 passed.npx playwright test tests/e2e/palette-desktop-save.spec.ts tests/e2e/profile-desktop-save.spec.ts tests/e2e/palette-management.spec.ts: 3 passed.git diff --check: passed.The regression covers real web downloads plus mocked Tauri dialog/write/close IPC, cancellation, failure/recovery, serialized names and disabled colors. The patched native binary was not rebuilt: the QA brief requires using release DMGs and forbids a local desktop build. A Downloads/protected-location factor may contribute to the observed native hang; this change avoids that browser-download path.
Additional engine validation:
PLAYWRIGHT_BROWSERS_PATH=/Users/vycdev/Desktop/kromacut-e2e/.playwright npx playwright test --config ../perf/palette-webkit.config.tspassed (1 test). The temporary external config runs this PR'spalette-desktop-save.spec.tsin WebKit against its production preview; it does not change test behavior.Repository target note: this feature branch was cut from latest main as requested by the QA brief. The repository only permits develop→main PRs, so this PR targets develop (currently the same source tree as main). Earlier
Require develop into mainfailures are historical branch-policy checks from the initial target, not code/test failures; GitHub may still show them on this head.