0.9.8 (2026-10-22)
- packs: declare a beam weapon; the YAL-1 moves to XML (b80af98)
- packs: declare a bus's trim, hop and spin; strategic moves to XML (5eaa903)
- packs: declare a gun's drawn gear and sounds; guns move to XML (10202df)
- packs: declare decoys and dispensers; countermeasures move to XML (bf98959)
- packs: declare directors, search sets, IR sensors; sights to XML (e385c2b)
- packs: let a launcher name its fire-control row; rails move to XML (39e01c3)
- packs: let a pack name a round's burst and plume and a gun's flash (dcd2eff)
- packs: let a pack replace a switched-off built-in on its own part (eecf7bd)
- packs: register a code pack's texts as one unit, and read it once (a1137e6)
- packs: switch a built-in weapon family off (ca0f7b4)
- ui: say restart to apply on the family that needs it (5a86c16)
- ui: switch every built-in family on or off at once (09ce299)
- icbm: say a post-boost miss in the unit that shows it (166c987)
- mod: remove the cloud pass's hook when the mod lets go of the game (331a21c)
- packs: read a pack's files as one unit (26bb156)
- turret: decide the ring's claims from this frame's rung alone (f141ae2)
- ui: say plainly when no weapon is registered (f7e6eac)
0.9.7 (2026-10-20)
- icbm: a map window of our own to set targets on (5b15684)
- icbm: draw what a warhead does to the ground round each target (ff4e0a4)
- icbm: join each rocket's targets and label only the selected one (9e90063)
- icbm: make the map a tool you can actually aim with (1210c35)
- icbm: set ballistic targets by clicking the ground-track map (9294474)
- icbm: weight the warheads by clicking the map (d1ea7c0)
- mirv: declare the heavy post-boost bus (edc9256)
- mirv: let a bus be sent to seven places, one per post-boost RV (1eb4ccd)
- mirv: release every RV nose-first along the airflow it will meet (5dd6e44)
- mirv: replace the Heavy MIRV Bus with the seven-RV bus (54a4868)
- nuclear: light a burst's aurora on KSA's own field, drawn as KSA's (1d4f477)
- nuclear: make bursts radioactive on KSA's Radiation gauge (c3ae81a)
- optic: add the YAL-1 nose turret as a roll-nod director (d236fec)
- optic: draw the YAL-1's beam as a green column on the GPU (1a726fa)
- optic: draw the YAL-1's beam as the light it scatters (9f2f9e3)
- optic: fire the YAL-1's laser as a weapon from cued-only directors (feb8cf6)
- optic: fire the YAL-1's megawatt beam (1559888)
- optic: stop the YAL-1's beam in overcast and light the cloud base (d71b1ae)
- optic: zoom the YAL-1's turret to its telescope's 1 mrad field (ef004f7)
- rounds: light a reentry vehicle's spin motors clear of its bus (9b380ad)
- rounds: spin the post-boost bus's RVs on their base motors (aab4f11)
- sensor: an infrared search part with a head that turns (619ca93)
- ui: show what each IRST holds and where a director's cue came from (3fa640d)
- camera: lean the chase off the axis KSA's camera cannot cross (ad49f3b)
- gun: hold a designated craft's ground contact through a bounce (231564a)
- icbm: fit the map to its shape instead of stretching it (655f1f8)
- icbm: judge the map's dateline against the world, not the zoom (aa5c7fb)
- icbm: let a drifting hold drop KSA's own attitude hold too (dcdb5a7)
- icbm: say when a click will replace the target set, not add to it (1703ef9)
- mirv: hold the coast warp off while warheads are in the air (43a28da)
- mirv: judge the aim's departure before carrying it to the release (a9de731)
- model: bake the YAL-1's seam and markings without stair-steps (b59a7a5)
- model: paint the YAL-1 window as a telescope, not an eye (ebe5d3b)
- model: take the orange off the reentry vehicle's outer skin (006535c)
- optic: draw the YAL-1 beam into open sky and fade it with the air (74cab97)
- optic: draw the YAL-1's beam as a rod, not a wall (a2ef94e)
- optic: hide the YAL-1 beam behind the cloud deck it climbs into (16d494b)
- optic: let a shift-click reach every director on the craft (29be751)
- packs: name the refusal behind an unresolved pack reference (6d8173a)
- parts: list the YAL-1 turret under Weapons, not Sensors (2405e31)
- rounds: draw a round far from its launcher placed off the camera (f85f53f)
- sensor: show the IRST's head behind its glass (2a1851b)
- sight: draw the sight's text on whole pixels (5a3db50)
- ui: call the YAL-1's beam supply chemicals, not a magazine (24bda23)
- ui: list the YAL-1's turret once, not twice (d7f45af)
- ui: spawn test targets past a craft with no weapons system (feaf1d5)
- ui: stand the lock cue down over a spent launcher's rounds (218b863)
- ksa: retarget 2026.10.19.5638 (f553c09), closes StarMapLoader/StarMap#91
0.9.6 (2026-10-13)
- icbm: keep the computer's targets and settings in the save (ab8c9ce)
- icbm: let the trim wait out the spent stack before closing on it (5e8db1a)
- icbm: show what the shot needs against what the stack has (542168e)
- icbm: wait out the spent stack, and trim through a held keyboard (b78feb5)
- mirv: spend the split reserve on a walk's later hops (b9cac9f)
- ui: say on the Ballistic tab where the warheads burst (ca7c15c)
- effects: pick warhead presets on Core's resized conflagration (fd746eb)
- icbm: add the release kick where it happens, keep a recent aim, on (9e28640)
- icbm: hand a stack outrunning its shot to the closed loop, on (1586a87)
- icbm: hold for a burn window without losing it or the jets (b2cd576)
- icbm: keep a hold's burn window, and light it only once turned (d117411)
- icbm: land a long coast from orbit on its aim, not its clock (39d7a4e)
- icbm: latch a burn's arrival after its solids, from orbit too (183c4ba)
- icbm: let a coast warp while nothing is correcting (ad02a27)
- icbm: let an orbital hold warp to its burn window (2066f3f)
- icbm: light a held burn at real time, not inside a warp (64d411f)
- icbm: move a release staged too early to the end of the list (02f37ba)
- icbm: pulse a throttle below the floor rather than break the stack (5ac7e5d)
- icbm: push a liquid stack's stalled cutoff through at 25 km (3d4f416)
- icbm: retrim a refused bus onto the cheapest arrival, not none (4a07bce)
- icbm: stop the stack wait holding long shots' post-boost correction (516d301)
- icbm: turn a holding stack onto its burn just in time (0905442)
- icbm: turn into the airflow before dropping a spent stage in air (87c6a29)
- mirv: end the stack wait once the first warhead has left (ac92bca)
- mirv: price a multi-target walk at what the bus actually spends (016a5f3)
- mirv: stop the coast's warp early enough for a walk to hop (ea87a76)
- rings: stop stacked targeting rings compounding into a glow (076a9ef)
- settings: follow the save the game loaded and wrote (c4196c9)
- ui: say a holding bus's impact comes after its burn (cf25c1e)
- ksa: retarget 2026.10.10.5554 (ec1fe4e)
- ksa: retarget 2026.10.13.5602 (c4528ee)
- saves: remove the startup save repair after its one release (5e1cab3)
0.9.5 (2026-10-06)
- bombs: painted sight rings, and steer the last bomb in its reach (db8fdcb)
- clouds: a burst in dry air raises no white cloud and glows purple (ca9ce16)
- clouds: air bursts, Tsar Bomba and the high-altitude sky (a01f6b3)
- clouds: hold a burst's debris in the field above the air (85353fa)
- clouds: send Teak's red wave out from a burst high in the air (5654983)
- countermeasures: flare and chaff dispensers that decoy seekers (336db7c)
- damage: give every part health and a damage scale (9e0f403)
- flash: a burst's heat and light by the air it went off in (b463c5f)
- gun: add the M197 chin turret (83c5ca6)
- gun: draw every shell in the air, with no limit on how many (3635e9a)
- gun: draw tracers in the shader pass, and smoke where shells burst (864db56)
- guns: leave shell holes in the hulls they strike (d03f445)
- icbm: keep the throttle moving while a window has the keyboard (419b901)
- icbm: land short shots to millimetres, no spin after the boosters (d76bfcc)
- icbm: paint the MIRV aim and target rings on the ground (2c04de3)
- icbm: say when a short shot's cutoff has stalled (696f509)
- iff: a craft's name no longer puts it on a team (e3d6cfb)
- radar: hostiles show their heading, and the scope fits the set (c2e9fe5)
- rounds: a destroyed launcher's rounds keep their bodies (c3701e9)
- saves: repair saves listing subparts a part no longer declares (2f0f885)
- stations: one sight, one row and one mark per weapon (aae1732)
- tanks: leak fuel from holed tanks (4329c5e)
- tuning: cap the B61 at 340 kt and say charges in kt and Mt (6c3db7b)
- turret: sweep each gun's travel against its own craft (d40a674)
- ui: one section per weapon, a weapon picker beside FIRE, less text (50eeec1)
- blast: judge a high burst's damage on what its air leaves of it (842967b)
- blast: run each burst's front in the air it went off in (38901d5)
- bombs: publish the tail kit's reach only as a whole solve (8e7e1bf)
- camera: stop reporting the chase's cut to an observer as a fault (45e6212)
- clouds: draw a nuclear cloud at the size the laws give it (b1bf6ac)
- clouds: draw every burst's sky, and stop the aurora jumping (4b4a6db)
- clouds: keep the Wilson cloud, with its density set by its size (b450914)
- clouds: let the fireball go out instead of switching it off (98afcf6)
- clouds: one glow, aurora and fireball light for a bus's salvo (df63dbd)
- clouds: place the X-ray layer and aurora by the air above them (11bb14f)
- clouds: stand a nuclear cloud for eight minutes rather than four (0633447)
- clouds: stop drawing the Wilson cloud KSA's particles lit black (f019988)
- clouds: thin an ageing nuclear cloud by 15% rather than 35% (2df15c1)
- clouds: widen a nuclear cloud as it rises, not with the blast (e1ee98e)
- fire: a loaded bomb rack reads clear rather than holding fire (0eb938d)
- gun: fade the rounds between tracers with the sun (4709f86)
- gun: find a gun's reach however far the aim point is (20ac357)
- gun: let a burst fired by hand run on while the gun is swept (7ad58fb)
- guns: test a gun's line of fire across its whole craft (2548fb4)
- icbm: fly ballistic shots of any range by default (56ecc03)
- icbm: hold the flown rocket's aim correction until its solids burn (87a4e02)
- icbm: keep saying how short a burn ended after the first frame (0483b59)
- icbm: kick a long shot off its probe miss up to 1 m/s (110c56a)
- icbm: kick short shots off the probe miss after the trim too (d1ec327)
- icbm: let a bus with six targets walk between them (a7f49a4)
- icbm: let a short shot's backstop hand up to 10 m/s to the trim (3d5ea59)
- icbm: read the ground at the aim, not ahead of it, after cutoff (aa64d11)
- icbm: release through the bus, not the weapon the panel selected (5f76193)
- icbm: stop a walking bus spending its trim budget on overshoot (3b4b4f6)
- icbm: stop crewing a spare computer on a spent stage (5812793)
- log: print a round's miss to a tenth of a metre (90422a6)
- radar: let the Phalanx and the 5"/54 see as low as they can shoot (3a0dba2)
- reload: only the Pantsir refills itself (a0f5f3c)
- render: hide the fireball's glare behind whatever is in front of it (062f330)
- sound: hear a burst at its body's speed of sound, shake by its gain (baa4cca)
- sound: hear and feel a high burst when its front arrives (5112f98)
- sound: keep the guns audible through a string of explosions (2dab040)
- ui: let a click on the world act with the UI hidden (1ef11f5)
- ui: stop telling players a craft's name decides its team (9941a52)
- weapons: keep a destroyed craft's weapons on it until retired (aadb9b1)
- weapons: keep a launcher's magazine when its craft dies around it (52a176f)
- clouds: draw at most four sky dispatches, each kind's best first (7c536ac)
- clouds: march a cloud's steps by the chord, not a fixed 48 (bdd9ff6)
- clouds: march the aurora for a tenth of what it cost (68e4a54)
- fire: compile the kill path at load, off the frame (aa48f97)
- ksa: retarget 2026.10.7.5541 (7bb32c5)
0.9.4 (2026-09-24)
- clouds: keep the cloud inside its own blast front (c85e8c7)
- fire: hold fire on a lock past the seeker's gimbal limit (54c1c42)
- icbm: label the mid-burn prediction as the burn as planned (ee0fc3e)
0.9.3 (2026-09-24)
- ksa: retarget 2026.9.22.5482 (3a2f79c)
0.9.2 (2026-09-23)
- audio: hear a bigger burst as a longer, deeper roll (152e00f)
- camera: watch a nuclear burst for as long as it is doing something (5fbe109)
- chase: cut to an observer to watch a nuclear burst (d8655a2)
- damage: break parts under fronts together, spare the tipped (2782b4b)
- damage: dent a part once when several blast fronts reach it (641f79c)
- damage: dent and throw dust as the blast front arrives (d9d0411)
- damage: dent to the blast radius and shove craft with the wind (67a7177)
- damage: dent what a blast loads short of breaking (b50dd21)
- debug: capture what you see for whoever is diagnosing it (b255d62)
- icbm: a stalled pulse phase falls back to holding, on by default (46ccb37)
- icbm: draw the bus's reach, and refuse a click outside it (9b137dc)
- icbm: fly the bus between targets and release each one's warheads (49f62a7)
- icbm: list a bus's targets, and let a coasting one take more (750eecd)
- icbm: place a bus's targets before launch, aimed at the farthest (9632d9e)
- nuclear: bend the light at the blast front (2fd734a)
- nuclear: draw every blast front and feel every one pass (ade3e52)
- nuclear: shake the view as a blast front passes the camera (a5c516c)
- radar: black out a radar beam that crosses a fireball's air (b1beaa2)
- render: a burst behind you is not a burst in your eyes (96ca482)
- render: a burst on the sea lifts spray, and burns nothing (f165a3e)
- render: a burst with no air blinds a viewer too (29a1ccd)
- render: a cloud stands four minutes, spreading as it ages (44330e2)
- render: a ring of dust races out behind the blast front (22b93d0)
- render: a thinner stem, with dust drawn up into the cap (16425e1)
- render: a white-hot ball that grows and burns for its real time (68b9eee)
- render: a young burst is dirty, and burns through its own smoke (a009378)
- render: an ageing cloud is drawn out downwind, not slid (9402287)
- render: burn the ground the fireball stood on (24fc6b8)
- render: condensation collars on the stem, and a white crown (103097c)
- render: draw every standing cloud, and merge coincident bursts (64d31b0)
- render: draw the base surge again, as particles (7e3a09f)
- render: fallout hangs from the cap only once it can have fallen (1ac9623)
- render: flash blindness lasts longer at night (27dbc0e)
- render: give the flash its second maximum (6f1b32e)
- render: give the raymarched cloud a sky to be lit by (62de76d)
- render: hang fallout streamers off the cap (0179e49)
- render: hold a glare halo round the fireball while it burns (0978d69)
- render: keep the ground burned after the cloud goes (0b82467)
- render: lay the fallout downwind instead of in a circle (bdd81e9)
- render: let the cloud dissolve instead of switching off (74c1796)
- render: let the cloud sail off the ground it burned (4acb374)
- render: let the fireball light the cloud it is inside (32a7358)
- render: light the cloud with KSA's own atmosphere (bf68b57)
- render: light the cloud with the sun the engine says reaches it (6ec21b5)
- render: light the raymarched cloud (8967ae3)
- render: make the cloud read as a mushroom rather than a column (90bfa04)
- render: raymarch the cloud instead of walking it with capsules (27a05b9)
- render: reach KSA's shader library from the mod's own shader (b73e3ce)
- render: resolve the cloud's grain over frames (70d43cd)
- render: retire the pen cloud; the raymarch is the cloud now (3d585ff)
- render: run the mod's own compute shader inside KSA's frame (06469f1)
- render: shade the burst by KSA's weather, as the ground is (288353a)
- render: shear the column, do not just lean it (54f036f)
- render: smoke rises from what the flash set burning (9fc608b)
- render: spread a big burst's cap into an anvil at the tropopause (5892e26)
- render: spread the stem's foot into a wide skirt (81f2059)
- render: taper the stem and grade the cloud's colour with height (4d29123)
- render: the bang arrives when it actually would (a1f14e5)
- render: the condensation cloud over the first couple of seconds (750f410)
- render: the fire ring opens in the middle, seen from below (918f357)
- render: the fire runs round the ring once the ball has hollowed (7b5ae2e)
- render: the fireball is the cap, not a second object (658e2c1)
- render: the flash blinds violet, and fades through lavender (6c48ac7)
- render: the view goes white when a burst goes off in front of you (c60800e)
- rounds: send a falling store somewhere else after release (fee274a)
- rounds: throw ground where a burst has no air to grow a cloud (1c9cfe9)
- ui: send the controlled craft to another body (75e2166)
- ui: stop the burst tool's ring hiding the burst (1bbd4d4)
- audio: mix the nuclear bang's rumble in, and bang for every burst (f6ea164)
- camera: centre the hold on the cloud rather than on the crater (d0418c5)
- camera: leave room round a cloud instead of standing on its crown (14f1f4c)
- camera: watch a nuclear burst from far enough to see its cloud (07b5cbe)
- chase: ride a thrown-up store until it is nearly down (c005f29)
- chase: stop earlier for a bigger bomb, and keep its burst in frame (8448a21)
- damage: anchor a blast where the ground it went off on is (89e8251)
- damage: follow the blast front to a moving craft, cap its shove (63139a0)
- damage: let the ground break a craft a blast throws (bcb6f88)
- debug: captures stop showing the UI's windows as rectangles (6b43bac)
- icbm: accept a hop on the trim's question, not the planner's (f2d34df)
- icbm: plan a walk on the coast's length, not what is left of it (3ae8db6)
- icbm: walk a chain nearest-first, and stop when the budget is gone (6b83417)
- nuclear: give a bomb dropped on a standing cloud its own burst (27d5e07)
- nuclear: hide the cloud behind a deck the camera is looking through (9f0f76d)
- radar: read a craft's side off its flag, not off its name (d0eb726)
- radar: stop a mount shooting at its neighbour's outgoing rounds (ff5e58c)
- render: a pass nobody asked to build has not failed (aa43dfb)
- render: bind the viewport's slot, not the frame index (84de67e)
- render: blind by the flash's power, on the eye's log scale (9421bcb)
- render: centre the flash on the burst and warm it off-axis (0333a4b)
- render: clear a nuclear burst's effects when a save loads (331c9fb)
- render: draw the blast wave at the size the warhead says it is (71e1403)
- render: draw the burst behind the weather clouds in front of it (b96e4be)
- render: draw the fireball and its light when no overlay is on (76a5025)
- render: fade weather occlusion in behind its distance (9ebf4ec)
- render: hold an airless burst's dust together until it lands (8c1a2d6)
- render: hold the cloud's lean through its stand (e2adff6)
- render: keep the cloud standing where it burst (9463886)
- render: keep the thrown dust a sheet as it spreads (210f815)
- render: KSA's cirrus no longer punches holes in the cap (2cf3a1b)
- render: lay fallout down as a ragged cigar, not a ruled box (7cbe8f4)
- render: let the eye recover while the fireball is still burning (e4e3260)
- render: let the raymarch draw the skirt, and drop the black collar (9c5c27d)
- render: mark vacuum ground by radiation reach, with no plume (b8fd102)
- render: no dark ball in the cloud, and its glare rises with it (4d4c629)
- render: shade the stem and the cap's underside by the cap above (f90a945)
- render: ship the shader, which nothing was copying (4112020)
- render: size the fire plumes in metres, not by the yield (c2951b4)
- render: stop a burst's edge behind weather clouds from crawling (fe46ebe)
- render: stop lighting the cloud when the sun is below the horizon (a9a145c)
- render: stop logging an include error on every shader compile (560f37c)
- render: stop the burst's own volumes occluding its cloud (2663394)
- render: take the black out of the foot of the cloud (ed493b5)
- rounds: climb the cloud on the tracked curve, not a step response (bc4b848)
- rounds: darken the nuclear smoke enough to read as dirt (e213015)
- rounds: draw the airless burst through the volumetric renderer (c31e09a)
- rounds: ground-test a round against the body it is over (d20ff63)
- rounds: keep a falling store through timewarp (e84ea0a)
- rounds: measure burst height over the ground, not the mean sphere (99afc01)
- rounds: stop Core's explosion smoke sitting under the mushroom (cfcbe99)
- rounds: throw dust on an airless body, not smoke (4a64139)
- sight: hold the store's rings through a failed solve (41e0c09)
- sight: keep the store's reach rings on the ground between solves (86b33bb)
- sight: stop predicting a release the rack cannot make (d591196)
- sim: a body with no atmosphere has no air (e741261)
- ui: keep developer tools off a player's install (95efbe5)
- nuclear: stop bending the view for a front that has passed it (93137fd)
- overlay: keep a draped ring instead of draping it every frame (a1cf5a1)
- render: dispatch a ground mark over its own footprint (41a58fd)
- render: reject a sample before its noise, not after (68ac01b)
- render: stop the shadow march paying for detail it cannot show (c3a3d4b)
- sight: stop redrawing the store's rings from scratch every frame (d6ec479)
0.9.1 (2026-09-19)
- fire-control: select the cannon, and fire on a shift-clicked craft (4aeac40)
- assets: ship no character, so a launch through Borea does not crash (f8b52ab)
- chase: hold the view still while the game is paused (e9f7110)
- model: size the Mk 42 and CIWS stack nodes so they sit on a tank (3203d14)
- rounds: burst a loose round without its launcher's velocity (05eac33)
- build against StarMap 0.4.7 (8d3b8ab)
0.9.0 (2026-09-19)
- arsenal: an AGM-88 HARM that homes on whatever is transmitting (076a098)
- camera: look around a chased round with the orbit drag (c2f6361)
- camera: stop a chase short of the arrival and watch it go in (82b78fa)
- camera: turn the chase onto the target, and let go of a lost round (90b75ea)
- effects: a mushroom cloud through the booster-plume renderer (dccfd42)
- effects: a nuclear burst - flash, fireball and a cloud that rises (9aec1a0)
- effects: lay a smoke trail behind a burning round (84f5d75)
- effects: set warheads off as KSA's own explosions (4eaee21)
- fire-control: fire without arming, and let auto-engage decide (6b7e75c)
- fly any rocket to a target designated on the map (1e24ec7)
- gun: add the 5"/54 Mk 42, led on the engine's own drag (954b684)
- gun: throw a shell as far as it goes at a place beyond its reach (41d5c28)
- hook the attitude command in, so the computer can actually fly (2f264c1)
- icbm: aim a salvo's warheads at a ring, not all at one point (6382e2a)
- icbm: fly one flight per rocket in the world (ea5e83e)
- icbm: fly the warheads' real drag, and solve their kicks in air (70b5760)
- icbm: give a ballistic computer only to a craft carrying the bus (0b3c25f)
- icbm: give up an arrival the trim cannot possibly fly (3d9cb55)
- icbm: judge a target's ground before a night is spent on it (97c3153)
- icbm: let the aim correction be switched off (1c9fa78)
- icbm: log what the ground under the aim actually does (43fb796)
- icbm: refuse a trim direction that closes on the spent stack (990365a)
- icbm: say how near the bus came to the stage it dropped (7535135)
- icbm: say how squarely a delivered pulse landed on what was asked (339fedf)
- icbm: say what a trim's pulses asked for and what arrived (133d746)
- icbm: say when the arrival asked for cannot be afforded (dc13528)
- icbm: say which way the split debt points (c1aa4e3)
- icbm: ship the arrival preference the night resolved (de9f81c)
- icbm: stop a prediction on the terrain, as the round already does (34e96ca)
- icbm: stop every prediction on the terrain, not a chord of it (e7ae587)
- icbm: take spent ascent stages out of the world (872f561)
- icbm: two switches for the long-range trim stall, both off (b55958f)
- map: the ground under a director, with its contacts on it (c76b47e)
- model: author the B61-12 and its MAU-12 ejector rack (29e23cb)
- model: deflect the B61's fins with the steering command (5054220)
- model: point the MIRV bus's six tubes the same way (ab6584d)
- model: put the bus's small attitude thrusters back (8a864d3)
- model: quarter the MIRV bus's minimum thruster pulse (f1cddda)
- model: remake the Mk 15 Phalanx as authored art (a1af99a)
- model: seat the bus mass in its thruster ring (98e48e5)
- model: size the bus attitude thrusters as attitude thrusters (fef2b1b)
- model: square the bus roll jets and add the radial four (dbbbd30)
- model: sweep a seated round's fins for testing (fb39028)
- move the Mk 82 bomb rack out into a weapon pack (cb83873)
- optic: a LITENING targeting pod on a roll-nod gimbal (687c9e1)
- pick the flight up from any state, and count down to impact (38d7143)
- radar: a PPI scope on the Radar tab (1090541)
- radar: draw north and the array's believed bearing on the vehicle (140e40c)
- radar: offer a scope only for a set that presents one (6239dff)
- radar: sweep off the real array, one trace per face, and a pop-out (b52fed2)
- radar: symbology on the scope -- what a contact is, not just where (5704171)
- radar: turn the CIWS sweep at 90 rpm and draw the lock (59696bc)
- rounds: an AIM-120C AMRAAM on a LAU-128 rail (831f469)
- rounds: break individual parts, not whole craft (77534de)
- rounds: drag a round by its mass, calibre and coefficient (e2b1350)
- rounds: fly on when the launcher that fired them is destroyed (bceff3f)
- rounds: release a guided store onto what is designated (5375a64)
- rounds: report how far a round landed from what it was aimed at (0b8b796)
- rounds: report where a round landed, not just how far off (ef0e7f1)
- rounds: steer the B61's tail kit (a3f53ef)
- sensors: give the Pantsir a director that rides its turret (d0c092b)
- sensors: lock an installation onto anything with shift-click (7c3ce78)
- sight: say why the head is not on what it has bracketed (c9fdfc5)
- sim: aim each tube before it fires, and let go of the stack (1b6e658)
- sim: aim each tube before it fires, by default (b0aa37a)
- sim: aim for the instant the correction will be flown, not for now (15a3d07)
- sim: aim the scenario at what is defending, and watch it arrive (3342185)
- sim: check that what registered can actually be found (fcdb394)
- sim: coast the warhead at the frame its errors cancel nearest (f619daa)
- sim: drop mushroom clouds on a scripted shot, gate on frame time (1459eae)
- sim: find the decoupler holding a launcher on (0c775f5)
- sim: follow a launcher onto the craft a decoupler left it on (e2b6adb)
- sim: follow the warheads when the launcher lets go (dc09b6e)
- sim: hold the warhead's coast at the step its profile names (23422a3)
- sim: judge the reach on the stack, and fly what it can afford (1be43cc)
- sim: let a warhead re-read the ground as it meets it (0af6da3)
- sim: let a weapon pack be assets only, with no code at all (bbce5bf)
- sim: let another mod register its own weapons (421fedc)
- sim: let the bus correct its own aim after the engines stop (51a9a6e)
- sim: let the operator ask a shot to arrive steeply (a105476)
- sim: put a speed on each system row, and the site on the aim point (57062bb)
- sim: quieten the Mk 21's ejection kick to a quarter (7f0f84e)
- sim: ring the aim point on the ground instead of balling it over (316da5e)
- sim: trim the bus back onto its solution before the warheads go (65d73d6)
- sim: wait for the planet to bring a target under the orbit (9c44717)
- sim: weapons on one craft share a target count (bb4ad2b)
- ui: a lock cue on the glass, closing as the lock matures (bf35502)
- ui: fold the ballistic computer's engineering settings away (743457d)
- ui: mark what an installation is designated on (3785ace)
- ui: move the panel's explanations into tooltips (7cabe16)
- ui: only show a scope for a set that presents one (c555e15)
- ui: open a camera window from the director's row, and name it (4dfafd3)
- ui: pick a craft's team from its flag, declare teams in settings (9b82741)
- ui: replace the system list with a vessel switcher (a395c0c)
- ui: say what a director is watching, and let go of it (f4637e0)
- ui: say when a target is off the orbital plane (4a9ee0d)
- ui: say whether an off-plane target is a wait or a dead end (c9f72c3)
- ui: stations carrying the same store are one weapon (a770237)
- ui: surface the controls that were three folds down (af10a04)
- ui: switch between the weapons on one craft (fd46f0e)
- weapons: a B61 on a rack, and a warhead law that survives it (109eef9)
- weapons: a heavy ICBM MIRV bus with six reentry vehicles (31862fe)
- camera: draw a long shot's rounds past their launcher's cull (a3e9bbe)
- camera: hand the view back when the craft dies or vessel changes (7db21aa)
- camera: keep a chased round in frame, and keep driving the view (4857501)
- camera: keep the chase's view recording when a hand-back is refused (a2ad9fa)
- camera: put the mode back when a chase is taken over by hand (dfa025c)
- camera: ride a falling bomb down to its burst without flipping (94482cf)
- camera: steady the chase aim, and hold it on the target to impact (810e44b)
- camera: step before the planet is prepared, not after (05c7292), closes #11 #7
- camera: stop the ground clamp shaking a low chase (9c7259e)
- ci: clear the build warnings, and guard build.sh's argument (8e834ab)
- damage: move the blast reference strength to KSA's 9 MPa base (3aff15f)
- effects: burst a store whose craft has already been destroyed (992d6f2)
- effects: flash at each barrel cluster, not at their mean (3737487)
- effects: float the burst smoke and tracers on KSA's buoyancy (74b69a1)
- effects: grow the smoke instead of shrinking it to nothing (b00212e)
- effects: keep the plume and tracer on a loose round (f2ad8f8)
- effects: lay rocket smoke white, not black (9f0f2ac)
- effects: start the smoke at the tube mouth, not inside the launcher (d280e4c)
- effects: thin the rocket smoke trail, and make its width a slider (05ffa73)
- gun: carry the planet's centre under a long shot's lay (562f0d2)
- gun: land ground shots where they are aimed (5a219a8)
- gun: lay a gun on a designated craft to land on it (6d12bb3)
- gun: lay a lobbed shell onto the whole of its reach (dcaf374)
- gun: let a shell the ground stops land, however long it stays up (1d8f01e)
- gun: search beyond reach over the ground, where the target is on it (01a8beb)
- guns: lay a 20 mm lead on a close target (c817eed)
- guns: lay a shell through the air that turns with the ground (0f82e05)
- guns: let a gun-only mount fire at ground it is pointing at (043f590)
- guns: re-solve a lay from nothing before calling it out of reach (9c61d37)
- guns: stop a burst when there is nothing left to put it on (8cbd517)
- icbm: a budget of nothing is not an arrival floor of nothing (b95cd37)
- icbm: a cycle that takes no reading must report none (ac3d4e3)
- icbm: a scoring run must not let the target shoot the warheads down (ebcd1a1)
- icbm: ask the ground at the warhead's own instant, on by default (0ab54ea)
- icbm: budget the trim against what the bus carries, not a literal (e0a4237)
- icbm: cancel each warhead's release probe miss, on by default (5fafad0)
- icbm: credit a pulse only for an interval it was in force for (78e0ee5)
- icbm: crew a flight only for a craft whose weapon can reach (335d822)
- icbm: do not adopt another rocket's stage as your own (e602bea)
- icbm: do not ask the world for a step it cannot give (470017f)
- icbm: do not correct an aim off a prediction flown from sea level (0a2dfe8)
- icbm: do not warp the world while another rocket is still burning (d7345f8)
- icbm: finish the trim's null in pulses, on by default (6b11a8b)
- icbm: fly the shot end to end, ignition to corrected release (383a6dd)
- icbm: give each warhead back its thrown spin, on by default (37511a8)
- icbm: hold the target disarmed, do not set it once (80ad60f)
- icbm: hold the world down for the aim measurement too (bc9c06e)
- icbm: hold the world down for the trim, not for the whole coast (7c25770)
- icbm: keep the best aim the correction found, not the last (6b1e61d)
- icbm: keep the clearance once the gap has been measured (39f5a55)
- icbm: keep the separation readable for the whole coast (b309e67)
- icbm: kick a warhead whose release probe failed from a sibling's (14e65e9)
- icbm: land a bus's six warheads on one point, on by default (9ff3a4e)
- icbm: let a target be named to a centimetre, not to eleven metres (e6405fa)
- icbm: let the keep-out cover the clearance, on by default (288170a)
- icbm: let the keep-out cover what the clearance timeout did (d4623ae)
- icbm: let the post-boost correction finish the run it started (3edbe64)
- icbm: measure the holding cost by default, 110 m to 30 m (ac60ce8)
- icbm: measure the kicked miss over the ground, on by default (95a5137)
- icbm: name the craft on the trace's probe line (3bc3701)
- icbm: name the directions a give-up struck off (2c9492f)
- icbm: never leave the jets in pulse mode during a hold (7569b0a)
- icbm: one flight takes the camera, not all of them (d520edd)
- icbm: predict a warhead's flight through the air, not the ocean (1e5b45c)
- icbm: read the aim off a correction that has been flown (62946c2)
- icbm: read the air a warhead flies through at each sub-step (ae050d8)
- icbm: read the probe's stop height at the ground-fixed point (81afbff)
- icbm: refuse a demand that grows, not one that is merely large (dd18e1a)
- icbm: release on a reading the trim cannot improve, on by default (865dd10)
- icbm: say when the clearance opens, not only when it fails (d820739)
- icbm: show the trim's sentence on the panel, not its comparison key (54b959f)
- icbm: size the trim's ceiling by the job, not by a constant (9b48bd1)
- icbm: stage from the worker's window, not from the GUI pass (71dd651)
- icbm: stop a warhead on the terrain rather than a chord of it (0c5341b)
- icbm: stop every prediction on the surface, on by default (9806e49)
- icbm: strike off a dead thruster, not a live one losing a race (369bb42)
- icbm: take a warhead's drag at the sub-step's midpoint speed (cc57b2a)
- icbm: the coast warp never fired, because the magazine refills (7d72f24)
- icbm: the forcing flag has to travel by file, not by environment (c418226)
- icbm: the ground-sample diagnostic had the sign backwards (77d8ac7)
- icbm: the holding cost was reading the hillside, not the arc (3c5ce5d)
- icbm: the proximity watch measured the split, not a re-approach (2b81e89)
- icbm: warp the ballistic coast by default (47ccb90)
- keep stepping when the launcher dies, and hold the cutoff attitude (6da281c)
- ksa: elect a control part when a craft has none (e64f099)
- ksa: keep the pre-release coast at 1x, it is worth 470 m (723b30e)
- ksa: read the primary through IParentBody, not Celestial (364c689)
- log: stop warning about a turret a rack never had (f32da4a)
- model: dilate the HARM's atlas so its mips stop bleeding black (cccd47b)
- model: draw the cloud's stem narrower against its cap (fc736cd)
- model: give the bus back the thrust it needs to clear its stack (9e3a3dd)
- model: give the MIRV bus the mass six Mk 21s actually come to (0002713)
- model: give the mushroom cloud a lean, a waist and a crown (f84ce7b)
- model: hide the bare rail, and name a store after the store (e57ef89)
- model: keep the leaning cap over the column holding it up (5dc0a8d)
- model: put the fireball out before it climbs out of itself (4bd3e03)
- model: seat the B61's blades on their hinge, not inside the bomb (67af00d)
- model: sharpen the B61's tail and machine its aft cap (cadee9e)
- model: start the burst tool's cloud on the ground, not a radius above it (6c1e3b5)
- optic: hold the view where mouse aim leaves the head (9f96f7a)
- panel: stop offering guidance controls to a rack that drops iron (1cd5abc)
- radar: boresight a seeker along the rail, not its mount (580c01a)
- radar: leave the pieces a burst breaks off out of the picture (427d194)
- radar: let a director see everywhere it can point (6b6aaa4)
- radar: turn the sweep the way the dish actually turns (7c19107)
- rounds: allow for the planet's turn in the bomb sight (9a877a1)
- rounds: an anti-radiation round needs a target that radiates (4ad4bb0)
- rounds: ask a round what step it needs, not its profile (e6ce91a)
- rounds: ask the ground where the round is, not a frame ahead (559fef8)
- rounds: boost along the round, not along what it inherited (c98283a)
- rounds: burst on the sea rather than on the seabed under it (0e74e7a)
- rounds: call a shell a shell, not a negative tube (894e2c9)
- rounds: carry a round body's roll from where it left (3bacf40)
- rounds: carry the ground centre with the body across the frame (0eaf0c4)
- rounds: fly a guided round on its own profile, not the 57E6's (6bcda00)
- rounds: give the reentry vehicle the sub-step its accuracy needs (065907a)
- rounds: guard both counts when placing round bodies (730ecd3)
- rounds: hold the world to the short step, do not shorten the round (e85e25a)
- rounds: integrate the clock the planets are placed on (ec38004)
- rounds: integrate the frame a screenshot skips (dcef98c)
- rounds: let a round be shot down, and stop tying one to its launcher (b133e2b)
- rounds: let the clock run where there is no air to start it (6d3e144)
- rounds: measure a round's airspeed where the round is (04755dd)
- rounds: re-base rounds when their platform changes (451bde3)
- rounds: read a missile's air at its own instant, not a frame off (fd0b236)
- rounds: read the air where the planet was, not where it will be (faca978)
- rounds: read the air where the round is, every sub-step (dad60c7)
- rounds: reap a falling store on the fall, not on the flight (cd35f16)
- rounds: release a store along the rack, not along the launch bias (3fa1e43)
- rounds: sample the air behind the frame, not ahead of it (85eb8c3)
- rounds: sample the world at the instant the world is at (dd158cd)
- rounds: sample the world without carrying the round forward (e41f57f)
- rounds: score a burst against the target at the instant it burst (f1b4cf0)
- rounds: size a magazine once, not whenever the launcher blinks (fd42ce1)
- rounds: steer a tail kit onto the landing it predicts (016c40b)
- rounds: stop a salvo outliving the world it was fired in (3a5b56a)
- rounds: strike what a shell touches before its fuze arms (ef25c50)
- rounds: turn a store's body on from its last frame (5a9e82d)
- sensors: let a director watch what it cannot shoot (0078d6c)
- sensors: stop a set watching its own launcher's rounds (9f0ed32)
- sight: fly the bomb sight in the ground's frame, not the ecliptic (5bae1b2)
- sight: keep the camera in phase with the frame it is drawn in (3c02ded)
- sight: paint on the window the head is driving, not the main view (e6903b4)
- sight: solve the ring from the release the rack actually makes (abd9ccd)
- sight: steady the readout and make the track order total (de5b651)
- sim: a reloaded launcher does not get a second salvo (550489a)
- sim: a store lying on the ground is not a weapons system (77e76d2)
- sim: aim a round's gravity per sub-step, not once a frame (aea3e2a)
- sim: aim a round's gravity where the body is, not where it will be (fe1df49)
- sim: aim at the waterline over sea, not at the seabed (55b73a7)
- sim: arm the weapon too, and warp the coast rather than the burn (0e4a37a)
- sim: ask the part library through the call that answers (041032f)
- sim: bound the bus's trim by the rate it is leaving the stack at (a29c5b3)
- sim: coast clear of the spent stack before trimming the bus (a2f561f)
- sim: correct the aim against the arc it will actually fly (a3251fa)
- sim: correct the aim by what the flown arc actually loses (b902dc9)
- sim: count a run of worse passes, not a flight's worth (fdfd325)
- sim: count the arrival down, and record what capping the step cost (a7a4995)
- sim: decide each post-boost pass on its reading, on by default (c59745c)
- sim: default re-pointing off again, on flown evidence this time (5e1694e)
- sim: default tube re-pointing off until the vehicle can hold it (0ccc30e)
- sim: do not trim the bus into the stack it just dropped (19fe0c9)
- sim: do not warn about rounds lagging when none are flying (4bbb223)
- sim: drop a stray probe file and correct the sight's stale cost (eb20390)
- sim: find the stack the bus dropped, instead of guessing at a clock (1fef399)
- sim: follow a director onto the craft a decoupler took it to (992dfd8)
- sim: grow a nuclear cloud on the step, not on the draw (d330286)
- sim: hold a floored shot to its floor past the arrival latch (0bacf20)
- sim: hold the aim correction out for the whole clearance wait (3da8f7e)
- sim: hold the burn's direction frames before cutoff, not seconds (881e85f)
- sim: hold the warheads while the bus is still turning (c4aa40a)
- sim: hold timewarp down while a guided burn is running (26de5ed)
- sim: integrate a warhead's fall to second order, on by default (7ca89a7)
- sim: keep the bus trim solving while it waits to clear the stack (c187504)
- sim: keep the panel on a weapon that changed craft (4938dce)
- sim: keep the tubes' sweep out of the guidance loop (189e9a2)
- sim: latch the warheads' arrival when they leave (631f0ac)
- sim: let a night set a pass bar without naming an aim (e0b8323)
- sim: let a round fall with the ground under it (8519c5d)
- sim: let re-pointing start on a bus that never fully settles (434cf16)
- sim: let the aim correction walk past its own best (4eb7306)
- sim: let the post-boost aim converge, not run out of passes (e4bbdb4)
- sim: let the scenario pick up a flight already under way (1eec184)
- sim: let the trim finish on its budget, so the warheads go (2d7b878)
- sim: measure a round's altitude against a planet that is moving (bdd1f94)
- sim: measure the world against a clock, not against the engine (7bd76d2)
- sim: never ask the world to run below real time (bd82f08)
- sim: never move the aim further than the miss it is removing (d7b002d)
- sim: pace the planning on the wall clock, and warp in hops (fdc2707)
- sim: persist the four system settings that were silently dropped (3fa3cbc)
- sim: predict from where the round starts, not where the craft is (7d0fb41)
- sim: predict the line a re-pointed round actually leaves on (ca337bf)
- sim: predict the warhead's flight, not the bus's (292e824)
- sim: predict the warhead's release, not the bus's coast (3c2c8e3)
- sim: print the group to a metre, not to ten (105ca4f)
- sim: re-derive the pointing deadband from the thrusters aboard (f3fb138)
- sim: re-read the ground as a warhead meets it, on by default (e936e37)
- sim: reach the master arm where it actually lives (314277a)
- sim: read the atmosphere KSA has, not the one IsValid admits to (36e7d07)
- sim: read the bus's nose when it will not hold still (b08e6aa)
- sim: read the post-boost aim only off a bus that is holding still (fbc556f)
- sim: refuse a ballistic solution that never converged (7a7576f)
- sim: report every craft's verdict when the scenario is waiting (7e8e506)
- sim: restore the aim-bias accessor the revert took with it (d8268d2)
- sim: sample arrival terrain in the epoch the prediction departs in (5643caa)
- sim: sample terrain the way the round that stops on it does (fddd2b2)
- sim: say why the aim correction stopped correcting (6161482)
- sim: score the predicted impact in the epoch the target is known in (2119f16)
- sim: spend one lateral budget on the release, not two gates (3da3765)
- sim: stage past the booster, and not before it has burned (42fee35)
- sim: stage the view change for the frame sync point (e76b255)
- sim: step the mod from whichever hook the frame calls (81a4874)
- sim: stop asking the engine to rebuild a part tree nobody changed (059c282)
- sim: stop correcting the aim once the arrival is committed (41dc88d)
- sim: stop predicting an impact the bus was never going to make (8080a28)
- sim: stop the aim correction when it stops helping (932e416)
- sim: stop the arrival latch committing more than the arrival (985743e)
- sim: stop the burn along the line it is actually thrusting (eed5c0e)
- sim: stop the bus trim and the aim correction winding each other up (7f8f5cb)
- sim: stop the cutoff backstop ending a burn tens of m/s early (7f1ddf7)
- sim: stop the impact countdown returning after the warheads land (bd564bb)
- sim: stop the post-boost passes on the best, and on the tank (53ff056)
- sim: stop the vehicle rolling, and point it while it waits (fb81694)
- sim: stop the warp hold pausing the game and cancelling the burn (db16aaf)
- sim: stop waiting out evidence the release sequencer already has (f6ec306)
- sim: take the screening split back out of dev (6e6c6af)
- sim: the mod must not read its own warp request as a competitor (ec1fd6a)
- sim: throw the warhead along the tubes, not along the command (cbb2451)
- sim: trim the bus against the arc it flew, not a fresh solve (dd248d3)
- sim: turn each tube off where the launcher is, not off its command (c6d1fe4)
- sim: unpause for the scenario, and say which test it is waiting on (302c4a5)
- stop warping the world unasked, and let the warheads go at range (6c57dd7)
- targeting: pick the ground where the pointer first meets it (5a724b4)
- tools: read the way KSA actually does (92dd7ca)
- tools: report the walk signed, and off the landing line (366037b)
- ui: auto-engage is a mode, not a reason to hold fire (e876026)
- ui: call the bomb rack's armament bombs (e4ad35e)
- ui: designate a target by clicking the world, not a button (e22ca1c)
- ui: fire the second rail, from the button people actually press (0edbeae)
- ui: give every launcher its fire-control row back (a774369)
- ui: keep a way back into the panel that does not rest on ModMenu (f91fa79)
- ui: lock the craft under the pointer, not the ground behind it (263bec5)
- ui: point the on-glass lock cue at the station the trigger reaches (f5021a5)
- ui: reach the switcher, the map and the scope with the panel shut (774a7ae)
- ui: report the station the trigger will reach, not the one selected (d425d66)
- ui: say what the ballistic readouts mean (df34b09)
- ui: separate holds that stop the trigger from auto-engage's own (69d675c)
- ui: show a rack only the controls that describe it (9800a8e)
- ui: stop the director minting a second row for itself (dbf79e9)
- ui: stop the panel calling a working cannon "fitted, not run" (7a89e60)
- ui: stop the style stack unbalancing on a toggle button (07660cf)
- ui: tell a held lock apart from one still maturing (c3f0537)
- icbm: keep the aim ring's shape instead of re-draping it (0e6e1df)
- icbm: pace the impact readout on the wall clock, not the world (302ad69)
- icbm: park the view 25,000 km up, not on the far ground (b2d7a40)
- icbm: park the view off the planet while a scripted shot flies (4c62ae8)
- icbm: the parked view is worth 7 per cent, and say so (f3203cb)
- ksa: stop writing a log line per frame, and let the coast warp (7205207)
- sim: cache which body a ground lookup is over (ee0ed8e)
- sim: close the ballistic miss to tens of metres (de435ad)
- sim: no bomb pipper on a rocket a ballistic computer is flying (3bcadaa)
- sim: rate-limit the bomb sight and skip stores it cannot sight (e95f347)
- sim: stop walking the system twice for every draped point (ce4cb50)
- ksa: retarget 2026.8.22.5348 (a4442a3)
- ksa: retarget 2026.9.10.5438 (72b6f21)
- ksa: retarget 2026.9.4.5400 (d3fc7f5)
- ksa: retarget 2026.9.7.5402 (2cd2433)
0.8.44 (2026-08-11)
- model: build the optical head as a part of its own (680d2ed)
- model: take the gun off the kitten (fa48b51)
- model: take the optical head off the Pantsir (bf39bca)
- parts: declare the EO director as a part anything can carry (8e1c842)
- parts: give sensors their own tab, beside weapons (7236a27)
- parts: give the weapons their own tab in the editor (5aa41b7)
- parts: let the Pantsir start a craft, and carry a director (c026cc8)
- radar: look over the real skyline, and say what it costs (5370f8d)
- radar: tell targets apart by what they are (1f80f8f)
- rounds: show where a bomb would land (cc7540a)
- sensors: crew an optical director that aims itself (36af8e5)
- sensors: the sight belongs to the director, not to the launcher (3eb528b)
- sight: let the drag speed build from the edge of the rest area (edb61db)
- sight: magnify, and show the lead being taken (e4bd2da)
- sight: make levelling the horizon a choice (c1191ec)
- sight: point the director with the mouse (d1536aa)
- sight: show the drag, and give the cursor somewhere to rest (30312a1)
- ui: give every component its own state and controls (cdf70d0)
- ui: move what belongs to the session out of the craft's window (40494f7)
- ui: put each director under its own component row (bd8ef85)
- ui: put the fire-control answer above the tabs (ffaa616)
- assets: stop a subpart and a mesh sharing one id (57a61d8)
- camera: fly the chase at the player's field, not the sight's (a0df348)
- parts: stop a camera alone making a craft a weapons system (a884fc9)
- rounds: point a released store along the tube it left (f3ecd4a)
- sensors: choose the head's roll instead of inferring it (9ef4cbd)
- sensors: level the horizon, and keep the head out of its own mast (4c8d467)
- sight: aim the camera in phase with the frame it is drawn in (d02cbe1)
- sight: aim the optical head from the head, not from the hull (a61dead)
- sight: carry the camera's roll through straight down (7ece0e6)
- sight: correct a levelled roll instead of choosing it (416c72a)
- sight: draw under the panel, and on the target not beside it (fd67f2e)
- sight: keep the horizon on screen, and centre what the head watches (673f928)
- sight: make the cursor's rest area hold the head, not park it (faa2585)
- sight: roll with the head by default instead of levelling (4e5bcfa)
- sight: stop building the roll where the answer is worthless (0e52998)
- sight: stop the roll probe reporting a take as a jump (a6bb5e3)
- turret: slew the drives on an even clock (6b38bfa)
- ui: do not read a weapons system from a craft that has none (6ccc218)
- ui: give the director its own IFF and its own protected craft (c4cb58e)
- ui: keep a director-only craft selected when it is managed (15ef3dc)
- ui: list a craft that carries only a director (583937f)
- ui: show the bomb sight on what drops, not on what has no missiles (ba12bfc)
- ui: stop the panel crashing on a craft that carries no weapon (f6422f2)
- ksa: retarget 2026.8.19.5261 (3af5598)
0.8.43 (2026-08-09)
- rounds: drop a bomb (da35ac2)
- camera: measure the chase transition at one instant (96dec54)
- camera: put the chased round in the engine's epoch (15021cb)
- radar: turn the search array on an even clock (0da3634)
0.8.42 (2026-08-08)
- camera: level the horizon on a view the mod is driving (1eac3ca)
- camera: put the optic on the main view, and fly onto a round (1d05ebd)
- radar: let a sensor see a round in the air (3ffad80)
- rounds: let a round burn in stages (59967d7)
- rounds: let a round say what step it can be flown at (4b638fa)
- aim: let the cursor land on a craft with no mesh (2a54bec)
- aim: put the cursor's aim point where the cursor is (63ad0ca)
- effects: draw cannon fire as a stream, not as beads (0806555)
- effects: stop each system tearing down every other system's effects (91c15ca)
- rounds: make a designated ground shot do something (70578f5)
- rounds: make a gun round hit what it strikes, and only that (8cf6aa4)
- sim: bring team names back with the systems that name them (8dec444)
0.8.41 (2026-08-08)
- rounds: add the Mk 15 Phalanx CIWS, a gun that stacks (2e0ab41)
- rounds: give the cannon a trigger, a flash, tracers and a voice (9e3f191)
- ui: let ModMenu list us, without depending on it (0a0ed94)
- ui: name our menu KSArmory rather than Mods (2ef65e0)
- ui: open the panel from the game's menu bar (b8be350)
- effects: stop a pooled emitter rather than only unregistering it (5e6cc1d)
- model: swing the CIWS radome with its gun (7b1e5b9)
- rounds: resolve the CIWS drives, and stop it reloading forever (4076215)
- rounds: say why a gun-only system holds fire, and arm its fuse (e74fba9)
- rounds: stop a burst outliving the belt (6c80fd6)
- turret: aim the cursor from the mount, not from the camera (4a0f82c)
- turret: aim through the launcher's own mounting (7b9c765)
0.8.40 (2026-08-07)
- rounds: add the LAU-7 Sidewinder rail, and mouse designation (d96ae69)
- sim: rocket motors you can hear and see, and a bang at the burst (ad13bef)
- tools: drape the placement markers and make them a torus (6981d4b)
- tools: fly a scripted engagement with nobody watching (c0a262a)
- tools: load a save from the mod, so a scenario needs no clicks (2a981a7)
- build: ship every asset folder, not just Meshes and Textures (02382a2)
- sim: make Safe all actually make the battery safe (2ea992c)
- sim: notice a save before the player can load it (32d42a2)
- ui: grey out (+) for the craft already being looked at (d019778)
0.8.39 (2026-08-06)
- tools: draw the placement markers as smooth bands (e9eedf1)
- tools: ring the craft's feet instead of burying it in a sphere (e000ebb)
0.8.38 (2026-08-06)
- tools: stop the craft mover moving a craft that was not moved (9cc2750)
- ui: draw corners only when the sight is small (67646f3)
0.8.37 (2026-08-06)
- ui: let the target brackets grow all the way in (c4e31ea)
- ui: size the target brackets by the closing, not the target (2adbcb3)
0.8.36 (2026-08-06)
- ui: only take the view for the craft it is already on (6140aa4)
0.8.35 (2026-08-06)
- ui: shrink the chase brackets and drop the ranging ladder (b2eee3e)
0.8.34 (2026-08-06)
- ui: bracket the target while chasing a round (ddf2e41)
0.8.33 (2026-08-06)
- ui: keep the camera closing until the round goes off (56ba3fb)
0.8.32 (2026-08-06)
- ui: accelerate the chase camera into the impact (1784bfb)
0.8.31 (2026-08-06)
- ui: close the camera on time to impact (c0f5a9c)
0.8.30 (2026-08-06)
- ui: measure the closing range against the target, not the aimpoint (cb1f42f)
0.8.29 (2026-08-06)
- ui: close the chase camera in as the round arrives (232adee)
0.8.28 (2026-08-06)
- ui: start the chase once the round is clear of the launcher (a9dadfd)
0.8.27 (2026-08-06)
- ui: follow the next launch after a burst, not never again (48070c2)
0.8.26 (2026-08-06)
- ui: hold the burst against the ground, not against the ecliptic (1f580ce)
0.8.25 (2026-08-06)
- ui: follow the round itself instead of computing a camera offset (f07dde2)
0.8.24 (2026-08-06)
- ui: keep the chase view off the reference axis (cf3f6cc)
0.8.23 (2026-08-06)
- ui: hold the burst still, and stop taking the view straight back (8cbd3d0)
0.8.22 (2026-08-06)
- ui: stop the chase shivering, grabbing back, and cutting away (572a516)
0.8.21 (2026-08-06)
- ui: drive the camera the way Fixed mode expects (4095a91)
0.8.20 (2026-08-06)
- ui: finish the camera restore before re-attaching the follow (0687f27)
0.8.19 (2026-08-06)
- ui: stop the chase camera crashing the game (26be9c8)
0.8.18 (2026-08-06)
- ui: ride the camera behind a round in flight (468271f)
0.8.17 (2026-08-06)
- ui: make the timed airburst reachable (158f446)
0.8.16 (2026-08-06)
- radar: stop the radar seeing through the planet (2222f02)
0.8.15 (2026-08-06)
- rounds: burst the cannon shells on a timed fuse (3bd441a)
0.8.14 (2026-08-06)
- api: only accept reports against the newest release (9a3edb5)
- ui: hide reporting on a game build this was not made for (7a761e6)
- ui: say which KSA build reporting was decided against (c6d2bbd)
- api: stop thanking people for reports that were dropped (0d7a0f1)
- ci: grant the release workflow packages: read (1b04662)
- ui: drop the buttons silently on an unsupported build (940d634)
0.8.13 (2026-08-06)
- api: stop refusing short English as foreign (b62af57)
0.8.12 (2026-08-06)
- ui: report a bug or send feedback from the panel (18cd754)
0.8.11 (2026-08-06)
- api: let the service see the real client address (7b892ac)
0.8.10 (2026-08-05)
- sim: keep a system's settings inside the save it belongs to (5afd27f)
- ui: let a system's remembered settings be reset (8463de5)
- rounds: floor how small a warhead effect is drawn (c08055d)
- rounds: put the burst where the round is drawn, not where it is (5a98fea)
- rounds: stop the airburst compounding two reductions to nothing (7414605)
- sim: opening a save is a read, not a write (1b96bad)
- ui: drop the Kittens pane and the Session group with it (3b016bc)
- ui: split the panel into Ksa/Ui/ along the pane seam (51b0a6f)
0.8.9 (2026-08-05)
- sim: scope each system's settings to the save it was set in (990f015)
0.8.8 (2026-08-05)
- model: give the kitten a shoulder cannon (35e9404)
- rounds: draw the fallback smoke as soft billboards, not spheres (57ca05d)
- rounds: give a warhead a charge, and read its reach off it (56ea053)
- rounds: let the fireball linger instead of blinking (763f244)
- rounds: render the smoke volumetrically instead of as spheres (d8b9d92)
- rounds: show a fireball where the warhead goes off (67b6eb2)
- sim: classify a camera as its own role, not a sensor (dd8110c)
- sim: give every weapons system its own battery (ab033e0)
- sim: keep each system's settings between sessions (c7b3626)
- sim: report the roles a prefab carries inside itself (3a713c2)
- sim: survey a craft for the weapons installed on it (764e8b6)
- turret: aim the launcher with the mouse, from a panel toggle (aa9fff7)
- ui: bracket every weapons system on screen, with range on hover (9de62e1)
- ui: click the world to set off a warhead there (098f5f1)
- ui: draw the world overlay for one system, and add a master switch (2ad96bc)
- ui: drop a system's marker once it fills the view (f4fc27a)
- ui: go to a weapons system from the list (9fce592)
- ui: group a system's components by role, foldable (9a08d18)
- ui: hold the main view on a system, from where you are (be20b65)
- ui: let go of the view the moment the player moves it (c37f82c)
- ui: let the panel arm a kitten, and say which character it wears (ed16726)
- ui: let the weapons-system markers be turned off (69d4548)
- ui: look at a system from the list, and mark it (2220295)
- ui: mark a system the planet is in the way of (5b8a933)
- ui: nudge the view towards a system instead of seizing it (87b2b64)
- ui: one row per system, and a window per system to manage it (90e9b64)
- ui: pick a craft anywhere on it, and place onto it squarely (0f81693)
- ui: pick a craft up and set it down somewhere else (6f9242e)
- ui: pick which system the panel configures, and move IFF onto it (6ce0505)
- ui: pin a system's label from the panel, and drop the ping (4f99c8b)
- ui: point an edge arrow at a system that is out of view (660a43a)
- ui: put a lock on a marker's label to keep it up (0b205f2)
- ui: put the world overlay behind one debug switch, off by default (0e73086)
- ui: report the character a flown kitten is actually wearing (ac27609)
- ui: ring the craft under the cursor, and land on the terrain (0b3a302)
- ui: say why the battery is holding fire (8c5d03c)
- ui: show which link of the armed-kitten chain resolved (6504ed9)
- model: allow the gun's embedded material to be used (56075de)
- model: drop AllowEmbedded, whose stated reason was wrong (6b23d32)
- model: export the kitten gun in character space, not metres (2b9ae32)
- model: load the character XML, and stop the panel crashing the game (1c1bc28)
- model: permute the gun into rig axes, so it stops pointing sideways (87fa3bf)
- model: reference the gun attachment as the deserialiser reads it (f74e2ac)
- rounds: make the burst radial, not a cone in a fixed direction (0fc2e2e)
- rounds: nest the burst stages inline rather than by Id (fad77b0)
- rounds: ship a fireball that draws without screen-space particles (a472e98)
- rounds: stop the whole burst falling out of the sky (b616ff8)
- sim: let the warp stand-down budget survive a good frame (186ac0a)
- sim: stop the warp hold oscillating and fighting the player (82a8eb5)
- ui: build the cursor ray from a single camera (83eff0e)
- ui: drive the orbit view's angles, not the controller's copy (6c67345)
- ui: put the landing marker on the pad rather than under it (6926608)
- ui: report the kitten off the controlled vehicle, not the platform (e1d60ed)
- ui: scale the cursor into framebuffer pixels, not viewport pixels (a8a086d)
- ui: solve the placement point on the cursor ray, not above it (fbf5183)
- ui: unfollow before Fixed, which was crashing the game (a16e6e3)
- ui: watch a system by following it, not by rotating the camera (721cb9b)
- sim: make BallisticLead difference its own inputs (34a08e2), closes #4
- sim: split a battery's own settings out of Config (2cae242)
- ui: make the survey a system's component list (4ab5cb6)
- ui: open on the weapons systems, not the craft in view (def5f33)
- ui: open panes with buttons rather than tick boxes (c80e6ac)
- ui: say "not crewed" rather than naming the mod's internals (1e3317e)
- ui: split the panel into a main window and pop-out panes (2bac915)
- correct MODULARITY.md and make it cite symbols (b79523e)
- record that a character attachment cannot be aimed (e0347b5)
- record that a kitten cannot be launched from a vehicle save (1d213a3)
- record two more character-attachment traps (7d36df8)
0.8.7 (2026-08-05)
- sim: hold timewarp down while rounds are in the air (2e42236)
- sim: stop the cannon and the missiles fighting over one bearing (7a09938)
- stop hardcoding one weapon system; fix two comments (865e232)
- repair the drift the audit found in CLAUDE.md (b45a6cf)
0.8.6 (2026-08-05)
- guns: stop a burst outliving its lock from crashing fire control (aab4c57)
- confirm the retarget in flight, and round bodies at 79 km (09e0a19)
0.8.5 (2026-08-05)
- ksa: retarget 2026.8.5.5168 (80fb957)
- record that the retarget has not been flown (da83bf8)
0.8.4 (2026-08-05)
- ui: make teams and IFF reachable (7c15b2c)
- sim: report the simulated time the frame hook throws away (93c7e01)
- lead the README with the mod rather than with the Pantsir (a8e0253)
- mark the model repairs confirmed in flight (44fd7a8)
- record the August audit and its ranked backlog (7cc7f48)
0.8.3 (2026-08-04)
- rounds: fit the 30 mm cannon, and an optical head to watch through (cd0c721)
- model: repair the pod frame, the turntable and the gun sponsons (86a0784)
- ui: name the files the mod actually writes and ships (e7a0384)
- record what is blocked on KSA, and the atlas loader's contract (48138ec)
0.8.2 (2026-08-04)
- turret: elevate the cannon with the launcher (8035fba)
- model: mount the cannon on sponsons and give them daylight (1fc641c)
- model: place the cannon where their mesh was recentred (a9682b6)
- model: raise the cannon clear of the turret body (14668ab)
- model: unbury the cannon and give them their own body (371866c)
- correct the versioning docs to match what the config now does (f2444b7)
- hold the copyright as KSArmory, and repair the changelog links (bc57e39)
- write down what a different mod loader would have to provide (26f434a)
0.8.1 (2026-08-04)
- radar: let teams form coalitions rather than only mine-versus-all (bf45225)
- cut patches for features too, and tag minors by hand (7e5afe6)
- name the assembly and its assets KSArmory too (527520d)
- rename the in-game panel to KSArmory (0f3177d)
- rename the project to KSArmory (a3576b8)
- commits carry no attribution trailer (e7e6038)
- feat means observable in the archive, not merely enabled (4ecdef3)
0.8.0 (2026-08-04)
- radar: identify contacts by team before engaging them (94da4d8)
- rounds: fly through any medium, including water (8dde3f7)
- sim: decouple magazine depth from tube count (82a1e0b)
- sim: let a round aim at a part or a point, not only a craft (4e83b23)
- audit modularity against torpedoes, RPGs, aircraft and submarines (aab95dd)
- comments state the fact, not the history (59b6cf0)
- record what the four changes unblocked, and what is still open (31349fa)
- strip history and narrative from comments (a7ed136)
- write down the rules for comments and keeping docs true (85c8ae6)
0.7.0 (2026-08-04)
- radar: let a sensor choose where its search cone points (c184fb9)
- rounds: scale drag by air density so vacuum launches work (da005cb)
- sim: give each tube its own launch direction (3a6416b)
- ui: add slow-motion simulation speed buttons (90f1c80)
- rounds: aim at the target's own instant, not one step ahead of it (9ed1b06)
- rounds: draw rounds from the frame that simulated them (e7548c1)
- rounds: measure the drawn offset against its own frame's platform (bea84a6)
- rounds: measure the tube muzzle from the centre of mass (589c49b)
- rounds: seat every body so none can flash at the vehicle origin (4140846)
- rounds: stop a launching round pointing along Earth's orbit (6ae0753)
- rounds: track loaded tubes instead of deriving them from ammo (628d57a)
- sim: join KSA's vehicle solvers before destroying a target (e3be8ea)
- sim: step on what the engine applied, not on the pause flag (48d7ef6)
- testtarget: spawn kittens as KittenEva so they can be flown (770244d)
- sim: lift the launcher's tube geometry out of LauncherPart (90a892f)
- sim: lift the sim-step dedup into a testable gate (c78d541)
- sim: lift tube bookkeeping into a testable Magazine (3ca5ba1)
- sim: make the projectile an abstraction, not one class (df18e45)
- correct the modularity audit after the extraction moved it (159bd46)
- record how far the weapon-system split generalises (4ded6a3)
0.6.0 (2026-08-03)
- model: fold clipped-delta fins out after launch (4c2062d)
- rounds: seat loaded rounds in their tubes (01678fa)
- ui: put the tube markers behind a debug toggle (19b7940)
- model: record the three traps that only bite hand-built meshes (980a285)
0.5.2 (2026-08-03)
- sim: step on this frame's interval, expressed in simulated seconds (b6ad885)
0.5.1 (2026-08-03)
- draw: step on the frame delta the platform sample moved over (05dc512)
0.5.0 (2026-08-03)
- radar: engage only what the round can actually reach (585b318)
- rounds: fly the 57E6 as the command-guided weapon it is (9060854)
0.4.4 (2026-08-03)
- rounds: accumulate travel rather than difference ecliptic positions (c17735c)
0.4.3 (2026-08-03)
- rounds: stop extrapolating the platform a frame past where it is (b422d39)
0.4.2 (2026-08-03)
- rounds: fuse on proximity, not on the seeker holding the target (5b9e68e)
- do not commit a behaviour fix until it is verified in game (28b2d14)
0.4.1 (2026-08-03)
- sim: step on the delta KSA applied, not one measured around it (80023e4)
0.4.0 (2026-08-03)
- rounds: add a round-body toggle and placement tracing (0735022)
- build: silence the two nullable warnings in TestTarget (a2bcb04)
0.3.2 (2026-08-03)
- rounds: place round bodies every frame, not every simulation step (609d783)
0.3.1 (2026-08-03)
- sim: step on simulation time, not wall-clock player time (21f07e7)
- radar: move threat ranking into Sim/ so it can be tested (5876c61)
0.3.0 (2026-08-03)
- tools: mirror and decompile the whole KSA SDK (4bf7ed7)
- tools: narrow a KSA update to the changes that touch this mod (cd3fe6b)
- tools: record the KSA API surface this mod binds to (e5f9c87)
- add an upgrade-ksa skill and record the new workflow (1142ca4)
0.2.0 (2026-08-03)
- model: compare two mesh atlases by geometry, not by bytes (212418e)
- tools: notice a KSA update on the first build after it (04a1746)
- tools: watch RocketWerkz's version endpoint for KSA updates (89ba25f)
- cross-reference the KSA update procedure from the commands list (f0aec7c)