Commit Graph
20 Commits
Author SHA1 Message Date
alexandClaude Sonnet 5 a30179737f fix: gate horn/wings steps by pony type — a Jordpony can no longer pick them
Horn/wings choices were free-standing toggles independent of the chosen
pony type, so e.g. a Jordpony (which has neither in the game's own lore/
stats) could still be given a horn or wings in the configurator.

Wizard steps are now computed from the selected type's hasHorn/hasWings
flags: Jordpony gets 5 steps (type/body/eyes/mane/tail, no horn or wings
step at all), Pegasus 6 (+wings), Enhjørning 6 (+horn), Alicorn 7 (+both).
appearance.hasHorn/hasWings are set directly from the type on pick and are
no longer separately toggleable — the on/off buttons are gone since the
type alone decides whether they exist.

App.test.js's pickPonyAndStartGame helper now clicks "Næste" until "Start
eventyr" appears rather than a fixed count, since step count depends on
which pony type the test picks.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-09 12:29:45 +00:00
alexandClaude Sonnet 5 3502350d4e fix: wing color had no visible effect, tail didn't move with the idle bob
- wing-folded.png/wing-spread.png were drawn in near-white/gray (sat ~0-5%).
  The color system recolors via CSS hue-rotate, which has no effect on
  desaturated pixels — so every wing color choice looked identical.
  Redrew both in a saturated warm tone (~30% sat) so hue-rotate actually
  shifts the visible color.
- Tail/horn/eye/wing are flat single-frame overlays with no walk-cycle
  frames of their own, so they sat frozen in place while the base/mane
  layers bobbed between idle frames — most noticeable on the tail, which
  looked static against the moving legs. Added a small synced translate
  on the second idle frame so the tail swishes along with the bob.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-09 12:22:47 +00:00
alexandClaude Sonnet 5 b827c567ac fix: drop mismarked mane files, add real style choice for mane/tail/horn/wings
- 9 of the 17 "mane" files (dramatic/fabulous/inquisitive/intelligent/
  perky/friendly/practical/stoic/tough) turned out to be small eye/
  expression icon glyphs, not hair art, when actually rendered — visually
  confirmed via headless-Chrome screenshot of every file's idle frame.
  Removed them from MANE_STYLES; 8 real hairstyles remain.
- Searched the full source asset pack (not just the curated "NES Style"
  folder) for additional tail art per user feedback that there should be
  several tails to choose from — the only other "*tail*" file found
  ("feisty tail.png") turned out to be the same kind of mismarked eye-icon
  sheet, not tail art either. Since no usable multi-style tail/horn/wing
  art exists in the pack, hand-drew 3 tail shapes, 3 horn shapes, and 2
  wing shapes as flat overlays (same technique as the original single
  hand-drawn accents).
- Horn and wings now each get their own wizard step (style grid + own
  color row), with an on/off toggle gating the pickers — previously they
  were crammed into one shared "extras" step with no style choice at all.
- Wizard is now: type -> body -> eyes -> mane -> tail -> horn -> wings
  (7 steps). PixelPonySprite gained Tail/Horn/WingIcon isolated-preview
  exports mirroring the existing ManeIcon pattern.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-09 12:01:31 +00:00
alexandClaude Sonnet 5 bad62efba1 fix: add eye/tail color steps, fix wing placement (was hidden behind the body)
- Wings were drawn *behind* the base body layer, so anything overlapping
  the torso silhouette was invisible — only a sliver peeked out. Redrew
  the wing art and moved it above the base layer so it visibly sits on
  the pony's back/spine instead.
- Eyes were baked into base.png and tinted by the body-color filter
  (so a blue pony got blue-tinted eyes). Extracted the eye pixels into
  their own flat overlay (eye.png) drawn on top with an independent
  eyeColor filter, and added a dedicated "Vælg øjenfarve" step.
- Split tail color from mane color (was tied to maneColor) and added its
  own "Vælg halefarve" step, isolated to just a color row like the other
  single-purpose steps.
- Wizard is now: type -> body -> eyes -> mane -> tail -> extras (6 steps).

Note: App.test.js in this commit also carries test additions from the
concurrently running agent (pixelpony image role, progressbar, game-controls
class assertions) — see prior commit note; same shared-working-tree
situation, verified via the full 62/62 passing suite before commit.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-09 11:51:22 +00:00
alexandClaude Sonnet 5 b8370edea5 fix: isolate mane picker to hair-only icons, start wizard with body color, make tail permanent
- Reorder wizard: type -> body color -> mane (style + color) -> horn/wings.
  Body color now comes right after picking a type, per feedback that the
  flow should start with krop rather than manke.
