fix(webapp): keep the provenance line on mobile, unclipped in History (BEA-70) - #121
Merged
ssowonny merged 2 commits intoAug 5, 2026
Conversation
… (BEA-70)
Below 900px the file view hid the who/when/how-hot line outright
(`#meta { display: none }`) and the History run header ellipsised its
note and author to `claude-…` / `Alice <ali…` — the line the product is
differentiated by, gone exactly on the surface people catch up from.
CSS-only, inside the existing `@media (max-width: 900px)` block:
- `#topbar` wraps (`height: auto; min-height: 52px`) and `#meta` takes its
own full-width row, left-aligned and wrapping. `order: 1` is what keeps
Search / Share / ⋯ on row 1 — meta precedes them in the DOM, so a bare
flex-wrap would drag them down. `#meta:empty` keeps folder, dashboard
and history routes from gaining a blank strip.
- `.hrun-head` wraps; the note loses its 46% cap and both spans stop
ellipsising, with `.hrun-meta` on its own line under the note and the
time still on row 1.
Desktop (≥901px) is untouched — every rule lives inside the breakpoint.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
# Conflicts: # internal/webapp/static/assets/index-BgBsEqHO.js # internal/webapp/static/assets/index-C-NQBUvF.css # internal/webapp/static/assets/index-Cw2mk7qH.js # internal/webapp/static/assets/index-RX0WGQMW.js # internal/webapp/static/index.html
ssowonny
deleted the
bea-70-ph-scan-bug-mobile-drops-the-provenance-line-on-the-file
branch
August 5, 2026 07:38
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.
TL;DR
claude-…andAlice <ali…, which is exactly the two fields that row exists to carry.@media (max-width: 900px)block. Desktop doesn't move.order: 1:#metasits before the action buttons in the DOM, so a bareflex-wrapwould have dragged Search/Share/⋯ down to row 2 with it..hrun-timestaying on row 1 for free. It doesn't —.hrun-metaneededorder: 1too, or the time fell to a third row. Deviation noted below.Before / after at 390px
Both surfaces computed the provenance correctly all along and then threw it away in layout.
What changed
Two rules were doing the damage, both inside the ≤900px block:
#metadisplay: none#topbarheight: 52px(would clip row 2)height: auto; min-height: 52px.hrun-notemax-width: 46%+ nowrap + ellipsis.hrun-metaThree things worth a reviewer's eye:
order: 1on#metais load-bearing. The topbar's children are menu / crumb / meta / actions. Wrapping withoutorderputs meta on row 2 and drags the actions with it, because they follow meta in the DOM.order: 1sorts meta last regardless of DOM position, so the actions stay pinned top-right.#crumb { flex: 1 }is untouched and stays the spacer.#meta:emptyis not optional.metais""on every non-file route (Browser.tsxholds it as state,FileView.tsxclears it on unmount), so without the guard every folder listing, dashboard and History page on a phone would gain an 8px blank strip under the crumb — a regression on far more routes than the one being fixed.#topbaris a plain flex item inside#main, so growing it pushes content down rather than overlapping it. The "content isn't overlapped" criterion holds by construction; the test asserts it anyway.Deviation from the reviewed plan
The plan said
.hrun-time"keepsmargin-left: autoand stays on row 1" once.hrun-metatakesflex: 1 1 100%. It doesn't — the time follows meta in the DOM, so a full-basis meta pushes the time onto a third row..hrun-metagotorder: 1as well, which sorts it after the time: row 1 is toggle + note + time, row 2 is the meta. Same visual result the plan described, one extra declaration.Everything else is as planned.
What was run
go build ./...,go vet ./...,go test ./...— all packages pass.npm run e2e— 148 passed, 1 skipped (the pre-existing skip).provenance survives to a phone on the file view and in Historyine2e/layout.spec.ts. It reads the desktop values at 1200px first and compares the 390px values against them rather than hard-coding strings — the seeded hub's read counts drift, so a literal would flake. It also pins actions-flush-right, the 44px tap target, no clipping, no horizontal page scroll, and a folder route's topbar still being exactly 52px.style.css, rebuilt, and it fails on#metanever becoming visible at 390px.npm run buildand committed tointernal/webapp/static.Watch-outs
internal/webapp/staticconflicts with any other frontend PR in flight (BEA-72, BEA-74, BEA-76 all rebuild it). Resolve by re-runningnpm run buildon the mergedsrc, never by picking a side.overflow-xrule to the same media block. Whichever lands second rebases with a one-hunk conflict..hrun-noteis now uncapped on mobile, so a genuinely long agent session note wraps to several lines and grows the card header. Fine at the seededclaude-code session 8f21e4; unknown at, say, a 200-character note.No architecture diagram changes — CSS only, no types or relationships moved.
Build session
(only works on the machine that ran the build)