Three welcome cards for every new company: Next, Skip, '1 of 3', swipe,
a focus trap, and a slide that reduced motion turns off; closing records
it and goes to Contracts (decision 0.5.131).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CR-019 §6 amendments (plan 0.5.52, 0.5.53, 3.9, 9.4, 12.1; CR-002,
CR-006, CR-007). The balance player reads boards for the qualifying
fleet; e2e 12.6 learns Heavy Cargo before a Heavy job is offered.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CR-018 §6: plan 0.5.94, 0.5.96, 0.5.97 and 12.1, CR-015 §3, D5, Steps
15.4 and 15.6, CR-013 Step 10M.3 amended. The e2e flying helper refuels
before each trip now that ships are on Manual.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A one-time tip after the deal and the notification permission prompt,
listing each pilot's unspent skill points, with Go to Pilots and Later
(decision 0.5.109). The engine client exposes the pending permission
prompt as ApiClient.notificationPrompt().
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Io and Europa sit at fixed screen offsets around Jupiter and Venus at
its place. Crowded label families fold into the parent's label with a
"+N" marker (the Jupiter system below zoom 2.5); tapping it or zooming
in shows all three. The haze strip is finer and repeats so it doesn't
streak when zoomed in. The discovery browser test waits for a Mars
first contact now that Venus competes for the slot.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The map places every body once and moves only flights; orbit rings
stay as decoration. Reach wording loses its dates: "From Earth: Moon,
Mars", "Out of range (...)", and the Market's "Other dates" line is
gone.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The no-strand rule now asks whether the ship could leave the
destination on a full tank where fuel is sold, or on what is left
after the leg where it isn't. Emergency fuel is offered to an idle
ship that can't reach anywhere when the player can't afford the
shortfall: the cheapest leg's fuel at 2.5x the local price.
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>
Positions, distances, range checks, trip times, fuel and the no-strand
rule no longer take a time argument; the 48-hour no-strand margin goes
with it. Tests now check that a route's pay, trip time and fuel are the
same whenever it is offered or flown.
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>