- Mane-style swatches previously rendered a full mini pony (body + mane),
  which read as "showing everything" instead of just the hairstyle. Added
  ManeIcon, an isolated single-layer render of just the mane sprite, and
  use it in the picker grid.
- Every pony now always has a tail (hasTail removed as a toggle) — a real
  pony shouldn't be optionally tailless.
- Verified horn/wing/tail placement against the actual base sprite
  silhouette with a standalone HTML+CSS harness rendered through headless
  Chromium (identical background-image/position math to PixelPonySprite),
  confirming the horn sits above the head, not mid-body.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-09 11:44:24 +00:00
alexandClaude Sonnet 5 64bc23409d feat: turn pony configurator into a 4-step wizard, fix invisible horn/wings
- Replace the old single-screen pony-type select with a 4-step wizard:
  type -> mane -> colors -> tail/horn/wings, ending in "Start eventyr!"
  which starts the game with the chosen type. PonySelectPage is removed;
  the wizard is now the 'start' page.
- Fix a real bug: the source sprite pack's horn.png/wing.png sheets turned
  out to be 1-3px alignment markers, not visible art, so toggling
  horn/wings previously had no visible effect. Replaced with hand-drawn
  flat overlay sprites (horn, wing, tail) positioned against the base
  sprite's actual silhouette.
- Add a dedicated tail toggle/layer (the pack has no separate tail art
  either), using the same hand-drawn-overlay approach.
- Update PixelPonySprite to support flat single-frame overlays alongside
  the existing 8x8 sheet layers.
- Rewrite App.test.js flow helpers and PixelPonyConfiguratorPage tests for
  the new step-based flow (58 frontend tests passing).

Note: App.js/App.test.js in this commit also carry in-flight
interaction-choice plumbing (handleInteraction/CHOICE_SCENE) from a
concurrently running agent in this same working tree — left as-is since
splitting it out isn't possible without touching files that agent still
has in progress, and the combined state passes the full test suite.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-09 11:34:29 +00:00
alexandClaude Sonnet 5 421c9259da feat: wire pixel pony configurator into home nav and app routing
Adds a "Design din Pony" entry point on the home page and a
pixelConfigurator route in App.js so the pixel-art configurator
(added in c19c8af) is actually reachable from the UI.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-09 11:18:57 +00:00
alex c19c8afc6d refactor: replace pony configurator with pixel art sprites from zip
- Removed PonyConfiguratorPage, PonyAvatar, ponyCustomization
- Flow is now: Home → Theme → Pony Select → Game (no configurator step)
- Added pixel art pony sprite sheets from /tmp/Pixel Ponies.zip
- GameScenePage uses pony image directly instead of SVG avatar
- 48 frontend + 67 backend tests passing
2026-08-09 11:09:25 +00:00
alex c16b8e8438 test: restore working App.test.js (39/39 passing across 4 test suites) 2026-08-09 09:19:18 +00:00
alex a3241b0f0b feat: voice button, intent classifier, theme/game service updates 2026-08-09 09:14:04 +00:00
alex 5ef76439e9 test: 37 frontend tests (App integration, API service, achievements), 43 backend tests — all passing 2026-08-09 09:11:13 +00:00
alex 7c4a0aadc4 chore: add *.db to .gitignore, remove game_state.db from tracking 2026-08-09 08:12:20 +00:00
alex 4f26ca8e1c feat: API input validation — bounds check pony type & tema, reject invalid input 2026-08-09 08:12:10 +00:00
alex f80c8aff79 feat: CLI generator --seed, --pony-count, --scene-count, --json, --quiet flags 2026-08-09 08:11:14 +00:00
alex 422b504921 refactor: audio engine (AudioManager class, separate music/SFX volume, localStorage persistence), CSS refactor (design tokens, organized sections, prefers-reduced-motion) 2026-08-09 08:06:57 +00:00
alex 819a27ef67 refactor: split App.js (884→319 lines) into pages/, components/, services/ 2026-08-09 08:01:00 +00:00
alex cfb0a95df3 feat: theme selection page, dynamic content from API, pony data from backend 2026-08-09 07:47:49 +00:00
alex 466dbc2214 refactor: game state persistence (SQLite), cookie-based sessions, health/reset endpoints 2026-08-09 07:44:42 +00:00
alex 06618b5e7d refactor: modular backend - dice engine, pony types, game state, API routes, tests 2026-08-09 07:41:57 +00:00
alex aab36f9a85 audit: baseline commit - MLP Pony Game prototype 2026-08-09 07:36:21 +00:00