fix(student-space): polish growth reveal and Kira prompts - #102
Merged
Conversation
added 3 commits
July 27, 2026 11:23
Add Island.elevatedPlaceableCells() (tier >= 2, falls back to the full placeable pool if a custom spec has no elevated land) and point Sprouts.seededPlacement() at it, so sprout/bloom growth seeds on the raised grass tiers instead of the tier-1 beach.
…rator confirmation Queue the per-capture camera flow (_pendingCamFlow) instead of starting it immediately when the capture sheet/chooser overlay is open or another consumer holds the camera (Camera._zoom / _saveStack). Draining happens once the overlay closes and the camera settles (or after a 4s timeout), so the cinematic no longer plays behind the closing sheet and no longer corrupts the 'capture' owner's save-stack anchor. Also open the bottom Kira narrator panel during the camera hold to confirm the capture landed and the island is growing (GROW_NARRATION / BLOOM_NARRATION), extending the hold to NARRATOR_HOLD_MS while the panel is up, with early-dismiss and reduced-motion (words-only, no camera) paths. Note: this commit intentionally combines the deferral (Step 3) and narrator (Step 4) changes from plan 075 — the narrator wiring lives inside the same _tickCameraFlow/update() edits as the deferral gate, so splitting them into separate commits would require re-deriving interleaved hunks by hand.
…n timeout _drainPendingCamFlow's PENDING_FLOW_TIMEOUT_MS escape hatch called _startCameraFlow unconditionally, but _startCameraFlow re-runs _shouldDeferCameraFlow() with no timeout awareness — so a camera that's still busy past the timeout just got re-queued instead of flying, silently defeating the safety valve. Add a `force` option so the drain path's authoritative decision (overlay-closed, idle-or-timed-out) isn't second-guessed. Also adds test/engine/SproutsView.captureFlow.test.ts (plan 075 step 5): elevated seeding against the real committed spec + fallback pool, capture-sheet/chooser/busy-camera deferral with timeout and autoBloom merge, and the narrator confirmation beat (open on hold, early-dismiss, full-hold-then-close, already-active no-op).
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Summary
Captures now finish as one coherent island-growth beat: the capture sheet closes, the camera moves to growth on raised grass, and Kira confirms the save. The confirmation and close-up remain parked until the student presses OK; only then does the panel close and the camera return to the pre-capture view.
The cinematic waits while capture overlays are open or another camera owner is active, preventing the capture close-up from becoming the restore anchor. A four-second busy-camera valve still lets the flow proceed without re-queuing itself forever. Seed-derived sprouts and blooms now use tier 2+ placeable cells, while student-positioned objects keep their existing placement freedom.
Kira's ambient dialogue now asks short, concrete questions about school, classes, friends, and moments students may still be thinking about. Difficult-day prompts remain gentle but answerable, and the bird's speech bubble is narrower, quieter, and easier to dismiss without dominating the island.
The capture confirmation uses the narrator panel's required-acknowledgement mode: its close X and Escape dismissal are suppressed for this beat, while ordinary narrator and onboarding dialogs remain dismissible.
Validation
pnpm check: 0 errors (18 pre-existing warnings)pnpm test: 1,141 passed, 40 skipped, 0 failedManual smoke