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]>
- 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]>
- 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]>
- 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]>
- 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]>
- 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]>
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]>