Release v0.50.290 — 5-PR batch (login cache + sidebar UX + workspace dropdown polish)#1593
Merged
nesquena-hermes merged 14 commits intomasterfrom May 4, 2026
Merged
Release v0.50.290 — 5-PR batch (login cache + sidebar UX + workspace dropdown polish)#1593nesquena-hermes merged 14 commits intomasterfrom
nesquena-hermes merged 14 commits intomasterfrom
Conversation
…ace dropdown Co-authored-by: Josh Jameson <[email protected]> Maintainer-augmented: - Flip noResults ternary (visible?'none':'' instead of visible?'':'none') — the contributor's first-push bug rendered 'No workspaces found' alongside valid filtered results. Verified on contributor's own screenshot in PR. - Add tests/test_issue1464_workspace_dropdown_filter.py to lock the visibility relationship (mirror-image opt/noResults ternaries) so future edits cannot silently re-invert. - Rebased onto master (was 124 commits behind v0.50.275).
…ck-in-cache class) by @Michaelyklam
…Jameson (maintainer-augmented: ternary fix + regression test)
… — 4094→4111 tests - #1586 (Michaelyklam): login asset SW cache exemption - #1590 (Michaelyklam): hot-apply compact tool activity setting - #1591 (Michaelyklam): first-turn sidebar visibility (optimistic upserts) - #1592 (Michaelyklam): turn duration display (Done in 1m 12s) + Opus follow-up (truthy-check on _pending_started_at) - #1464 (JKJameson, maintainer-augmented): workspace dropdown sort+search+chip-sync (rebased + ternary fix + regression test) Maintainer-side test fixes in stage: - tests/test_465_session_branching.py: widen compact() search window 1500→3000 - tests/test_regressions.py: anchor on api('/api/chat/start' instead of comment line Browser API sanity: 11/11 passed. Live UX verification: vision-confirmed dropdown sort+search+empty-state on test server. Opus advisor: SHIP AS-IS.
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.
Release v0.50.290 — 5-PR batch (login cache + sidebar UX + workspace dropdown polish)
5 PRs. 4 from @Michaelyklam (login SW cache, compact hot-apply, first-turn visibility, turn duration display) + 1 maintainer-pickup of @JKJameson's workspace dropdown PR. Closes the auth-stuck-in-cache class, three real UX gaps, and the workspace-chip-stale-on-chat-switch race.
What ships
#1586 by @Michaelyklam — Login asset SW cache exemption
Service worker now bypasses
/loginand/static/login.js(network-only); navigation requests are network-first; cache-first scoped to explicitSHELL_ASSETSallowlist (drops./from precache).static/login.jsversioned via?v=<WEBUI_VERSION>. Closes the auth-stuck-in-cache class — a stale cachedlogin.jswas making valid passwords fail until manual cache clear (especially confusing for PWA installs).#1590 by @Michaelyklam — Hot-apply compact tool activity (6 LOC)
_autosavePreferencesSettingsnow captures the POST response. Whensimplified_tool_callingis in the autosaved payload, hot-apply: updatewindow._simplifiedToolCalling, clear render cache, re-render messages. Settings checkboxes that silently waited for a refresh felt broken — fixed.#1591 by @Michaelyklam — First-turn sidebar visibility
Three pieces fix the race between local first-message render and
/api/sessionspolling: newupsertActiveSessionForLocalTurn()helper writes the cached sidebar list directly, three optimistic-upsert passes insend()(before /api/chat/start, after rename, after stream_id known), andSession.compact()exposeshas_pending_user_message: boolso the empty-Untitled filter respects pending sessions. Users can now switch into a just-started conversation and inspect live tool calls before the agent has even responded.#1592 by @Michaelyklam — Turn duration display ("Done in 1m 12s")
Backend captures
pending_started_atin_run, calculates duration at completion, persists as_turnDurationon the assistant message dict (so reloads keep the display), includes in streamingdoneSSE payload. Frontend renders as compact Activity row chip and expanded-mode footer chip. Opus follow-up applied (≤2 LOC, defensive): truthy-check on_pending_started_atso 0/None/missing all fall back totime.time()rather than yielding wall-clock-since-epoch.#1464 by @JKJameson — Workspace dropdown sort+search+chip-sync (MAINTAINER-AUGMENTED)
syncTopbar()afterS.session = data.session(mirrors model-chip handling).localeCompare— backendload_workspaces()preserves user-defined order so drag-to-reorder feat(workspace): drag-to-reorder workspaces in the workspace list #492 keeps working.ws_search_placeholderandws_no_results.panels.js:1683(visible?'':'none'→visible?'none':'') — the contributor's own PR-thread screenshot demonstrated the bug live (rendered "No workspaces found" alongside valid filtered results).tests/test_issue1464_workspace_dropdown_filter.pyto lock the visibility relationship as mirror-image opt/noResults ternaries.Maintainer-side test fixes in stage (auto-rebase + auto-fix policy)
Two stale source-string assertions broken by #1591's structural changes — both real test-side fixes:
tests/test_465_session_branching.py::test_session_compact_includes_parent— widened search window 1500→3000 chars afterdef compact(self,because fix: show first-turn chats in sidebar immediately #1591 inserted ahas_pending_user_messageblock at the top.tests/test_regressions.py::test_send_uses_session_model_as_authoritative_source— anchored onapi('/api/chat/start'instead of/api/chat/startbecause fix: show first-turn chats in sidebar immediately #1591 introduced earlier comment occurrences.Tests
4094 → 4111 passing (+17 net). 0 regressions. Full suite in 107s.
Pre-release verification
node -c.alpharow with no spurious noResults message, filtering "zzznomatch" shows clean "No workspaces found" empty-state. Vision-confirmed.Known follow-up (deferred, non-blocking)
Thanks to @Michaelyklam for the 4-PR contributor burst (all well-considered, with structural regression tests, addressing real UX gaps), and to @JKJameson for the workspace dropdown design + diagnosis.