Thanks to visit codestin.com
Credit goes to github.com

Skip to content

fix: add runtime provider tooltips - #464

Merged
pedronauck merged 1 commit into
mainfrom
linear-eng-143
Aug 25, 2026
Merged

fix: add runtime provider tooltips#464
pedronauck merged 1 commit into
mainfrom
linear-eng-143

Conversation

@pedronauck

@pedronauck pedronauck commented Aug 25, 2026

Copy link
Copy Markdown
Member

Summary

Fixes Linear ENG-143: add shared provider-name tooltips throughout the web runtime selector.

The provider rail and cross-provider model rows now make provider identity discoverable without changing the selector's compact visual layout, radio behavior, or listbox semantics.

Issue and root cause

Provider chips exposed their accessible name through a native title attribute. That browser tooltip was not consistent with the rest of Compozy's UI, was not rendered through the shared portal/stacking behavior, and did not provide the required keyboard-focus path. Provider glyphs on pinned cross-provider model rows had no tooltip at all, so their identity depended on nearby or screen-reader-only context.

Implementation

  • Wrapped provider chips with Tooltip, TooltipTrigger, and TooltipContent from @compozy/ui.
  • Removed the native title from migrated provider chips while preserving their existing aria-label, radio role, roving tabindex, and search-disabled behavior.
  • Kept the existing truthful needs-auth wording (Provider · needs sign in) in both the accessible label and tooltip.
  • Wrapped the existing KindIcon directly in the model-row tooltip trigger so the row remains a non-focusable role="option" and keeps its existing sr-only provider text.
  • Disabled provider tooltips while search disables the provider radiogroup, avoiding misleading hints on disabled controls.
  • Added behavior coverage to the canonical runtime-selector suite for hover, keyboard focus, needs-auth copy, disabled search, native-title removal, and a pinned cross-provider glyph.
  • Updated the living QA scenario and targeted run report with live evidence for all of those states.

No production-local TooltipProvider was added; the application continues to use the provider mounted in web/src/main.tsx.

Verification

Passing checks:

  • rtk bunx turbo run test --filter=./web --force -- --run src/systems/runtime/components/runtime-selector/__tests__/runtime-selector.test.tsx — 1 file, 93 tests passed.
  • rtk git diff --check — clean.
  • Isolated browser QA through the Web surface — Codex hover, Codex keyboard focus, Groq needs-sign-in copy, pinned cross-provider glyph hover, and disabled-provider search behavior all passed; agent-browser errors was empty.
  • QA teardown — teardown.json reports clean: true with no survivors.
  • GPT-5.6-Sol review at high reasoning effort — no actionable production or test findings; QA tracker findings were addressed with a second live walk.

rtk make gate was run as requested. Lint and typecheck passed. The full Web test lane also passed the 93 ENG-143 tests, but the gate returned non-zero because two unrelated baseline tests failed: src/storybook/__tests__/web-storybook-visual-contract.test.ts timed out at 20 seconds, and src/systems/os/hooks/__tests__/use-window-manager-stream.test.tsx expected workspace:home but received null. The visual-contract timeout was reproduced in an isolated Turbo run; neither file is changed here. The repository-wide make verify/make gate-full commands were intentionally not run per task scope and remain CI responsibilities.

Risks and mitigations

  • Tooltip rendering uses the existing portal and z-50 shared primitive, so it remains above the selector popup without introducing a new stacking context.
  • Provider chips remain the same buttons and keep their radio/roving-focus contract; only their explanation surface changed.
  • The model glyph remains a non-focusable child of the listbox option to avoid nested focusable controls. Its existing screen-reader provider name remains in place, and pointer hover now adds the visual tooltip.
  • No runtime/API/storage/config behavior changed.

Compozy Impact Audit

  • Native tools: no impact — no compozy__* tool IDs, toolsets, descriptors, schemas, digests, capability gates, diagnostics, or CLI/API fallbacks changed.
  • Extensibility and hooks: no impact — checked extensions, hooks, skills/capabilities, tools/resources, registries, bridge SDKs, MCP sidecars, and config.toml; this is a web-only presentation change using an existing UI primitive.
  • Workspace data isolation: no impact — no global, workspace, session, or agent data, cache, SSE/event, route, CLI, HTTP, UDS, or store ownership changed.
  • Official Compozy skill: no impact — skills/compozy/ does not describe provider-selector tooltip behavior or any changed public capability/tool/CLI path.

QA tracker impact

docs/qa/scenarios/ET-web-runtime-selector-minimal-slider.md is settled as qa_status: pass. The durable report is docs/qa/reports/2026-08-24-eng-143-runtime-selector.md; the isolated evidence bundle and clean teardown are recorded there.

Follow-up

CI should run the repository-wide verification checks and investigate the two unrelated baseline test failures noted above.

Summary by CodeRabbit

  • New Features
    • Added provider-name tooltips to runtime provider chips and model rows.
    • Tooltips are available on hover and keyboard focus for improved accessibility.
    • Tooltips preserve important provider status details, including “Needs sign in.”
  • Accessibility
    • Improved provider identification without relying on native browser title popups.
    • Disabled provider chips do not display tooltips while searching.

@vercel

vercel Bot commented Aug 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
compozy-site Ready Ready Preview Aug 25, 2026 2:42am

Request Review

@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit 91d92ce.

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 8e9e02cd-f951-42d1-84e5-6847e72ed7ef

📥 Commits

Reviewing files that changed from the base of the PR and between a7a8970 and b3d8fcd.

