Skip to content

Feat/release nudge slice3b - #1150

Merged
venkat102 merged 7 commits into
developfrom
feat/release-nudge-slice3b
Sep 6, 2026
Merged

Feat/release nudge slice3b#1150
venkat102 merged 7 commits into
developfrom
feat/release-nudge-slice3b

Conversation

@venkat102

Copy link
Copy Markdown
Member

Summary

Pre-merge checklist

ℹ️ A red check only blocks the merge where the branch ruleset lists it as required.
Honoring this checklist is what keeps broken changes out of UAT. See
CONTRIBUTING.md.

  • CI is green — the tests check on this PR passes (never merge on ❌)
  • Branch is up to date with its base (develop, or version-N-hotfix for a backport)
  • New/changed behavior has tests (the coverage gate still passes)
  • I self-reviewed the diff
  • If the base is version-N: this is the release PR from version-N-hotfix, __version__ is bumped, and release-source is green

@venkat102
venkat102 force-pushed the feat/release-nudge-slice3b branch from fcdb9f7 to 5e9aa90 Compare September 6, 2026 13:24
venkat102 and others added 7 commits September 6, 2026 19:46
The bubble already can't chat when a hard update-notice is active (its send
routes through jarvis.chat.api.send_message -> validate_can_send, same as the
full chat). But a refused send ({ok:false, reason:'release_update_required'})
was falling through to stream.busy + polling, spinning the panel forever, and
never surfaced the reason. Handle the refusal: stop, drop the optimistic
message, and show a legible 'a new <brand> version is required — ask your
administrator to update' (the pill/banner nudge stays off the bubble by design).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PLe4dYCaKebmj2NasDo4kg
…n welcome

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PLe4dYCaKebmj2NasDo4kg
…rning)

The banner yielded to hasUrgentAlert, which included the soft, chat-still-works
alerts (workersWarnNotice / llmApplying / llmApplyStuck). Those render above the
composer, don't conflict with the top-of-chat banner, and are common (a bench
low on background workers has worker_warning=True) -- so the update banner was
suppressed on essentially any busy bench and never appeared. Yield only to the
alerts where the chat is actually unusable/paused. (Smoke finding.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PLe4dYCaKebmj2NasDo4kg
The soft banner is a single-line, message-only banner with tall (26px) action
buttons, but Banner.vue's row is items-start (tuned for multi-line title+message,
jarvis#725) — so the message text sat ~6px above the buttons' centre. Add an
opt-in align='center' prop to Banner (default 'start', existing callers
unchanged) and use it here so the icon, message, and buttons align on one line.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PLe4dYCaKebmj2NasDo4kg
The PWA update banner switched from blue to severity colours (amber/red), so the
--blue/--blue-bg tokens added for it are no longer referenced. Remove them.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PLe4dYCaKebmj2NasDo4kg
…ApplyStuck, bubble copy test, comment tidies

- pillFor: green is reserved for tier "none"; soft OR any unknown-but-versioned
  future tier falls through to amber, never a false "on the latest". Mirror in
  bannerShouldShow: banner fires for any versioned tier except none/hard.
- bannerToneFor(): single-source the banner tone from pillFor. Both UpdateBanner
  frontends (SPA + PWA) now derive tone from it instead of duplicating the
  tier->tone branch.
- ChatView hasUrgentAlert: put llmApplyStuck back in (chat genuinely can't
  answer, so the nudge yields); workersWarnNotice/llmApplying stay dropped (soft,
  chat still works). Comment corrected.
- panel_send_copy.mjs: extract the bubble refusal-reason -> copy decision into a
  pure, node-testable module (mirrors panel_readiness.mjs); Panel.vue imports it.
- Tests: pillFor unknown-tier/green-reserved cases, bannerToneFor, unknown-tier
  bannerShouldShow, panel_send_copy suite, and a source-slice regression pin for
  hasUrgentAlert/updateBannerVisible in readiness.spec.js.
- Comment tidies: ChatView banner comment (severity-coloured, shows on welcome);
  drop the orphaned --blue "info tone" comment in pwa/src/index.css.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PLe4dYCaKebmj2NasDo4kg
@venkat102
venkat102 force-pushed the feat/release-nudge-slice3b branch from 5e9aa90 to a206d39 Compare September 6, 2026 14:16
@venkat102
venkat102 merged commit e8ead91 into develop Sep 6, 2026
10 checks passed
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