fix(web): reveal full composer command descriptions#27414

merged3
main
GitHub fork: fix/slash-command-descriptions
opened13d agobyVvoltcrash
View on GitHubTwo-way sync enabledPR last imported 4h ago

Long descriptions in the composer’s / menu were truncated even while hovering or navigating with the arrow keys. The existing tooltip now reveals the complete description for the highlighted suggestion, keeping menu rows and editor focus stable. The shared $ skill picker also benefits.

Fixes #26940. This is a small, focused visual fix under the obvious-bug exception: existing descriptions could not be read in full through the menu.

Verified in the real Chromium web client with isolated development state: hover, arrow keys, moving from a long row to the short row above it, Enter insertion, Escape dismissal, and $ skills. Row bounds remain identical across highlight changes. Packaged Electron was not run.

vp run check:changed upstream/main --concurrency 1 passed format, lint, Knip, affected typechecks, the adjacent test, and React Compiler coverage. Visual proof replaces a new UI test as required by AGENTS.md.

24-second interaction recording · Reproduction and verification details

Reviewed with sol-loop: 2 rounds with GPT-6.1 Sol on xhigh. Sol verdict: approved.

Created with GPT-6.1 Sol in the Codex harness through T3 Code.

Fixes pingdotgg/t3code#26940

Checks

22 successful · 16 skipped
All checks passed
fad9730
Synced from GitHub

Approvability

Verdict: Approved at ba2975a

Macroscope's review found this PR approvable — Active composer suggestions now show their full descriptions in a tooltip while retaining truncated inline text. The change is limited to presentation and leaves command selection and execution unchanged.

You can add or adjust custom eligibility rules. Learn more.

Synced from GitHub

Explain Change →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

  • Last reviewed commit: cc7cbc0428df6b229813fb316df12b2ac06f1989
  • Latest commit, not reviewed: fad973034c5e011a1d1ec1af1c205184b2a6f419

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • Resume reviews
  • Trigger review

No actionable comments were generated in the recent review.

Walkthrough

The composer command menu now shows an item’s full description in a tooltip when the item is active and its description is nonempty. The row description remains truncated.

Changes: Composer command descriptions

Layer / File(s)Summary
Show full command descriptions
apps/web/src/components/chat/ComposerCommandMenu.tsx
The active item’s truncated description triggers a tooltip that displays the full description. The trigger is excluded from tab navigation.

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Low

Suggested reviewers: scriptedalchemy, juliusmarminge

Merge Risk: External image Minimal · previous review cc7cb

Long command descriptions now appear in full in a tooltip when the item is highlighted. An extremely long description in a very short window could be partly cut off. This is an unlikely edge case and does not block merging.

Pre-merge checks: Passed 4

Check nameStatusExplanation
Title checkPassedThe title names the fix (revealing full composer command descriptions) and the component it touches. It follows the conventional commit format from the template and matches the summary, which says the…
Description checkPassedThe description follows the template sections: Problem, Change, Scope and approval, and Verification. The Problem section states the truncation bug and the expected behavior. The Change section explai…
Linked Issues checkPassedIssue #26940 requires that hovering or highlighting a composer / menu row lets the user read the full description. The whole-PR diff against the merge base changes only `apps/web/src/components/chat…
Out of Scope Changes checkPassedThe whole-PR diff touches one file. The change adds the tooltip import and wraps the existing description span in tooltip primitives. Every changed line serves the linked requirement to reveal full co…
Full details: Title check

Explanation

The title names the fix (revealing full composer command descriptions) and the component it touches. It follows the conventional commit format from the template and matches the summary, which says the existing tooltip now displays the full description for the active command item.

Full details: Description check

Explanation

The description follows the template sections: Problem, Change, Scope and approval, and Verification. The Problem section states the truncation bug and the expected behavior. The Change section explains that the existing tooltip now reveals the full description. The Scope section links issue 26940 and explains the obvious-bug exception. The Verification section lists the manual checks, the before and after screenshots, the recording, and the check command results. Minor gaps: the Change section does not say why the shared $ picker needs no separate change, and the model line is present but not clearly marked. Overall the description is mostly complete.

Full details: Linked Issues check

Explanation

Issue #26940 requires that hovering or highlighting a composer / menu row lets the user read the full description. The whole-PR diff against the merge base changes only apps/web/src/components/chat/ComposerCommandMenu.tsx. In ComposerCommandMenuItem, the description span is now a TooltipTrigger inside Tooltip open={props.isActive && props.item.description.length > 0}, and TooltipPopup renders props.item.description in full. isActive follows mouse highlight and keyboard highlight, so both paths from the issue reveal the text. The row keeps its truncated span, so row layout is unchanged. The issue allows a tooltip as a reveal method. The PR description reports browser verification of hover, arrow keys, Enter, Escape, and $ skills. No automated test was added. The issue does not require one, and the PR cites AGENTS.md for visual proof. Limitation: this assessment reads the component diff. It does not inspect the $ skill picker code path, so the shared-picker claim rests on the PR description and the previous review.

Full details: Out of Scope Changes check

Explanation

The whole-PR diff touches one file. The change adds the tooltip import and wraps the existing description span in tooltip primitives. Every changed line serves the linked requirement to reveal full command or skill descriptions in the shared menu item. No unrelated behavior, refactor, or unrelated file appears in the whole-PR file list or diff. The incremental review since the previous heads is covered by this whole-PR diff.

Finishing Touches

Generate unit tests (beta)

  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
External image Recent review info

External image Run configuration

External image Commits

Reviewing files that changed from the base of the PR and between 0873ee1a0832aa7ab473847a8531948275752837 and cc7cbc0428df6b229813fb316df12b2ac06f1989.

External image Files selected for processing: 1

  • apps/web/src/components/chat/ComposerCommandMenu.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

Note

Written by gpt-6.1-sol on behalf of Maria

Verified in a real dev environment

verified as-is at 4e11d4e0d5f72c2fcfa61005634982d455495322 on this linux boat vm.

started github/main (5fe18d79ac) in a separate worktree after vp i, then stopped it before starting the exact pr head with vp run dev --home-dir /home/user/t3code/.t3. both servers ran in the background with isolated state. used repo playwright and /usr/bin/google-chrome.

on each version, added the real repository through the app, created a thread, selected codex gpt-6.1-sol, and sent a real provider turn. both returned slash description verification ready.. no mocks, fixtures, or demo data.

main truncated the existing contribution-triage skill description without revealing its full text on hover or keyboard highlight. the pr displays the complete description at 1280×900 and 640×900. editor focus and menu row bounds remain stable.

also exercised arrow navigation across provider commands, /goal insertion without sending, escape dismissal, $ skill tooltip and chip insertion, /model opening the model picker, and README file mention insertion. each passed.

runtime confirmation from read-only queries of each isolated database:

text
1main: Slash Description Verification | codex | gpt-6.1-sol
2main provider turn: completed | codex
3pr: Slash Description Verification | codex | gpt-6.1-sol
4pr provider turn: completed | codex

vp run check:changed 15fe2832727893cbdd2214383f9f971474849695 passed through blacksmith-check: format, lint, knip, affected typechecks, the existing adjacent test, and react compiler coverage. no source changes were needed.

before, main:

main: highlighted slash skill description remains truncated

after, exact pr head:

pr: keyboard highlight reveals the full slash skill description

24-second recording: provider command navigation, long descriptions, escape, skill insertion, and model picker

Not verified

packaged electron, native ios/android, macos/windows, other providers, and remote/relay/tunnel connections were not exercised on this linux vm. screenshots and recording cover the light theme. provider commands were selected or inserted; goal execution, compaction, and external feedback submission were not invoked.

Added 3 commits

  • fix(web): reveal full composer command descriptionsecaf049
  • Merge remote-tracking branch 'origin/main' into fix/slash-command-descriptionsb7ac1b3
  • fix(web): only show the description tooltip when the text is cut offfad9730

Evidence

Verified in the real web app using Chromium, 1280×800, light theme, fresh isolated databases and identical synthetic data. Both menus contain three rows: aaa has a short description; bbb and ccc have different long descriptions.

Steps on both commits: open the completed thread; type /proofcmd; hover middle row bbb; move the pointer into blank space; press ArrowDown to highlight ccc, ArrowUp to return to bbb, and ArrowUp to highlight short row aaa; hover aaa. Repeat with $proofskill.

Base leaves long descriptions truncated. Head reveals their complete text, moves the tooltip with keyboard highlighting, and keeps it closed for short descriptions. Composer focus is retained. The tooltip overlays preceding rows while the menu remains compact. The transcript and surrounding UI above the composer are pixel-identical across every matched pair.

scenarios:prove exited 0: six missing-tooltip checks failed on base and the scenario passed on head.

Recordings preserve the scripted interactions at original speed. Pairing/sign-in and cleanup were trimmed before upload; no pairing token is included.

Scenario and synthetic provider seed · Recording preparation script · Sanitized runner transcripts

AI-assisted; verified with the tests and tools listed above.

Not shown:

  • Other shared picker entry types (files, threads, environments, models and pull requests) were not exercised; this reproduction covers provider commands and skills.