⛔ Files ignored due to path filters (2)
  • docs/qa/reports/2026-08-24-eng-143-runtime-selector.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-runtime-selector-minimal-slider.md is excluded by !**/*.md
📒 Files selected for processing (3)
  • web/src/systems/runtime/components/runtime-selector/__tests__/runtime-selector.test.tsx
  • web/src/systems/runtime/components/runtime-selector/model-row.tsx
  • web/src/systems/runtime/components/runtime-selector/provider-chips.tsx

Included review availability: Your plan provides up to 8 included reviews per hour; 2 remain after this review.


Walkthrough

Provider chips and pinned model rows now show provider-name tooltips. Tooltips include authentication status, avoid native title attributes, and remain disabled for provider chips during search. Tests cover hover, focus, and disabled states.

Changes

Runtime selector provider tooltips

Layer / File(s) Summary
Tooltip rendering across selector surfaces
web/src/systems/runtime/components/runtime-selector/provider-chips.tsx, web/src/systems/runtime/components/runtime-selector/model-row.tsx
Provider chips render custom tooltips with authentication labels and suppress them during search. Model-row provider glyphs display the provider name in a tooltip.
Tooltip behavior validation
web/src/systems/runtime/components/runtime-selector/__tests__/runtime-selector.test.tsx
Tests configure immediate tooltip display and verify hover, keyboard focus, authentication labels, search suppression, and pinned model-row glyph tooltips.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to b3d8f

This change adds shared provider-name tooltips without altering selector behavior, accessibility roles, or runtime data flow; no actionable merge-blocking risk remains after normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant ProviderChips
  participant ModelRow
  participant Tooltip
  User->>ProviderChips: Hover or focus provider chip
  ProviderChips->>Tooltip: Render provider label
  Tooltip-->>User: Display provider tooltip
  User->>ModelRow: Hover provider glyph
  ModelRow->>Tooltip: Render provider name
  Tooltip-->>User: Display provider tooltip
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 3 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding provider tooltips to the runtime selector.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch linear-eng-143

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Aug 25, 2026

Copy link
Copy Markdown

Greptile Summary

The PR adds shared provider-name tooltips to runtime-selector provider chips and pinned cross-provider model glyphs while preserving existing selection semantics.

  • Migrates provider chips from native titles to shared tooltips.
  • Adds hover tooltip coverage for cross-provider model glyphs.
  • Extends runtime-selector tests and records targeted QA evidence.

Confidence Score: 4/5

The PR is not ready to merge because the previously reported mandatory QA completion-gate violation remains outstanding.

The report still declares the workstream closed and ready while explicitly stating that the full exit gate was not run, and the affected scenario remains marked as passed despite its stated reset for new user-visible behavior.

Files Needing Attention: docs/qa/reports/2026-08-24-eng-143-runtime-selector.md; docs/qa/scenarios/ET-web-runtime-selector-minimal-slider.md

Important Files Changed

Filename Overview
web/src/systems/runtime/components/runtime-selector/provider-chips.tsx Wraps provider radio chips in shared tooltips while disabling those tooltips during search.
web/src/systems/runtime/components/runtime-selector/model-row.tsx Adds a provider-name tooltip around cross-provider model glyphs.
web/src/systems/runtime/components/runtime-selector/tests/runtime-selector.test.tsx Covers tooltip hover, focus, authentication wording, disabled-search behavior, and model glyphs.
docs/qa/reports/2026-08-24-eng-143-runtime-selector.md Records targeted verification but still closes the workstream as ready without completing the required full gate.
docs/qa/scenarios/ET-web-runtime-selector-minimal-slider.md Adds tooltip evidence but retains a pass status instead of recording the required QA reset transition.

Reviews (2): Last reviewed commit: "fix: add runtime provider tooltips" | Re-trigger Greptile

Comment on lines +65 to +67

- **Exit gate (full automated suite):** not run locally by instruction; CI must run `make verify` as the automated release-readiness prerequisite.
- **Task-scoped gate:** `make gate` ran the Web lint/typecheck/test lane; lint and typecheck passed, while the pre-existing `web-storybook-visual-contract.test.ts` timeout and `use-window-manager-stream.test.tsx` failure occurred independently of the ENG-143 files. Both failures reproduced or were isolated separately.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Completion bypasses required QA gates

The report closes the workstream and declares it ready even though the required full gate was not run, while the affected user-visible scenario retains qa_status: pass instead of undergoing the required reset-and-verification transition. This records the change as complete without satisfying the repository's mandatory release-readiness workflow.

Context Used: CLAUDE.md (source)

@pedronauck

Copy link
Copy Markdown
Member Author

CI follow-up (2026-08-25)

The CI run completed. The ENG-143 focused Web suite is green, but the required aggregate check is blocked by baseline failures outside this diff:

  • Frontend: src/systems/os/hooks/__tests__/use-window-manager-stream.test.tsx fails because the expected workspace:home value is null.
  • Go build/boundaries: internal/demoseed/seed.go:79 calls the missing GlobalDB.ListPresets method.
  • Go format/lint: unrelated source-size violations in web/src/systems/marketplace/routes/marketplace-detail.stories.tsx (508 lines) and web/src/systems/session/index.ts (504 lines).
  • Go race shards: unrelated CLI/daemon/demoseed failures plus broad internal/store/globaldb failures (the shard-1 run ended with 301 failures).
  • Verify (fmt, lint, unit, build) failed only because those lanes failed; E2E was skipped by the workflow.

The branch diff contains only the runtime-selector implementation, its canonical tests, and the required QA evidence. No ENG-143 test or changed file appears in the CI failures.

@pedronauck

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor
⚠️ Action not completed

No files to review.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@pedronauck
pedronauck merged commit 28ac01b into main Aug 25, 2026
32 of 35 checks passed
@pedronauck
pedronauck deleted the linear-eng-143 branch August 25, 2026 13:05
This was referenced Aug 25, 2026
This was referenced Sep 1, 2026
This was referenced Sep 10, 2026
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.

1 participant