Location boards are generated for the qualifying fleet and store it;
reads hide jobs it can no longer complete. Save version 4 drops stored
boards (decisions 0.5.115, 0.5.117).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New ships (deal or Market) come full on Manual refueling; save version
3 puts every existing ship on Manual. The balance simulator refuels only
when a job needs it (decisions 0.5.111, 0.5.112).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Five tutorial runs before the deal and a tutorial XP multiplier of 2.
The deal no longer waits for the loaner to be back at Earth, since five
runs end at the Moon; accepting it still puts the avatar at Earth.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refuel a ship where it is (fill or an amount, at the local price),
switch its refuel policy, and order emergency fuel when the sim offers
it (fuel at 2.5x the local price, cost added to the loan). The save
fields and migration landed in Step 15.4.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ships carry fuel: a leg burns from the tank at departure (no credits),
dispatch needs the fuel on board (not-enough-fuel), a leg's fuel cost
is fuel burned x the tank's average price, and Auto top-up refills on
landing with what the credits cover. The save gains tank fields (save
version 2, migration fills every tank). Market ships arrive full; the
deal's ships come with a quarter tank to keep the balance targets.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ships get a tank capacity and a burn rate instead of range and fuel
cost; locations get a fixed fuel price and a sellsFuel flag instead of
the launch cost multiplier. A leg burns burn rate x the economic
distance of (distance / origin factor), and reach is a full tank's
worth. Tanks are sized so every reach answer is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Removes apps/server (Fastify, Drizzle, pg-boss, Better Auth), the
development Postgres, the backup code routes, the web HTTP client and
the CI database service. Deployment is static hosting with Caddy. A
Playwright test checks that the production build loads only its own
files.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Export save turns the whole save into one code (gzip + base64url
behind a DEADHEAD1. prefix) to copy or share as a file; Import save
takes a pasted code or a file, migrates and validates it, and replaces
the company after confirmation. A bad code is refused and changes
nothing. These replace the backup code. Debug info now gives the save
id, save version and storage type.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The engine derives the notification schedule from the save after every
saved change (arrivals, rest ending, upgrades; same-minute events
combined) and replaces the platform's schedule. Capacitor
LocalNotifications on iOS/Android, a no-op on the web. Permission is
asked after the deal; Settings has an On/Off toggle.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>