Review request: move Home off rastrillo's frozen import path. Paul approved this on 2026-09-30 (polish audit r3 SUMMARY item 1; Home r3 C3). The recipe is Sheets' migration (oficina/sheets #44, main a5c17ab).
Why. Home's root module imported github.com/carlosframework/rastrillo, which stops at v0.23.0. It had received no rastrillo ui fix since 2026-08-31, iOS's zoom-on-tap fix included. On a phone, id.oficina.works' sign-in field is 14px with autofocus, so iOS zoomed the page on every sign-in to every app.
Modules. Only the root module imported the old path. connect, handoff and roster already imported only amadan.net/rastrillo/rastrillo at 29e4491, so their go.mod files are untouched and no app needs a home/connect bump.
Pin. amadan.net/rastrillo/rastrillo at 29e4491 (v0.26.0+8), the version connect, handoff and roster already require, so the build has one amadan rastrillo. The old module stays in go.mod only as an indirect requirement of estilo (chrome imports its sessions.SafeReturn).
Commits
- e75460d
TestNoZoomOnTap (browser tag, new make test-browser), modelled on Sheets' zoombrowsertest.go. Red on purpose. It emulates a touch screen and measures every text control on id.'s sign-in and recovery-code pages, and on the directory's signed-out, Open source, signed-in directory and team chooser pages. On origin/main: `id. /signin: input[name=address] 14px, id.* /passkey/confirm: input[name=code] 14px (polish-audit/r3/scripts/migrate-home-zoom-red.txt). test-vet now also vets internal/home with -tags browser`. - b2f937b the move: - Every import rewritten (63 sites in 44 files). -
go tool rastrillo doctor --fix re-copied tokens.css (+297 lines: the touch rule, button sizes, --rst-fs-lg, primary inputs, stat band, native meter/progress, date picker). The four scripts doctor also writes (rastrillo.js, select.js, datetime.js, calendar.js) are deleted. Home serves estilo's busy.js, and doctor's shim at this pin carries rastrillo's old busy rule. New TestNoRastrilloShimBesideBusy fails if one is on disk or served (shown red by touching static/rastrillo.js). - New internal/guardstest TestNoPreMoveRastrillo forbids the old path in every module (shown red by restoring main's app.go). - The CLI is a go.mod tool. - make release (and cmd/home-placeholder/README.md) stamps amadan.net/rastrillo/rastrillo.BuildVersion. Checked: a stamped build answers v0.1.0-74-gb2f937b from /api/version on both roles. - make credits: the new db package brings gormlite's licence. - AGENTS.md: the path, the doctor-then-delete step, and the stale "no vendored static/" paragraph. The class-spelling recount required on a pin move: ui/partials still has the same six utility class= occurrences at 29e4491.
What changes at this pin. sessions, csrf, passkey, webauthn, db and migrate differ from v0.23.0 only in the import path (diffed with the path normalised). mail becomes context-aware and sends a Date header. ui partials changed, but Home renders none of them. The root package (Serve) is unchanged.
Evidence
make test-vet test-fmt test-build test-go: green (GOTOOLCHAIN=go1.26.5). make test-race: green except internal/provisioner, which is Linux-only, so CI covers it.make test-browser: green.- Old database boots. On the production-shaped local stack (polish-audit/home-run/r2/run.sh), the main build (2bec942) signed someone in and left a second magic link unredeemed. The new build then booted over the same state: schema inventory clean, the old directory cookie opens the signed-in directory, id.* accepts the old session (/passkey/codes), and the link minted by the old build signs in (home-run/r2/oldbd.out).
- Screenshots in polish-audit/shots/r2-home-path-{before,after}[-touch]-*.png: 19 pages × 1440/390/320. With a mouse, before and after are pixel-identical apart from a caret blink. On a touch screen, only the sign-in field, its error state and the recovery-code field change: 14px → 16px, about 3px taller. No page overflows.
- Shared chrome check (new polish-audit/r2-home-check.config.mjs): Home has no estilo bar yet, so it fails
has [estilo-bar] everywhere, on main and here alike (r2-home-check-path.output.txt). That is feat/r2-shared-chrome's job. - CLS (polish-audit/r2-home-cls-{main,path}.output.txt) is identical on main and here: front page cold load 0.0028 at 1440 and 0.0034 at 390, every other hop 0.
Not in this branch. rastrillo main (v0.27's CSP, time layouts and the migrate.Fn change). estilo still imports the old path.
Review. AGENTS.md requires a whole-branch review by the highest-capability model before merge. Not reviewed yet.
🤖 Generated with Claude Code