Repository navigation
docs: sweep markdown for v0.36 - #122
Merged
Merged
Conversation
roadhero
added a commit
to fox-in-the-box-ai/hermes-webui
that referenced
this pull request
May 6, 2026
… on late enable (#10) Two related FITB#122 bugs in the local-fallback UX surface: nesquena#122 #6 — Reactive failover modal never appears on provider failure The frontend ELIGIBLE_TYPES set was {stream_interrupted, rate_limit, no_response, unknown}. The original comment said auth/quota errors are excluded because "local model can't fix the user's wrong key / empty wallet." That misread the value: local fallback REPLACES broken cloud entirely so the user can keep working, regardless of why cloud broke. Auth and quota are exactly when the fallback offer makes sense. Backend (api/streaming.py) actually emits these types: 'auth_mismatch', 'quota_exhausted', 'stream_interrupted', 'no_response'. The previous 'rate_limit' entry was dead — backend never emits it. Reconciled with the real backend vocabulary. nesquena#122 #7 — Recovery banner never appears after enabling fallback startRecoveryPolling() was only called from boot, gated on the /api/local-fallback/status check at page load. The most common user flow — provider failure → enable fallback in Settings → correct API key → expect banner — never started polling, because at page-load fallback was off. Fix: panels.js's onLocalFallbackToggle now dispatches a 'fitb:fallback-enabled' window event after a successful enable, fallback-polish.js's boot listens for it and calls startRecoveryPolling. The function is already idempotent (returns early if the timer is set), so this is safe alongside the existing boot-time call for the steady-state case.
roadhero
added a commit
to fox-in-the-box-ai/hermes-webui
that referenced
this pull request
May 6, 2026
… (FITB#129c+d)
Frontend half of the v0.5.2 auto-failover engine. Combines #129c (badge +
truncation handlers) and #129d (download confirm modal for unprepared
fallback) into a single PR per the v0.5.2 ship-together decision — avoids
the regression window where #129b suppresses apperror but no UI handles
the new event types.
Three new SSE event handlers in messages.js:
provider_switched — append inline system note "Switched to
<model> — re-send your message to use the
local model" + composer status (8s) +
clear busy flag.
partial_response_truncated — clear in-progress assistant row +
accumulated stream text. Triggered by
backend when it wipes a partial response
before failing over to local.
local_fallback_unprepared — dispatch fitb:local-unprepared window
event for fallback-polish.js to render
the download confirm modal.
One new modal in fallback-polish.js:
showUnpreparedDownloadModal(detail)
- Title: "Download local model to keep working"
- Body: explains the cloud failure reason + offers to download
Phi-4-mini (~2.5 GB)
- "Download & continue" button → /api/local-fallback/enable kicks
off the download → polls /status every 2.5s → renders progress
"Downloading… X / Y MB (Z%)" → on ready, calls /api/local-fallback/activate
(#129a) → success message → auto-dismiss
- "Not now" → sessionStorage.fitb.local_unprepared_dismissed prevents
re-prompt this session
Modal coordination: _modalOpen flag (shared with nesquena#122 reactive modal,
No auto-retry of the in-flight prompt for v0.5.2 — same UX as nesquena#128:
user re-sends manually after seeing the swap. Auto-retry deferred.
Branched off feat/129b-failover-loop. Will conflict with nesquena#128's listener
block at merge — manual resolution = keep both window.addEventListener
calls (they listen for different events).
roadhero
added a commit
to fox-in-the-box-ai/hermes-webui
that referenced
this pull request
May 6, 2026
… (FITB#129c+d) (#14) Frontend half of the v0.5.2 auto-failover engine. Combines #129c (badge + truncation handlers) and #129d (download confirm modal for unprepared fallback) into a single PR per the v0.5.2 ship-together decision — avoids the regression window where #129b suppresses apperror but no UI handles the new event types. Three new SSE event handlers in messages.js: provider_switched — append inline system note "Switched to <model> — re-send your message to use the local model" + composer status (8s) + clear busy flag. partial_response_truncated — clear in-progress assistant row + accumulated stream text. Triggered by backend when it wipes a partial response before failing over to local. local_fallback_unprepared — dispatch fitb:local-unprepared window event for fallback-polish.js to render the download confirm modal. One new modal in fallback-polish.js: showUnpreparedDownloadModal(detail) - Title: "Download local model to keep working" - Body: explains the cloud failure reason + offers to download Phi-4-mini (~2.5 GB) - "Download & continue" button → /api/local-fallback/enable kicks off the download → polls /status every 2.5s → renders progress "Downloading… X / Y MB (Z%)" → on ready, calls /api/local-fallback/activate (#129a) → success message → auto-dismiss - "Not now" → sessionStorage.fitb.local_unprepared_dismissed prevents re-prompt this session Modal coordination: _modalOpen flag (shared with nesquena#122 reactive modal, No auto-retry of the in-flight prompt for v0.5.2 — same UX as nesquena#128: user re-sends manually after seeing the swap. Auto-retry deferred. Branched off feat/129b-failover-loop. Will conflict with nesquena#128's listener block at merge — manual resolution = keep both window.addEventListener calls (they listen for different events).
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.
Docs-only sweep to keep the repo markdown current for v0.36 and 433 tests.
Updated:
Notes: