# FIELDWORK changelog

## 2026-10-03 (v0.8.9, the windmill puzzle rebuilt)
- The old sail puzzle (drag four corners onto coloured rings, then drag four tension rings) is gone. It gave almost no feedback while dragging and could slip back to unsolved. In its place:
- Mote hangs the sail. Lift the membrane roll out and let it drop near the tower; Mote carries each corner up to its eyelet and the straps set themselves.
- The cord puzzle (src/cord.js): a snarled cord binds the rotor hub. Click the hub, or press E near the tower, and the view switches to Mote's camera hovering at the hub. Pull the loops off one at a time. A loop that is free glows cyan when you point at it. A loop that is pinned under another shakes, and the loops on top of it flash orange. Each loop you clear slides off and the count goes down. Esc or the back button returns to Seven at any time.
- Once the cord is clear it stays clear: the result is latched in the save, and the rotor can turn. The camera never pulls you back into the puzzle, and the old auto sail camera is removed.
- Cloth: the sails now use the XPBD constraint solver and canvas material from the Textile Academy cloth sim on ericrhea.com, with stretch, shear and bend stiffness tuned to match, and a finer 12 by 25 mesh. They use a linen texture with a normal map and a roughness map. Sunlight shows through from behind, so a sail seen from the shaded side glows warm instead of going flat grey.
- Older saves: a membrane that was unrolled but not yet hung is hung straight away on load. Saves already past the windmill count the cord as cleared.

## 2026-10-03 (v0.8.8, a real start menu, a clean screen, and the windmill fixed)
- Start menu rebuilt on its own set piece (src/title.js): Seven stands on a sandstone outcrop on the south slope at golden hour, looking out over the dead basin to the windmill and the pipeline, Mote hovering at its shoulder, a lantern flickering on a post, a little camp of drums and tyres, dust drifting in the low sun. The camera drifts slowly and leans with the mouse; fence posts and wires that would cross the shot are tucked away while the menu is up. The scene is sharp; the text sits on a soft gradient instead of a blur.
- New menu: a big FIELD / WORK logo, CONTINUE (or BEGIN on a fresh island), NEW GAME when there is a save to throw away, CONTROLS, and a keycap panel of the main keys. Enter or Space starts. On a phone held upright the menu sits low with Seven framed above it; the key panel gives way to the CONTROLS button.
- I hides and shows the whole HUD (panels, minimap, touch buttons, objective beacon, subtitles), in play, in cinematics and in the fight, for clean screenshots. Listed on the start menu and in Help.
- Windmill: the rotor now stands out on a longer main shaft with two braces and a collar, so the sails sweep clear of the gallery railing (they used to cut through it). Checked over a full turn: nothing comes within 4.6 m of the tower axis at railing height (the railing is at 3.9 m).
- Sail work camera: near the windmill with a membrane to hang or straps to set (or a corner or strap in hand), the camera eases back and frames the whole rotor face, the hanging corners and Seven, instead of following Seven at ground level.
- The membrane survives a reload: a sail that was unrolled but not yet fully hung used to vanish on reload, leaving the corner step with nothing to drag. It is laid out by the tower again, and a loose roll is put back where it was (or in the truck bed).
- Grabbing a corner or a strap while the rotor turns now says why it won't move ("lock the brake lever at the shed first") instead of doing nothing. Releasing the brake with the sail unfinished warns you, and re-locking confirms it. The corner step reads "Keep the rotor braked..." (it used to say "Lock the rotor", which invited players to drag the lever and release it).
- The Kraken now wakes only on the first real surge: new sail fully hung, shear key in, brake released and the rotor turning. Before, releasing the brake early on a half-dressed rotor could wake it mid-repair.

## 2026-10-03 (v0.8.7, the roll comes back out)
- Fixed: the roll could not be lifted back out of the truck bed. The bed's snap zone grabbed it again every frame while it was still near the truck. Now a roll lifted out of the bed does not snap back until it has been carried clear of the truck once, so you can pull it out and set it down by the tower.
- Pointing at cargo inside the truck (the roll, the crate, the key or the can) now picks the cargo, not the truck around it.

