Skip to content

Polish rail information hierarchy - #69

Merged
wolfiesch merged 5 commits into
mainfrom
codex/rail-information-hierarchy
Jul 19, 2026
Merged

Polish rail information hierarchy#69
wolfiesch merged 5 commits into
mainfrom
codex/rail-information-hierarchy

Conversation

@wolfiesch

@wolfiesch wolfiesch commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

What this changes

  • prioritize project names in the session rail and allow them to wrap instead of truncating
  • make session titles the primary row label; reduce the visible metadata line to relative time and session state
  • move host identity into a project tooltip (compact icon-only cue on the row, full host name on hover)
  • move the model identifier into the session tooltip only (removed the monogram badge from the row)
  • keep rail differentiators visible on touch surfaces, where tooltips do not fire
  • add an active-state cue for the selected session (semibold title + brand left accent, no layout shift)
  • fix jagged project-row alignment and session-title wrap parity
  • extend the shared tooltip primitive to forward collisionPadding so rail tooltips do not clip
  • announce project unread counts
  • refresh the adapted tooltip.tsx provenance checksum

Why

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

before-desktop

After

after-desktop

Mobile (Sheet overlay, 390px)

Before

before-mobile

After

after-mobile-rail

How you verified it

  • pnpm check (provenance, lint, typecheck across all workspaces) - clean
  • pnpm --filter @t4-code/web test - passes
  • pnpm build:web - builds clean
  • CI: core, tooling, android-debug, verify all pass on c9c9ec3
  • visual check at desktop width and at 390px mobile viewport (Playwright)

Checklist

  • pnpm check passes (release contract, provenance, lint, typecheck)
  • pnpm test passes; new behavior has a test that fails without this change
  • Screenshots redacted: no secrets, tokens, pairing codes, or private paths
  • Ported code (T3 Code / OMP) follows the provenance rules in THIRD_PARTY_NOTICES.md

Copilot AI review requested due to automatic review settings July 19, 2026 10:05

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Comment thread apps/web/src/components/Rail.tsx
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
wolfiesch force-pushed the codex/rail-information-hierarchy branch from c9c9ec3 to 442b678 Compare July 19, 2026 11:42
@wolfiesch
wolfiesch merged commit 7ae97d6 into main Jul 19, 2026
4 checks passed
@wolfiesch
wolfiesch deleted the codex/rail-information-hierarchy branch July 19, 2026 11:48
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