Skip to content

fix(gallery): square-on stops, human-scale posters, museum inspect — live-pass tuning - #83

Merged
BIBOYANG425 merged 2 commits into
mainfrom
fix/curators-walk-tuning
Jul 29, 2026
Merged

fix(gallery): square-on stops, human-scale posters, museum inspect — live-pass tuning#83
BIBOYANG425 merged 2 commits into
mainfrom
fix/curators-walk-tuning

Conversation

@BIBOYANG425

@BIBOYANG425 BIBOYANG425 commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Fixes the three defects from the owner's production walk-through of the Curator's Walk (PR #82).

Owner findings → fixes

  1. "Showing half of the movie poster / the turn doesn't focus the poster." Two real root causes:
    • STOP_LEAD was a flat 2.4 left over from the pre-turn design, so the "turned" camera stood 2.4m up-corridor and viewed every case obliquely. It is now a derived constant(WALL_X + DRIFT_X) · tan(CASE_FACE_BIAS) — which places the turned eye exactly on the case's normal line: zero-foreshortening, square-on (smoke-measured edge skew 0px). Changing the bias or drift later keeps frontal-ness automatically.
    • The side walls were occluding the far half of every yawed poster (bias swings the far edge ~0.29–0.33m past the wall plane). Walls now stand WALL_STANDOFF = 0.35 behind the cases.
  2. "Posters should be 60–70% larger than an adult." Full metric rescale: CASE_H 0.93 → 2.8 (1.6× a 1.75m adult), with the hall rebuilt around it — WALL_X 2.9, CASE_SPACING 3.8, drift 1.45, room lead/tail, wall height, fog, camera far, glow/frame/label sizes, inspect distance. At a stop the poster fills ~79% of frame height.
  3. "Inspection background should be like a museum." The TMDB backdrop washed the frame at 0.9 opacity (it renders above the dim layer, so world-dim never touched it). Capped at 0.15 with a darker, blurrier bake — inspect now reads as a bright piece on a dark museum wall.

Guards added

  • Permanent square-on assertion in the smoke harness (corner-projection edge skew + center offset), plus a ground-truth WebGL readback (pump()/snapshot()) so throttled-rAF headless screenshots can't lie.
  • Existing guards still pass: inspect luminance 0.778 > 0.35, travelToTier arrival, zero console errors.

Verification

  • npx vitest run: 770/770
  • npx tsc --noEmit: only the 8 pre-existing errors (byte-identical set on main)
  • npm run smoke:gallery: 6/6 phases, exit 0
  • npm run build: gallery stays a separate lazy chunk

Disclosures

  • The tier-anchor case (scale 1.15) clears the wall standoff by ~2cm, not the ~6cm the base-case comment implies — bumping CASE_FACE_BIAS, TIER_ANCHOR_SCALE, or frame-strip size requires a standoff re-check.
  • The square-on smoke guard is calibrated to the harness's 1280×800 viewport.
  • Corridor pacing changed materially (spacing 3.8 vs 1.25) — spacious museum stride; eyeball on a long collection recommended.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Enhancements
    • Gallery corridors and display cases are now larger and more human-scale, with improved spacing and room proportions.
    • Walking view alignment and forward gaze have been refined for smoother navigation and more direct case presentation.
    • Wall, archway, lighting, and tier-label visuals have been retuned for better scale and clarity.
    • Inspect mode now provides improved poster framing, sizing, glow effects, and a darker backdrop for focused viewing.

BIBOYANG425 and others added 2 commits July 29, 2026 01:52
The owner walked PR #82 on prod and reported dollhouse-sized posters,
oblique cases that never focus, and half-clipped frames. Two coupled
root causes:

1. STOP_LEAD (2.4) was uncoupled from CASE_FACE_BIAS: the turned eye
   stood far down-corridor and viewed every case obliquely ("does not
   focus / half the poster"). STOP_LEAD is now derived —
   (WALL_X + DRIFT_X)·tan(bias) — so the eye stands exactly on the
   case's normal line and the 90° turn lands perpendicular, square-on.
   DRIFT_X moved to galleryLayout (re-exported from walkTurn) so the
   layout can derive the lead without importing the camera module.

2. Scale: CASE_H 0.93 → 2.8 (~1.6× an adult, the owner's ask), CASE_W
   1:1.5, CASE_Y 1.7 (bottom hangs 0.3 above the floor), EYE_Y kept at
   human 1.42. Corridor rescaled coherently: WALL_X 2.9, DRIFT_X 1.45,
   CASE_SPACING 3.8 (≈1.35×CASE_H), room leads/tails/arch, wall height
   5.4, fog/clip, glow/frame/label sizes, inspect distance and scale.
   A WALL_STANDOFF (0.35) stands the side walls behind the case so the
   now-wide poster's bias-yawed far edge no longer clips through the
   wall (the occluded-right-half bug).

Bias bumped 0.22 → 0.30 for a readable three-quarter face while walking
past; the derived stop guarantees the frontal moment. At a stop the
poster now fills ~80% of frame height, dead-centered and frontal.

Smoke harness: seed the converged camera pose and add a deterministic
pump()/snapshot() so the throttled-rAF headless screenshots are
faithful; phase 3 now asserts square-on (equal edge heights, centered)
from projected poster corners. galleryLayout length-bounds test updated
for the new spacing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The owner saw a bright TMDB backdrop still filling the inspect screen.
The backdrop plane sat above the dim quad in render order and animated
to 0.9 opacity, so the world-dim never touched it — a movie-still wash.

Cap the backdrop material at 0.15 opacity (was 0.9) and darken its
offscreen bake harder (brightness 0.28, blur 18px). The dimQuad's
darkness now dominates and inspect reads as art on a dark museum wall,
while the inspected poster (renderOrder 95) still draws bright over it —
the Task-2 transparent-list luminance guard keeps passing (max 0.778).

Verified with a deliberately bright injected backdrop: it stays a faint
warm tint, not a wash.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
movie-list Ready Ready Preview, Comment Jul 29, 2026 9:01am
movie-list-mvp Ready Ready Preview, Comment Jul 29, 2026 9:01am

@cursor

cursor Bot commented Jul 29, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ed26b889-aa0c-4e56-af94-f1013d453a75

📥 Commits

Reviewing files that changed from the base of the PR and between 3b8623e and 7c18d52.

📒 Files selected for processing (6)
  • components/gallery/GalleryEngine.ts
  • components/gallery/__tests__/galleryLayout.test.ts
  • components/gallery/galleryLayout.ts
  • components/gallery/walkTurn.ts
  • scripts/gallery-smoke/run.mjs
  • scripts/gallery-smoke/smoke.ts

📝 Walkthrough

Walkthrough

Gallery dimensions and camera pacing are retuned to human-scale values. Room geometry, lighting, inspect presentation, and backdrop rendering are adjusted accordingly. Smoke tooling now supports deterministic stepping, WebGL snapshots, projected poster corners, and square-on turn validation.

Changes

Gallery tuning and validation

Layer / File(s) Summary
Corridor scale and camera constants
components/gallery/galleryLayout.ts, components/gallery/walkTurn.ts, components/gallery/__tests__/galleryLayout.test.ts
Corridor, case, arch, spacing, drift, stop-lead, and look-ahead constants are updated, with layout length expectations adjusted.
Room geometry and case visuals
components/gallery/GalleryEngine.ts
Room walls, archways, labels, lighting, poster borders, glow, and picking geometry are rescaled.
Inspect flight and backdrop rendering
components/gallery/GalleryEngine.ts
Inspect clearance, poster scale, backdrop filtering, and backdrop opacity are changed.
Deterministic smoke diagnostics
scripts/gallery-smoke/smoke.ts, scripts/gallery-smoke/run.mjs
The smoke harness gains fixed-step updates, WebGL snapshots, projected poster corners, seeded camera state, and frontal alignment checks.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the PR’s main gallery tuning changes: square-on stops, human-scale poster sizing, and darker museum-style inspect presentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/curators-walk-tuning

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@supabase

supabase Bot commented Jul 29, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project emulyralduiitxuigboj because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@BIBOYANG425
BIBOYANG425 merged commit 18a5c61 into main Jul 29, 2026
6 checks passed
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.

1 participant