Skip to content

Coat patterns: colorway × pattern model (#32, #38) - #42

Merged
nickwolf merged 14 commits into
mainfrom
coat-patterns
Jul 24, 2026
Merged

Coat patterns: colorway × pattern model (#32, #38)#42
nickwolf merged 14 commits into
mainfrom
coat-patterns

Conversation

@nickwolf

Copy link
Copy Markdown
Owner

Splits the cat's single bundled "coat" into two orthogonal axes — colorway (tone palette) × pattern (per-region tone map) — and carves four new recolorable regions (paws, points, tail, belly) so patterns can change the silhouette, not just tint two fixed areas. Adds curated randomization on top.

Closes #32
Closes #38

What's new

  • 6 colorways (orange, gray, black, white, + cream, brown) × 9 patterns (solid, tabby, bicolor, tabby_white, calico, + tuxedo, socks, colorpoint, van) = 54 built-in looks.
  • New recolorable regions m paws / x points (ears + face mask) / y tail / u belly, added to all three base templates; derived poses inherit via _overlay.
  • Randomize menu action + Surprise me every-launch toggle (off by default); first run seeds a random look and persists it. Rolls only curated colorway+pattern, never free-form hex.
  • Persistence migrates: customization.json now stores colorway+pattern; legacy coat files and the accounts.json coat seed translate automatically.
  • Tray icon reflects pane-0's colorway+pattern; the two off-thread menu getters read plain-Python shadows (no tk Vars), preserving Backlog: tray icon #21's tray discipline.

Byte-identity

The five legacy looks render identical to before across every sitting- and alert-derived state. Only flopped/stirring change — an intentional tail recolor so the swept tail follows the pattern's tail tone (previously pinned to coat, which left a two-tone tail under van/colorpoint). docs/media/state-flopped.png is regenerated to match.

Notes

  • ringed is deferred: a real ringed tail needs a ninth region char + art deciding which curl cells band. van already delivers the tail-region payoff.
  • colorpoint/van pale the body toward the colorway's light tone, so they read best on lighter colorways (dark corners are muddy by design — a user choice, not a bug).

Verification

  • 333 headless + 5 gui (xvfb) tests pass; ruff==0.15.22 clean.
  • New tests cover region coverage/closed-set, inner-ear-pink symmetry (a template-only regression no palette test can catch), and the flopped-sweep tail-tone binding.
  • Manual Windows gate pending (visual + native tray surface).

nickwolf added 14 commits July 22, 2026 15:42
… silhouette patterns

Carve four new recolorable regions into the three base templates -- m paws,
x points (outer ears + face mask), y tail, u belly -- and grow REGION_CHARS
to a closed set of eight that every pattern must cover.

Add cream + brown colorways and the tuxedo/socks/colorpoint/van patterns,
for 6 colorways x 9 patterns = 54 looks.

The flopped wag now paints the tail region char, so the swept tail takes the
pattern's tail tone and matches the resting curl. Previously the sweep was
pinned to the coat colour, which left a two-tone tail under van/colorpoint.

Byte-identity: every sitting- and alert-derived state renders identical to
before. Only flopped/stirring change, which is the intended tail recolor;
docs/media/state-flopped.png is regenerated to match.

ringed is deferred: a real ringed tail needs a ninth region char plus art
deciding which curl cells band.
…enders

The brief handed to Claude Design for the Tasks 8-9 art pass, kept as a
design-process record: it documents the character-grid medium, the region
carving, the identity-preserving defaults, and the verification gates that
the returned work was held to.

Reference renders are regeneratable:
  python3 scripts/render_sheet.py --out cat.png --scale 10 --colorway orange --pattern tabby
  python3 scripts/render_sheet.py --grid --out grid.png --scale 9
Rewrite the Customization section for the two-axis colorway x pattern model
(6 colorways x 9 patterns), the Randomize action and Surprise-me toggle, and
first-run random seeding. Reframe the accounts.json `coat` field as a legacy
seed that migrates to a colorway + pattern. Note settings.json (tray icon +
surprise me) in the persisted-files list.
@nickwolf
nickwolf merged commit 0bb1b95 into main Jul 24, 2026
8 checks passed
@nickwolf
nickwolf deleted the coat-patterns branch July 24, 2026 14:02
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.

Backlog: Random pattern and colors on start Coat pattern options (5–10 presets) in the Customize dialog

1 participant