Skip to content

app decomposition, package moves, and ripple effect tuning#67

Merged
FelineStateMachine merged 5 commits into
mainfrom
feat/app-decomposition
Apr 25, 2026
Merged

app decomposition, package moves, and ripple effect tuning#67
FelineStateMachine merged 5 commits into
mainfrom
feat/app-decomposition

Conversation

@FelineStateMachine
Copy link
Copy Markdown
Owner

@FelineStateMachine FelineStateMachine commented Apr 5, 2026

Summary

This branch is the full feat/app-decomposition stack, not just the final Ripple Effect follow-up. It reorganizes built-in package layout, decomposes more of the Bubble Tea app shell into screen-local models, and updates Ripple Effect generation/tests.

Diff Overview

  • 304 files changed, 1002 insertions, 854 deletions
  • Most of the file count is mechanical package moves and import rewrites
  • Behavioral changes are concentrated in app/, registry/, gameentry/, and games/rippleeffect/

What Changed

1. Package layout cleanup

  • Moved built-in game implementations from top-level packages into games/*
  • Moved print/export runtime packages into export/*
  • Updated imports across app, cmd, registry, tests, and adapters to match the new package map
  • Preserved package behavior for most moved files; the majority of these changes are renames with minimal code edits

Examples:

  • fillomino -> games/fillomino
  • rippleeffect -> games/rippleeffect
  • pdfexport -> export/pdf
  • packexport -> export/pack
  • builtinprint -> export/builtinprint

2. App/screen decomposition

  • Continued the Bubble Tea refactor by moving more view-specific behavior into screen-local models instead of keeping everything on the root app model
  • Reworked export flow state so the export form owns its UI/input state while the surrounding screen owns job lifecycle concerns
  • Simplified screen navigation and reduced duplicated root-level handler logic in the app shell
  • Updated app tests to match the decomposed screen structure and navigation behavior

Primary files:

  • app/export.go
  • app/model.go
  • app/screen_core.go
  • app/screen_navigation.go
  • app/update.go
  • app/view.go

3. Registry/runtime wiring

  • Updated the built-in runtime registry to import from the new games/* package locations
  • Kept catalog, registry, and gameentry responsibilities aligned with the repo package map
  • Refreshed architecture assertions/tests to reflect the new boundaries

Primary files:

  • registry/registry.go
  • gameentry/gameentry.go
  • architecture_test.go

4. Ripple Effect difficulty and generator work

  • Expanded the games/rippleeffect changes beyond a pure rename
  • Tuned mode/generation profile behavior for larger sparse boards
  • Added a substantial Ripple Effect test suite covering geometry, validation, solver uniqueness, import/export, rendering, and sampled generation invariants
  • Fixed a generator correctness issue where singleton normalization could return cages larger than Mode.MaxCage
  • Trimmed the Expert sampled test budget so full CI completes reliably while still checking the relevant post-generation invariants

Primary files:

  • games/rippleeffect/gamemode.go
  • games/rippleeffect/generator.go
  • games/rippleeffect/rippleeffect_test.go
  • games/rippleeffect/README.md

Why

  • Make the repo package structure line up with the intended architecture (games, export, registry, gameentry)
  • Reduce coupling in the app shell by keeping screen state closer to the screen that owns it
  • Strengthen Ripple Effect generation/validation while keeping CI practical

Validation

  • just fmt
  • just lint
  • just test

@FelineStateMachine FelineStateMachine changed the title [codex] reject oversized ripple effect cages app decomposition, package moves, and ripple effect tuning Apr 6, 2026
@FelineStateMachine FelineStateMachine merged commit ded640c into main Apr 25, 2026
2 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