Feat/fallow baseline update#100
Conversation
Split overworld interaction, bridge store updates, potassium command dispatch, and ridge blockout parsing into smaller units so cyclomatic complexity drops without behavior changes. Co-authored-by: Cursor <cursoragent@cursor.com>
Move derived bridge/layout state into useInteractiveAppShell and render the default overworld shell from InteractiveAppDefaultShell so the entry component stays a thin scene router. Co-authored-by: Cursor <cursoragent@cursor.com>
Share context load/guard handling between enter and exitTo via prepareContext and startContext. Co-authored-by: Cursor <cursoragent@cursor.com>
Extract parser/sourceCompiler validation into ridgeBlockoutValidation with domain constants in ridgeBlockoutConstants. Ignore stale transition guards before starting scenes and settle async lifecycle tests. Co-authored-by: Cursor <cursoragent@cursor.com>
Delete the legacy blockout compiler, generated map, and prototype runtime (traversal, trail cards, Cicka Home mutations). Bridge tracer and Stampede Sketch stay; docs and CI no longer reference ridge:source. Co-authored-by: Cursor <cursoragent@cursor.com>
Replace try/fail dispatch chains with focused session, combat, and boss modules so the adapter stays a thin facade without changing scene behavior. Co-authored-by: Cursor <cursoragent@cursor.com>
Shard large switch handlers and extract ricochet math so changed-file audit stays under cyclomatic/cognitive thresholds. Co-authored-by: Cursor <cursoragent@cursor.com>
Avoid TypeErrors when boss, enemy, or projectile bodies are missing during kill, recall boost, and boss fact reads. Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Code Review
This pull request removes the legacy Ridge blockout pipeline, compiler scripts, and generated artifacts, updating the documentation to establish the Bridge Tracer as the active Ridge runtime. It also refactors the PotassiumCommandAdapter and InteractiveApp shell into smaller, more maintainable modules, cleans up unused exports, and introduces shared math utilities. Feedback is provided to improve TypeScript type safety by ensuring proper type narrowing for projectile and marking the body property as optional in PotassiumCommandObject.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
I am having trouble creating individual review comments. Click here to see my feedback.
src/game/scenes/potassiumSlip/runtime/commandAdapterCombat.ts (151)
Under strict null checks, checking projectile?.body does not automatically narrow projectile to be non-undefined inside the block. It is safer and more idiomatic to use if (projectile && projectile.body) to ensure proper type narrowing.
if (projectile && projectile.body) {
src/game/scenes/potassiumSlip/runtime/commandAdapterTypes.ts (25)
Since the physics body can be null or undefined at runtime (as evidenced by the numerous guards and optional chaining used throughout the adapter code), it should be marked as optional (body?: PotassiumCommandBody) in the PotassiumCommandObject interface. This ensures TypeScript enforces safety checks when accessing body properties.
body?: PotassiumCommandBody;
No description provided.