fix(onboarding): surface LocalAI download failures with retry notification (#271)

* fix(onboarding): surface LocalAI download failures with retry notification

Replace silent .catch(() => {}) in LocalAIStep with error reporting
that surfaces a dismissible portal-based error banner in Onboarding.tsx.
Both download failures are combined into a single notification with a
Retry button. Auto-dismisses after 10 seconds.

Closes #194

* fix(onboarding): add retry re-entry guard to prevent duplicate downloads

Address CodeRabbit review: guard retryDownload with a ref to prevent
overlapping concurrent download attempts on rapid Retry clicks. Uses
Promise.allSettled to reset the guard after both promises settle.

* docs(memory): document LocalAI download error handling and macOS Tahoe build workaround

- Add guidance on surfacing LocalAI download errors with an error banner in onboarding (#194).
- Detail build issues with `whisper-rs` on macOS Tahoe and provide a temporary patch workaround for Apple Silicon.
This commit is contained in:
Cyrus Gray
2026-04-02 20:35:15 +05:30
committed by GitHub
parent 42290d57f2
commit fe2102c513
+8
View File
@@ -57,6 +57,14 @@ Quick reference for anyone starting with Claude on this project. Updated by the
- **Patch is fragile** — Resets on `cargo clean`, crate version bump, or registry re-download. Deleting build cache alone (`target/debug/build/whisper-rs-sys-*`) is NOT enough — cmake regenerates with the same bad flags.
- **Correct fix** — Needs an upstream patch in `whisper-rs-sys` or a Cargo feature to opt out of `GGML_NATIVE` on Apple Silicon cross-builds.
## Build Blockers: macOS Tahoe + whisper-rs
- **`whisper-rs` breaks `cargo build` on macOS Tahoe (Apple Silicon)** — Added in main via `whisper-rs = "0.16"` (voice feature #178). Apple clang 21+ refuses `-mcpu=native` when `--target=arm64-apple-macosx` is also set. This is NOT fixable by updating CLT.
- **Root cause** — ggml cmake sets `GGML_NATIVE=ON` by default; the cmake crate appends `--target` to clang, triggering the incompatibility. Happens even with the latest toolchain.
- **Workaround** — Patch `~/.cargo/registry/src/index.crates.io-*/whisper-rs-sys-0.15.0/build.rs`: add `config.define("GGML_NATIVE", "OFF");` (for `target_os = "macos" && target_arch = "aarch64"`) just before the `config.build()` call.
- **Patch is fragile** — Resets on `cargo clean`, crate version bump, or registry re-download. Deleting build cache alone (`target/debug/build/whisper-rs-sys-*`) is NOT enough — cmake regenerates with the same bad flags.
- **Correct fix** — Needs an upstream patch in `whisper-rs-sys` or a Cargo feature to opt out of `GGML_NATIVE` on Apple Silicon cross-builds.
## Environment
- **Core sidecar port** — `7788` (default). Check with `lsof -i :7788`.