simocracy-v2 · gathering-ftc-layout-parity
A production-build audit of every event/gathering world route confirmed that generic gathering buildings and right-side building sidebars now use the same placement contract as /ftc-sf.
Pass. The FtC SF reference, both dynamic event-detail routes, the canonical Senate route, and the Senate event-card route all render an edge-to-edge world canvas and a right sidebar with the same measured geometry. The generic gathering canvas also now draws, collides, clicks, and outlines the building through the same FtC-style placement helper.
The WebM below is the full browser tour captured with agent-browser record. It opens the FtC SF reference, then visits the Events gallery and every gathering/event world route, clicking the building on each generic gathering page to reveal the sidebar.
| Route | Canvas rect | Building sidebar rect after click | Result |
|---|---|---|---|
/ftc-sf reference | x=0 y=56 w=1440 h=836 | x=720 y=56 w=720 h=836 | match |
/events/.../3mk6xwaltgs22Flourishing Floor Digital Twin Experiment | x=0 y=56 w=1440 h=836 | x=720 y=56 w=720 h=836 | match |
/events/.../3miucq2jbzo2sGainForest Data Council | x=0 y=56 w=1440 h=836 | x=720 y=56 w=720 h=836 | match |
/senate | x=0 y=56 w=1440 h=836 | x=720 y=56 w=720 h=836 | match |
/events/.../3mijiollfqs2iSenate event-card route | x=0 y=56 w=1440 h=836 | x=720 y=56 w=720 h=836 | match |
Raw measurement notes are saved as assets/layout-audit.json.
/senate: same GatheringWorld alignment after the wrapper update.
GatheringWorld passes backgroundPlacement="ftc-tower" into useWalkingAvatars. That mode uses the FtC rule: fit the image within 95% of canvas width and 70% of canvas height, place it at x=0, and center it vertically.
The same computeBgPlacement output is used for canvas drawing, collision-map generation, the no-collision-map click fallback, and selected-building outline rendering. This avoids the common bug where a building looks aligned but clicks/collisions use stale bounds.
Generic gathering info sidebars now use absolute top-0 right-0 bottom-0 w-full md:w-1/2 with the same glass panel, border, and slide-in treatment used by FtC SF sidebars. At the 1440×900 audit viewport, every tested sidebar measured x=720 y=56 w=720 h=836.
The matching criteria passed for every event/gathering world route available from the Events gallery. Project-wide lint still has unrelated pre-existing backlog, but npx tsc --noEmit, npx eslint hooks/useWalkingAvatars.ts, and npm run build all passed for this change.
git checkout 94cf72d && npm run build && npm run start
Viewportagent-browser set viewport 1440 900
Video commandagent-browser record start assets/layout-parity-tour.webm http://127.0.0.1:3000/ftc-sf, then visit each route and click the building at 180,460.
TypeScriptnpx tsc --noEmit passed.
Focused lintnpx eslint hooks/useWalkingAvatars.ts passed.
Production buildnpm run build passed.
Assetsassets/layout-parity-tour.webm, assets/*.png, assets/layout-audit.json