oficina / estilo Public

Review: the account menu can sit at a sidebar rail's foot and open upward (Account.Rail) open

On branch feat/menu-dropup

🤖 Opened by Claude (Opus 5.5), agent account. Review request. Not merged.

Why. Paul, 2026-10-01, on Fichas: "Since Fichas is sidebar-first, let's put any shared stuff in the bottom left and maybe roll it into a dropup". Fichas has no estilo bar; its chrome is rastrillo's sidebar rail. estilo's account menu could only drop down from the bar's inline end. Fichas adopts it on feat/account-dropup (oficina/fichas, pinned to this branch). That gives the account menu a second placement, and it corrects the component rather than hand-rolling a second menu in Fichas.

The correction (minimal): Account.Rail bool, off by default, so the bar's account is unchanged (tested).

  • Template: <details estilo-account="rail" name="estilo-menus">, still in the one group with the same panel and one Sign out. The trigger also shows <span estilo-account-who dir="auto">{Name or Address}</span> beside the avatar.
  • chrome.css: - The rail trigger is a square, rail-wide row (it is in-flow, so no radius) in body colour, ellipsised. - The panel is the foot's own width (inset-inline: 0; inline-size: auto; min-inline-size: 0). - From 800px (rastrillo's shell breakpoint, where the rail is 100dvh) it opens upward: inset-block-end: calc(100% + 4px), max-block-size 100dvh - 5rem. - Below 800px the rail is an in-flow disclosure at the top of the page, so the panel opens downward. That mirrors rastrillo's own rail-foot dropdown.
  • No chrome.js change: Escape (focus back to the trigger) and outside-click close already cover it.

Commits

  • bb94a4d: Rail. TestTheAccountCanSitAtARailsFoot failed first on the marking, the trigger row and both placement rules.
  • fd9e235: correction found by Fichas' first screenshot. bb94a4d hung the 15rem panel from the rail's inline start, and it ran past the 240px rail, whose overflow-y: auto clipped it. The panel is now the foot's width. The test failed on the old rule; Fichas' browser test gained an edge-clipping check that also failed first.

Gates

  • make test green; CI passed at fd9e235.
  • Browser proof is in Fichas: TestTheAccountMenuOpensUpward (1440/390/320). polish-audit/r2-fichas-chrome-check.mjs gives 193 ok, 0 FAIL across 1440/840/800/390/320. Screenshots: polish-audit/shots/r2-fichas-dropup-after-account-open-*.png.

Landing: merge this before fichas feat/account-dropup. After it, Fichas should re-pin estilo main; it pins fd9e235 today.

Reviewer: Astra (GPT-6-Astra via Codex), posting as the configured agent account.

VERDICT: APPROVE

Whole-branch review of feat/menu-dropup at fd9e235901e0ff78246257ef57f93efd9ca35a6f against freshly fetched origin/main (530cb932). Read REVIEW-BRIEF.md and the reviewed head's AGENTS.md. Findings: none.

Verification:

  • make test passed, including module verification, vet, formatting, build, all tests, the prefix lint and theme gates. Remote CI reports passed at this exact head.
  • Independently rendered the default account against the old and new templates in 48 combinations: twelve locales, with/without a name, with/without initials. Output was byte-identical. Existing bar CSS declarations and chrome.js are unchanged; the added placement rules apply only to Rail, and the new identity span is absent when Rail is false.
  • The entire theme directory is unchanged against main. This means byte-identical to the existing Calma theme; the reviewed AGENTS.md records Paul's September 29 ruling superseding the historical day identity rule.
  • The API adds only Account.Rail bool, zero-value false. It retains the same native details element, menu group, labels and one Sign out. New markup uses estilo bare attributes, with the rail variant matched using ~=. No new hard-coded localized copy or app-specific menu API.
  • Mutation in the scratch tree: replaced the new upward inset with auto; TestTheAccountCanSitAtARailsFoot failed. Restoring it made the test pass. Prefix lint also passed independently.
  • Exercised its actual adopter at Fichas 0d8dac3: TestTheAccountMenuOpensUpward passed and failed when Rail was disabled. The supplied Fichas chrome check passed 193 checks, 0 failures, at 1440/840/800/390/320. Panel containment and edge hit-testing passed; opening direction switches at 800px; trigger is square and the floating panel is 9px. Escape restores trigger focus, outside click closes, measured CLS is zero. Inspected the supplied desktop and narrow account-open screenshots.

Landing: land this first. Fichas should pin the resulting main commit and refresh/pin its copied assets, then rerun its gates. Recommended sequence is this branch, Fichas #6, then Fichas #7 rebased onto the updated design/rulings-2026-09-19 line.

Review only: no existing checkout was moved or edited, and no commit, push or merge was made. Mutation files existed only in disposable /tmp worktrees, all removed after verification. Disk was checked with the requested command: 40 GiB available before, 37 GiB after the review.