* Fix ten reported issues and vendor Hermes Agent as an API reference
Closes#693, #695, #699, #700, #701, #703, #708, #712, #716, #723.
- Hermes (#693, #699): load transcripts over REST even when session.resume
fails, page at 200 messages and shrink on oversized responses, and show
distinct errors for too-large, not-found, and RPC failures. Add the
hermes-src submodule (NousResearch/hermes-agent v2026.9.11) as the RPC and
REST contract reference.
- Server version banner (#695): dismissible, remembered per server and version.
- Model selector (#700): overflow fade and selection tint use the card surface.
- OpenRouter (#701): skip Batch API-only ":batch" model variants.
- Persisted chat content (#703): store plain output text instead of rendered
<details> markup when structured output exists, matching the web client.
- Direct connections (#708): probes report their real failure instead of a
generic message, the Open WebUI logout fence no longer blocks Direct setup,
and 401/403 under the api-key header mode hints at Bearer auth.
- Reasoning effort (#712): per-server, per-model user picks override the
model's configured default and are sent explicitly in the request.
- Voice calls (#716): stop the record plugin from clearing the Android
communication device and verify the loudspeaker route before reporting it.
- Voice mode (#723): finalize speech on the responseDone marker.
- Add the five new strings to every locale.
* Address review: keep incomplete-clear block, pass effort on sends, keep all dismissals
- Direct profiles stay hidden and unusable after an incomplete full app-data
clear, in memory and across restarts, until the logout fence is cleared by a
completed cleanup or a new authenticated session. Ordinary failed sign-outs
still do not block Direct setup.
- The primary Open WebUI send path now passes the resolved per-model reasoning
effort like regeneration and queued completions already did.
- Server version warning dismissals are stored as a bounded set so dismissing
one server no longer forgets another.
* Address review: release rejected speaker device, speak settled text on responseDone
- When Android accepts the built-in speaker but the read-back disagrees,
clear that selection before the legacy setSpeakerphoneOn fallback, which is
ignored while a communication device stays selected.
- Voice mode takes the final text from the message once responseDone is set;
the streaming content provider can lag behind the flushed message.
* Address review: await the incomplete-clear restart marker before returning
The marker is written through the app-data-clear barrier with a checked write
and awaited by the clear coordinator, so a process death right after an
incomplete clear cannot reload the surviving Direct profiles on restart.
* Address review: arm the restart fence before the wipe and propagate marker failures
The incomplete-clear marker is now armed before any data is wiped, disarmed
only when the clear completes or yields ownership, re-asserted on an
incomplete outcome, and a failed checked write aborts the clear instead of
being swallowed. The in-memory block is unchanged.
* Do not raise an error banner for response.incomplete
Open WebUI forwards the provider's `response.incomplete` event over the
socket but treats it as a no-op: the output is kept and the turn still ends
with a normal `done`. Raising an error on that event flashed "The response
stopped before it was complete" under the answer until `done` cleared it.
`response.failed` still surfaces the provider error.
* feat: add Apple model backends and context compaction
* Add Apple on-device and PCC direct providers
* dev: show all onboarding backends in debug builds
* Fix short response pin-to-top settlement
* Polish Direct Connections context settings
* Fix onboarding selection row spacing
* Address PR review feedback
* Harden context and native request bounds
* Strengthen compaction regression coverage
* Close final context and image review gaps
* Validate structured array bounds
- Replace 'Archive/' entry in .gitignore with 'app-store-screenshots/' to exclude app store screenshot files.
- Update README to reflect changes in the first screenshot description for clarity and accuracy.
- Update binary screenshot files for improved visuals.
Updated the HTML structure for better semantic organization, including a new header and navigation layout. Enhanced the CSS for improved styling and responsiveness, replacing outdated elements with modern design practices. Streamlined JavaScript for mobile menu functionality and smooth scrolling effects, ensuring a more polished user experience.
- Changed asset paths for Google Play and App Store badges to point to the correct directory.
- Updated the demo GIF path to reflect the new location in the screenshots folder.
- Modified the build command in the setup instructions to use 'dart run' instead of 'flutter pub run' for better compatibility.
- Removed outdated demo GIF and store badge images that are no longer needed.
- Updated image paths in README to reflect new locations.
- Removed outdated localization guidelines and related documentation files.
- Deleted unused metadata files for app descriptions and screenshots.
- Replaced `flutter_highlight` with `gpt_markdown` in `pubspec.yaml`.
- Updated `pubspec.lock` to reflect new dependencies and removed obsolete ones.
- Deleted outdated Riverpod migration documentation files to streamline the project.
- Added new configurations for GptMarkdown styling in `markdown_config.dart` and updated the streaming markdown widget implementation.