Skip to content

Release v0.50.290 — 5-PR batch (login cache + sidebar UX + workspace dropdown polish)#1593

Merged
nesquena-hermes merged 14 commits intomasterfrom
stage-290
May 4, 2026
Merged

Release v0.50.290 — 5-PR batch (login cache + sidebar UX + workspace dropdown polish)#1593
nesquena-hermes merged 14 commits intomasterfrom
stage-290

Conversation

@nesquena-hermes
Copy link
Copy Markdown
Collaborator

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 /login and /static/login.js (network-only); navigation requests are network-first; cache-first scoped to explicit SHELL_ASSETS allowlist (drops ./ from precache). static/login.js versioned via ?v=<WEBUI_VERSION>. Closes the auth-stuck-in-cache class — a stale cached login.js was making valid passwords fail until manual cache clear (especially confusing for PWA installs).

#1590 by @Michaelyklam — Hot-apply compact tool activity (6 LOC)

_autosavePreferencesSettings now captures the POST response. When simplified_tool_calling is in the autosaved payload, hot-apply: update window._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/sessions polling: new upsertActiveSessionForLocalTurn() helper writes the cached sidebar list directly, three optimistic-upsert passes in send() (before /api/chat/start, after rename, after stream_id known), and Session.compact() exposes has_pending_user_message: bool so 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_at in _run, calculates duration at completion, persists as _turnDuration on the assistant message dict (so reloads keep the display), includes in streaming done SSE 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_at so 0/None/missing all fall back to time.time() rather than yielding wall-clock-since-epoch.

#1464 by @JKJameson — Workspace dropdown sort+search+chip-sync (MAINTAINER-AUGMENTED)

  • Workspace chip syncs immediately on chat switch via syncTopbar() after S.session = data.session (mirrors model-chip handling).
  • Search input filters dropdown by name or path in real-time. Alphabetical sort frontend-only via localeCompare — backend load_workspaces() preserves user-defined order so drag-to-reorder feat(workspace): drag-to-reorder workspaces in the workspace list #492 keeps working.
  • Class-based CSS, 9-locale i18n parity for ws_search_placeholder and ws_no_results.
  • Maintainer in-stage actions:
    • Rebased onto current master (was 124 commits behind v0.50.275).
    • Flipped inverted ternary on 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).
    • Added tests/test_issue1464_workspace_dropdown_filter.py to lock the visibility relationship as mirror-image opt/noResults ternaries.
    • Co-authored-by: Josh Jameson preserved.

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

4094 → 4111 passing (+17 net). 0 regressions. Full suite in 107s.

Pre-release verification

  • All 5 PRs' regression tests pass standalone.
  • Browser API sanity: 11/11 endpoints verified.
  • All modified JS files pass node -c.
  • Stage diff scanned for merge-conflict markers: none.
  • Live UX verification on test server (fix: sync workspace chip immediately on chat switch + searchable sorted dropdown #1464): seeded 10-workspace test environment, drove the composer workspace chip → dropdown opens with search input, alphabetical sort, filtering "alp" narrows to single alpha row with no spurious noResults message, filtering "zzznomatch" shows clean "No workspaces found" empty-state. Vision-confirmed.
  • Opus advisor: SHIP AS-IS — no MUST-FIX. All 5 verification questions check out. One ≤2-LOC defensive SHOULD-FIX absorbed in-release per the reviewer-flagged-fix-in-release-not-followup policy.

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.

Michaelyklam and others added 14 commits May 3, 2026 18:18
…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).
…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.
@nesquena-hermes nesquena-hermes merged commit 4559163 into master May 4, 2026
3 checks passed
@nesquena-hermes nesquena-hermes deleted the stage-290 branch May 4, 2026 05:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants