Polish rail information hierarchy - #69
Merged
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR refines the information hierarchy in the session rail to prioritize the project/session names users scan for, while moving secondary metadata (host identity and model identifiers) into tooltips to preserve horizontal space.
Changes:
- Updated session rows to show session titles as the primary label and moved model identifiers into a session tooltip.
- Updated project header rows to allow project names to wrap and moved host identity into a project tooltip.
- Adjusted the mobile touch-target/source-contract test assertions to match the new rail hierarchy.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| apps/web/src/components/Rail.tsx | Reworks rail row layout and introduces tooltips for host/model metadata while prioritizing project/session labels. |
| apps/web/test/mobile-touch-targets.test.tsx | Updates rail source-contract assertions to reflect the new hierarchy and tooltip-based metadata. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The rail's narrow form is the phone drawer, where hover tooltips never fire. Moving host and model identifiers exclusively into tooltips dropped the scannable differentiator on the surface that needs it most. - Add a 3-char model monogram to the session metadata line so the model family stays visible without the full identifier string - Restore a compact non-default host icon (Cable for remote, UsersRound for non-default local profile) on the project row; the full host name stays in the tooltip - Bump rail metadata text from 10px to text-xs for readability - Let session titles wrap up to two lines (line-clamp-2) for parity with wrapping project names instead of truncating - Restore an active-row cue: semibold title plus a brand left accent - Center project-row indicators against wrapped names instead of top-pinning them with margin hacks - Pass collisionPadding to the rail tooltips so Base UI flips explicitly on narrow viewports - Use break-words (not break-all) in tooltip identifiers so hyphenated model strings break at boundaries - Keep gap-0.5 between the session title and metadata lines Extend TooltipPopup to forward collisionPadding and collisionAvoidance to the underlying Positioner; optional and backward-compatible.
The compact model monogram competed for row width without adding enough scanning value to justify the inline space. Drop the monogram and the modelMonogram helper; the full model identifier stays available in the session tooltip, which is where host identity already lives.
wolfiesch
force-pushed
the
codex/rail-information-hierarchy
branch
from
July 19, 2026 11:42
c9c9ec3 to
442b678
Compare
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.
What this changes
collisionPaddingso rail tooltips do not cliptooltip.tsxprovenance checksumWhy
Host and model identifiers consumed scarce horizontal space in the narrow rail while the folder and session names users scan for were truncated. This makes the visible hierarchy match how people choose a project and resume a session without removing the underlying metadata. On touch surfaces the rail is a Sheet overlay where tooltips never fire, so the differentiators that were tooltip-only are now inline.
Screenshots
All screenshots use T4's built-in sample data.
Desktop
Before
After
Mobile (Sheet overlay, 390px)
Before
After
How you verified it
pnpm check(provenance, lint, typecheck across all workspaces) - cleanpnpm --filter @t4-code/web test- passespnpm build:web- builds cleancore,tooling,android-debug,verifyall pass onc9c9ec3Checklist
pnpm checkpasses (release contract, provenance, lint, typecheck)pnpm testpasses; new behavior has a test that fails without this changeTHIRD_PARTY_NOTICES.md