From 32b34a5d6c6017c090657e2307292175604a89c9 Mon Sep 17 00:00:00 2001 From: fireshaper Date: Fri, 16 Oct 2026 22:53:22 -0400 Subject: [PATCH] Step 25.3: client: highlights pop-up Co-Authored-By: Claude Opus 5.5 --- DECISIONS.md | 11 + apps/web/e2e/12-3-first-ship.e2e.ts | 3 +- apps/web/e2e/12-4-offline-progress.e2e.ts | 4 +- apps/web/e2e/12-5-discovery.e2e.ts | 2 +- apps/web/e2e/25-3-away-fits.e2e.ts | 43 +++ apps/web/src/components/AwaySummary.tsx | 430 +++++++++++++++------- apps/web/src/format.ts | 7 + apps/web/test/away-goals.test.tsx | 23 +- apps/web/test/away-summary.test.tsx | 334 ++++++++++------- apps/web/test/board-logbook.test.tsx | 15 - apps/web/test/dashboard.test.tsx | 7 +- apps/web/test/deal-modal.test.tsx | 2 +- apps/web/test/fixtures.ts | 75 +++- apps/web/test/fleet-sleep.test.tsx | 4 +- apps/web/test/pilot-share.test.tsx | 9 +- apps/web/test/render.tsx | 8 +- apps/web/test/rest-summary-hq.test.tsx | 52 +-- apps/web/test/shop-summary-hq.test.tsx | 8 +- apps/web/test/tutorial-board.test.tsx | 4 +- docs/screenshots/25-3-away-desktop.png | Bin 0 -> 174835 bytes docs/screenshots/25-3-away-phone.png | Bin 0 -> 67794 bytes memory-bank/architecture.md | 1 + memory-bank/progress.md | 2 +- packages/engine/src/game/away.ts | 78 ++++ packages/engine/src/game/commands.ts | 8 + packages/engine/test/logbook.test.ts | 62 ++++ packages/schema/src/logbook.ts | 26 +- packages/schema/src/routes.ts | 9 + packages/schema/test/routes.test.ts | 1 + packages/sim/src/away.ts | 20 +- packages/sim/test/away.test.ts | 27 +- 31 files changed, 907 insertions(+), 368 deletions(-) create mode 100644 apps/web/e2e/25-3-away-fits.e2e.ts create mode 100644 docs/screenshots/25-3-away-desktop.png create mode 100644 docs/screenshots/25-3-away-phone.png create mode 100644 packages/engine/src/game/away.ts diff --git a/DECISIONS.md b/DECISIONS.md index 358f74d..7e664d4 100644 --- a/DECISIONS.md +++ b/DECISIONS.md @@ -1873,3 +1873,14 @@ Implementation decisions not spelled out in `memory-bank/implementation-plan.md` - **"Events" for a short absence** are flights (deliveries and deadheads), discoveries, level-ups and finished upgrades. The pop-up also opens for a deadhead or a finished upgrade alone, and it should then list it. Refuels, rests and goals aren't events. - **Each discovery, level-up, goal and scripted delivery is its own highlight**, in time order within its rank; the biggest job is one highlight (the highest payout, the earliest on a tie); each problem is one. - **Pilot lines count flights**: a pilot who only deadheaded is active (0 jobs, a negative net). Ties in net go by name. + +## Step 25.3 + +- **The client builds the summary** from `getLogbook` with the sim's pure builder: wording stays in content and the client, and "where a pilot is now" comes from the player state the client already has. The engine finds the problems, which need its boards and fuel rules. +- **"Fits one screen" is checked in a browser**, not jsdom, which has no layout: the e2e test opens the pop-up at 375×667 with 8 active pilots (more than the 5 lines) and checks the sheet doesn't scroll. With at most 3 highlights and 5 lines, more pilots don't make it longer. The component test checks the caps with 50 pilots. +- **Ready goals are a highlight now**, without the old "Claim on the Bridge" button: the pop-up has two buttons (View logbook, Done), and the Bridge's goals card has its badge. +- **"No reachable jobs" uses the board stored for this period**: if the player hasn't opened that board, there's nothing to judge, and no problem is shown. Independent pilots' ships are left out: they wait or head home on their own. +- **A short absence doesn't repeat its events as highlights.** Discoveries, level-ups and the biggest job are already in its list, so the builder drops them before taking 3, and "+N more" counts only what isn't shown. +- **One level-up highlight per pilot**, at the highest level reached: a pilot who went from 1 to 3 reads "reached level 3". +- **View logbook also closes the pop-up**, so the absence it showed becomes `lastAbsence`, which is what the Logbook's "This absence" shows (Step 25.4). +- **Seen while building it:** pilot names are drawn without checking the roster, so two hired pilots can share a name (two "Dmitri Brennan" in the screenshot run). That's older than this CR and isn't changed here. diff --git a/apps/web/e2e/12-3-first-ship.e2e.ts b/apps/web/e2e/12-3-first-ship.e2e.ts index 416626a..8f89969 100644 --- a/apps/web/e2e/12-3-first-ship.e2e.ts +++ b/apps/web/e2e/12-3-first-ship.e2e.ts @@ -29,7 +29,8 @@ test.describe("end to end (Phase 12)", () => { const flight = (await state(page)).activeDispatches.find((d) => d.id === dispatchId)!; await advanceTo(page, flight.arrivalAt); await page.reload(); - await expect(logbook(page)).toContainText("went to the lender"); + // The net, after the lender's cut (CR-025); the cut itself is in the Logbook. + await expect(logbook(page)).toContainText(/delivered .+ to Moon, \+[\d,]+ cr/); await dismissLogbook(page); const after = await state(page); diff --git a/apps/web/e2e/12-4-offline-progress.e2e.ts b/apps/web/e2e/12-4-offline-progress.e2e.ts index 935dbac..1c706e3 100644 --- a/apps/web/e2e/12-4-offline-progress.e2e.ts +++ b/apps/web/e2e/12-4-offline-progress.e2e.ts @@ -1,3 +1,4 @@ +import { content } from "@deadhead/content"; import { expect, test } from "@playwright/test"; import { dispatchFromEarthBoard, logbook, playToDeal, serverNow, state } from "./support"; @@ -26,7 +27,8 @@ test.describe("end to end (Phase 12)", () => { await later.goto("/"); const summary = (await state(later)).summaries.find((s) => s.dispatchId === dispatchId)!; - await expect(logbook(later)).toContainText(`Delivered ${summary.massTonnes} t`); + const good = content.good(summary.goodId!)!.name; + await expect(logbook(later)).toContainText(`delivered ${good} to`); const after = await state(later); // Credits went up by the delivery's net payout, less any Auto top-up on landing // (CR-015); the ship is at the destination. diff --git a/apps/web/e2e/12-5-discovery.e2e.ts b/apps/web/e2e/12-5-discovery.e2e.ts index 97fed53..a6ef43f 100644 --- a/apps/web/e2e/12-5-discovery.e2e.ts +++ b/apps/web/e2e/12-5-discovery.e2e.ts @@ -60,7 +60,7 @@ test.describe("end to end (Phase 12)", () => { expect(flight, "the Clipper and veteran can take it").not.toBeNull(); await advanceTo(page, flight!.arrivalAt); await page.goto("/"); - await expect(logbook(page)).toContainText("Discovered Mars!"); + await expect(logbook(page)).toContainText("opened a new market: Mars"); await dismissLogbook(page); // Mars is discovered on the Locations screen and can be leased; its board is open without a bay (CR-002). diff --git a/apps/web/e2e/25-3-away-fits.e2e.ts b/apps/web/e2e/25-3-away-fits.e2e.ts new file mode 100644 index 0000000..8e641e1 --- /dev/null +++ b/apps/web/e2e/25-3-away-fits.e2e.ts @@ -0,0 +1,43 @@ +import { expect, test } from "@playwright/test"; +import type { PlayerState } from "@deadhead/schema"; +import { addCredits, advance, logbook, playToDeal, run, state } from "./support"; + +const HOUR = 3_600_000; +const PILOTS = 7; + +test.describe("the highlights pop-up (CR-025 Step 25.3)", () => { + test("fits one phone screen with more pilots than it lists", async ({ page }) => { + test.setTimeout(180_000); + await page.setViewportSize({ width: 375, height: 667 }); + const owner = await playToDeal(page); + await addCredits(page, 2_000_000); + await run(page, "buyDispatchOffice"); + const bayId = owner.bays[0]!.id; + for (let i = 0; i < PILOTS; i++) { + const { ship } = await run<{ ship: { id: string } }>(page, "buyShip", { + modelId: "courier", + bayId, + }); + const { pilot } = await run<{ pilot: { id: string } }>(page, "hirePilot", { + locationId: "earth", + }); + await run(page, "assignPilot", { pilotId: pilot.id, shipId: ship.id }); + await run(page, "setPilotMode", { pilotId: pilot.id, mode: "independent" }); + } + const rosa = (await state(page)).pilots.find( + (p: PlayerState["pilots"][number]) => p.isVeteran, + )!; + await run(page, "setPilotMode", { pilotId: rosa.id, mode: "independent" }); + for (let h = 0; h < 4; h++) await advance(page, HOUR); + + await page.goto("/"); + const sheet = logbook(page); + const pilots = sheet.getByRole("list", { name: "Pilots" }); + await expect(pilots).toBeVisible(); + await expect(pilots.getByText(/more pilots:/)).toBeVisible(); + // Everything fits: the sheet doesn't scroll, and the buttons are on screen. + const fits = await sheet.evaluate((el) => el.scrollHeight <= el.clientHeight); + expect(fits).toBe(true); + await expect(sheet.getByRole("button", { name: "Done" })).toBeInViewport(); + }); +}); diff --git a/apps/web/src/components/AwaySummary.tsx b/apps/web/src/components/AwaySummary.tsx index 08af687..de08506 100644 --- a/apps/web/src/components/AwaySummary.tsx +++ b/apps/web/src/components/AwaySummary.tsx @@ -1,22 +1,184 @@ import { content } from "@deadhead/content"; -import { formatFu } from "./Fuel"; +import type { LogEntry, Pilot, PlayerState } from "@deadhead/schema"; +import { + buildAwaySummary, + flightNet, + type AwayHighlight, + type AwayProblem, + type AwaySummary as Summary, +} from "@deadhead/sim"; +import { useQuery } from "@tanstack/react-query"; import { useState } from "react"; import { useNavigate } from "react-router"; +import { useApi } from "../api/context"; import { useClock } from "../clock/clock"; -import { formatCredits, locationName, toLocation } from "../format"; -import { formatLocalTime } from "../screens/DispatchSheet"; +import { fill, formatCredits, locationName } from "../format"; import { useGameAction, useLoadedPlayer } from "../state/actions"; import { Button, Icon, Sheet } from "../ui"; import { SleepBanner } from "./FleetSleep"; -import { PilotLogbook, pilotLogbook } from "./PilotLogbook"; -/** "While you were away": deliveries resolved since the player last looked (Step 9.2). */ +const words = content.awayWording; + +export const logbookKey = ["logbook"] as const; + +/** An absence's length: "2 d 3 h", "9 h 40 m", "12 m". */ +export function formatAbsence(ms: number): string { + const minutes = Math.max(1, Math.round(ms / 60_000)); + const days = Math.floor(minutes / 1440); + const hours = Math.floor((minutes % 1440) / 60); + const mins = minutes % 60; + if (days > 0) return `${days} d ${hours} h`; + if (hours > 0) return `${hours} h ${mins} m`; + return `${mins} m`; +} + +/** Credits with their sign: "+12,300 cr", "−410 cr". */ +export function signedCredits(credits: number): string { + return credits < 0 ? `−${formatCredits(-credits)}` : `+${formatCredits(credits)}`; +} + +const plural = (count: number, one: string, many = `${one}s`) => + `${count} ${count === 1 ? one : many}`; + +/** Where a pilot is now, in a few words (a pilot line's last part). */ +export function pilotNow(state: PlayerState, pilot: Pilot): string { + const flight = state.activeDispatches.find((d) => d.pilotId === pilot.id); + if (flight) return `Flying to ${locationName(flight.destinationId)}`; + const place = locationName(pilot.locationId ?? ""); + if (pilot.restingInShopUntil !== null) return `In the shop at ${place}`; + if (pilot.resting) return `Resting at ${place}`; + if (pilot.mode === "independent" && state.fleetSleep.asleep) return "Waiting for orders"; + return `At ${place}`; +} + +/** Names for ids, from the state and content. */ +function namer(state: PlayerState) { + return { + pilot: (id: string | null) => state.pilots.find((p) => p.id === id)?.name ?? "A pilot", + ship: (id: string | null, tutorial = false) => + tutorial ? "Company loaner" : (state.ships.find((s) => s.id === id)?.name ?? "A ship"), + good: (id: string | null) => (id ? (content.good(id)?.name ?? id) : "cargo"), + }; +} + +function problemText(problem: AwayProblem, name: ReturnType): string { + if (problem.kind === "below-floor") { + return fill(words.highlights.belowFloor, { floor: formatCredits(problem.floor) }); + } + const template = { + "no-jobs": words.highlights.noJobs, + "low-fuel": words.highlights.lowFuel, + "emergency-fuel": words.highlights.emergencyFuel, + }[problem.kind]; + return fill(template, { + ship: name.ship(problem.shipId), + place: locationName(problem.locationId), + }); +} + +/** One highlight in words (decision 0.5.140). */ +export function highlightText(highlight: AwayHighlight, state: PlayerState): string { + const name = namer(state); + switch (highlight.kind) { + case "discovery": + return fill(words.highlights.discovery, { place: locationName(highlight.locationId) }); + case "level-up": + return fill(words.highlights.levelUp, { + pilot: name.pilot(highlight.pilotId), + level: highlight.level, + points: plural(highlight.skillPoints, "skill point"), + }); + case "goal-ready": + return fill(words.highlights.goalReady, { + goal: content.onboardingGoal(highlight.goalId)?.title ?? highlight.goalId, + }); + case "scripted": + return ( + content.scriptedTutorialContracts.find((c) => c.id === highlight.scriptedId) + ?.flavorMessage ?? "" + ); + case "best-job": + return fill(words.highlights.bestJob, { + good: name.good(highlight.goodId), + place: locationName(highlight.destinationId), + credits: formatCredits(highlight.payout), + pilot: name.pilot(highlight.pilotId), + }); + case "problem": + return problemText(highlight.problem, name); + } +} + +/** A short absence's event in words ("Courier delivered Mail to the Moon, +410 cr"). */ +export function directText(entry: LogEntry, state: PlayerState): string { + const name = namer(state); + switch (entry.kind) { + case "flight": + return entry.deadhead + ? fill(words.direct.deadhead, { + ship: name.ship(entry.shipId, entry.tutorial), + place: locationName(entry.destinationId), + fuel: formatCredits(entry.fuelCost), + }) + : fill(words.direct.delivery, { + ship: name.ship(entry.shipId, entry.tutorial), + good: name.good(entry.goodId), + place: locationName(entry.destinationId), + credits: signedCredits(flightNet(entry)), + }); + case "upgrade": + return fill(words.direct.upgrade, { + ship: name.ship(entry.shipId), + upgrade: content.upgrade(entry.upgradeId)?.name ?? entry.upgradeId, + level: entry.level, + }); + case "discovery": + return fill(words.direct.discovery, { + pilot: name.pilot(entry.pilotId), + place: locationName(entry.locationId), + }); + case "level-up": + return fill(words.direct.levelUp, { + pilot: name.pilot(entry.pilotId), + level: entry.level, + points: plural(entry.skillPoints, "skill point"), + }); + default: + return ""; + } +} + +/** The summary for the absence now (decision 0.5.140). */ +export function useAwaySummary( + state: PlayerState, + refresh: string, + enabled = true, +): Summary | null { + const api = useApi(); + const book = useQuery({ + queryKey: [...logbookKey, refresh], + queryFn: () => api.call("getLogbook", {}), + enabled, + }); + if (!book.data) return null; + return buildAwaySummary({ + ...book.data.absence, + entries: book.data.entries, + pilots: state.pilots.map((p) => ({ id: p.id, name: p.name, now: pilotNow(state, p) })), + problems: book.data.problems, + }); +} + +/** + * "While you were away" (Step 9.2, decision 0.5.140): highlights on one phone + * screen, the detail in the Logbook. Opens on unseen deliveries and finished + * upgrades, as before. + */ export function AwaySummary() { const state = useLoadedPlayer(); const acknowledge = useGameAction("acknowledgeSummaries"); // Hide as soon as the player dismisses; the refetch clears the list for real. const [dismissed, setDismissed] = useState>(new Set()); - const navigate = useNavigate(); const now = useClock((s) => s.now); const summaries = state.summaries.filter((s) => !dismissed.has(s.dispatchId)); @@ -24,15 +186,10 @@ export function AwaySummary() { const outOfShop = state.ships.filter( (s) => s.shop !== null && s.shop.until <= now && !dismissed.has(`ship:${s.id}`), ); - // Goals waiting to be claimed (Step 10A.17). - const readyGoals = state.goals - .filter((g) => g.status === "ready") - .map((g) => content.onboardingGoal(g.id)) - .filter((g) => g !== undefined); - if (summaries.length === 0 && outOfShop.length === 0) return null; - - const shipName = (shipId: string, tutorial: boolean) => - tutorial ? "Company loaner" : (state.ships.find((s) => s.id === shipId)?.name ?? "A ship"); + const open = summaries.length > 0 || outOfShop.length > 0; + const refresh = [...summaries.map((s) => s.dispatchId), ...outOfShop.map((s) => s.id)].join(); + const summary = useAwaySummary(state, refresh, open); + if (!open) return null; const dismiss = () => { const ids = summaries.map((s) => s.dispatchId); @@ -41,134 +198,131 @@ export function AwaySummary() { acknowledge.mutate({ dispatchIds: ids, ...(shipIds.length > 0 ? { shipIds } : {}) }); }; - // Independent pilots' own trips (CR-021) are listed by pilot, not one card each. - const logbook = pilotLogbook(state, summaries); - const yours = summaries.filter((s) => !s.independent); + const title = fill(words.title, { duration: summary ? formatAbsence(summary.durationMs) : "…" }); + const highlights = summary?.highlights ?? []; return ( - - - -
    - {yours.map((s) => ( -
  • -
    - - {shipName(s.shipId, s.tutorial)} - - - {locationName(s.originId)} → {locationName(s.destinationId)} - -
    - {!s.deadhead && s.goodId && s.massTonnes !== null && ( -

    - Delivered {s.massTonnes} t {content.good(s.goodId)?.name ?? s.goodId} - {s.shipper && ` for ${s.shipper}`} {toLocation(s.destinationId)} -

    - )} - {s.deadhead ? ( - // An empty flight earns nothing: say what it was and what it cost. -
    - - Deadhead · {formatCredits(s.fuelCost)} fuel used -
    - ) : ( -
    - = 0 ? "text-emerald-300" : "text-rose-300"}> - {s.credits >= 0 ? "+" : ""} - {formatCredits(s.credits)} - - +{s.pilotXp} XP -
    - )} - {s.pilotPay > 0 && ( -
    - {formatCredits(s.pilotPay)} pilot share to{" "} - {state.pilots.find((p) => p.id === s.pilotId)?.name ?? "the pilot"} -
    - )} - {s.topUp && ( -
    - Topped up {formatFu(s.topUp.boughtFu)} at {locationName(s.topUp.locationId)},{" "} - {formatCredits(s.topUp.cost)} -
    - )} - {s.loanRepayment > 0 && ( -
    - {formatCredits(s.loanRepayment)} went to the lender -
    - )} - {s.scriptedId && ( -

    - { - content.scriptedTutorialContracts.find((c) => c.id === s.scriptedId) - ?.flavorMessage - } -

    - )} - {s.discoveredLocationId && ( -
    - - Discovered {locationName(s.discoveredLocationId)}! -
    - )} - {s.restEndsAt !== null && ( -
    - - - {state.pilots.find((p) => p.id === s.pilotId)?.name ?? "The pilot"} is resting - until {formatLocalTime(s.restEndsAt)} - -
    - )} -
  • - ))} - {outOfShop.map((ship) => ( -
  • - - {ship.name} is out of the shop:{" "} - {content.upgrade(ship.shop!.upgradeId)?.name ?? ship.shop!.upgradeId} {ship.shop!.level} -
  • - ))} -
- {readyGoals.length > 0 && ( -
-

- - Goals ready to claim -

-
    - {readyGoals.map((goal) => ( -
  • - {goal.title}{" "} - - +{formatCredits(goal.reward)} - + +
    + + {!summary ? ( +

    Reading the logbook…

    + ) : summary.direct ? ( +
      + {summary.direct.map((entry) => ( +
    • + + {directText(entry as LogEntry, state)}
    • ))}
    - -
    - )} - + ) : ( + + )} + {summary && highlights.length > 0 && ( +
      + {highlights.map((h, i) => ( +
    • + + {highlightText(h, state)} +
    • + ))} + {summary.moreHighlights > 0 && ( +
    • + {fill(words.moreHighlights, { count: summary.moreHighlights })} +
    • + )} +
    + )} + {summary && !summary.direct && } +
+
+ + +
); } + +/** One row of company figures: net, deliveries, discoveries and loan repaid (if any). */ +function Totals({ summary }: { summary: Summary }) { + const { net, deliveries, discoveries, loanRepaid } = summary.totals; + const figures: [string, string, string][] = [ + [words.totals.net, signedCredits(net), net < 0 ? "text-rose-300" : "text-emerald-300"], + [words.totals.deliveries, String(deliveries), "text-ink-50"], + ]; + if (discoveries > 0) + figures.push([words.totals.discoveries, String(discoveries), "text-cyan-200"]); + if (loanRepaid > 0) + figures.push([words.totals.loanRepaid, formatCredits(loanRepaid), "text-ink-50"]); + return ( +
+ {figures.map(([label, value, tone]) => ( +
+
+ {label} +
+
{value}
+
+ ))} +
+ ); +} + +/** One line per active pilot, at most 5, then the rest and the idle ones summed. */ +function PilotLines({ summary }: { summary: Summary }) { + if (summary.pilots.length === 0 && summary.idlePilots === 0) return null; + return ( +
    + {summary.pilots.map((line) => ( +
  • + + {fill(words.pilotLine, { + pilot: line.name, + jobs: plural(line.deliveries, "job"), + credits: signedCredits(line.net), + now: line.now, + })} + + {line.leveledUp && ( + + {words.leveledUp} + + )} +
  • + ))} + {summary.morePilots && ( +
  • + {fill(words.morePilots, { + count: summary.morePilots.count, + credits: signedCredits(summary.morePilots.net), + })} +
  • + )} + {summary.idlePilots > 0 && ( +
  • + {summary.idlePilots === 1 + ? words.idlePilot + : fill(words.idlePilots, { count: summary.idlePilots })} +
  • + )} +
+ ); +} diff --git a/apps/web/src/format.ts b/apps/web/src/format.ts index d7027b7..aa9782f 100644 --- a/apps/web/src/format.ts +++ b/apps/web/src/format.ts @@ -4,6 +4,13 @@ export function formatCredits(credits: number): string { return `${Math.round(credits).toLocaleString("en-US")} cr`; } +/** Fills `{name}` placeholders in content wording (CR-025); unknown names stay as they are. */ +export function fill(template: string, values: Record): string { + return template.replace(/\{(\w+)\}/g, (all, key: string) => + key in values ? String(values[key]) : all, + ); +} + /** A duration as the two largest units: "2h 05m", "4m 09s", "45s". */ export function formatDuration(ms: number): string { const totalSeconds = Math.max(0, Math.ceil(ms / 1000)); diff --git a/apps/web/test/away-goals.test.tsx b/apps/web/test/away-goals.test.tsx index 6cffe2d..450ac21 100644 --- a/apps/web/test/away-goals.test.tsx +++ b/apps/web/test/away-goals.test.tsx @@ -57,7 +57,7 @@ function returningPlayer(acknowledged: boolean): PlayerState { } describe("something waiting on return", () => { - it("lists ready goals alongside the delivery, and the link opens HQ's goals", async () => { + it("highlights a goal ready to claim (claimed on the Bridge's goals card, CR-025)", async () => { let acknowledged = false; const api = fakeApi({ getPlayerState: () => returningPlayer(acknowledged), @@ -68,29 +68,24 @@ describe("something waiting on return", () => { }); renderApp(api, "/fleet"); - const dialog = await screen.findByRole("dialog", { name: "While you were away" }); - expect(dialog).toHaveTextContent("Dusty Mule"); - const ready = within(dialog).getByRole("list", { name: "Ready goals" }); - expect(ready).toHaveTextContent(content.onboardingGoal("first-own-delivery")!.title); - - await userEvent.click(within(dialog).getByRole("button", { name: "Claim on the Bridge" })); - expect(screen.queryByRole("dialog", { name: "While you were away" })).not.toBeInTheDocument(); - expect(await screen.findByRole("heading", { level: 1, name: "Dashboard" })).toBeInTheDocument(); - const goals = screen.getByRole("region", { name: "Goals" }); - expect(within(goals).getByRole("button", { name: "Claim" })).toBeInTheDocument(); + const dialog = await screen.findByRole("dialog", { name: /While you were away/ }); + const title = content.onboardingGoal("first-own-delivery")!.title; + expect(await within(dialog).findByText(`Goal ready to claim: ${title}`)).toBeInTheDocument(); + await userEvent.click(within(dialog).getByRole("button", { name: "Done" })); await waitFor(() => expect(api.call).toHaveBeenCalledWith("acknowledgeSummaries", { dispatchIds: ["d1"] }), ); }); - it("does not list goals when none are ready", async () => { + it("does not mention goals when none are ready", async () => { const state = returningPlayer(false); const quiet = { ...state, goals: state.goals.map((g) => ({ ...g, status: "incomplete" as const })), }; renderApp(fakeApi({ getPlayerState: () => quiet })); - const dialog = await screen.findByRole("dialog", { name: "While you were away" }); - expect(within(dialog).queryByRole("list", { name: "Ready goals" })).not.toBeInTheDocument(); + const dialog = await screen.findByRole("dialog", { name: /While you were away/ }); + await within(dialog).findByRole("list", { name: "What happened" }); + expect(dialog).not.toHaveTextContent("Goal ready"); }); }); diff --git a/apps/web/test/away-summary.test.tsx b/apps/web/test/away-summary.test.tsx index 1b8bf87..5683272 100644 --- a/apps/web/test/away-summary.test.tsx +++ b/apps/web/test/away-summary.test.tsx @@ -1,158 +1,244 @@ -import type { ResolutionSummary, Ship } from "@deadhead/schema"; +import type { LogbookResponse, LogEntry, Pilot, ResolutionSummary, Ship } from "@deadhead/schema"; import { screen, waitFor, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; -import { describe, expect, it } from "vitest"; +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { useClock } from "../src/clock/clock"; +import { formatAbsence } from "../src/components/AwaySummary"; +import { pilotExtras } from "./fixtures"; import { fakeApi, renderApp, samplePlayerState, shipExtras } from "./render"; -const ship: Ship = { - id: "s1", +const NOW = Date.parse("2100-01-01T12:00:00Z"); +const FROM = NOW - (9 * 60 + 40) * 60_000; + +const ship = (id: string, pilotId: string): Ship => ({ + id, modelId: "courier", - name: "Dusty Mule", + name: id === "s0" ? "Dusty Mule" : `Ship ${id}`, status: "idle", - locationId: "mars", + locationId: "moon", dispatchId: null, lastArrivalAt: 0, ...shipExtras("courier"), - pilotId: "avatar", + pilotId, +}); + +const pilot = (i: number): Pilot => ({ + ...samplePlayerState().pilots[0]!, + id: `p${i}`, + name: i === 0 ? "Rosa" : `Pilot ${i}`, + isAvatar: false, + assignedShipId: `s${i}`, + locationId: "moon", + ...pilotExtras, + mode: "independent", +}); + +/** A summary that keeps the pop-up open (the trigger is unchanged: unseen deliveries). */ +const pending: ResolutionSummary = { + dispatchId: "d0", + shipId: "s0", + pilotId: "p0", + originId: "earth", + destinationId: "moon", + tutorial: false, + independent: true, + deadhead: false, + fuelCost: 100, + topUp: null, + goodId: "consumer-goods", + massTonnes: 6, + shipper: "Pacific Orbital Logistics", + credits: 700, + loanRepayment: 0, + pilotPay: 200, + pilotXp: 10, + discoveredLocationId: null, + scriptedId: null, + restEndsAt: null, + resolvedAt: NOW - 60_000, }; -const summaries: ResolutionSummary[] = [ - { - dispatchId: "d1", - shipId: "s1", - pilotId: "avatar", - originId: "earth", - destinationId: "mars", +let n = 0; +const flight = (pilotId: string, payout: number, over: Partial = {}): LogEntry => + ({ + id: `f${n++}`, + at: FROM + 60_000 + n, + pilotId, + shipId: `s${pilotId.slice(1)}`, + kind: "flight", + dispatchId: `d${n}`, + deadhead: false, tutorial: false, - credits: 51_200, - deadhead: false, - independent: false, - fuelCost: 0, - topUp: null, - goodId: "consumer-goods", - massTonnes: 12, + independent: true, + originId: "earth", + destinationId: "moon", + goodId: "helium-3", + massTonnes: 6, shipper: "Pacific Orbital Logistics", - loanRepayment: 0, + payout, pilotPay: 0, - pilotXp: 32, - discoveredLocationId: "mars", - scriptedId: null, - restEndsAt: null, - resolvedAt: 1, - }, - { - dispatchId: "d2", - shipId: "loaner", - pilotId: "avatar", - originId: "moon", - destinationId: "earth", - tutorial: true, - credits: 240, - deadhead: false, - independent: false, fuelCost: 0, - topUp: null, - goodId: "consumer-goods", - massTonnes: 12, - shipper: "Pacific Orbital Logistics", loanRepayment: 0, - pilotPay: 0, - pilotXp: 10, - discoveredLocationId: null, + xp: 10, scriptedId: null, - restEndsAt: null, - resolvedAt: 2, - }, -]; + ...over, + }) as LogEntry; -describe("while you were away", () => { - it("names what was delivered, how much, for whom and where (CR-007)", async () => { - const delivery: ResolutionSummary = { - ...summaries[0]!, - destinationId: "moon", - goodId: "medical-supplies", - massTonnes: 6, - shipper: "Meridian Health", - discoveredLocationId: null, - }; - renderApp( - fakeApi({ - getPlayerState: () => - samplePlayerState({ tutorial: null, ships: [ship], summaries: [delivery] }), +function render(pilots: number, entries: LogEntry[], over: Partial = {}) { + let seen = false; + const all = Array.from({ length: pilots }, (_, i) => pilot(i)); + const api = fakeApi({ + getPlayerState: () => + samplePlayerState({ + tutorial: null, + pilots: [samplePlayerState().pilots[0]!, ...all], + ships: all.map((p, i) => ship(`s${i}`, p.id)), + summaries: seen ? [] : [pending], }), - ); - const dialog = await screen.findByRole("dialog", { name: "While you were away" }); - expect(within(dialog).getAllByRole("listitem")[0]).toHaveTextContent( - "Delivered 6 t Medical Supplies for Meridian Health to the Moon", - ); + getLogbook: () => ({ + entries, + absence: { from: FROM, to: NOW }, + lastAbsence: null, + problems: [], + ...over, + }), + acknowledgeSummaries: () => { + seen = true; + return { acknowledged: 1 }; + }, + }); + renderApp(api); + return api; +} + +const dialog = () => screen.findByRole("dialog", { name: /While you were away/ }); + +describe("the highlights pop-up (Step 25.3, decision 0.5.140)", () => { + beforeEach(() => { + vi.useFakeTimers({ toFake: ["Date", "setInterval", "clearInterval"] }); + vi.setSystemTime(NOW); + useClock.setState({ offsetMs: 0, synced: true, now: NOW }); + }); + afterEach(() => vi.useRealTimers()); + + it("titles the absence with its length", async () => { + render(1, [flight("p0", 410)]); + const sheet = await dialog(); + await within(sheet).findByRole("list", { name: "What happened" }); + expect(sheet).toHaveAccessibleName("While you were away · 9 h 40 m"); + expect([formatAbsence(12 * 60_000), formatAbsence(50 * 3_600_000)]).toEqual([ + "12 m", + "2 d 2 h", + ]); }); - it("shows a deadhead as an empty flight with its fuel, not as a +0 payout", async () => { - const deadhead: ResolutionSummary = { - ...summaries[0]!, - dispatchId: "d3", - destinationId: "moon", - deadhead: true, - independent: false, - fuelCost: 230, - topUp: null, - goodId: null, - massTonnes: null, - shipper: null, - credits: 0, - pilotXp: 0, - discoveredLocationId: null, - }; - renderApp( - fakeApi({ - getPlayerState: () => - samplePlayerState({ tutorial: null, ships: [ship], summaries: [deadhead] }), - }), - ); - const dialog = await screen.findByRole("dialog", { name: "While you were away" }); - const entry = within(dialog).getAllByRole("listitem")[0]!; - expect(entry).toHaveTextContent("Dusty Mule"); - expect(entry).toHaveTextContent("Earth → Moon"); - expect(entry).toHaveTextContent("Deadhead · 230 cr fuel"); - expect(entry).not.toHaveTextContent("+0 cr"); - expect(entry).not.toHaveTextContent("XP"); - expect(entry).not.toHaveTextContent("Delivered"); + it("lists a short absence's events directly: no totals or pilot lines", async () => { + render(2, [ + flight("p0", 410, { goodId: "consumer-goods" }), + flight("p1", 0, { deadhead: true, goodId: null, fuelCost: 230 }), + ]); + const list = await within(await dialog()).findByRole("list", { name: "What happened" }); + expect( + within(list) + .getAllByRole("listitem") + .map((li) => li.textContent), + ).toEqual([ + "Dusty Mule delivered Consumer Goods to Moon, +410 cr", + "Ship s1 flew empty to Moon, 230 cr fuel", + ]); + expect(screen.queryByLabelText("Company totals")).not.toBeInTheDocument(); + expect(screen.queryByRole("list", { name: "Pilots" })).not.toBeInTheDocument(); }); - it("lists each completed delivery, and dismissing acknowledges them and hides the dialog", async () => { - let acknowledged = false; - const api = fakeApi({ - getPlayerState: () => - samplePlayerState({ - tutorial: null, - ships: [ship], - summaries: acknowledged ? [] : summaries, - }), - acknowledgeSummaries: ({ dispatchIds }) => { - acknowledged = true; - return { acknowledged: dispatchIds.length }; + it("with 50 active pilots shows totals, 3 highlights, 5 pilot lines and the rest summed", async () => { + const entries = Array.from({ length: 50 }, (_, i) => [ + flight(`p${i}`, (i + 1) * 100, { fuelCost: 10 }), + flight(`p${i}`, (i + 1) * 100, { fuelCost: 10 }), + ]).flat(); + entries.push( + { + id: "x1", + at: FROM + 5, + pilotId: "p3", + shipId: "s3", + kind: "discovery", + locationId: "mars", }, + { + id: "x2", + at: FROM + 6, + pilotId: "p0", + shipId: "s0", + kind: "level-up", + level: 4, + skillPoints: 1, + }, + ); + render(50, entries, { + problems: [{ kind: "low-fuel", shipId: "s2", locationId: "moon" }], }); - renderApp(api); + const sheet = await dialog(); + const totals = await within(sheet).findByLabelText("Company totals"); + const net = entries.reduce( + (sum, e) => sum + (e.kind === "flight" ? e.payout - e.fuelCost : 0), + 0, + ); + expect(totals).toHaveTextContent(`Net earned+${net.toLocaleString("en-US")} cr`); + expect(totals).toHaveTextContent("Deliveries100"); + expect(totals).toHaveTextContent("Discoveries1"); + expect(totals).not.toHaveTextContent("Loan repaid"); - const dialog = await screen.findByRole("dialog", { name: "While you were away" }); - const items = within(dialog).getAllByRole("listitem"); - expect(items).toHaveLength(2); + const highlights = within(sheet).getByRole("list", { name: "Highlights" }); + expect( + within(highlights) + .getAllByRole("listitem") + .map((li) => li.textContent), + ).toEqual([ + "New market: Mars", + "Rosa reached level 4 · 1 skill point", + "Biggest job: Helium-3 Canisters to Moon, 5,000 cr, Pilot 49", + "+1 more in the Logbook", + ]); - expect(items[0]).toHaveTextContent("Dusty Mule"); - expect(items[0]).toHaveTextContent("Earth → Mars"); - expect(items[0]).toHaveTextContent("+51,200 cr"); - expect(items[0]).toHaveTextContent("+32 XP"); - expect(items[0]).toHaveTextContent("Discovered Mars!"); + const lines = within(sheet).getByRole("list", { name: "Pilots" }); + const items = within(lines).getAllByRole("listitem"); + // 5 pilots, the other 45, and the Captain, who flew nothing. + expect(items).toHaveLength(7); + expect(items[6]).toHaveTextContent("1 pilot had nothing to do"); + expect(items[0]).toHaveTextContent("Pilot 49 · 2 jobs · +9,980 cr · At Moon"); + const rest = Array.from({ length: 45 }, (_, i) => 2 * ((i + 1) * 100 - 10)).reduce( + (a, b) => a + b, + ); + expect(items[5]).toHaveTextContent(`+45 more pilots: +${rest.toLocaleString("en-US")} cr`); + // Rosa leveled up but is 50th by net: her badge is in the collapsed line, not shown. + expect(within(lines).queryByText("Level up")).not.toBeInTheDocument(); + }); - expect(items[1]).toHaveTextContent("Company loaner"); - expect(items[1]).toHaveTextContent("Moon → Earth"); - expect(items[1]).not.toHaveTextContent("Discovered"); + it("adds +N more lines only when needed, and sums idle pilots", async () => { + render(4, [flight("p0", 100), flight("p0", 100), flight("p1", 50), flight("p1", 50)]); + const sheet = await dialog(); + const lines = await within(sheet).findByRole("list", { name: "Pilots" }); + expect( + within(lines) + .getAllByRole("listitem") + .map((li) => li.textContent), + ).toEqual([ + "Rosa · 2 jobs · +200 cr · At Moon", + "Pilot 1 · 2 jobs · +100 cr · At Moon", + // The two without flights, and the Captain. + "3 pilots had nothing to do", + ]); + expect(within(sheet).queryByText(/more in the Logbook/)).not.toBeInTheDocument(); + }); - await userEvent.click(within(dialog).getByRole("button", { name: "Got it" })); + it("closes on Done, acknowledging what it showed", async () => { + const api = render(1, [flight("p0", 410)]); + const sheet = await dialog(); + await within(sheet).findByRole("list", { name: "What happened" }); + await userEvent.click(within(sheet).getByRole("button", { name: "Done" })); expect(screen.queryByRole("dialog")).not.toBeInTheDocument(); await waitFor(() => - expect(api.call).toHaveBeenCalledWith("acknowledgeSummaries", { dispatchIds: ["d1", "d2"] }), + expect(api.call).toHaveBeenCalledWith("acknowledgeSummaries", { dispatchIds: ["d0"] }), ); }); diff --git a/apps/web/test/board-logbook.test.tsx b/apps/web/test/board-logbook.test.tsx index f0206b6..88c1d8a 100644 --- a/apps/web/test/board-logbook.test.tsx +++ b/apps/web/test/board-logbook.test.tsx @@ -4,7 +4,6 @@ import { act, render, screen, within } from "@testing-library/react"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { useClock } from "../src/clock/clock"; import { CatchingUp, pilotLogbook } from "../src/components/PilotLogbook"; -import { formatCredits } from "../src/format"; import { pilotExtras } from "./fixtures"; import { fakeApi, renderApp, samplePlayerState, shipExtras } from "./render"; @@ -222,18 +221,4 @@ describe("pilot logbook (Step 21.7)", () => { }); expect(book.totals.payout).toBe(1_000 + 1_200); }); - - it("shows on the while-you-were-away sheet, with the player's own trip as a card", async () => { - const state = { ...owner([ada, bo]), summaries }; - renderApp(fakeApi({ getPlayerState: () => state }), "/"); - const book = await screen.findByLabelText("Pilot logbook"); - expect(within(book).getByLabelText("Company totals")).toHaveTextContent( - `2 jobs1 deadheads${formatCredits(2_200)} paid`, - ); - expect(within(book).getByLabelText("Ada log")).toHaveTextContent("Deadhead Earth → Moon"); - expect(within(book).getByLabelText("Bo log")).toHaveTextContent("Rested until"); - // One card for the player's own delivery, outside the logbook. - const sheet = screen.getByRole("dialog", { name: "While you were away" }); - expect(within(sheet).getAllByText("Earth → Moon").length).toBeGreaterThan(0); - }); }); diff --git a/apps/web/test/dashboard.test.tsx b/apps/web/test/dashboard.test.tsx index 46713f8..b8800ac 100644 --- a/apps/web/test/dashboard.test.tsx +++ b/apps/web/test/dashboard.test.tsx @@ -171,8 +171,11 @@ describe("loan on HQ", () => { renderApp( fakeApi({ getPlayerState: () => state, acknowledgeSummaries: () => ({ acknowledged: 1 }) }), ); - const dialog = await screen.findByRole("dialog", { name: "While you were away" }); - expect(dialog).toHaveTextContent("230 cr went to the lender"); + const dialog = await screen.findByRole("dialog", { name: /While you were away/ }); + // The pop-up shows the net, after the lender's cut; the cut itself is in the Logbook (CR-025). + await waitFor(() => + expect(dialog).toHaveTextContent("delivered Consumer Goods to Moon, +538 cr"), + ); }); }); diff --git a/apps/web/test/deal-modal.test.tsx b/apps/web/test/deal-modal.test.tsx index fbd8244..41ef0cf 100644 --- a/apps/web/test/deal-modal.test.tsx +++ b/apps/web/test/deal-modal.test.tsx @@ -122,7 +122,7 @@ describe("the deal", () => { fakeApi({ getPlayerState: withSummary, getTutorialBoard: () => sampleTutorialBoard() }), "/contracts", ); - await screen.findByRole("dialog", { name: "While you were away" }); + await screen.findByRole("dialog", { name: /While you were away/ }); expect( screen.queryByRole("dialog", { name: "An offer from Halvorsen" }), ).not.toBeInTheDocument(); diff --git a/apps/web/test/fixtures.ts b/apps/web/test/fixtures.ts index a003453..b877565 100644 --- a/apps/web/test/fixtures.ts +++ b/apps/web/test/fixtures.ts @@ -1,5 +1,5 @@ import { content } from "@deadhead/content"; -import type { Pilot, PlayerState, Ship } from "@deadhead/schema"; +import type { LogbookResponse, LogEntry, Pilot, PlayerState, Ship } from "@deadhead/schema"; import { effectiveStats } from "@deadhead/sim"; // Plain data builders shared by component tests and the Playwright tests (no Vitest imports). @@ -100,3 +100,76 @@ export function samplePlayerState(overrides: Partial = {}): PlayerS ...overrides, }; } + +/** + * The logbook a state's unseen summaries and finished upgrades stand for + * (CR-025): what the engine's `getLogbook` would return. `fakeApi` answers + * `getLogbook` with it unless a test gives its own. + */ +export function logbookFrom(state: PlayerState): LogbookResponse { + const entries: LogEntry[] = []; + for (const s of state.summaries) { + const who = { at: s.resolvedAt, pilotId: s.pilotId, shipId: s.shipId }; + entries.push({ + id: `${s.dispatchId}:flight`, + ...who, + kind: "flight", + dispatchId: s.dispatchId, + deadhead: s.deadhead, + tutorial: s.tutorial, + independent: s.independent, + originId: s.originId, + destinationId: s.destinationId, + goodId: s.goodId, + massTonnes: s.massTonnes, + shipper: s.shipper, + payout: Math.max(0, s.credits + s.pilotPay + s.loanRepayment), + pilotPay: s.pilotPay, + fuelCost: s.fuelCost, + loanRepayment: s.loanRepayment, + xp: s.pilotXp, + scriptedId: s.scriptedId, + }); + if (s.restEndsAt !== null) { + entries.push({ id: `${s.dispatchId}:rest`, ...who, kind: "rest", until: s.restEndsAt }); + } + if (s.discoveredLocationId) { + entries.push({ + id: `${s.dispatchId}:discovery`, + ...who, + kind: "discovery", + locationId: s.discoveredLocationId, + }); + } + } + for (const ship of state.ships) { + if (!ship.shop || ship.shop.until > Date.now()) continue; + entries.push({ + id: `${ship.id}:upgrade`, + at: ship.shop.until, + pilotId: ship.pilotId, + shipId: ship.id, + kind: "upgrade", + upgradeId: ship.shop.upgradeId, + level: ship.shop.level, + }); + } + for (const goal of state.goals) { + if (goal.status !== "ready") continue; + entries.push({ + id: `goal:${goal.id}`, + at: Date.now(), + pilotId: null, + shipId: null, + kind: "goal-ready", + goalId: goal.id, + }); + } + const from = Math.min(Date.now(), ...entries.map((e) => e.at)) - 60_000; + return { + entries: entries.sort((a, b) => a.at - b.at), + absence: { from, to: Math.max(Date.now(), ...entries.map((e) => e.at)) }, + lastAbsence: null, + problems: [], + }; +} diff --git a/apps/web/test/fleet-sleep.test.tsx b/apps/web/test/fleet-sleep.test.tsx index dd375c5..0de8975 100644 --- a/apps/web/test/fleet-sleep.test.tsx +++ b/apps/web/test/fleet-sleep.test.tsx @@ -121,7 +121,7 @@ describe("fleet sleep on screen (Step 24.5, decisions 0.5.137, 0.5.138)", () => it("puts the sleep banner on the while-you-were-away screen, until Back to work", async () => { const api = sleepyApi({ summaries: [summary] }); renderApp(api, "/"); - const sheet = await screen.findByRole("dialog", { name: "While you were away" }); + const sheet = await screen.findByRole("dialog", { name: /While you were away/ }); const banner = within(sheet).getByLabelText("Fleet asleep"); expect(banner).toHaveTextContent( /^Your fleet went quiet on .+, .+ after 24 h without orders\./, @@ -134,7 +134,7 @@ describe("fleet sleep on screen (Step 24.5, decisions 0.5.137, 0.5.138)", () => it("leaves the banner off the away screen when the fleet didn't go quiet", async () => { renderApp(fakeApi({ getPlayerState: () => owner(false, { summaries: [summary] }) }), "/"); - const sheet = await screen.findByRole("dialog", { name: "While you were away" }); + const sheet = await screen.findByRole("dialog", { name: /While you were away/ }); expect(within(sheet).queryByLabelText("Fleet asleep")).not.toBeInTheDocument(); }); diff --git a/apps/web/test/pilot-share.test.tsx b/apps/web/test/pilot-share.test.tsx index 9453388..f07f426 100644 --- a/apps/web/test/pilot-share.test.tsx +++ b/apps/web/test/pilot-share.test.tsx @@ -2,7 +2,7 @@ import { pilotExtras } from "./fixtures"; import { content } from "@deadhead/content"; import type { Contract, Pilot, ResolutionSummary, Ship } from "@deadhead/schema"; import { pilotShare, tripFuel } from "@deadhead/sim"; -import { screen, within } from "@testing-library/react"; +import { screen, waitFor, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { useClock } from "../src/clock/clock"; @@ -130,9 +130,10 @@ describe("pilot share in the client (Step 10J.6)", () => { expect(mine).toHaveTextContent(`Net profit${formatCredits(job.payout - fuel)}`); }); - it("lists the pilot's share in a delivery summary", async () => { + it("takes the pilot's share out of a delivery's net in the summary", async () => { renderApp(fakeApi({ getPlayerState: () => state([summary]) }), "/"); - const dialog = await screen.findByRole("dialog", { name: "While you were away" }); - expect(dialog).toHaveTextContent(`${formatCredits(63)} pilot share to Rosa Kell`); + const dialog = await screen.findByRole("dialog", { name: /While you were away/ }); + // 600 cr after the share, less 150 cr of fuel (CR-025); the share itself is in the Logbook. + await waitFor(() => expect(dialog).toHaveTextContent(`+${formatCredits(450)}`)); }); }); diff --git a/apps/web/test/render.tsx b/apps/web/test/render.tsx index 0114f92..1438473 100644 --- a/apps/web/test/render.tsx +++ b/apps/web/test/render.tsx @@ -6,6 +6,7 @@ import { vi } from "vitest"; import { App } from "../src/App"; import { ApiError, type ApiClient } from "../src/api/client"; import { ApiProvider } from "../src/api/context"; +import { logbookFrom } from "./fixtures"; type Handlers = { [N in RouteName]?: (input: RouteRequest) => RouteResponse | Promise>; @@ -13,13 +14,18 @@ type Handlers = { /** * A fake API: each route answers from its handler. Unhandled routes fail with - * `not-found`; `getServerTime` defaults to the device clock. + * `not-found`; `getServerTime` defaults to the device clock, and `getLogbook` + * to the logbook the player state stands for. */ export function fakeApi(handlers: Handlers) { const call = vi.fn(async (name: RouteName, input: unknown) => { if (name === "getServerTime" && !handlers.getServerTime) { return { realTime: Date.now(), gameTime: 0 }; } + // The logbook the state stands for (CR-025), unless the test gives one. + if (name === "getLogbook" && !handlers.getLogbook && handlers.getPlayerState) { + return logbookFrom(await handlers.getPlayerState({} as never)); + } const handler = handlers[name] as ((input: unknown) => unknown) | undefined; if (!handler) throw new ApiError(404, "not-found", `No fake for ${name}`); return handler(input); diff --git a/apps/web/test/rest-summary-hq.test.tsx b/apps/web/test/rest-summary-hq.test.tsx index e4ceac2..a19d769 100644 --- a/apps/web/test/rest-summary-hq.test.tsx +++ b/apps/web/test/rest-summary-hq.test.tsx @@ -1,9 +1,8 @@ import { pilotExtras } from "./fixtures"; -import type { Pilot, ResolutionSummary } from "@deadhead/schema"; -import { screen, within } from "@testing-library/react"; +import type { Pilot } from "@deadhead/schema"; +import { screen } from "@testing-library/react"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { useClock } from "../src/clock/clock"; -import { formatLocalTime } from "../src/screens/DispatchSheet"; import { fakeApi, renderApp, samplePlayerState } from "./render"; const NOW = Date.parse("2100-01-01T00:00:00Z"); @@ -28,31 +27,6 @@ const pilot = (id: string, name: string, extra: Partial = {}): Pilot => ( ...extra, }); -const summary = (extra: Partial): ResolutionSummary => ({ - dispatchId: "d1", - shipId: "s1", - pilotId: "p-rae", - originId: "earth", - destinationId: "moon", - tutorial: false, - credits: 500, - deadhead: false, - independent: false, - fuelCost: 0, - topUp: null, - goodId: "consumer-goods", - massTonnes: 12, - shipper: "Pacific Orbital Logistics", - loanRepayment: 0, - pilotPay: 0, - pilotXp: 10, - discoveredLocationId: null, - scriptedId: null, - restEndsAt: null, - resolvedAt: NOW, - ...extra, -}); - const pilots = [ pilot("p-rae", "Rae Okafor", { resting: true, restEndsAt: NOW + 40 * 60_000 }), pilot("p-jun", "Jun Sato", { resting: true, restEndsAt: NOW + 9 * 60_000 }), @@ -67,28 +41,6 @@ describe("rest in summaries and on HQ (Step 10D.9)", () => { }); afterEach(() => vi.useRealTimers()); - it("says in the away summary that a pilot is resting, only for trips that ended in rest", async () => { - const restEndsAt = NOW + 40 * 60_000; - renderApp( - fakeApi({ - getPlayerState: () => - samplePlayerState({ - tutorial: null, - pilots, - summaries: [ - summary({ dispatchId: "d1", restEndsAt }), - summary({ dispatchId: "d2", pilotId: "p-cy" }), - ], - }), - }), - "/", - ); - const dialog = await screen.findByRole("dialog", { name: "While you were away" }); - const [rested, plain] = within(dialog).getAllByRole("listitem"); - expect(rested).toHaveTextContent(`Rae Okafor is resting until ${formatLocalTime(restEndsAt)}`); - expect(plain).not.toHaveTextContent("resting"); - }); - it("shows how many pilots are resting and who wakes first", async () => { renderApp( fakeApi({ getPlayerState: () => samplePlayerState({ tutorial: null, pilots }) }), diff --git a/apps/web/test/shop-summary-hq.test.tsx b/apps/web/test/shop-summary-hq.test.tsx index 4eb737b..14e1149 100644 --- a/apps/web/test/shop-summary-hq.test.tsx +++ b/apps/web/test/shop-summary-hq.test.tsx @@ -47,11 +47,13 @@ describe("the shop in summaries and on HQ (Step 10I.8)", () => { }), }); renderApp(api, "/"); - const dialog = await screen.findByRole("dialog", { name: "While you were away" }); - expect(dialog).toHaveTextContent("Slow Ox is out of the shop: Engine Tuning 2"); + const dialog = await screen.findByRole("dialog", { name: /While you were away/ }); + await waitFor(() => + expect(dialog).toHaveTextContent("Slow Ox is out of the shop: Engine Tuning level 2"), + ); expect(dialog).not.toHaveTextContent("Busy Ox"); - await userEvent.click(within(dialog).getByRole("button", { name: "Got it" })); + await userEvent.click(within(dialog).getByRole("button", { name: "Done" })); await waitFor(() => expect(api.call).toHaveBeenCalledWith("acknowledgeSummaries", { dispatchIds: [], diff --git a/apps/web/test/tutorial-board.test.tsx b/apps/web/test/tutorial-board.test.tsx index 3f1ca0d..efc53a5 100644 --- a/apps/web/test/tutorial-board.test.tsx +++ b/apps/web/test/tutorial-board.test.tsx @@ -162,7 +162,7 @@ describe("scripted delivery summary", () => { acknowledgeSummaries: () => ({ acknowledged: 1 }), }), ); - const dialog = await screen.findByRole("dialog", { name: "While you were away" }); - expect(dialog).toHaveTextContent(flavor); + const dialog = await screen.findByRole("dialog", { name: /While you were away/ }); + await waitFor(() => expect(dialog).toHaveTextContent(flavor)); }); }); diff --git a/docs/screenshots/25-3-away-desktop.png b/docs/screenshots/25-3-away-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..2e1e0f2a9bbc9e8ea1a1ff0e80b46014b71d2a53 GIT binary patch literal 174835 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�=Z_5yjWgcndn}3^k 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%0Aj)z|U?T*$sM3#7&)CFqfJHDYpJ+dL5g6gYARQeR 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

    Z%LO-i;OCqo9hpH3$+eW*W_q;0j=UwH{N{F{CK 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 literal 0 HcmV?d00001 diff --git a/memory-bank/architecture.md b/memory-bank/architecture.md index 11f061a..85ed98c 100644 --- a/memory-bank/architecture.md +++ b/memory-bank/architecture.md @@ -65,6 +65,7 @@ The `routes` catalog is the list of engine commands (CR-014). Each entry has `re | `acknowledgeSummaries` | `POST /api/summaries/acknowledge` | `dispatchIds`, optional `shipIds` (finished upgrades seen; at least one id overall) | `{ acknowledged }` | yes | | `acceptDeal` | `POST /api/deal/accept` | — | `PlayerState` | yes | | `setSleepThreshold` | `POST /api/fleet/sleep-after` | `hours` (one of `fleetSleep.optionsHours`, else `validation-error`) | `PlayerState` | yes; a manual decision (CR-024) | +| `getLogbook` | `GET /api/logbook` | — | `{ entries, absence: { from, to }, lastAbsence, problems }` (CR-025: the last 7 days, the absence since the summary was last closed, the one before, and what needs the player now) | yes | | `backToWork` | `POST /api/fleet/wake` | — | `PlayerState` (awake) | yes; a manual decision that does nothing else: wakes the fleet (CR-024) | | `exportSave` | engine only (CR-014) | — | `{ code }`: `DEADHEAD1.` + base64url(gzip(save JSON)) | yes | | `importSave` | engine only (CR-014) | `code` (whitespace ignored) | `{ playerId, state }`; `invalid-save` if it isn't a good save | no | diff --git a/memory-bank/progress.md b/memory-bank/progress.md index 2f44dba..08f31fb 100644 --- a/memory-bank/progress.md +++ b/memory-bank/progress.md @@ -537,6 +537,6 @@ Spec: `memory-bank/change-requests/CR-025-short-away-summary.md` (received as "C - [x] **Step 25.1 — Engine: logbook entries and retention.** Schema `logEntrySchema` (`packages/schema/src/logbook.ts`) and save version 10: `logbook`, player `awaySince` (when the summary was last closed), `lastAbsence` (the absence it covered) and `readyGoalsLogged`, ship `shopOpen`. The engine logs each arrival (the flight, its Auto top-up, a forced rest, a discovery, a level-up with skill points), fuel the player, an Independent pilot or emergency fuel buys, a rest the player orders, every upgrade at its shop end (now a catch-up event for any open shop), and each goal the first time it's ready. `pruneSave` drops entries over 7 days old (`logbookRetentionRealDays`). Closing the summary sets `lastAbsence` and moves `awaySince` to now. The 9 → 10 migration turns resolved dispatches into flight, top-up, rest and discovery entries (level-ups can't be rebuilt), leaves an upgrade still in the shop open for catch-up, and starts the absence at the last dismissed summary. Tests: `packages/engine/test/logbook.test.ts` (each kind's fields; pruning at 7 days; catch-up in one go equals 2-minute steps over 6 hours with Independent pilots, pilot fuel and an upgrade; closing the summary); `packages/schema/test/save.test.ts` (9 → 10). - [x] **Step 25.2 — Sim: summary builder.** `buildAwaySummary` (`packages/sim/src/away.ts`, pure) takes the absence (`from`, `to`), the logbook entries, every pilot with where they are now, and the problems found from the state, and returns the duration, totals (net, deliveries, discoveries, loan repaid), at most 3 highlights in priority order (discovery, level-up, goal ready, scripted flavor, biggest job, problem) with the overflow count, at most 5 pilot lines by net with the rest summed and the idle count, and the direct list for 3 events or fewer. `flightNet` is payout − pilot share − fuel used − loan repayment. The sim's `LogbookEntry` and the save's `LogEntry` are checked to be the same type. Wording in content (`content.awayWording`, `{name}` placeholders). Tests: `packages/sim/test/away.test.ts` (50 pilots: 5 lines and an overflow line equal to the other 45; priority order and the cap with the right overflow; totals, with fuel bought not counted; the direct list for 2 events and not for 4; only the absence); `packages/engine/test/logbook.test.ts` (an entry's net equals the delivery summary's credits less its fuel); `packages/content/test/onboarding.test.ts` (the wording). -- [ ] Step 25.3 — Client: highlights pop-up +- [x] **Step 25.3 — Client: highlights pop-up.** New `getLogbook` command: entries, the absence (`awaySince` to now), the last closed one, and problems from the state (`awayProblems` in `packages/engine/src/game/away.ts`: a ship that can't reach anywhere on the fuel aboard, one that needs emergency fuel, a Manual ship whose stored board has no job it could take, credits below the floor with Independent pilots). The pop-up (`apps/web/src/components/AwaySummary.tsx`) still opens on unseen deliveries and finished upgrades, and builds its contents with `buildAwaySummary`: "While you were away · 9 h 40 m", the sleep banner, a totals row, up to 3 highlights and "+N more in the Logbook", up to 5 pilot lines ("Rosa · 6 jobs · +12,300 cr · Resting at Ceres", a Level up badge), "+N more pilots" and the idle line; a short absence lists its events instead ("Dusty Mule delivered Consumer Goods to Moon, +410 cr"). View logbook and Done both close it; View logbook goes to `/logbook?range=absence` (Step 25.4). The builder now drops what a short absence lists (discoveries, level-ups, the biggest job) before capping, and shows each pilot's highest level-up only. Tests: `apps/web/test/away-summary.test.tsx` (the title; the direct list; 50 pilots: totals, 3 highlights and the overflow, 5 lines plus the rest and the idle line; "+N more" only when needed; Done); `packages/engine/test/logbook.test.ts` (`getLogbook`'s windows; each problem); new e2e `apps/web/e2e/25-3-away-fits.e2e.ts` (8 Independent pilots at 375×667: the sheet doesn't scroll and Done is on screen). Tests about per-delivery detail now check the net in the pop-up (pilot share, the lender's cut) or wait for the Logbook screen (rest, the pilot logbook). Screenshots: `docs/screenshots/25-3-away-{phone,desktop}.png`. - [ ] Step 25.4 — Client: Logbook screen - [ ] Step 25.5 — Regression diff --git a/packages/engine/src/game/away.ts b/packages/engine/src/game/away.ts new file mode 100644 index 0000000..dc81239 --- /dev/null +++ b/packages/engine/src/game/away.ts @@ -0,0 +1,78 @@ +import { content } from "@deadhead/content"; +import type { SaveDocument } from "@deadhead/schema"; +import { + boardPeriodIndex, + canLandAt, + emergencyFuel, + isInShop, + permanentFailure, + shipStats, + tripFuel, + type AwayProblem, + type RealTime, +} from "@deadhead/sim"; +import { acceptedContractIds } from "./boards"; +import { discoveredIds, shipState } from "./state"; + +/** + * What needs the player now (decision 0.5.140's last highlight), from the + * state: idle crewed ships that can't fly anywhere on the fuel aboard (or need + * emergency fuel), Manual ships whose board this period has no job they could + * take, and credits below the pilots' spending floor. + */ +export function awayProblems(save: SaveDocument, now: RealTime): AwayProblem[] { + if (save.player.tutorialActive) return []; + const discovered = discoveredIds(save); + const accepted = acceptedContractIds(save); + const period = boardPeriodIndex(now, content.config); + const problems: AwayProblem[] = []; + for (const ship of save.ships) { + const pilot = save.pilots.find((p) => p.assignedShipId === ship.id); + if (ship.status !== "idle" || !ship.locationId || !pilot || isInShop(ship, now)) continue; + const at = { shipId: ship.id, locationId: ship.locationId }; + const state = shipState(ship); + if ( + emergencyFuel( + { ship: state, credits: save.company.credits, discoveredIds: discovered }, + content, + ) + ) { + problems.push({ kind: "emergency-fuel", ...at }); + continue; + } + const model = shipStats(state, content); + const here = content.location(ship.locationId)!; + const legs = content.locations + .filter((next) => next.id !== here.id && discovered.has(next.id) && canLandAt(model, next)) + .map((next) => tripFuel(model, here, next, content.config)); + if (legs.length > 0 && Math.min(...legs) > ship.fuelFu) { + problems.push({ kind: "low-fuel", ...at }); + continue; + } + // Only the player sends a Manual pilot; an Independent one waits or heads home. + if (pilot.mode !== "manual") continue; + const board = save.contractBoards.find( + (b) => b.kind === "location" && b.locationId === ship.locationId && b.periodIndex === period, + ); + if (!board) continue; + const member = { + modelId: ship.modelId, + skills: pilot.skills, + upgrades: ship.upgrades, + fuelFu: ship.fuelFu, + }; + const open = board.contracts.filter((c) => !accepted.has(c.id) && c.expiresAt > now); + if (!open.some((c) => permanentFailure(c, member, discovered, content) === null)) { + problems.push({ kind: "no-jobs", ...at }); + } + } + const { credits, npcSpendingFloor, dispatchOffice } = save.company; + if ( + dispatchOffice && + credits < npcSpendingFloor && + save.pilots.some((p) => p.mode === "independent") + ) { + problems.push({ kind: "below-floor", credits, floor: npcSpendingFloor }); + } + return problems; +} diff --git a/packages/engine/src/game/commands.ts b/packages/engine/src/game/commands.ts index eff1c63..de0711e 100644 --- a/packages/engine/src/game/commands.ts +++ b/packages/engine/src/game/commands.ts @@ -1,4 +1,5 @@ import { content } from "@deadhead/content"; +import { awayProblems } from "./away"; import { tutorialBoard, locationBoard } from "./boards"; import { acceptDeal, claimGoal, maxedUpgrades, renameCompany, repayLoan } from "./company"; import { dispatchContract, dispatchReposition, dispatchTutorial } from "./dispatch"; @@ -68,6 +69,13 @@ export function commandTable(): CommandTable { acknowledgeSummaries: ({ save, now }, input) => ({ acknowledged: acknowledge(save, input, now), }), + // The logbook and the absence (decisions 0.5.140, 0.5.141). + getLogbook: ({ save, now }) => ({ + entries: save.logbook, + absence: { from: save.player.awaySince, to: now }, + lastAbsence: save.player.lastAbsence, + problems: awayProblems(save, now), + }), // Wakes the fleet now (decision 0.5.138). The engine stamps every manual decision // after the command; stamping here too makes the returned state awake. backToWork: ({ save, now }) => { diff --git a/packages/engine/test/logbook.test.ts b/packages/engine/test/logbook.test.ts index 033d576..1c9ac02 100644 --- a/packages/engine/test/logbook.test.ts +++ b/packages/engine/test/logbook.test.ts @@ -260,3 +260,65 @@ describe("net earnings (Step 25.2, decision 0.5.142)", () => { expect(flightNet(entry!)).toBe(summary.credits - summary.fuelCost); }); }); + +describe("getLogbook and what needs the player (Step 25.3, decision 0.5.140)", () => { + it("returns the entries, this absence and the last one closed", async () => { + const test = newTestApp(); + const o = await owner(test); + const start = (await readSave(test.app)).player.awaySince; + const { dispatch } = await deliver(test, o.avatarId, o.shipId); + let book = await test.app.call("getLogbook", {}); + expect(book.entries.map((e) => e.id)).toContain(`${dispatch.id}:flight`); + expect(book.absence).toEqual({ from: start, to: test.clock.now }); + expect(book.lastAbsence).toBeNull(); + + const closed = test.clock.now; + await test.app.call("acknowledgeSummaries", { dispatchIds: [dispatch.id] }); + test.clock.now += HOUR; + book = await test.app.call("getLogbook", {}); + expect(book.lastAbsence).toEqual({ from: start, to: closed }); + expect(book.absence).toEqual({ from: closed, to: test.clock.now }); + }); + + it("finds a ship too low on fuel, one needing emergency fuel, and credits below the floor", async () => { + const test = newTestApp(); + const o = await owner(test); + await edit(test.app, (s) => { + s.ships.find((x) => x.id === o.shipId)!.fuelFu = 0; + }); + let { problems } = await test.app.call("getLogbook", {}); + // Earth sells fuel and the company can pay: a refuel away. + expect(problems).toEqual([{ kind: "low-fuel", shipId: o.shipId, locationId: "earth" }]); + + await setCredits(test.app, content.config.independentPilots.dispatchOfficePrice); + await test.app.call("buyDispatchOffice", {}); + await addShip(test.app, { id: "s2", modelId: "courier", name: "Wren" }); + await addPilot(test.app, { id: "p2", name: "Ada", assignedShipId: "s2" }); + await test.app.call("setPilotMode", { pilotId: "p2", mode: "independent" }); + await setCredits(test.app, 0); + ({ problems } = await test.app.call("getLogbook", {})); + expect(problems).toEqual([ + { kind: "emergency-fuel", shipId: o.shipId, locationId: "earth" }, + { + kind: "below-floor", + credits: 0, + floor: content.config.independentPilots.defaultSpendingFloor, + }, + ]); + }); + + it("finds a Manual ship whose board has no job it can take", async () => { + const test = newTestApp(); + const o = await owner(test); + const heavy = testContract({ massTonnes: 10_000, expiresAt: test.clock.now + HOUR }); + await putBoard(test.app, [heavy], test.clock.now); + expect((await test.app.call("getLogbook", {})).problems).toEqual([ + { kind: "no-jobs", shipId: o.shipId, locationId: "earth" }, + ]); + await putBoard(test.app, [testContract({ expiresAt: test.clock.now + HOUR })], test.clock.now); + await edit(test.app, (s) => { + s.contractBoards = s.contractBoards.slice(-1); + }); + expect((await test.app.call("getLogbook", {})).problems).toEqual([]); + }); +}); diff --git a/packages/schema/src/logbook.ts b/packages/schema/src/logbook.ts index 3ddb811..3ec951c 100644 --- a/packages/schema/src/logbook.ts +++ b/packages/schema/src/logbook.ts @@ -1,4 +1,4 @@ -import type { LogbookEntry } from "@deadhead/sim"; +import type { AwayProblem, LogbookEntry } from "@deadhead/sim"; import { z } from "zod"; import { idSchema, timeSchema } from "./entities"; @@ -70,7 +70,29 @@ export const logEntrySchema = z.discriminatedUnion("kind", [ export type LogEntry = z.infer; export type LogEntryKind = LogEntry["kind"]; +/** Something on the player's desk now (decision 0.5.140): a highlight from the state. */ +export const awayProblemSchema = z.discriminatedUnion("kind", [ + z.object({ kind: z.literal("no-jobs"), shipId: idSchema, locationId: idSchema }), + z.object({ kind: z.literal("low-fuel"), shipId: idSchema, locationId: idSchema }), + z.object({ kind: z.literal("emergency-fuel"), shipId: idSchema, locationId: idSchema }), + z.object({ kind: z.literal("below-floor"), credits, floor: credits }), +]); + +const windowSchema = z.object({ from: timeSchema, to: timeSchema }); + +/** `getLogbook`: the last 7 days, the absence now and the last one closed, and what needs the player. */ +export const logbookResponseSchema = z.object({ + entries: z.array(logEntrySchema), + /** Since "While you were away" was last closed, up to now. */ + absence: windowSchema, + /** The absence the last closed summary covered (the Logbook's "This absence"). */ + lastAbsence: windowSchema.nullable(), + problems: z.array(awayProblemSchema), +}); +export type LogbookResponse = z.infer; + // The saved entry is the summary builder's own: a change on either side fails the build. type Same = [A] extends [B] ? ([B] extends [A] ? true : false) : false; const _sameEntry: Same = true; -void _sameEntry; +const _sameProblem: Same, AwayProblem> = true; +void [_sameEntry, _sameProblem]; diff --git a/packages/schema/src/routes.ts b/packages/schema/src/routes.ts index ad7be7f..8b5e4b5 100644 --- a/packages/schema/src/routes.ts +++ b/packages/schema/src/routes.ts @@ -1,5 +1,6 @@ import type { z } from "zod"; import { playerStateSchema, serverTimeSchema } from "./entities"; +import { logbookResponseSchema } from "./logbook"; import { acknowledgeSummariesRequestSchema, acknowledgeSummariesResponseSchema, @@ -241,6 +242,14 @@ export const routes = { manualDecision: false, }, /** CR-022: the welcome cards are closed for this company (decision 0.5.131). */ + getLogbook: { + method: "GET", + path: "/api/logbook", + request: emptyRequestSchema, + response: logbookResponseSchema, + auth: true, + manualDecision: false, + }, backToWork: { method: "POST", path: "/api/fleet/wake", diff --git a/packages/schema/test/routes.test.ts b/packages/schema/test/routes.test.ts index 05fc428..d0b574d 100644 --- a/packages/schema/test/routes.test.ts +++ b/packages/schema/test/routes.test.ts @@ -13,6 +13,7 @@ describe("route catalog", () => { "getPlayerState", "getContractBoard", "getTutorialBoard", + "getLogbook", "createDispatch", "buyShip", "leaseBay", diff --git a/packages/sim/src/away.ts b/packages/sim/src/away.ts index 16149df..e940102 100644 --- a/packages/sim/src/away.ts +++ b/packages/sim/src/away.ts @@ -122,6 +122,7 @@ export const MAX_PILOT_LINES = 5; export const SHORT_ABSENCE_EVENTS = 3; const EVENT_KINDS = new Set(["flight", "discovery", "level-up", "upgrade"]); +const LISTED_DIRECTLY = new Set(["discovery", "level-up", "best-job"]); /** * "While you were away" from the logbook (decision 0.5.140): totals, at most 3 @@ -139,6 +140,14 @@ export function buildAwaySummary(input: AwayInput): AwaySummary { const deliveries = flights.filter((f) => !f.deadhead); const discoveries = of("discovery"); const levelUps = of("level-up"); + // One level-up highlight per pilot: the highest level reached. + const topLevels = levelUps.filter( + (l) => + !levelUps.some( + (m) => + m.pilotId === l.pilotId && (m.level > l.level || (m.level === l.level && m.at > l.at)), + ), + ); const totals = { net: flights.reduce((sum, f) => sum + flightNet(f), 0), @@ -158,7 +167,7 @@ export function buildAwaySummary(input: AwayInput): AwaySummary { locationId: d.locationId, pilotId: d.pilotId, })), - ...levelUps.map((l) => ({ + ...topLevels.map((l) => ({ kind: "level-up" as const, pilotId: l.pilotId, level: l.level, @@ -201,17 +210,20 @@ export function buildAwaySummary(input: AwayInput): AwaySummary { const rest = lines.slice(MAX_PILOT_LINES); const events = entries.filter((e) => EVENT_KINDS.has(e.kind)); + const direct = events.length <= SHORT_ABSENCE_EVENTS ? events : null; + // A short absence lists discoveries, level-ups and jobs itself: not again as highlights. + const shown = direct ? highlights.filter((h) => !LISTED_DIRECTLY.has(h.kind)) : highlights; return { durationMs: Math.max(0, input.to - input.from), totals, - highlights: highlights.slice(0, MAX_HIGHLIGHTS), - moreHighlights: Math.max(0, highlights.length - MAX_HIGHLIGHTS), + highlights: shown.slice(0, MAX_HIGHLIGHTS), + moreHighlights: Math.max(0, shown.length - MAX_HIGHLIGHTS), pilots: lines.slice(0, MAX_PILOT_LINES), morePilots: rest.length > 0 ? { count: rest.length, net: rest.reduce((sum, line) => sum + line.net, 0) } : null, idlePilots: input.pilots.length - lines.length, - direct: events.length <= SHORT_ABSENCE_EVENTS ? events : null, + direct, }; } diff --git a/packages/sim/test/away.test.ts b/packages/sim/test/away.test.ts index cc8ae08..e1896e6 100644 --- a/packages/sim/test/away.test.ts +++ b/packages/sim/test/away.test.ts @@ -82,7 +82,10 @@ describe("the away summary builder (Step 25.2, decision 0.5.140)", () => { expect(summary.highlights.map((h) => h.kind)).toEqual(["discovery", "level-up", "goal-ready"]); expect(summary.moreHighlights).toBe(3); - const fewer = summarise(all.slice(0, 2), { problems: [problem] }); + // Four flights: not a short absence, so every highlight counts. + const fewer = summarise([...all.slice(0, 2), flight("p1", 10), flight("p1", 20)], { + problems: [problem], + }); expect(fewer.highlights).toEqual([ { kind: "scripted", scriptedId: "unmarked-crates" }, { @@ -135,6 +138,13 @@ describe("the away summary builder (Step 25.2, decision 0.5.140)", () => { other({ kind: "refuel", locationId: "earth", boughtFu: 1, cost: 5, source: "bought" }), ]; expect(summarise(quiet).direct!.map((e) => e.kind)).toEqual(["flight"]); + // What the list shows isn't a highlight too, and isn't counted as "more". + const listed = summarise( + [flight("p0", 500), other({ kind: "discovery", locationId: "mars" })], + { problems: [{ kind: "below-floor", credits: 10, floor: 500 }] }, + ); + expect(listed.highlights.map((h) => h.kind)).toEqual(["problem"]); + expect(listed.moreHighlights).toBe(0); }); it("covers only the absence, and says how long it was", () => { @@ -145,3 +155,18 @@ describe("the away summary builder (Step 25.2, decision 0.5.140)", () => { expect(summary.durationMs).toBe(10 * HOUR); }); }); + +describe("level-ups in the highlights", () => { + it("shows one per pilot, at the highest level reached", () => { + const summary = summarise([ + other({ kind: "level-up", pilotId: "p0", level: 2, skillPoints: 2 }), + other({ kind: "level-up", pilotId: "p0", level: 3, skillPoints: 3 }), + other({ kind: "level-up", pilotId: "p1", level: 1, skillPoints: 1 }), + flight("p2", 0, { goodId: null, deadhead: true }), + ]); + expect(summary.highlights).toEqual([ + { kind: "level-up", pilotId: "p0", level: 3, skillPoints: 3 }, + { kind: "level-up", pilotId: "p1", level: 1, skillPoints: 1 }, + ]); + }); +});