From b061613cd15292da7b6e2c2c08b61a255acaf9cb Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Tue, 1 Sep 2026 14:46:00 +0200 Subject: [PATCH 001/110] docs(crew): add Cmdr. Nova --- crew.md | 1 + 1 file changed, 1 insertion(+) diff --git a/crew.md b/crew.md index 21d4cb4..da24343 100644 --- a/crew.md +++ b/crew.md @@ -5,3 +5,4 @@ | Captain Vega | Captain | | Dr. Honk | Ship's doctor | | Lt. Byte | Chief engineer | +| Cmdr. Nova | Pilot | From a6b9b0eb9165b6a19ec0a1e5f1fd9c10c9c86500 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Tue, 1 Sep 2026 19:35:00 +0200 Subject: [PATCH 002/110] chore(safety): escape pod batteries charged --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 2e27487..6e9f344 100644 --- a/maintenance.md +++ b/maintenance.md @@ -1,3 +1,4 @@ # Maintenance log Newest entries at the bottom. +- 2026-09-01: Escape pod batteries charged. From 9c8aa1c2c9afe4cf93d0b4582d9387a7371c4d22 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Wed, 2 Sep 2026 04:33:00 +0200 Subject: [PATCH 003/110] chore(comms): antenna realigned --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 6e9f344..a90c4e2 100644 --- a/maintenance.md +++ b/maintenance.md @@ -2,3 +2,4 @@ Newest entries at the bottom. - 2026-09-01: Escape pod batteries charged. +- 2026-09-02: Antenna realigned. From b07115022a335c853fd0135475deecdf5ec61f82 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Wed, 2 Sep 2026 19:28:00 +0200 Subject: [PATCH 004/110] chore(safety): fire extinguishers checked --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index a90c4e2..120a751 100644 --- a/maintenance.md +++ b/maintenance.md @@ -3,3 +3,4 @@ Newest entries at the bottom. - 2026-09-01: Escape pod batteries charged. - 2026-09-02: Antenna realigned. +- 2026-09-02: Fire extinguishers checked. From 4e43c5e0608f6a3bd480cb89ac15504375a0847e Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Thu, 3 Sep 2026 09:47:00 +0200 Subject: [PATCH 005/110] feat(nav): helpful error for unknown destinations --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index ca03c84..eff3ebd 100644 --- a/nav.py +++ b/nav.py @@ -56,6 +56,9 @@ def plan(destination): def main(): destination = sys.argv[1] + if destination not in ROUTES: + known = ", ".join(sorted(ROUTES)) + sys.exit(f"Unknown destination: {destination} (known: {known})") route, total, days, fuel = plan(destination) print("Route: " + " -> ".join(NAMES[w] for w in route)) print(f"Distance: {total:.1f} million km") From f1348d1987d6ef4864b90dfabcd222c99c6eb349 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Fri, 4 Sep 2026 00:02:00 +0200 Subject: [PATCH 006/110] chore(nav): gyroscopes recalibrated --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 120a751..3245af2 100644 --- a/maintenance.md +++ b/maintenance.md @@ -4,3 +4,4 @@ Newest entries at the bottom. - 2026-09-01: Escape pod batteries charged. - 2026-09-02: Antenna realigned. - 2026-09-02: Fire extinguishers checked. +- 2026-09-04: Gyroscopes recalibrated. From 9640688cc7d3ca05aa6055c01ed8d9447a2a5eb3 Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Fri, 4 Sep 2026 06:40:00 +0200 Subject: [PATCH 007/110] chore(safety): escape pod batteries charged --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 3245af2..eafcc8e 100644 --- a/maintenance.md +++ b/maintenance.md @@ -5,3 +5,4 @@ Newest entries at the bottom. - 2026-09-02: Antenna realigned. - 2026-09-02: Fire extinguishers checked. - 2026-09-04: Gyroscopes recalibrated. +- 2026-09-04: Escape pod batteries charged. From 4e7cb1c34599e730a872802fd11f03431c635a45 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Fri, 4 Sep 2026 18:04:00 +0200 Subject: [PATCH 008/110] chore(life-support): oxygen scrubbers replaced --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index eafcc8e..c0e8362 100644 --- a/maintenance.md +++ b/maintenance.md @@ -6,3 +6,4 @@ Newest entries at the bottom. - 2026-09-02: Fire extinguishers checked. - 2026-09-04: Gyroscopes recalibrated. - 2026-09-04: Escape pod batteries charged. +- 2026-09-04: Oxygen scrubbers replaced. From f85a845685a84176e1332d9088edbef934e69755 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Sat, 5 Sep 2026 04:01:00 +0200 Subject: [PATCH 009/110] chore(life-support): water recycling filters replaced --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index c0e8362..b0f840b 100644 --- a/maintenance.md +++ b/maintenance.md @@ -7,3 +7,4 @@ Newest entries at the bottom. - 2026-09-04: Gyroscopes recalibrated. - 2026-09-04: Escape pod batteries charged. - 2026-09-04: Oxygen scrubbers replaced. +- 2026-09-05: Water recycling filters replaced. From 620456dca00eae3011748f3649ea0322663bf33e Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Sat, 5 Sep 2026 08:59:00 +0200 Subject: [PATCH 010/110] chore(comms): antenna realigned --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index b0f840b..921c8cd 100644 --- a/maintenance.md +++ b/maintenance.md @@ -8,3 +8,4 @@ Newest entries at the bottom. - 2026-09-04: Escape pod batteries charged. - 2026-09-04: Oxygen scrubbers replaced. - 2026-09-05: Water recycling filters replaced. +- 2026-09-05: Antenna realigned. From ed677a320b2e857dcf220f15fc5fb0f2d56314f5 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Sat, 5 Sep 2026 19:37:00 +0200 Subject: [PATCH 011/110] feat(routes): add Venus --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index eff3ebd..55cf4ed 100644 --- a/nav.py +++ b/nav.py @@ -11,12 +11,14 @@ DISTANCES = { ("earth", "moon"): 0.4, ("earth", "gateway"): 0.4, ("gateway", "mars"): 225.0, + ("gateway", "venus"): 41.0, } # Every route starts at Earth. ROUTES = { "moon": ["earth", "moon"], "mars": ["earth", "gateway", "mars"], + "venus": ["earth", "gateway", "venus"], } NAMES = { @@ -24,6 +26,7 @@ NAMES = { "moon": "Moon", "gateway": "Lunar Gateway", "mars": "Mars", + "venus": "Venus", } CRUISE_SPEED = 0.87 # million km per day From 41e657b6aae9f7feee1475981ef00971d82c0a97 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Sun, 6 Sep 2026 07:44:00 +0200 Subject: [PATCH 012/110] docs(nav): add docstrings --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index 55cf4ed..4d9dae3 100644 --- a/nav.py +++ b/nav.py @@ -35,16 +35,19 @@ LAUNCH_FUEL = 380.0 # tonnes of fuel to escape Earth's gravity def distance(a, b): + """Return the distance between two neighboring waypoints.""" if (a, b) in DISTANCES: return DISTANCES[(a, b)] return DISTANCES[(b, a)] def legs(route): + """Return the legs (pairs of consecutive waypoints) of a route.""" return [(route[i], route[i + 1]) for i in range(len(route) - 1)] def plan(destination): + """Return route, distance, travel time (days) and fuel (t).""" route = ROUTES[destination] total = 0.0 fuel = 0.0 From 659a1194216a0be891641418fff4627652fdabb2 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Sun, 6 Sep 2026 15:58:00 +0200 Subject: [PATCH 013/110] chore(engines): fuel lines checked for leaks --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 921c8cd..b43c0a3 100644 --- a/maintenance.md +++ b/maintenance.md @@ -9,3 +9,4 @@ Newest entries at the bottom. - 2026-09-04: Oxygen scrubbers replaced. - 2026-09-05: Water recycling filters replaced. - 2026-09-05: Antenna realigned. +- 2026-09-06: Fuel lines checked for leaks. From a836d9806f70460cd4e1ae7ecd5a4c5b441022ea Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Sun, 6 Sep 2026 23:52:00 +0200 Subject: [PATCH 014/110] docs(crew): add Ensign Pixel --- crew.md | 1 + 1 file changed, 1 insertion(+) diff --git a/crew.md b/crew.md index da24343..4e8568b 100644 --- a/crew.md +++ b/crew.md @@ -6,3 +6,4 @@ | Dr. Honk | Ship's doctor | | Lt. Byte | Chief engineer | | Cmdr. Nova | Pilot | +| Ensign Pixel | Navigator (trainee) | From d3628a4ab6fb3781818792779b2c2e840cdb0359 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Mon, 7 Sep 2026 05:36:00 +0200 Subject: [PATCH 015/110] chore(power): solar panels cleaned --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index b43c0a3..c391b5c 100644 --- a/maintenance.md +++ b/maintenance.md @@ -10,3 +10,4 @@ Newest entries at the bottom. - 2026-09-05: Water recycling filters replaced. - 2026-09-05: Antenna realigned. - 2026-09-06: Fuel lines checked for leaks. +- 2026-09-07: Solar panels cleaned. From 2c9ed3bdfe2b549cd76fd2f9ead181dcbc35a175 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Mon, 7 Sep 2026 14:19:00 +0200 Subject: [PATCH 016/110] chore(coffeed): coffee machine descaled --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index c391b5c..c05afae 100644 --- a/maintenance.md +++ b/maintenance.md @@ -11,3 +11,4 @@ Newest entries at the bottom. - 2026-09-05: Antenna realigned. - 2026-09-06: Fuel lines checked for leaks. - 2026-09-07: Solar panels cleaned. +- 2026-09-07: Coffee machine descaled. From ab94a75adf56122a91722fa1ae96020eb9c42344 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Mon, 7 Sep 2026 20:48:00 +0200 Subject: [PATCH 017/110] chore(hull): hull inspection, no leaks --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index c05afae..a2978ae 100644 --- a/maintenance.md +++ b/maintenance.md @@ -12,3 +12,4 @@ Newest entries at the bottom. - 2026-09-06: Fuel lines checked for leaks. - 2026-09-07: Solar panels cleaned. - 2026-09-07: Coffee machine descaled. +- 2026-09-07: Hull inspection, no leaks. From f486acc17635e33a7d69805b0c3fb42b9f0fd94e Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Tue, 8 Sep 2026 11:10:00 +0200 Subject: [PATCH 018/110] docs(readme): mention that all routes start at Earth --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d13be4f..26f317d 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,5 @@ $ python3 nav.py mars ``` Requires Python 3.9 or newer; no further dependencies. + +All routes start at Earth. Getting back is your own problem. From b9d83cac68c33b92a87ff8630d31d7acfdfa5cd5 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Tue, 8 Sep 2026 17:14:00 +0200 Subject: [PATCH 019/110] feat(routes): add Phobos --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index 4d9dae3..35ff6e0 100644 --- a/nav.py +++ b/nav.py @@ -12,6 +12,7 @@ DISTANCES = { ("earth", "gateway"): 0.4, ("gateway", "mars"): 225.0, ("gateway", "venus"): 41.0, + ("mars", "phobos"): 0.01, } # Every route starts at Earth. @@ -19,6 +20,7 @@ ROUTES = { "moon": ["earth", "moon"], "mars": ["earth", "gateway", "mars"], "venus": ["earth", "gateway", "venus"], + "phobos": ["earth", "gateway", "mars", "phobos"], } NAMES = { @@ -27,6 +29,7 @@ NAMES = { "gateway": "Lunar Gateway", "mars": "Mars", "venus": "Venus", + "phobos": "Phobos", } CRUISE_SPEED = 0.87 # million km per day From 1f9f295c480ebc9f68c69ae34af1979785587494 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Tue, 8 Sep 2026 23:26:00 +0200 Subject: [PATCH 020/110] feat(nav): add --list option --- nav.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/nav.py b/nav.py index 35ff6e0..ed6e4c9 100644 --- a/nav.py +++ b/nav.py @@ -2,6 +2,7 @@ """Navigation computer of the SS Probably Fine. Usage: python3 nav.py DESTINATION + python3 nav.py --list """ import sys @@ -64,6 +65,10 @@ def plan(destination): def main(): + if sys.argv[1] == "--list": + for key in sorted(ROUTES): + print(f"{key:12} {NAMES[key]}") + return destination = sys.argv[1] if destination not in ROUTES: known = ", ".join(sorted(ROUTES)) From b329abe78ece7c79bdf9e3a0641bcbc01a442170 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Wed, 9 Sep 2026 11:21:00 +0200 Subject: [PATCH 021/110] chore(comms): antenna realigned --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index a2978ae..8440b01 100644 --- a/maintenance.md +++ b/maintenance.md @@ -13,3 +13,4 @@ Newest entries at the bottom. - 2026-09-07: Solar panels cleaned. - 2026-09-07: Coffee machine descaled. - 2026-09-07: Hull inspection, no leaks. +- 2026-09-09: Antenna realigned. From f4fed79b61632ee1006911059abc1e2a07ede528 Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Wed, 9 Sep 2026 18:54:00 +0200 Subject: [PATCH 022/110] chore(power): solar panels cleaned --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 8440b01..cfb00de 100644 --- a/maintenance.md +++ b/maintenance.md @@ -14,3 +14,4 @@ Newest entries at the bottom. - 2026-09-07: Coffee machine descaled. - 2026-09-07: Hull inspection, no leaks. - 2026-09-09: Antenna realigned. +- 2026-09-09: Solar panels cleaned. From 4c5381065b93cff332a5374375c5f796659f23c0 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Thu, 10 Sep 2026 06:05:00 +0200 Subject: [PATCH 023/110] chore(safety): escape pod batteries charged --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index cfb00de..d988dfb 100644 --- a/maintenance.md +++ b/maintenance.md @@ -15,3 +15,4 @@ Newest entries at the bottom. - 2026-09-07: Hull inspection, no leaks. - 2026-09-09: Antenna realigned. - 2026-09-09: Solar panels cleaned. +- 2026-09-10: Escape pod batteries charged. From 39b347cdf9254fc01111d580919c4731aedb9f2e Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Thu, 10 Sep 2026 16:55:00 +0200 Subject: [PATCH 024/110] chore(morale): debugging duck accounted for --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index d988dfb..a3dca6f 100644 --- a/maintenance.md +++ b/maintenance.md @@ -16,3 +16,4 @@ Newest entries at the bottom. - 2026-09-09: Antenna realigned. - 2026-09-09: Solar panels cleaned. - 2026-09-10: Escape pod batteries charged. +- 2026-09-10: Debugging duck accounted for. From feca2ffc745d7192ba7ffed20c6d5b8aa5118aab Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Fri, 11 Sep 2026 03:23:00 +0200 Subject: [PATCH 025/110] docs(readme): add a section on contributing --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 26f317d..3a7d769 100644 --- a/README.md +++ b/README.md @@ -10,3 +10,8 @@ $ python3 nav.py mars Requires Python 3.9 or newer; no further dependencies. All routes start at Earth. Getting back is your own problem. + +## Contributing + +Use Conventional Commits. Do not push broken code. +(Yes, Dr. Honk, this means you.) From 50cfe0552a26c6964a45a3526f4ecebfd755f7e9 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Fri, 11 Sep 2026 09:38:00 +0200 Subject: [PATCH 026/110] chore(comms): comms backup tested --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index a3dca6f..6e9c17f 100644 --- a/maintenance.md +++ b/maintenance.md @@ -17,3 +17,4 @@ Newest entries at the bottom. - 2026-09-09: Solar panels cleaned. - 2026-09-10: Escape pod batteries charged. - 2026-09-10: Debugging duck accounted for. +- 2026-09-11: Comms backup tested. From 6fac0ba2b56f4250ef02a01e1c0a828d3f25033b Mon Sep 17 00:00:00 2001 From: "Dr. Honk" Date: Fri, 11 Sep 2026 23:31:00 +0200 Subject: [PATCH 027/110] docs(crew): the debugging duck is crew, too --- crew.md | 1 + 1 file changed, 1 insertion(+) diff --git a/crew.md b/crew.md index 4e8568b..84e15bf 100644 --- a/crew.md +++ b/crew.md @@ -7,3 +7,4 @@ | Lt. Byte | Chief engineer | | Cmdr. Nova | Pilot | | Ensign Pixel | Navigator (trainee) | +| The debugging duck | Morale officer | From 968480e71b9048b7c3f4c1bf51e5d87201b88cbf Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Sat, 12 Sep 2026 13:00:00 +0200 Subject: [PATCH 028/110] wip: case-insensitive destinations --- nav.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nav.py b/nav.py index ed6e4c9..0d0ba49 100644 --- a/nav.py +++ b/nav.py @@ -69,7 +69,7 @@ def main(): for key in sorted(ROUTES): print(f"{key:12} {NAMES[key]}") return - destination = sys.argv[1] + destination = sys.argv[1].lower( if destination not in ROUTES: known = ", ".join(sorted(ROUTES)) sys.exit(f"Unknown destination: {destination} (known: {known})") From 901c9caf50ac3af377c88e533608517f6f9ab836 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Sat, 12 Sep 2026 22:21:00 +0200 Subject: [PATCH 029/110] feat(nav): accept destination names in any case --- nav.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nav.py b/nav.py index 0d0ba49..87e798f 100644 --- a/nav.py +++ b/nav.py @@ -69,7 +69,7 @@ def main(): for key in sorted(ROUTES): print(f"{key:12} {NAMES[key]}") return - destination = sys.argv[1].lower( + destination = sys.argv[1].lower() if destination not in ROUTES: known = ", ".join(sorted(ROUTES)) sys.exit(f"Unknown destination: {destination} (known: {known})") From a313da141aeca505d515ada4a344923660a3499b Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Sun, 13 Sep 2026 06:04:00 +0200 Subject: [PATCH 030/110] docs(crew): promote Dr. Honk --- crew.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crew.md b/crew.md index 84e15bf..2443a62 100644 --- a/crew.md +++ b/crew.md @@ -3,7 +3,7 @@ | Name | Role | |------|------| | Captain Vega | Captain | -| Dr. Honk | Ship's doctor | +| Dr. Honk | Chief medical officer | | Lt. Byte | Chief engineer | | Cmdr. Nova | Pilot | | Ensign Pixel | Navigator (trainee) | From 9ba9e665de8986d5b0d9b701dbd922261a0e41d8 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Sun, 13 Sep 2026 14:31:00 +0200 Subject: [PATCH 031/110] docs(readme): add maintenance section --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 3a7d769..c3fa2e2 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,7 @@ All routes start at Earth. Getting back is your own problem. Use Conventional Commits. Do not push broken code. (Yes, Dr. Honk, this means you.) + +## Maintenance + +All maintenance is recorded in `maintenance.md`. From 5003acdb3d0d5fba25fb5bf0888e29ba95356e4a Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Mon, 14 Sep 2026 02:21:00 +0200 Subject: [PATCH 032/110] chore(life-support): water recycling filters replaced --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 6e9c17f..455efd1 100644 --- a/maintenance.md +++ b/maintenance.md @@ -18,3 +18,4 @@ Newest entries at the bottom. - 2026-09-10: Escape pod batteries charged. - 2026-09-10: Debugging duck accounted for. - 2026-09-11: Comms backup tested. +- 2026-09-14: Water recycling filters replaced. From 4552a8a540430a22f609c75adf944fe895b9ce87 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Mon, 14 Sep 2026 16:58:00 +0200 Subject: [PATCH 033/110] docs(readme): fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c3fa2e2..8cf0545 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Navigation computer of the SS Probably Fine Computes flight plans for the *SS Probably Fine*: route, distance, -travel time, and the amout of fuel required. +travel time, and the amount of fuel required. ```console $ python3 nav.py mars From 0758ca47c7364426f54e2bebc39bb02c487a131b Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Tue, 15 Sep 2026 03:24:00 +0200 Subject: [PATCH 034/110] docs(crew): add coffeed --- crew.md | 1 + 1 file changed, 1 insertion(+) diff --git a/crew.md b/crew.md index 2443a62..ce60458 100644 --- a/crew.md +++ b/crew.md @@ -8,3 +8,4 @@ | Cmdr. Nova | Pilot | | Ensign Pixel | Navigator (trainee) | | The debugging duck | Morale officer | +| `coffeed` | Beverage officer | From d13b30ee504aa6c549e6add3422778c7b4d3e0c2 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Tue, 15 Sep 2026 12:08:00 +0200 Subject: [PATCH 035/110] chore(airlock): airlock seals checked --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 455efd1..dcf669b 100644 --- a/maintenance.md +++ b/maintenance.md @@ -19,3 +19,4 @@ Newest entries at the bottom. - 2026-09-10: Debugging duck accounted for. - 2026-09-11: Comms backup tested. - 2026-09-14: Water recycling filters replaced. +- 2026-09-15: Airlock seals checked. From 367b42ba6b78c67f484398a6d840448ab055816c Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Tue, 15 Sep 2026 18:10:00 +0200 Subject: [PATCH 036/110] chore(life-support): water recycling filters replaced --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index dcf669b..9c0aa7f 100644 --- a/maintenance.md +++ b/maintenance.md @@ -20,3 +20,4 @@ Newest entries at the bottom. - 2026-09-11: Comms backup tested. - 2026-09-14: Water recycling filters replaced. - 2026-09-15: Airlock seals checked. +- 2026-09-15: Water recycling filters replaced. From 0e3f7f5dd434d7c90b0956a626e70aaaae7d1b2d Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Wed, 16 Sep 2026 01:50:00 +0200 Subject: [PATCH 037/110] chore(coffeed): coffee machine descaled --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 9c0aa7f..dc69e5f 100644 --- a/maintenance.md +++ b/maintenance.md @@ -21,3 +21,4 @@ Newest entries at the bottom. - 2026-09-14: Water recycling filters replaced. - 2026-09-15: Airlock seals checked. - 2026-09-15: Water recycling filters replaced. +- 2026-09-16: Coffee machine descaled. From 3da48acf339b014cd410d19a08e8e71fd7860e14 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Wed, 16 Sep 2026 11:30:00 +0200 Subject: [PATCH 038/110] chore(comms): antenna realigned --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index dc69e5f..90725c5 100644 --- a/maintenance.md +++ b/maintenance.md @@ -22,3 +22,4 @@ Newest entries at the bottom. - 2026-09-15: Airlock seals checked. - 2026-09-15: Water recycling filters replaced. - 2026-09-16: Coffee machine descaled. +- 2026-09-16: Antenna realigned. From 803edd6f86bceaba7fe65b179d2886c51af364dc Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Wed, 16 Sep 2026 23:51:00 +0200 Subject: [PATCH 039/110] docs(crew): Ensign Pixel is a navigator now --- crew.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crew.md b/crew.md index ce60458..5a514a0 100644 --- a/crew.md +++ b/crew.md @@ -6,6 +6,6 @@ | Dr. Honk | Chief medical officer | | Lt. Byte | Chief engineer | | Cmdr. Nova | Pilot | -| Ensign Pixel | Navigator (trainee) | +| Ensign Pixel | Navigator | | The debugging duck | Morale officer | | `coffeed` | Beverage officer | From 515e0553755d73e503d84038b5bed4a31f08f036 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Thu, 17 Sep 2026 05:24:00 +0200 Subject: [PATCH 040/110] refactor(nav): extract print_plan() --- nav.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/nav.py b/nav.py index 87e798f..4ed6603 100644 --- a/nav.py +++ b/nav.py @@ -64,6 +64,15 @@ def plan(destination): return route, total, total / CRUISE_SPEED, fuel +def print_plan(destination): + """Print the flight plan for a destination.""" + route, total, days, fuel = plan(destination) + print("Route: " + " -> ".join(NAMES[w] for w in route)) + print(f"Distance: {total:.1f} million km") + print(f"Travel time: {round(days)} days") + print(f"Fuel required: {round(fuel)} t") + + def main(): if sys.argv[1] == "--list": for key in sorted(ROUTES): @@ -73,11 +82,7 @@ def main(): if destination not in ROUTES: known = ", ".join(sorted(ROUTES)) sys.exit(f"Unknown destination: {destination} (known: {known})") - route, total, days, fuel = plan(destination) - print("Route: " + " -> ".join(NAMES[w] for w in route)) - print(f"Distance: {total:.1f} million km") - print(f"Travel time: {round(days)} days") - print(f"Fuel required: {round(fuel)} t") + print_plan(destination) if __name__ == "__main__": From db86142e813042c2a20e518036503cfda665e98e Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Thu, 17 Sep 2026 09:24:00 +0200 Subject: [PATCH 041/110] docs(crew): add mission control --- crew.md | 1 + 1 file changed, 1 insertion(+) diff --git a/crew.md b/crew.md index 5a514a0..afc56c5 100644 --- a/crew.md +++ b/crew.md @@ -9,3 +9,4 @@ | Ensign Pixel | Navigator | | The debugging duck | Morale officer | | `coffeed` | Beverage officer | +| Mission control | Remote support (does not accept pushes) | From d8e85f81cfa4d9b7f3281496ddf708919501cef3 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Thu, 17 Sep 2026 19:38:00 +0200 Subject: [PATCH 042/110] chore(life-support): cabin pressure sensors tested --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 90725c5..3f6f1f9 100644 --- a/maintenance.md +++ b/maintenance.md @@ -23,3 +23,4 @@ Newest entries at the bottom. - 2026-09-15: Water recycling filters replaced. - 2026-09-16: Coffee machine descaled. - 2026-09-16: Antenna realigned. +- 2026-09-17: Cabin pressure sensors tested. From 41b191ff9455383604184bb327103f95e0531250 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Fri, 18 Sep 2026 02:44:00 +0200 Subject: [PATCH 043/110] chore(hull): radiation shielding inspected --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 3f6f1f9..38dd4b5 100644 --- a/maintenance.md +++ b/maintenance.md @@ -24,3 +24,4 @@ Newest entries at the bottom. - 2026-09-16: Coffee machine descaled. - 2026-09-16: Antenna realigned. - 2026-09-17: Cabin pressure sensors tested. +- 2026-09-18: Radiation shielding inspected. From d15022ec4eaa0ff3a3ae5d34c40909f5db79b8d7 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Fri, 18 Sep 2026 07:31:00 +0200 Subject: [PATCH 044/110] chore(morale): debugging duck accounted for --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 38dd4b5..ddb730f 100644 --- a/maintenance.md +++ b/maintenance.md @@ -25,3 +25,4 @@ Newest entries at the bottom. - 2026-09-16: Antenna realigned. - 2026-09-17: Cabin pressure sensors tested. - 2026-09-18: Radiation shielding inspected. +- 2026-09-18: Debugging duck accounted for. From f89276f39f93f7ec36b94058e1465b9711ebf79d Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Fri, 18 Sep 2026 12:59:00 +0200 Subject: [PATCH 045/110] chore(safety): fire extinguishers checked --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index ddb730f..e7af1b2 100644 --- a/maintenance.md +++ b/maintenance.md @@ -26,3 +26,4 @@ Newest entries at the bottom. - 2026-09-17: Cabin pressure sensors tested. - 2026-09-18: Radiation shielding inspected. - 2026-09-18: Debugging duck accounted for. +- 2026-09-18: Fire extinguishers checked. From d0aed8fcfb4c4f27c453c0c6eb93057f0d9facec Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Sat, 19 Sep 2026 01:23:00 +0200 Subject: [PATCH 046/110] feat(nav): print usage when called without arguments --- nav.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nav.py b/nav.py index 4ed6603..71f9e2a 100644 --- a/nav.py +++ b/nav.py @@ -74,6 +74,8 @@ def print_plan(destination): def main(): + if len(sys.argv) != 2: + sys.exit(__doc__) if sys.argv[1] == "--list": for key in sorted(ROUTES): print(f"{key:12} {NAMES[key]}") From 5e3b2623828c235700e6351b0909aec0d3c4c7f0 Mon Sep 17 00:00:00 2001 From: "Dr. Honk" Date: Sat, 19 Sep 2026 16:16:00 +0200 Subject: [PATCH 047/110] docs(crew): the debugging duck has a name --- crew.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crew.md b/crew.md index afc56c5..d2e0c7e 100644 --- a/crew.md +++ b/crew.md @@ -7,6 +7,6 @@ | Lt. Byte | Chief engineer | | Cmdr. Nova | Pilot | | Ensign Pixel | Navigator | -| The debugging duck | Morale officer | +| Quackers, the debugging duck | Morale officer | | `coffeed` | Beverage officer | | Mission control | Remote support (does not accept pushes) | From 7a4a8b7193d1914b3e43a857e319e5168443dc4c Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Sun, 20 Sep 2026 05:02:00 +0200 Subject: [PATCH 048/110] feat(routes): add Deimos --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index 71f9e2a..995a4a3 100644 --- a/nav.py +++ b/nav.py @@ -14,6 +14,7 @@ DISTANCES = { ("gateway", "mars"): 225.0, ("gateway", "venus"): 41.0, ("mars", "phobos"): 0.01, + ("mars", "deimos"): 0.02, } # Every route starts at Earth. @@ -22,6 +23,7 @@ ROUTES = { "mars": ["earth", "gateway", "mars"], "venus": ["earth", "gateway", "venus"], "phobos": ["earth", "gateway", "mars", "phobos"], + "deimos": ["earth", "gateway", "mars", "deimos"], } NAMES = { @@ -31,6 +33,7 @@ NAMES = { "mars": "Mars", "venus": "Venus", "phobos": "Phobos", + "deimos": "Deimos", } CRUISE_SPEED = 0.87 # million km per day From 4aef25f97377ed167c68ec99f17e289f775b2453 Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Sun, 20 Sep 2026 16:34:00 +0200 Subject: [PATCH 049/110] chore(safety): fire extinguishers checked --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index e7af1b2..ef08146 100644 --- a/maintenance.md +++ b/maintenance.md @@ -27,3 +27,4 @@ Newest entries at the bottom. - 2026-09-18: Radiation shielding inspected. - 2026-09-18: Debugging duck accounted for. - 2026-09-18: Fire extinguishers checked. +- 2026-09-20: Fire extinguishers checked. From 71ea61b98747dcc558aa655faca3fb628051a35b Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Sun, 20 Sep 2026 22:57:00 +0200 Subject: [PATCH 050/110] chore(life-support): oxygen scrubbers replaced --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index ef08146..4b06653 100644 --- a/maintenance.md +++ b/maintenance.md @@ -28,3 +28,4 @@ Newest entries at the bottom. - 2026-09-18: Debugging duck accounted for. - 2026-09-18: Fire extinguishers checked. - 2026-09-20: Fire extinguishers checked. +- 2026-09-20: Oxygen scrubbers replaced. From 852fd9084903d3ffe9b4e60abaa797d78c2ab332 Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Mon, 21 Sep 2026 11:32:00 +0200 Subject: [PATCH 051/110] chore(power): solar panels cleaned --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 4b06653..ae4898a 100644 --- a/maintenance.md +++ b/maintenance.md @@ -29,3 +29,4 @@ Newest entries at the bottom. - 2026-09-18: Fire extinguishers checked. - 2026-09-20: Fire extinguishers checked. - 2026-09-20: Oxygen scrubbers replaced. +- 2026-09-21: Solar panels cleaned. From 75c765eb0977e8cabce7de6875281d7d04686557 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Mon, 21 Sep 2026 22:19:00 +0200 Subject: [PATCH 052/110] chore(nav): gyroscopes recalibrated --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index ae4898a..544a7b1 100644 --- a/maintenance.md +++ b/maintenance.md @@ -30,3 +30,4 @@ Newest entries at the bottom. - 2026-09-20: Fire extinguishers checked. - 2026-09-20: Oxygen scrubbers replaced. - 2026-09-21: Solar panels cleaned. +- 2026-09-21: Gyroscopes recalibrated. From 74135a2f6f406aabfe2cf51d1733ab6868c1e529 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Tue, 22 Sep 2026 11:16:00 +0200 Subject: [PATCH 053/110] chore(engines): fuel lines checked for leaks --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 544a7b1..5dfced4 100644 --- a/maintenance.md +++ b/maintenance.md @@ -31,3 +31,4 @@ Newest entries at the bottom. - 2026-09-20: Oxygen scrubbers replaced. - 2026-09-21: Solar panels cleaned. - 2026-09-21: Gyroscopes recalibrated. +- 2026-09-22: Fuel lines checked for leaks. From 2f5748a5a986fc8927aca148536ccca509797d27 Mon Sep 17 00:00:00 2001 From: "Dr. Honk" Date: Tue, 22 Sep 2026 15:51:00 +0200 Subject: [PATCH 054/110] wip: asteroid belt routing --- nav.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nav.py b/nav.py index 995a4a3..aadfa3c 100644 --- a/nav.py +++ b/nav.py @@ -67,6 +67,10 @@ def plan(destination): return route, total, total / CRUISE_SPEED, fuel +def asteroid_route(belt + # TODO: figure out how to route through the asteroid belt + + def print_plan(destination): """Print the flight plan for a destination.""" route, total, days, fuel = plan(destination) From 149003f869894181fc3844486d8c7dd7db685245 Mon Sep 17 00:00:00 2001 From: "Dr. Honk" Date: Tue, 22 Sep 2026 20:42:00 +0200 Subject: [PATCH 055/110] wip: asteroid belt routing, continued --- nav.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nav.py b/nav.py index aadfa3c..56c55ad 100644 --- a/nav.py +++ b/nav.py @@ -67,8 +67,9 @@ def plan(destination): return route, total, total / CRUISE_SPEED, fuel -def asteroid_route(belt +def asteroid_route(belt): # TODO: figure out how to route through the asteroid belt + return ROUTES["ceres"] + def print_plan(destination): From 69866aa30b2d60f246b5f33631bdf9d545162662 Mon Sep 17 00:00:00 2001 From: "Dr. Honk" Date: Wed, 23 Sep 2026 07:58:00 +0200 Subject: [PATCH 056/110] feat(nav): route through the asteroid belt --- nav.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nav.py b/nav.py index 56c55ad..025c9f6 100644 --- a/nav.py +++ b/nav.py @@ -68,8 +68,8 @@ def plan(destination): def asteroid_route(belt): - # TODO: figure out how to route through the asteroid belt - return ROUTES["ceres"] + + """Return a route through the asteroid belt (currently: via Ceres).""" + return ROUTES["ceres"] + [belt] def print_plan(destination): From 3c3a858e2b534f3c59698ee3a5f6f84c7336c13b Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Wed, 23 Sep 2026 16:26:00 +0200 Subject: [PATCH 057/110] feat(routes): add Mercury --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index 025c9f6..17a25c1 100644 --- a/nav.py +++ b/nav.py @@ -15,6 +15,7 @@ DISTANCES = { ("gateway", "venus"): 41.0, ("mars", "phobos"): 0.01, ("mars", "deimos"): 0.02, + ("venus", "mercury"): 50.0, } # Every route starts at Earth. @@ -24,6 +25,7 @@ ROUTES = { "venus": ["earth", "gateway", "venus"], "phobos": ["earth", "gateway", "mars", "phobos"], "deimos": ["earth", "gateway", "mars", "deimos"], + "mercury": ["earth", "gateway", "venus", "mercury"], } NAMES = { @@ -34,6 +36,7 @@ NAMES = { "venus": "Venus", "phobos": "Phobos", "deimos": "Deimos", + "mercury": "Mercury", } CRUISE_SPEED = 0.87 # million km per day From 32ac7db0b15aaf649ee40a24e94d369e482c91a0 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Wed, 23 Sep 2026 21:49:00 +0200 Subject: [PATCH 058/110] chore(safety): escape pod batteries charged --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 5dfced4..886f5ba 100644 --- a/maintenance.md +++ b/maintenance.md @@ -32,3 +32,4 @@ Newest entries at the bottom. - 2026-09-21: Solar panels cleaned. - 2026-09-21: Gyroscopes recalibrated. - 2026-09-22: Fuel lines checked for leaks. +- 2026-09-23: Escape pod batteries charged. From 69d6213b0a7853918347504bedf2b2fd4d50c70f Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Thu, 24 Sep 2026 07:50:00 +0200 Subject: [PATCH 059/110] feat(routes): add Ceres --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index 17a25c1..51398f5 100644 --- a/nav.py +++ b/nav.py @@ -16,6 +16,7 @@ DISTANCES = { ("mars", "phobos"): 0.01, ("mars", "deimos"): 0.02, ("venus", "mercury"): 50.0, + ("mars", "ceres"): 263.0, } # Every route starts at Earth. @@ -26,6 +27,7 @@ ROUTES = { "phobos": ["earth", "gateway", "mars", "phobos"], "deimos": ["earth", "gateway", "mars", "deimos"], "mercury": ["earth", "gateway", "venus", "mercury"], + "ceres": ["earth", "gateway", "mars", "ceres"], } NAMES = { @@ -37,6 +39,7 @@ NAMES = { "phobos": "Phobos", "deimos": "Deimos", "mercury": "Mercury", + "ceres": "Ceres", } CRUISE_SPEED = 0.87 # million km per day From 4b7daaeef36994f9d68e4973953b5b10ca73d7d2 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Thu, 24 Sep 2026 19:38:00 +0200 Subject: [PATCH 060/110] chore(galley): galley fridge defrosted --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 886f5ba..235ec96 100644 --- a/maintenance.md +++ b/maintenance.md @@ -33,3 +33,4 @@ Newest entries at the bottom. - 2026-09-21: Gyroscopes recalibrated. - 2026-09-22: Fuel lines checked for leaks. - 2026-09-23: Escape pod batteries charged. +- 2026-09-24: Galley fridge defrosted. From b80382ca4caaa0dd67148bdd12ebc379f8a6d3dd Mon Sep 17 00:00:00 2001 From: "Dr. Honk" Date: Fri, 25 Sep 2026 02:20:00 +0200 Subject: [PATCH 061/110] feat(routes): add the Restaurant at the End of the Universe --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index 51398f5..471cb45 100644 --- a/nav.py +++ b/nav.py @@ -17,6 +17,7 @@ DISTANCES = { ("mars", "deimos"): 0.02, ("venus", "mercury"): 50.0, ("mars", "ceres"): 263.0, + ("gateway", "milliways"): 42.0, } # Every route starts at Earth. @@ -28,6 +29,7 @@ ROUTES = { "deimos": ["earth", "gateway", "mars", "deimos"], "mercury": ["earth", "gateway", "venus", "mercury"], "ceres": ["earth", "gateway", "mars", "ceres"], + "milliways": ["earth", "gateway", "milliways"], } NAMES = { @@ -40,6 +42,7 @@ NAMES = { "deimos": "Deimos", "mercury": "Mercury", "ceres": "Ceres", + "milliways": "Restaurant at the End of the Universe", } CRUISE_SPEED = 0.87 # million km per day From 75bf82b0db500672cde44ab51530490216a67b8d Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Fri, 25 Sep 2026 11:34:00 +0200 Subject: [PATCH 062/110] feat(routes): add Vesta --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index 471cb45..b95c029 100644 --- a/nav.py +++ b/nav.py @@ -18,6 +18,7 @@ DISTANCES = { ("venus", "mercury"): 50.0, ("mars", "ceres"): 263.0, ("gateway", "milliways"): 42.0, + ("ceres", "vesta"): 96.0, } # Every route starts at Earth. @@ -30,6 +31,7 @@ ROUTES = { "mercury": ["earth", "gateway", "venus", "mercury"], "ceres": ["earth", "gateway", "mars", "ceres"], "milliways": ["earth", "gateway", "milliways"], + "vesta": ["earth", "gateway", "mars", "ceres", "vesta"], } NAMES = { @@ -43,6 +45,7 @@ NAMES = { "mercury": "Mercury", "ceres": "Ceres", "milliways": "Restaurant at the End of the Universe", + "vesta": "Vesta", } CRUISE_SPEED = 0.87 # million km per day From 7b3a33a8d8e1940b7620a6ce59175312163197e5 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Fri, 25 Sep 2026 23:05:00 +0200 Subject: [PATCH 063/110] feat(routes): add Europa --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index b95c029..fa99dc9 100644 --- a/nav.py +++ b/nav.py @@ -19,6 +19,7 @@ DISTANCES = { ("mars", "ceres"): 263.0, ("gateway", "milliways"): 42.0, ("ceres", "vesta"): 96.0, + ("ceres", "europa"): 404.0, } # Every route starts at Earth. @@ -32,6 +33,7 @@ ROUTES = { "ceres": ["earth", "gateway", "mars", "ceres"], "milliways": ["earth", "gateway", "milliways"], "vesta": ["earth", "gateway", "mars", "ceres", "vesta"], + "europa": ["earth", "gateway", "mars", "ceres", "europa"], } NAMES = { @@ -46,6 +48,7 @@ NAMES = { "ceres": "Ceres", "milliways": "Restaurant at the End of the Universe", "vesta": "Vesta", + "europa": "Europa", } CRUISE_SPEED = 0.87 # million km per day From 4c1b363e521308e8077725ec0d8e7bbfe510e87e Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Sat, 26 Sep 2026 13:53:00 +0200 Subject: [PATCH 064/110] feat(routes): add Io --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index fa99dc9..f781d98 100644 --- a/nav.py +++ b/nav.py @@ -20,6 +20,7 @@ DISTANCES = { ("gateway", "milliways"): 42.0, ("ceres", "vesta"): 96.0, ("ceres", "europa"): 404.0, + ("europa", "io"): 0.25, } # Every route starts at Earth. @@ -34,6 +35,7 @@ ROUTES = { "milliways": ["earth", "gateway", "milliways"], "vesta": ["earth", "gateway", "mars", "ceres", "vesta"], "europa": ["earth", "gateway", "mars", "ceres", "europa"], + "io": ["earth", "gateway", "mars", "ceres", "europa", "io"], } NAMES = { @@ -49,6 +51,7 @@ NAMES = { "milliways": "Restaurant at the End of the Universe", "vesta": "Vesta", "europa": "Europa", + "io": "Io", } CRUISE_SPEED = 0.87 # million km per day From ef68b32367a407a7337a8f1d363658f105ab37c2 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Sat, 26 Sep 2026 19:16:00 +0200 Subject: [PATCH 065/110] docs(readme): document --list --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8cf0545..749d59a 100644 --- a/README.md +++ b/README.md @@ -19,3 +19,5 @@ Use Conventional Commits. Do not push broken code. ## Maintenance All maintenance is recorded in `maintenance.md`. + +To list all known destinations, run `python3 nav.py --list`. From 9e8007da9621f87ae060001617ef81d753d36a07 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Sun, 27 Sep 2026 06:19:00 +0200 Subject: [PATCH 066/110] chore(safety): escape pod batteries charged --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 235ec96..c9a3da8 100644 --- a/maintenance.md +++ b/maintenance.md @@ -34,3 +34,4 @@ Newest entries at the bottom. - 2026-09-22: Fuel lines checked for leaks. - 2026-09-23: Escape pod batteries charged. - 2026-09-24: Galley fridge defrosted. +- 2026-09-27: Escape pod batteries charged. From b8638ea0be6dacddac1d1c7a438ac637c4f09295 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Sun, 27 Sep 2026 16:31:00 +0200 Subject: [PATCH 067/110] chore(comms): comms backup tested --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index c9a3da8..3b5761e 100644 --- a/maintenance.md +++ b/maintenance.md @@ -35,3 +35,4 @@ Newest entries at the bottom. - 2026-09-23: Escape pod batteries charged. - 2026-09-24: Galley fridge defrosted. - 2026-09-27: Escape pod batteries charged. +- 2026-09-27: Comms backup tested. From 09aee14ce173609a0a5248450dd14e29f96e47ee Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Mon, 28 Sep 2026 03:48:00 +0200 Subject: [PATCH 068/110] feat(routes): add Ganymede --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index f781d98..8f4ec88 100644 --- a/nav.py +++ b/nav.py @@ -21,6 +21,7 @@ DISTANCES = { ("ceres", "vesta"): 96.0, ("ceres", "europa"): 404.0, ("europa", "io"): 0.25, + ("europa", "ganymede"): 0.4, } # Every route starts at Earth. @@ -36,6 +37,7 @@ ROUTES = { "vesta": ["earth", "gateway", "mars", "ceres", "vesta"], "europa": ["earth", "gateway", "mars", "ceres", "europa"], "io": ["earth", "gateway", "mars", "ceres", "europa", "io"], + "ganymede": ["earth", "gateway", "mars", "ceres", "europa", "ganymede"], } NAMES = { @@ -52,6 +54,7 @@ NAMES = { "vesta": "Vesta", "europa": "Europa", "io": "Io", + "ganymede": "Ganymede", } CRUISE_SPEED = 0.87 # million km per day From 51f402b1498e32c2ac0b99da52c93e460260a50f Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Mon, 28 Sep 2026 14:42:00 +0200 Subject: [PATCH 069/110] chore(nav): gyroscopes recalibrated --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 3b5761e..3267f16 100644 --- a/maintenance.md +++ b/maintenance.md @@ -36,3 +36,4 @@ Newest entries at the bottom. - 2026-09-24: Galley fridge defrosted. - 2026-09-27: Escape pod batteries charged. - 2026-09-27: Comms backup tested. +- 2026-09-28: Gyroscopes recalibrated. From d3d2538783f362a5fd9df6b3c22d47ae764b1b03 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Mon, 28 Sep 2026 21:15:00 +0200 Subject: [PATCH 070/110] chore(hull): hull inspection, no leaks --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 3267f16..a9820e7 100644 --- a/maintenance.md +++ b/maintenance.md @@ -37,3 +37,4 @@ Newest entries at the bottom. - 2026-09-27: Escape pod batteries charged. - 2026-09-27: Comms backup tested. - 2026-09-28: Gyroscopes recalibrated. +- 2026-09-28: Hull inspection, no leaks. From 3af901eedecc08f81faea648bfd7a6648b3ba700 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Tue, 29 Sep 2026 04:03:00 +0200 Subject: [PATCH 071/110] feat(routes): add Callisto --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index 8f4ec88..b27267c 100644 --- a/nav.py +++ b/nav.py @@ -22,6 +22,7 @@ DISTANCES = { ("ceres", "europa"): 404.0, ("europa", "io"): 0.25, ("europa", "ganymede"): 0.4, + ("ganymede", "callisto"): 0.8, } # Every route starts at Earth. @@ -38,6 +39,7 @@ ROUTES = { "europa": ["earth", "gateway", "mars", "ceres", "europa"], "io": ["earth", "gateway", "mars", "ceres", "europa", "io"], "ganymede": ["earth", "gateway", "mars", "ceres", "europa", "ganymede"], + "callisto": ["earth", "gateway", "mars", "ceres", "europa", "ganymede", "callisto"], } NAMES = { @@ -55,6 +57,7 @@ NAMES = { "europa": "Europa", "io": "Io", "ganymede": "Ganymede", + "callisto": "Callisto", } CRUISE_SPEED = 0.87 # million km per day From efe4f989a313d251b2bbbb9f5c7514028f0498a6 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Tue, 29 Sep 2026 10:35:00 +0200 Subject: [PATCH 072/110] feat(routes): add Titan --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index b27267c..ce1357f 100644 --- a/nav.py +++ b/nav.py @@ -23,6 +23,7 @@ DISTANCES = { ("europa", "io"): 0.25, ("europa", "ganymede"): 0.4, ("ganymede", "callisto"): 0.8, + ("europa", "titan"): 655.0, } # Every route starts at Earth. @@ -40,6 +41,7 @@ ROUTES = { "io": ["earth", "gateway", "mars", "ceres", "europa", "io"], "ganymede": ["earth", "gateway", "mars", "ceres", "europa", "ganymede"], "callisto": ["earth", "gateway", "mars", "ceres", "europa", "ganymede", "callisto"], + "titan": ["earth", "gateway", "mars", "ceres", "europa", "titan"], } NAMES = { @@ -58,6 +60,7 @@ NAMES = { "io": "Io", "ganymede": "Ganymede", "callisto": "Callisto", + "titan": "Titan", } CRUISE_SPEED = 0.87 # million km per day From 6bcd1dfca6e650bbe32b5d8645a6481f5a57ccc8 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Tue, 29 Sep 2026 16:44:00 +0200 Subject: [PATCH 073/110] feat(routes): add Enceladus --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index ce1357f..44d15f6 100644 --- a/nav.py +++ b/nav.py @@ -24,6 +24,7 @@ DISTANCES = { ("europa", "ganymede"): 0.4, ("ganymede", "callisto"): 0.8, ("europa", "titan"): 655.0, + ("titan", "enceladus"): 1.0, } # Every route starts at Earth. @@ -42,6 +43,7 @@ ROUTES = { "ganymede": ["earth", "gateway", "mars", "ceres", "europa", "ganymede"], "callisto": ["earth", "gateway", "mars", "ceres", "europa", "ganymede", "callisto"], "titan": ["earth", "gateway", "mars", "ceres", "europa", "titan"], + "enceladus": ["earth", "gateway", "mars", "ceres", "europa", "titan", "enceladus"], } NAMES = { @@ -61,6 +63,7 @@ NAMES = { "ganymede": "Ganymede", "callisto": "Callisto", "titan": "Titan", + "enceladus": "Enceladus", } CRUISE_SPEED = 0.87 # million km per day From 0ec9ac0388e0c9467f36a523dc5f88137c553096 Mon Sep 17 00:00:00 2001 From: "Dr. Honk" Date: Tue, 29 Sep 2026 23:51:00 +0200 Subject: [PATCH 074/110] perf(nav): compute legs lazily No need to build a whole list every time. --- nav.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nav.py b/nav.py index 44d15f6..4fe895e 100644 --- a/nav.py +++ b/nav.py @@ -79,8 +79,9 @@ def distance(a, b): def legs(route): - """Return the legs (pairs of consecutive waypoints) of a route.""" - return [(route[i], route[i + 1]) for i in range(len(route) - 1)] + """Yield the legs (pairs of consecutive waypoints) of a route.""" + for i in range(1, len(route) - 1): + yield route[i], route[i + 1] def plan(destination): From 9a793ef77b7ff6f99cbc2dbec5baf0c14b1c68ea Mon Sep 17 00:00:00 2001 From: "Dr. Honk" Date: Wed, 30 Sep 2026 08:21:00 +0200 Subject: [PATCH 075/110] feat(routes): add Pluto (it still counts for us) --- nav.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nav.py b/nav.py index 4fe895e..471dce3 100644 --- a/nav.py +++ b/nav.py @@ -25,6 +25,7 @@ DISTANCES = { ("ganymede", "callisto"): 0.8, ("europa", "titan"): 655.0, ("titan", "enceladus"): 1.0, + ("titan", "pluto"): 4400.0, } # Every route starts at Earth. @@ -44,6 +45,7 @@ ROUTES = { "callisto": ["earth", "gateway", "mars", "ceres", "europa", "ganymede", "callisto"], "titan": ["earth", "gateway", "mars", "ceres", "europa", "titan"], "enceladus": ["earth", "gateway", "mars", "ceres", "europa", "titan", "enceladus"], + "pluto": ["earth", "gateway", "mars", "ceres", "europa", "titan", "pluto"], } NAMES = { @@ -64,6 +66,7 @@ NAMES = { "callisto": "Callisto", "titan": "Titan", "enceladus": "Enceladus", + "pluto": "Pluto", } CRUISE_SPEED = 0.87 # million km per day From 5415839361c8064e4819d9efd41cdc671c9f4024 Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Wed, 30 Sep 2026 16:02:00 +0200 Subject: [PATCH 076/110] chore(lights): navigation lights checked --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index a9820e7..d79e68b 100644 --- a/maintenance.md +++ b/maintenance.md @@ -38,3 +38,4 @@ Newest entries at the bottom. - 2026-09-27: Comms backup tested. - 2026-09-28: Gyroscopes recalibrated. - 2026-09-28: Hull inspection, no leaks. +- 2026-09-30: Navigation lights checked. From 71286bf1515f87f0f3504f7c86d0ef151e0e4bc4 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Wed, 30 Sep 2026 20:40:00 +0200 Subject: [PATCH 077/110] fix(routes): correct distance from Mars to Ceres --- nav.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nav.py b/nav.py index 471dce3..8b01a2c 100644 --- a/nav.py +++ b/nav.py @@ -16,7 +16,7 @@ DISTANCES = { ("mars", "phobos"): 0.01, ("mars", "deimos"): 0.02, ("venus", "mercury"): 50.0, - ("mars", "ceres"): 263.0, + ("mars", "ceres"): 265.0, ("gateway", "milliways"): 42.0, ("ceres", "vesta"): 96.0, ("ceres", "europa"): 404.0, From 3d4401518360616d9773f7ffbbb8d022de05d9fc Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Thu, 1 Oct 2026 10:23:00 +0200 Subject: [PATCH 078/110] chore(life-support): cabin pressure sensors tested --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index d79e68b..bc2991a 100644 --- a/maintenance.md +++ b/maintenance.md @@ -39,3 +39,4 @@ Newest entries at the bottom. - 2026-09-28: Gyroscopes recalibrated. - 2026-09-28: Hull inspection, no leaks. - 2026-09-30: Navigation lights checked. +- 2026-10-01: Cabin pressure sensors tested. From 3da120fd28aacc4ae44320e45d8d7fbeb9cb2568 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Thu, 1 Oct 2026 23:55:00 +0200 Subject: [PATCH 079/110] style(nav): add type hints --- nav.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/nav.py b/nav.py index 8b01a2c..13b74e5 100644 --- a/nav.py +++ b/nav.py @@ -6,6 +6,7 @@ Usage: python3 nav.py DESTINATION """ import sys +from collections.abc import Iterator # Distances between neighboring waypoints, in million km. DISTANCES = { @@ -74,20 +75,20 @@ FUEL_PER_MKM = 0.142 # tonnes of fuel per million km LAUNCH_FUEL = 380.0 # tonnes of fuel to escape Earth's gravity -def distance(a, b): +def distance(a: str, b: str) -> float: """Return the distance between two neighboring waypoints.""" if (a, b) in DISTANCES: return DISTANCES[(a, b)] return DISTANCES[(b, a)] -def legs(route): +def legs(route: list[str]) -> Iterator[tuple[str, str]]: """Yield the legs (pairs of consecutive waypoints) of a route.""" for i in range(1, len(route) - 1): yield route[i], route[i + 1] -def plan(destination): +def plan(destination: str) -> tuple[list[str], float, float, float]: """Return route, distance, travel time (days) and fuel (t).""" route = ROUTES[destination] total = 0.0 @@ -101,12 +102,12 @@ def plan(destination): return route, total, total / CRUISE_SPEED, fuel -def asteroid_route(belt): +def asteroid_route(belt: str) -> list[str]: """Return a route through the asteroid belt (currently: via Ceres).""" return ROUTES["ceres"] + [belt] -def print_plan(destination): +def print_plan(destination: str) -> None: """Print the flight plan for a destination.""" route, total, days, fuel = plan(destination) print("Route: " + " -> ".join(NAMES[w] for w in route)) @@ -115,7 +116,7 @@ def print_plan(destination): print(f"Fuel required: {round(fuel)} t") -def main(): +def main() -> None: if len(sys.argv) != 2: sys.exit(__doc__) if sys.argv[1] == "--list": From 58a306da6484403a419fd3fd0bb460359d49091a Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Fri, 2 Oct 2026 13:37:00 +0200 Subject: [PATCH 080/110] chore(safety): escape pod batteries charged --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index bc2991a..923a01f 100644 --- a/maintenance.md +++ b/maintenance.md @@ -40,3 +40,4 @@ Newest entries at the bottom. - 2026-09-28: Hull inspection, no leaks. - 2026-09-30: Navigation lights checked. - 2026-10-01: Cabin pressure sensors tested. +- 2026-10-02: Escape pod batteries charged. From 7e96c15f69d5bcdb038898552af5341c78276a58 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Sat, 3 Oct 2026 04:33:00 +0200 Subject: [PATCH 081/110] chore(lights): navigation lights checked --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 923a01f..6db0a79 100644 --- a/maintenance.md +++ b/maintenance.md @@ -41,3 +41,4 @@ Newest entries at the bottom. - 2026-09-30: Navigation lights checked. - 2026-10-01: Cabin pressure sensors tested. - 2026-10-02: Escape pod batteries charged. +- 2026-10-03: Navigation lights checked. From 14b76e1faf4a8028bba8ed65abd1d81ca7931bb5 Mon Sep 17 00:00:00 2001 From: "Dr. Honk" Date: Sat, 3 Oct 2026 18:19:00 +0200 Subject: [PATCH 082/110] feat(nav): experimental warp drive support --- nav.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nav.py b/nav.py index 13b74e5..b67440a 100644 --- a/nav.py +++ b/nav.py @@ -6,6 +6,7 @@ Usage: python3 nav.py DESTINATION """ import sys +import warpdrive from collections.abc import Iterator # Distances between neighboring waypoints, in million km. @@ -73,6 +74,7 @@ NAMES = { CRUISE_SPEED = 0.87 # million km per day FUEL_PER_MKM = 0.142 # tonnes of fuel per million km LAUNCH_FUEL = 380.0 # tonnes of fuel to escape Earth's gravity +WARP_FACTOR = warpdrive.calibrate(9) def distance(a: str, b: str) -> float: From 18a0ff57172a26bfe4298f91a203bcdbc1a2fecf Mon Sep 17 00:00:00 2001 From: "Dr. Honk" Date: Sun, 4 Oct 2026 03:38:00 +0200 Subject: [PATCH 083/110] wip: calibrate warp drive --- nav.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nav.py b/nav.py index b67440a..192ea8e 100644 --- a/nav.py +++ b/nav.py @@ -74,7 +74,7 @@ NAMES = { CRUISE_SPEED = 0.87 # million km per day FUEL_PER_MKM = 0.142 # tonnes of fuel per million km LAUNCH_FUEL = 380.0 # tonnes of fuel to escape Earth's gravity -WARP_FACTOR = warpdrive.calibrate(9) +WARP_FACTOR = warpdrive.calibrate(9.5) def distance(a: str, b: str) -> float: From 8289259265bdc461657021a7f054ef060f4346ff Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Sun, 4 Oct 2026 12:39:00 +0200 Subject: [PATCH 084/110] chore(nav): remove warp drive support We do not have a warp drive. --- nav.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/nav.py b/nav.py index 192ea8e..13b74e5 100644 --- a/nav.py +++ b/nav.py @@ -6,7 +6,6 @@ Usage: python3 nav.py DESTINATION """ import sys -import warpdrive from collections.abc import Iterator # Distances between neighboring waypoints, in million km. @@ -74,7 +73,6 @@ NAMES = { CRUISE_SPEED = 0.87 # million km per day FUEL_PER_MKM = 0.142 # tonnes of fuel per million km LAUNCH_FUEL = 380.0 # tonnes of fuel to escape Earth's gravity -WARP_FACTOR = warpdrive.calibrate(9.5) def distance(a: str, b: str) -> float: From 8e008d53049f7bd0e0600b2000ca89fef64f3017 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Mon, 5 Oct 2026 00:57:00 +0200 Subject: [PATCH 085/110] chore(engines): fuel lines checked for leaks --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 6db0a79..7bc5a82 100644 --- a/maintenance.md +++ b/maintenance.md @@ -42,3 +42,4 @@ Newest entries at the bottom. - 2026-10-01: Cabin pressure sensors tested. - 2026-10-02: Escape pod batteries charged. - 2026-10-03: Navigation lights checked. +- 2026-10-05: Fuel lines checked for leaks. From 28d3ee65ad09556530ec6a55b4d5087cbae4db68 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Mon, 5 Oct 2026 06:16:00 +0200 Subject: [PATCH 086/110] chore(safety): fire extinguishers checked --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 7bc5a82..73e884b 100644 --- a/maintenance.md +++ b/maintenance.md @@ -43,3 +43,4 @@ Newest entries at the bottom. - 2026-10-02: Escape pod batteries charged. - 2026-10-03: Navigation lights checked. - 2026-10-05: Fuel lines checked for leaks. +- 2026-10-05: Fire extinguishers checked. From 5654431e7068ed511ff6d4981944de40adcf6a0b Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Mon, 5 Oct 2026 19:22:00 +0200 Subject: [PATCH 087/110] chore(hull): hull inspection, no leaks --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 73e884b..32a1dd0 100644 --- a/maintenance.md +++ b/maintenance.md @@ -44,3 +44,4 @@ Newest entries at the bottom. - 2026-10-03: Navigation lights checked. - 2026-10-05: Fuel lines checked for leaks. - 2026-10-05: Fire extinguishers checked. +- 2026-10-05: Hull inspection, no leaks. From d4267196a4f179ff8046e7ec41fb43e770cbfda5 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Tue, 6 Oct 2026 02:02:00 +0200 Subject: [PATCH 088/110] chore(life-support): water recycling filters replaced --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 32a1dd0..a3f696e 100644 --- a/maintenance.md +++ b/maintenance.md @@ -45,3 +45,4 @@ Newest entries at the bottom. - 2026-10-05: Fuel lines checked for leaks. - 2026-10-05: Fire extinguishers checked. - 2026-10-05: Hull inspection, no leaks. +- 2026-10-06: Water recycling filters replaced. From c0288e348860b3572dc19b4d13b3ef914261cfbe Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Tue, 6 Oct 2026 12:51:00 +0200 Subject: [PATCH 089/110] chore(morale): debugging duck accounted for --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index a3f696e..368da20 100644 --- a/maintenance.md +++ b/maintenance.md @@ -46,3 +46,4 @@ Newest entries at the bottom. - 2026-10-05: Fire extinguishers checked. - 2026-10-05: Hull inspection, no leaks. - 2026-10-06: Water recycling filters replaced. +- 2026-10-06: Debugging duck accounted for. From 43cbfb78e5c73670ac6dffe14d6609ba0a9a0225 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Wed, 7 Oct 2026 00:47:00 +0200 Subject: [PATCH 090/110] chore(life-support): oxygen scrubbers replaced --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 368da20..1d22ac6 100644 --- a/maintenance.md +++ b/maintenance.md @@ -47,3 +47,4 @@ Newest entries at the bottom. - 2026-10-05: Hull inspection, no leaks. - 2026-10-06: Water recycling filters replaced. - 2026-10-06: Debugging duck accounted for. +- 2026-10-07: Oxygen scrubbers replaced. From 197f0e01a1019d3d90ecb611b32568e41e088de5 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Wed, 7 Oct 2026 10:37:00 +0200 Subject: [PATCH 091/110] fix(routes): correct distance from Ceres to Europa --- nav.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nav.py b/nav.py index 13b74e5..f7d8ba0 100644 --- a/nav.py +++ b/nav.py @@ -20,7 +20,7 @@ DISTANCES = { ("mars", "ceres"): 265.0, ("gateway", "milliways"): 42.0, ("ceres", "vesta"): 96.0, - ("ceres", "europa"): 404.0, + ("ceres", "europa"): 399.0, ("europa", "io"): 0.25, ("europa", "ganymede"): 0.4, ("ganymede", "callisto"): 0.8, From 9d383fb00535ab03c42969c92d0fbb8f15680530 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Wed, 7 Oct 2026 20:23:00 +0200 Subject: [PATCH 092/110] chore(coffeed): coffee machine descaled --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 1d22ac6..8a9bbd1 100644 --- a/maintenance.md +++ b/maintenance.md @@ -48,3 +48,4 @@ Newest entries at the bottom. - 2026-10-06: Water recycling filters replaced. - 2026-10-06: Debugging duck accounted for. - 2026-10-07: Oxygen scrubbers replaced. +- 2026-10-07: Coffee machine descaled. From 4f037e24597d8838924f8119fe4993f9ee68787a Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Thu, 8 Oct 2026 07:20:00 +0200 Subject: [PATCH 093/110] chore(life-support): cabin pressure sensors tested --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 8a9bbd1..4a248d3 100644 --- a/maintenance.md +++ b/maintenance.md @@ -49,3 +49,4 @@ Newest entries at the bottom. - 2026-10-06: Debugging duck accounted for. - 2026-10-07: Oxygen scrubbers replaced. - 2026-10-07: Coffee machine descaled. +- 2026-10-08: Cabin pressure sensors tested. From 07cef1f5ac00abfe0cec8c33e78b68499165d474 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Thu, 8 Oct 2026 13:24:00 +0200 Subject: [PATCH 094/110] chore(engines): thrusters test-fired --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 4a248d3..05a7213 100644 --- a/maintenance.md +++ b/maintenance.md @@ -50,3 +50,4 @@ Newest entries at the bottom. - 2026-10-07: Oxygen scrubbers replaced. - 2026-10-07: Coffee machine descaled. - 2026-10-08: Cabin pressure sensors tested. +- 2026-10-08: Thrusters test-fired. From a14a63dca3af8229551af11bb79d84ac69c00536 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Thu, 8 Oct 2026 19:56:00 +0200 Subject: [PATCH 095/110] refactor(nav): rename plan() to plot_course() --- nav.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nav.py b/nav.py index f7d8ba0..fdca11a 100644 --- a/nav.py +++ b/nav.py @@ -88,7 +88,7 @@ def legs(route: list[str]) -> Iterator[tuple[str, str]]: yield route[i], route[i + 1] -def plan(destination: str) -> tuple[list[str], float, float, float]: +def plot_course(destination: str) -> tuple[list[str], float, float, float]: """Return route, distance, travel time (days) and fuel (t).""" route = ROUTES[destination] total = 0.0 From 5ee71e218979a5b765ea7b56bda1d62627d19823 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Fri, 9 Oct 2026 00:05:00 +0200 Subject: [PATCH 096/110] fix(nav): update remaining call of plot_course() --- nav.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nav.py b/nav.py index fdca11a..2cab8f5 100644 --- a/nav.py +++ b/nav.py @@ -109,7 +109,7 @@ def asteroid_route(belt: str) -> list[str]: def print_plan(destination: str) -> None: """Print the flight plan for a destination.""" - route, total, days, fuel = plan(destination) + route, total, days, fuel = plot_course(destination) print("Route: " + " -> ".join(NAMES[w] for w in route)) print(f"Distance: {total:.1f} million km") print(f"Travel time: {round(days)} days") From c0b274698dac84c2f46137662c84cdfbea9c8847 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Fri, 9 Oct 2026 11:52:00 +0200 Subject: [PATCH 097/110] fix(routes): correct distance from Titan to Pluto --- nav.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nav.py b/nav.py index 2cab8f5..80d0770 100644 --- a/nav.py +++ b/nav.py @@ -26,7 +26,7 @@ DISTANCES = { ("ganymede", "callisto"): 0.8, ("europa", "titan"): 655.0, ("titan", "enceladus"): 1.0, - ("titan", "pluto"): 4400.0, + ("titan", "pluto"): 4387.0, } # Every route starts at Earth. From 1e44e0f344c829f22b15ad14a314d9a9d4cfa8dc Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Fri, 9 Oct 2026 21:39:00 +0200 Subject: [PATCH 098/110] chore(galley): galley fridge defrosted --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 05a7213..c5cd096 100644 --- a/maintenance.md +++ b/maintenance.md @@ -51,3 +51,4 @@ Newest entries at the bottom. - 2026-10-07: Coffee machine descaled. - 2026-10-08: Cabin pressure sensors tested. - 2026-10-08: Thrusters test-fired. +- 2026-10-09: Galley fridge defrosted. From 5d4d5d1526645ff8f3d680ba4ae7972ea0491171 Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Sat, 10 Oct 2026 10:13:00 +0200 Subject: [PATCH 099/110] chore(airlock): airlock seals checked --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index c5cd096..d496408 100644 --- a/maintenance.md +++ b/maintenance.md @@ -52,3 +52,4 @@ Newest entries at the bottom. - 2026-10-08: Cabin pressure sensors tested. - 2026-10-08: Thrusters test-fired. - 2026-10-09: Galley fridge defrosted. +- 2026-10-10: Airlock seals checked. From 2269d6a13a2b4adbc824d84bf621ca7e75d9365c Mon Sep 17 00:00:00 2001 From: "Cmdr. Nova" Date: Sat, 10 Oct 2026 21:30:00 +0200 Subject: [PATCH 100/110] chore(galley): galley fridge defrosted --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index d496408..a2594bc 100644 --- a/maintenance.md +++ b/maintenance.md @@ -53,3 +53,4 @@ Newest entries at the bottom. - 2026-10-08: Thrusters test-fired. - 2026-10-09: Galley fridge defrosted. - 2026-10-10: Airlock seals checked. +- 2026-10-10: Galley fridge defrosted. From 9415cffb0aa35273c4403d834c81d1a4f1f48050 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Sun, 11 Oct 2026 09:06:00 +0200 Subject: [PATCH 101/110] chore(engines): thrusters test-fired --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index a2594bc..6cb6d3e 100644 --- a/maintenance.md +++ b/maintenance.md @@ -54,3 +54,4 @@ Newest entries at the bottom. - 2026-10-09: Galley fridge defrosted. - 2026-10-10: Airlock seals checked. - 2026-10-10: Galley fridge defrosted. +- 2026-10-11: Thrusters test-fired. From 2f788482f63898d5511e4ac2ad61f913445996ed Mon Sep 17 00:00:00 2001 From: Captain Vega Date: Sun, 11 Oct 2026 13:49:00 +0200 Subject: [PATCH 102/110] chore(life-support): cabin pressure sensors tested --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 6cb6d3e..52ad5bc 100644 --- a/maintenance.md +++ b/maintenance.md @@ -55,3 +55,4 @@ Newest entries at the bottom. - 2026-10-10: Airlock seals checked. - 2026-10-10: Galley fridge defrosted. - 2026-10-11: Thrusters test-fired. +- 2026-10-11: Cabin pressure sensors tested. From 33e91d77cdbf9ad2653d71be75989bc71793624a Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Sun, 11 Oct 2026 22:30:00 +0200 Subject: [PATCH 103/110] chore(comms): antenna realigned --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 52ad5bc..caac81a 100644 --- a/maintenance.md +++ b/maintenance.md @@ -56,3 +56,4 @@ Newest entries at the bottom. - 2026-10-10: Galley fridge defrosted. - 2026-10-11: Thrusters test-fired. - 2026-10-11: Cabin pressure sensors tested. +- 2026-10-11: Antenna realigned. From b2ff61070bfb802718020bca584c3f7c85a0fdea Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Mon, 12 Oct 2026 10:39:00 +0200 Subject: [PATCH 104/110] feat(nav): add --all option --- nav.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/nav.py b/nav.py index 80d0770..517ef1f 100644 --- a/nav.py +++ b/nav.py @@ -3,6 +3,7 @@ Usage: python3 nav.py DESTINATION python3 nav.py --list + python3 nav.py --all """ import sys @@ -123,6 +124,11 @@ def main() -> None: for key in sorted(ROUTES): print(f"{key:12} {NAMES[key]}") return + if sys.argv[1] == "--all": + for key in sorted(ROUTES): + print_plan(key) + print() + return destination = sys.argv[1].lower() if destination not in ROUTES: known = ", ".join(sorted(ROUTES)) From 9c4da2db4afb8b8d267d6f6e7fbb35de69b8dc55 Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Mon, 12 Oct 2026 19:25:00 +0200 Subject: [PATCH 105/110] chore(engines): thrusters test-fired --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index caac81a..fb44431 100644 --- a/maintenance.md +++ b/maintenance.md @@ -57,3 +57,4 @@ Newest entries at the bottom. - 2026-10-11: Thrusters test-fired. - 2026-10-11: Cabin pressure sensors tested. - 2026-10-11: Antenna realigned. +- 2026-10-12: Thrusters test-fired. From 2a93d5d9c84478392577173eed322af2a82ae71b Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Tue, 13 Oct 2026 06:51:00 +0200 Subject: [PATCH 106/110] chore(engines): fuel lines checked for leaks --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index fb44431..fe260b2 100644 --- a/maintenance.md +++ b/maintenance.md @@ -58,3 +58,4 @@ Newest entries at the bottom. - 2026-10-11: Cabin pressure sensors tested. - 2026-10-11: Antenna realigned. - 2026-10-12: Thrusters test-fired. +- 2026-10-13: Fuel lines checked for leaks. From 9a8678cdda9f95aa4bda6d1925f8b7a3ceae018c Mon Sep 17 00:00:00 2001 From: Ensign Pixel Date: Tue, 13 Oct 2026 16:43:00 +0200 Subject: [PATCH 107/110] fix(routes): correct distance from Venus to Mercury --- nav.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nav.py b/nav.py index 517ef1f..6adcb9b 100644 --- a/nav.py +++ b/nav.py @@ -17,7 +17,7 @@ DISTANCES = { ("gateway", "venus"): 41.0, ("mars", "phobos"): 0.01, ("mars", "deimos"): 0.02, - ("venus", "mercury"): 50.0, + ("venus", "mercury"): 48.0, ("mars", "ceres"): 265.0, ("gateway", "milliways"): 42.0, ("ceres", "vesta"): 96.0, From dc213505e78c7d9e5b5a7b02454f430e3630691a Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Wed, 14 Oct 2026 01:01:00 +0200 Subject: [PATCH 108/110] chore(engines): fuel lines checked for leaks --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index fe260b2..2b7513e 100644 --- a/maintenance.md +++ b/maintenance.md @@ -59,3 +59,4 @@ Newest entries at the bottom. - 2026-10-11: Antenna realigned. - 2026-10-12: Thrusters test-fired. - 2026-10-13: Fuel lines checked for leaks. +- 2026-10-14: Fuel lines checked for leaks. From 25e29539ee92ab72867ea373219a8abec7a23510 Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Wed, 14 Oct 2026 14:36:00 +0200 Subject: [PATCH 109/110] chore(hull): hull inspection, no leaks --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index 2b7513e..a4b4437 100644 --- a/maintenance.md +++ b/maintenance.md @@ -60,3 +60,4 @@ Newest entries at the bottom. - 2026-10-12: Thrusters test-fired. - 2026-10-13: Fuel lines checked for leaks. - 2026-10-14: Fuel lines checked for leaks. +- 2026-10-14: Hull inspection, no leaks. From 23b67e3f60486e337d78f8da64484069fd6d8d2d Mon Sep 17 00:00:00 2001 From: "Lt. Byte" Date: Thu, 15 Oct 2026 01:53:00 +0200 Subject: [PATCH 110/110] chore(safety): escape pod batteries charged --- maintenance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance.md b/maintenance.md index a4b4437..93f3284 100644 --- a/maintenance.md +++ b/maintenance.md @@ -61,3 +61,4 @@ Newest entries at the bottom. - 2026-10-13: Fuel lines checked for leaks. - 2026-10-14: Fuel lines checked for leaks. - 2026-10-14: Hull inspection, no leaks. +- 2026-10-15: Escape pod batteries charged.