🚀 New Features
- Full-window first-run onboarding (/onboarding) with Welcome and a new model step so setup runs and downloads persist in the app and resume across relaunches.
- The first-run model step now offers three recommended models, then a Hugging Face section, each row showing a short tagline, size and approximate memory use so you can pick what fits this device.
- New media step to queue and download image/video models (e.g. Z-Image Turbo, LTX-2) with memory cautions and one-at-a-time media job execution.
- Cloud provider gallery now opens on OpenRouter by default and lists providers in the prototype order for faster provider selection.
- Permissions step simplified to only ask for notifications and microphone (with explanations) so setup requests fewer OS permissions.
- Handoff panel follows the onboarding downloads and shows when a model is ready ("X is ready · Available on this device") with Back to setup and Dismiss so you can continue setup or return to the app.
- The global download panel and onboarding download strip share a new, consistent compact layout (name + status line, percent, pause/resume/cancel and a thin progress hairline) for clearer download status.
- Finished model downloads and completed results now post system notifications unless the related page is on screen, ensuring you don’t miss completed work.
- LiteRT-LM integrated into the Hub: variants appear in Downloaded as separate rows, the LiteRT-LM installer and variant management run on desktop platforms, and Hub/engine pages describe LiteRT-LM choices inline.
🔧 Improvements & Fixes
- Interrupted downloads preserve their progress and reliably resume after a relaunch; Retry no longer resets progress to 0%.
- Selecting another model during setup cancels the first model's transfer before queuing the new one so late responses can’t settle the wrong job.
- First-run server handoff now matches the prototype: Start loads the model, running servers report their address/status correctly, and the handoff marks endpoint configured and setup finished.
- Server pages (Overview, Activity, Configuration, Remote access, HTTPS Proxy, Connections, Engine & model) now use the full page and the Server card shows Engine and Model consistently with readable names and quant badges.
- The onboarding runtime follows and manages the run's downloads, restarts jobs left running by a relaunch, selects the model into an empty composer, and serves it from the Local API Server after a server handoff.
- A deferred first send (message sent while a model downloads) now emits a single chat request event and pairs correctly with its response for analytics.
- Onboarding experiment: new installs are split into three cohorts (none, model_only, full) and the cohort is recorded in PostHog so product can compare outcomes.
- The app preserves the PostHog distinct_id across writes and factory resets so an install stays linked as one person for analytics and Sentry.
- One broken extension no longer blanks the whole window; extension imports are awaited and failures are logged per-extension so others continue to load.
- Model pickers, Hub and Downloads rows now show the model name once with quant/owner/source on a muted second line, and the download UI keys actions by variant so concurrent variant downloads display correctly.
- The app routes a served model id to the provider the Server page selected, and endpoint dialogs note when an endpoint model id is also a local model.
- Cloud key handling improved: keys are checked with the provider before being marked connected and clear invalid-key responses are surfaced with "Save anyway".
- Composer and drafts: each composer keeps its own unsent draft and a first background send keeps the approval mode/workspace it showed at send.
- Accessibility and layout fixes: progress values are passed to assistive tech, Activity stacks on narrow pages, sidebar folds on small windows, and various picker/toolbar/sidebar layout improvements.
- 30+ additional UI, stability and QA fixes across onboarding, Hub, server pages, downloads, and accessibility.
⚠️ Breaking Changes
- None.
🙏 Contributors
Thanks to @danyurkin, @Vect0rM, @Ooooze for their contributions to this release!