v0.4.0 — i18n + zoom
The GUI now speaks four languages and can zoom.
What's new
Localization (S41–S43)
The desktop GUI is fully translated to German, French, and Spanish, with English remaining the canonical source. A small four-button locale picker (EN / DE / FR / ES) lives in the welcome-screen footer; selection persists to localStorage and is restored on next launch.
The picker is deliberately welcome-screen-only — once you pick a language you never see it again mid-flow. Brand terms (F13, Ollama, Docker, docker compose, ollama serve, ollama pull, mock) stay in English across all locales. The shell wizard's terminal output is not translated — that's the documented operator surface.
Catalog files at gui/src/lib/i18n/<locale>.json keyed by dotted message ids. Key parity is enforced by a vitest fixture, so a missing translation fails CI rather than silently falling back to English. 176 keys × 4 locales.
Zoom (S44)
Webview-level zoom for users on high-DPI displays:
| Action | Shortcut |
|---|---|
| Zoom in (max 2.0×) | Ctrl/Cmd + + (or =) |
| Zoom out (min 0.6×) | Ctrl/Cmd + − |
| Reset to 100% | Ctrl/Cmd + 0 |
A compact − / 100% / + stepper in Settings → Appearance does the same thing. The current factor persists to localStorage and is restored on next launch.
Implementation uses the CSS zoom property on the document root — works identically across all three Tauri webview backends (WKWebView / WebView2 / WebKitGTK) with no Rust code.
Phase mapping
This is Phase 9 of the PRD shipping in one consolidated release. Phase 10 (signed distributables — .dmg / .AppImage / .deb — and bundled-mode data paths) is now the next planned phase but unstarted.
Known loose ends carried forward
- HF5 — auto-regenerate broken stack on Start instead of forcing the user through the full Reconfigure wizard. Deferred to a v0.4.x patch when maintainer judgement is available on the UX shape.
Validated on
- macOS (Apple Silicon, manual smoke test of all four locales + zoom shortcuts + Settings stepper)
Linux runtime parity is from v0.3.0; no Phase 9 changes were Linux-specific.
Backpressure
shellcheck -S warning bin/* lib/*.sh— cleanbats tests/— 281/282 (the 1 fail is the same pre-existing local-Ollama-running flake)npm run check— cleannpm run test:unit— 378/378 (up from 299)cargo check— clean
Full Changelog: v0.3.2...v0.4.0