# Change Request CR-025 — Short "While You Were Away" Summary > **Numbering note (added when recorded):** this request arrived titled "CR-023 — Short 'While You Were Away' Summary" for "Phase 23". CR-023 (Shop Time Counts as Rest) and CR-024 (Fleet Sleep Mode), and Phases 23 and 24, already existed, so it is stored as **CR-025** and done as **Phase 25**: every "23.n" below means **25.n**. Its references map to this repo as: "Phase 13 and CR-001 through CR-022" = Phase 13 and **CR-001 to CR-024**; "CR-001 faster start" (scripted contract flavor messages) is the same number; "CR-011 local-first" = **CR-014** (the engine, the save, retention on save); "CR-014 leg fuel cost" = **CR-015** (fuel tanks: a leg's fuel at the tank's average price, decision 0.5.98); "CR-019 independent pilots" = **CR-021** (the per-pilot logbook, the NPC spending floor); "CR-022 fleet sleep" = **CR-024**. Plan 9.2 is the same step. Its new decisions CR-023.D1–D3 are recorded as **0.5.140 Highlights pop-up**, **0.5.141 Logbook screen** and **0.5.142 Net earnings**. > > **On recording:** "HQ" is the Bridge (the dashboard), as in CR-021 and CR-024. **Project:** Deadhead: Space Freight Tycoon **Applies to:** a build with Phase 13 and CR-001 through CR-022 complete **Do this:** as **Phase 23** **Related docs:** `change-request-faster-start.md` (CR-001), `change-request-local-first.md` (CR-011), `change-request-independent-pilots.md` (CR-019), `change-request-fleet-sleep.md` (CR-022), `DECISIONS.md` This change request is written for the local-first engine (CR-011). --- ## 1. Why The "while you were away" pop-up lists every delivery, and CR-019 added a full per-pilot logbook to it. With a handful of Independent pilots running for a day, it becomes a long scroll. The pop-up should show **highlights only**: company totals, anything that needs the player, and one line per pilot. Full detail moves to a separate **Logbook** screen. ## 2. The pop-up Fits on one phone screen without scrolling, however many pilots there are. ### Layout, top to bottom 1. **Header:** "While you were away · 9 h 40 m" 2. **Sleep banner** (CR-022), if the fleet went quiet, with **Back to work**. 3. **Company totals**, one row of figures: net earned, deliveries, discoveries (if any), loan repaid (if any). 4. **Highlights**, at most 3, in this priority order: 1. New location discovered 2. Pilot leveled up ("Rosa reached level 4 · 1 skill point") 3. Goal ready to claim 4. Scripted contract flavor message (CR-001) 5. Best single delivery ("Biggest job: Helium-3 Canisters to Earth, 8,420 cr, Rosa") 6. Problem needing attention: a ship idle with no reachable jobs, fuel too low to fly, emergency fuel available, or credits below the NPC spending floor (CR-019) If there are more than 3, show the top 3 and "+2 more in the Logbook". 5. **Pilots**, one line each: name, deliveries, net profit, and where they are now ("Rosa · 6 jobs · +12,300 cr · Resting at Ceres"). A level-up adds a small badge. - Only pilots with activity during the absence are listed; others are summed in one line ("3 pilots had nothing to do"). - Sorted by net profit, highest first. - At most **5 pilot lines**; the rest collapse into "+7 more pilots: +18,900 cr". 6. **Buttons:** **View logbook** and **Done**. ### Short absences If the absence produced **3 events or fewer** in total (deliveries, discoveries, level-ups), show those events directly instead of the totals and pilot sections, so a quick check-in still reads naturally ("Courier delivered Mail & Parcels to the Moon, +410 cr"). ### What counts as "net" Payout minus pilot share, fuel used (CR-014 leg fuel cost), and loan repayment, matching the delivery summaries. Fuel bought counts when it's spent, not when it's bought. ## 3. The Logbook screen - A new screen, reached from **View logbook** and from HQ. - Holds the full detail CR-019 put in the pop-up: per pilot, every job (good, route, payout, pilot share, fuel), deadheads, refuels, rests, upgrades finished, XP gained. - Filter by pilot and by time range ("This absence", "Last 24 h", "Last 7 days"). - Keeps entries for 7 days, pruned on save (CR-011 retention), so the save stays small. ## 4. Rules for this change - All rules in `implementation-plan.md` §0.1 apply: steps in order, one commit per step, each step's test must pass. - Building the summary (totals, highlights, pilot lines, collapse) is a pure function of the logbook entries for the absence, so it can be tested without UI. - Highlight wording lives in content. - Save migration: existing summary data is converted to logbook entries where possible; otherwise it's dropped. - Update `architecture.md` and `progress.md` as you go. Stop for the user's review at the end of Phase 23. ## 5. Decisions Record these in `DECISIONS.md` and `implementation-plan.md` §0.5, using the next free numbers (labeled CR-023.D1–D3 here; note the mapping). - **CR-023.D1 Highlights pop-up.** Per §2: totals, at most 3 highlights, at most 5 pilot lines, one screen, with a direct list for absences of 3 events or fewer. - **CR-023.D2 Logbook screen.** Full detail per §3, kept for 7 days. - **CR-023.D3 Net earnings.** Payout minus pilot share, fuel used, and loan repayment. ## 6. Steps — Phase 23 ### Step 23.1 — Engine: logbook entries and retention - Store every relevant event (delivery, deadhead, refuel, rest, upgrade finished, discovery, level-up, goal ready) as a logbook entry with pilot, ship, time, and amounts. Prune entries older than 7 days on save. - **Test:** Each event type creates one entry with the right fields. Entries older than 7 days are pruned; newer ones remain. Catch-up and live play produce the same entries. ### Step 23.2 — Sim: summary builder - **Amended by CR-026:** Events are logbook entries; good ones and any that hurt a hull are highlights just below level-ups, and a short absence lists its trips' events (not counted towards the 3). - **Amended by CR-027:** Service is logged (automatic bookings, starts, finishes, waiting for funds), and booked service waiting for funds or out of reach is a highlight. - A pure function that turns the entries for an absence into: duration, totals, up to 3 highlights in priority order with an overflow count, up to 5 pilot lines sorted by net profit with an overflow line, the idle-pilots line, and the "short absence" direct list when there are 3 events or fewer. - **Test:** With 50 pilots' worth of entries, the result has exactly 5 pilot lines and an overflow line whose totals equal the rest. Highlights follow the priority order and cap at 3 with the right overflow count. Totals equal the sum of entries. With 2 events, the result is the direct list. Net matches the delivery-summary calculation. ### Step 23.3 — Client: highlights pop-up - Replace the current pop-up with the §2 layout. Keep the CR-022 sleep banner and button. - **Test:** Component tests: with 50 active pilots, the pop-up fits in a 375×667 viewport without scrolling; each section renders from a seeded summary; "+N more" lines appear only when needed; a short absence shows the direct list; Done dismisses it; View logbook opens the Logbook filtered to this absence. ### Step 23.4 — Client: Logbook screen - Add the Logbook screen per §3, with pilot and time-range filters, reachable from the pop-up and from HQ. - **Test:** Component tests: entries render per pilot with the CR-019 detail; filters narrow the list correctly; the "This absence" filter matches the pop-up's totals. ### Step 23.5 — Regression - Run the full suite. - **Test:** CI is green. Manual check: with several Independent pilots, leave the game for a few hours, reopen on a phone, and confirm the pop-up fits on one screen and the Logbook holds the full detail. ## 7. Amendments | Where | Change | | -------- | --------------------------------------------------------------------------------------- | | Plan 0.5 | Add CR-023.D1–D3. | | Plan 9.2 | "While you were away" becomes the highlights pop-up (23.3). | | CR-019 | The per-pilot logbook moves from the pop-up to the Logbook screen (23.4). | | CR-022 | Sleep banner stays at the top of the pop-up. | ## 8. Out of scope Charts or graphs of earnings, exporting the logbook, per-pilot notification digests, and anything else in `implementation-plan.md` §0.3.