Stage 385 / v0.51.92 — Release BP — 7-PR full sweep batch#2570
Merged
Conversation
Adds a reload button to the app titlebar visible only in PWA standalone
or fullscreen mode, and a pull-to-refresh gesture on the messages container
that smooth-scrolls to the top before activating.
The reload button sits next to the message count label and provides a
one-tap refresh for users who installed the WebUI as a home-screen app
where browser navigation controls are unavailable.
The pull-to-refresh gesture detects downward drag at the top of the
message list, shows a visual indicator ('Pull to refresh' / 'Release to refresh'),
and reloads on release past the 80px threshold. When triggered mid-conversation,
it smooth-scrolls to the top first.
…s probe fails When an anonymous custom endpoint (bare base_url, not a named custom_providers[] entry) fails its /v1/models probe, the provider group was silently dropped from the model picker entirely. This made the endpoint unusable even when /v1/chat/completions would work fine. The fix adds an elif branch: if pid == 'custom', a cfg_base_url is configured, but no models were returned by the probe, the group is still added with an empty model list. Users can then select the Custom group and type a model ID manually in the picker's free-form input. Closes #2542.
# Conflicts: # CHANGELOG.md
# Conflicts: # CHANGELOG.md
# Conflicts: # CHANGELOG.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stage 385 / v0.51.92 — Release BP — 7-PR full sweep batch
Seven contributor PRs across runtime adapter docs, workspace tree polish, project move UX, compression handoff metadata, Grok OAuth catalog, anonymous custom endpoint picker fallback, and PWA-standalone affordances.
PRs in this batch
Fixed
.file-tree-toggle-placeholderthat reserves the same 10px slot._allSessionscache when the project picker moves a session; previously only the shallow sidebar row copy was mutated, so the next render reflected the move only after the next/api/sessionspoll.compressedSSE event (old_session_id+new_session_id/continuation_session_id) so the active browser stream keeps its completion card after the backend rotates the session id. Listener stamped with a defensive widening (see followup Portability #1 below).xai-oauthto the WebUI provider catalog so Grok OAuth accounts authenticated via the Hermes CLI appear in Settings → Providers and the/api/modelspicker./v1/modelsprobe fails; users can type a model id manually.Added
@media (display-mode: standalone), (display-mode: fullscreen). Invisible to browser users. 4-viewport screenshots (390/1280/1440/1920, light/dark, hover/idle) included underdocs/pr-media/2548/.Documentation
/api/goaladapter routing from the still-stagedqueue_message(...), and warns against adding a server-side queue endpoint just for adapter symmetry.Verification
Pre-Opus 7-point gate — green
ast.parse, merge markers, CHANGELOG TBD placeholders, CJK escapes, Docker surface, concurrent primitives — all clean.Tests
5985 passed, 6 skipped, 3 xpassed, 8 subtests passed in 127.84sbaseline; re-run after followup5985 passed in 114.40s(+16 tests vs v0.51.91).Opus advisor — GO-WITH-FOLLOWUP (one applied inline, one filed)
Verified each of five self-verify concerns with file:line citations:
fix: surface auto-compression handoff #2567 compression session-id continuity —
put('compressed', …)writes to the live SSE queue but is NOT journaled today, so a PWA pageshow reload after rotation simply misses the event entirely. TheeventSid !== activeSidguard was moot because the event never reached late-attached browsers. Followup applied inline: widened thecompressedlistener atstatic/messages.js:1813to also acceptd.new_session_id === activeSidandd.continuation_session_id === activeSid, so the listener is robust if/when this event is added to journal replay. Updated two source-string tests (test_auto_compression_card.py:225,237) to match the new guard.fix: add Grok OAuth provider catalog support #2568 + fix(config): keep anonymous custom endpoints in picker when /v1/models probe fails #2550 composition on api/config.py — Clean.
elif pid == "custom" and cfg_base_url:(api/config.py:3859) is strictly gated onpid == "custom"; xai-oauth uses its own static fallback path and never enters this branch. ✅feat(ui): add PWA standalone reload button and pull-to-refresh gesture #2548 PWA pull-to-refresh — Acceptable.
static/ui.js:1921runtime gate covers iOSnavigator.standalone+ media-query for Android.el.scrollTop>0exit-on-touchstart + 80px threshold + smooth-scroll-to-top fallback is sound..messageshasoverscroll-behavior-y:containwhich suppresses iOS rubber-band where PWA standalone is supported. Indicator overlays the top viaposition:absolute; top:0; transform:translateY(-100%)→0— matches standard Twitter/Reddit PTR convention. Note: not device-tested on iOS, inferred from spec.fix: refresh project move cache #2561
_allSessionscache mutation — Safe._allSessionsentries are plain mutable JSON-parsed objects, no identity-based memoization observed. Other write paths use shallow rebuild as convention only, not requirement. ✅fix: align workspace tree file icons #2563 placeholder width — Works as shipped. Both
.file-tree-toggleand.file-tree-toggle-placeholderuse literal10px. Followup filed as separate issue for optional polish: extract to--file-tree-toggle-width: 10pxat:root.Triage actions taken this sweep (not in the batch)
_pending/_gateway_queuespeek AND addsapprove_session("default", k)side-channel as a separate concern with wider session-isolation implications) + CI red (ModuleNotFoundError: No module named 'tools') + Spanish docstrings throughout. Closed with detailed split-into-two-PRs guidance.Notes on CHANGELOG mechanics
The resolver script auto-merged five new contributor entries into the
[Unreleased]block, but their attribution lines and ordering needed cleanup before stamping. Resolved by rebuilding the v0.51.92 section structure inline with proper "Fixed / Added / Documentation" subheadings.