## 2026-10-03 (v0.8.6, Mote rights the truck)
- Mote watches the truck. If it ends up on its roof or side and stays there for a couple of seconds, Mote leaves whatever it was doing (undocking from Seven's back if it was charging), flies over, catches it in the tractor beam, rolls it back onto its wheels as it lifts it, and sets it down on the nearest level spot. Works whether Seven is driving it or standing nearby. "Mote: the truck is on its roof. Hold on, I will turn it over."

## 2026-10-03 (v0.8.5, reset means reset)
- "Reset the world" (Help) now really starts over: the save is erased and the page reloads into a fresh world, with every spawn, the truck, the crate, the Kraken, the sails, the water and the quest back at the beginning, and the opening cinematic plays again. Before, the page saved itself on the way out of the reload, so the old world was written straight back.

## 2026-10-02 (v0.8.4, every step solvable)
- Played the whole quest end to end in a scripted run (through the real drag handlers), both ways: crate on the truck, and the bare roll pried out at the depot and put in the bed. Every step now completes, from loading the membrane to the Works waking.
- Quest steps: loading the bare roll counts as loaded; hauling either the crate or the roll to the mill counts; a later step always fills in the earlier ones (drag the crate there by hand and the list still moves on); the tension and rotor steps latch once done, so a gust or a slack moment never sends the list backwards. The step marker follows the roll once it is out of the crate.
- Fixed: every tension-ring drag threw an error (an undefined variable in machine.js since the first build).
- Fixed: a typo of mine had switched off the water, crops and Works flags, so the Power step could never complete.
- Power was marginal: with the intake valve fully open the rotor rarely made enough voltage. The generator curve now carries the bus at a rotor speed the sail reaches in its working band. The Power step uses the same threshold as the sluice motor (V above 0.45).
- Crops: canal water only wetted a 3 m strip along each canal, and the crops are planted beyond it, so the fields never greened. Water now soaks out across each field the canal reaches, so they green over a couple of minutes.
- Taps on the Kraken breakers work (a tap was only honoured on things that cannot be dragged); this matters most on phones.
- The key and oil can rest on the shed workbench instead of dropping through it to the floor.
- Debris the Kraken throws lands half-buried in a sand pile, so a tyre on uneven ground no longer hangs in the air.

## 2026-10-02 (v0.8.3, the roll goes in the truck)
- The membrane roll no longer falls through the truck. Carry it anywhere over or beside the truck and it snaps to a slot in the bed, squared up and hovering, and the bed glows cyan; let go and it drops in ("Roll stowed in the truck bed"). If the crate is in the way it sits on top of the crate. The snap works off the roll's position as well as the pointer, so a fingertip on a phone gets it as easily as a mouse.
- Anything that falls onto the bed (the roll as it comes out of a crate that is already on the truck, the key, the oil can) lands on it, or on the crate, and rides with the truck. Lift it out to unload it; by the windmill, let go and the roll unrolls as before. If the crate is dragged off, whatever sat on it falls.

## 2026-10-02 (v0.8.2, Mote rescue)
- Hold T (about a second; a meter shows) and Mote flies over, lifts Seven, or the truck with Seven in it, on a cyan tractor beam, carries it to the nearest level, dry spot clear of everything, and sets it down. Cancelled automatically if a cinematic starts. On touch the UNSTUCK button is now RESCUE (hold it). U still hops you instantly.
- The start screen's key line and the Help panel list it; the "stuck?" hint suggests it.

## 2026-10-02 (v0.8.1, the ending)
- A full closing cinematic after the K.O. (about 50 s, Esc or Skip jumps to the morning). The finisher freezes in a white flash and plays over Station Seven's shoulder in slow motion, then cuts wide as the Kraken goes down into the flood.
- Seven wades over, reaches into the Kraken's chest and pulls its core out, red and spitting sparks; held up against the storm it turns cyan. Seven drives it into the water and the old Kraken rises from the middle of the lake, rewired, glowing cyan: "THE KRAKEN, rewired · the valley's pump". The rain stops, the water calms and drops, and a rainbow comes up over the far rim.
- The combiner walks home, shrinking as the team leaves it: Mote lifts off the crest, the farm bots hop down to the shallows, the SR-71 lets go and climbs away on afterburner, and the truck pieces fly back together on the shore. Seven powers the titan down, jumps clear and unfolds, and the Firehawk lies back down where it rested.
- Morning: a crane shot from the Kraken's eyes at water level back over the lake to the shore and up over the basin, and the title card. Then back to play.
- The tamed Kraken stays in the lake for good (saved): half-sunk, heavy-lidded, tentacles floating and swaying, vents steaming, and it feeds the bus a little instead of draining it.

## 2026-10-02 (v0.8, the flood and the combiner)
- The finale. Power down the Kraken and the drought breaks: a storm rolls in, lightning, rain, and the west sink floods into a sea. Seven folds into an engine and drives itself into the chest of the fallen Firehawk, which stands up out of the water as a combiner: the truck splits into its legs, the SR-71 comes in low and locks onto its back as an afterburner arm, four farm bots leap on as pauldrons and gauntlets, and Mote docks as the crest. The titan grows as each part joins ("STATION SEVEN, combined").
- Then the Kraken wakes again, grows a second ring of tentacles, and rebuilds itself into a brawler: iron mech body, furnace seams, tentacle whips off its back.
- The fight is a port of the FIRE HAWK brawler (same rig, same 26 clips, the same move table, chains, blocking, dashes, knockdowns and AI), scaled to titans and fought waist-deep in the flood: J jab, K cross, L kick, chain them; Shift block; Space dash; E Afterburner (spends the energy bar); T taunt. Touch has its own buttons and stick. Every step and hit throws spray and rings across the water; knockdowns land in a big splash. A second wind once if you drop. KO is slow motion, the storm clears and the sink stays a lake, with the Firehawk resting on its shore. Esc skips to the fight.
- Water: a real FFT ocean (Tessendorf spectrum ported from ClearWater, MIT, from the Tidal water study) baked to a texture at 30 Hz, plus ring ripples from feet and bodies, depth-based absorption over the drowned sand, shore and crest foam, swell that dies in the shallows, and sky reflections. Spray, sparks, steam and core light are one draw call each.
- Models: blender/titans/build_titans.py builds the Kraken mech (skinned to the Firehawk rig) and the combiner parts (truck halves, wheels, SR-71, core, anchors) into assets/fieldwork-titans.glb. The finale models and sounds load only once the Kraken wakes.
- Unstuck: U (or "Get me unstuck" in Help, or the UNSTUCK touch button) hops Seven, or the truck, to the nearest level, dry spot clear of every collider. Pushing against something for 3 s without moving suggests it.
- Quest markers: each step now points at where it happens (the crate itself, the brake lever until the rotor is locked, the live Kraken node, the pump and tank, the great wheel), the minimap shows an edge arrow when the target is off the map, and each new step is announced as "Next: ...". The Kraken, the fallen Firehawk and the post-flood lake are on the minimap.
- Cinematics keep a clear view: small props (poles, wires, drowned trees, scrap) that cross the line between the lens and Seven, Mote or the titans are hidden while they are in the way. Fixed a crash in the old clear-view pass (raycasting a label sprite without a camera) that stopped it hiding the pole when Mote docks.
- Fixed Seven's treads: the merged track meshes under each sprocket and idler were spinning about an off-centre origin and swung out like a black flap on each side. Only the wheel pivots turn now.

## 2026-10-02 (v0.7, the sand Kraken)
- New encounter in the west sink: a buried mechanical Kraken (blender/kraken/build_kraken.py, assets/fieldwork-kraken.glb). Riveted iron mantle with furnace-lit seams, shuttered red eyes, a crown valve and vent stacks, and six armoured tentacles with paired hydraulic rams across every joint and amber interior lights that run red-hot before a throw. Rusted with the same baked wear mask as the fallen Firehawk.
- It wakes when the windmill first turns (short in-engine reveal) and leeches the bus, so the pump and sluice stay dead until it is powered down. New objective after the brake step.
- The puzzle: three power nodes on its skirt, each feeding two tentacles. The live node's tentacles fling drums and tyres at Seven (a red ring marks the landing); after a throw the tentacle overheats and slumps, and the live node's armoured cover swings open for a few seconds. Drag its breaker down (or tap it) to cut the node; its tentacles go dark and limp. Three breakers and the Kraken powers down and sinks.
- Mote marks the live node and throws a holo-shield over Seven once every 14 s. A hit knocks Seven back and scrambles its controls for 1.6 s; no damage, no fail state. Low tentacles block Seven; Space hops over them.
- Tentacles are skinned to bone chains and bent procedurally (idle sway, menace, rear-and-curl wind-up, whip, vent slump, limp). Progress (awake, breakers pulled, done) is saved.

## 2026-10-02 (v0.6, depot set and the fallen Firehawk)
- The last primitive set pieces are Blender models (blender/vehicles/build_depot.py, in fieldwork-props.glb): a collapsed steel-portal warehouse (I-beam frames, trusses, corrugated sheets with missing, hanging and fallen panels, the east bays caved in, a sliding door off its track, racks, bench, chain hoist, sand blown in), a laced-column gantry with box girders, runway, trolley, hoist, chain and hook, walkway and ladder, and a new rim fence (posts, rail bays, wire, the odd knocked-down bay) drawn as instanced meshes. The warehouse now sits on a levelled pad instead of hanging off the rim slope.
- The fallen Firehawk is weathered for the desert (blender/weather_firehawk.py, run after fallen_firehawk.py). It came in showroom-clean: clear-coated paint, mirror chrome, lit lamps and running lights, and three steel materials set as non-metal. Now: paint is faded, matte and dielectric; bare steel is metallic but dull; chrome is pitted; gold trim is tarnished; rubber, plastics and glass are rough and never rust; every lamp is dead but one ember in the eye. A baked rust / dust / edge-wear mask drives a new 'wreck' material patch, so paint chips to rust near the sand and on edges, rust is matte and non-metal, and rubbed edges show bright metal. The sand coat was thinned so the paint and metal read through, parts are joined by material (about 400 draw calls down to 30), and the file went from 8.0 to 5.2 MB.
- The fallen Firehawk is placed in the world again (west of the slough), with colliders for the drift and body and an inspect label.

## 2026-10-02 (v0.5, characters, cutscene, day/night, mobile)
- Opening cinematic, "The day the water stopped" (~70 s, in-engine, Esc / Enter / Skip). The Works runs at full turn at dusk, a shear key snaps, the great wheel runs down and the basin goes dark; at dawn Mote limps home on a dying battery, docks on Seven's back and wakes it. Plays on a first run; ?intro forces it, ?nointro skips it.
- Seven, the robot, rebuilt in Blender (blender/characters): tracked chassis with real sprocket, idler and road wheels and an animated link belt; waist, torso twist, neck, head, eyes, brow, arm and fingers on a clean pivot rig. Clips: Idle, Look, Move, Sprint, Interact, Jump, Celebrate, Concern, Recall, Transform. Fixed the pulsing and the grey box outside the tracks. Procedural blink, gaze and idle fidgets.
- Shift sprints (2.25x), Space jumps. Seven leaves ruts in sand and mud, and grass parts around Seven, the truck tyres and Mote.
- Mote, the helper drone, new design: twin ducted fans that vector with speed, vanes, iris optic, holo fins, landing legs and a petal nozzle with a raymarched heat plume (from the SR-71 sequel). It follows, scouts the next job, casts a hex holo-net on your landing spot when you jump, lights the way at night, and folds onto Seven's back to recharge every couple of minutes.
- Targetmaster boarding: Seven folds into an engine block and slots into the truck's engine cradle; the truck only starts when Seven is in. Leaving reverses the transform.
- New Blender truck (Station 7 hauler) and props: drums, pallets, tyre stacks, farm bots, poles, silo, combine and shelter replace the three.js primitives.
- Day/night cycle, one full day every 7 minutes (?day=<minutes>, ?time=0..1): sun and moon shadows, stars, night exposure, truck lamps, Mote's spotlight. Metals were re-audited for PBR (steel, brass, tin and rust have the right roughness and metalness, with stronger reflections from the sky probe).
- Phones and tablets in portrait or landscape: floating stick, JUMP / X-RAY / F / MOTE / VIEW buttons, pinch zoom, compact HUD, FOV by aspect. The low tier culls small distant objects (1544 to ~490 draw calls), halves shadow updates and skips post, targeting 27+ fps.

## 2026-10-02 (v0.4, sound)
- Replaced the synthesised audio with 34 recorded sounds from the studio library, each confirmed by waveform and spectrogram (assets/sfx/SOURCES.md). AAC in .mp4, with an Opus-in-.mp4 twin for browsers without AAC.
- Engine is two layers (diesel idle, working load) pitched by rpm and throttle; mud squelch from slip; robot servo and track rattle; wind, crickets, birdsong as crops grow; canal water by distance; pipe flow, generator hum, rotor creaks; the Works drone, machinery, rumble and a hit per stage; winch motor and cable snap; cloth, tear, pour, clunks, clicks, UI tones.
- Asset loader at the very start: an instant first-paint card in index.html, then byte progress for models and every sound, then world build and shader compile, all before BEGIN.

## 2026-10-02 (v0.3, graphics showcase pass)
- New render pipeline (src/render.js): HDR composer with MSAA, bloom, filmic output and a photographic grade (split tone, vignette, grain, slight fringe). Quality tiers (?q=low|med|high, auto by default) and dynamic resolution; ?perf shows frame times, ?post=0 disables post.
- New sky (src/sky.js): graded dome, sun disk and aureole, two drifting cloud decks and cirrus. The same sky is prefiltered into an environment map, so metal, glass and water reflect it. The Works still warms the sky, light and grade as it wakes.
- Terrain shading (src/look.js): smooth normals, tiling detail normals, dry-mud cracks, wet sheen, puddles that mirror the sky with ripples, tilled furrows in the fields, gravel pads. Cloud shadows drift across everything with the wind.
- GPU grass (src/grass.js): camera-following instanced blades that read the live soil state, so grass spreads along the canals as the water arrives and leans with the wind.
- Water (src/water.js): silty canal and sump water with flowing ripples, sky reflections, bank foam and a foam head on the advancing wet front.
- Weathering on every prop and machine: triplanar grime, roughness breakup and rust bloom on painted metal. Rounded-edge boxes (src/geo.js) for the truck, robots and props; truck glass.
- Leafy, wind-swayed crops; gnarled dead trees; faceted boulders; reworked farm robots (tracks, road wheels, hopper, antenna).
- Dust motes in the low sun, softer tyre spray. Title screen now runs a slow aerial orbit of the basin behind the card.
- Procedural detail textures are generated at boot (src/textures.js); no new downloads.

## 2026-10-01 (v0.2)
- Added feel layer: tyre mud and dust spray, objective beacon with marker, minimap, rumble from the Works, penstock support legs.
- Atmosphere now follows the Works: the sky warms and the light lowers as stages complete.
- Richer earth palette; slightly lighter fog and exposure so the ground no longer washes out.
- Dormant farm robots moved from the rim slope onto the flat yard pad.
- Rim fence warning, stage log notifications, tidier mega.js latch and trip plate.
- Added to the GameLab atlas.

## 2026-10-01 (v0.1)
- First playable: truck, robot, mud, cloth sail, windmill drive, power and water chain, nine-stage Works.
