Skip to content

Releases: Thiesi/Voidrunner

Voidrunner v1.7.1: Recent results

Choose a tag to compare

@github-actions github-actions released this 28 Oct 19:03
0ca8374

Voidrunner v1.7.1 follows up v1.7.0's wide console: a log of recent results in its spare space, and no blank flash before the scenery draws.

What's new

  • RECENT results on a wide console (#46). From 130 columns, a small panel in the window beside the console lists the last few results, newest first. Each keeps the ● done, ▲ refused or ◆ said mark and color it had in the status line. The result the page's border is showing is left out, so nothing is read twice.
    • Placement: the panel stays in the top quarter of the window, above the station, planet or contact. A short window shows fewer entries, or none. In a fight it takes the red alert glass.
    • Lifetime: the log lasts for the session and is not saved. New Game+ starts with an empty log.
    • Below 130 columns nothing changes.
  • Fix: no blank flash on wide terminals (#50). The screen was cleared before a new place's scenery was composed. At 132x50 that left the screen blank for about 0.6s. The scenery is now composed first, and the clear and the picture go out together, so the old screen stays up until the new one replaces it. Measured from the clear to the first scenery byte: 540-625ms before, 0ms now. Reported by the NetBBS gallery.
  • One fuel price (#48). The 6cr/unit fuel price is now one constant behind every figure and text that shows it, including the Pilot Guide. Nothing plays differently.

NetBBS: saved data unchanged; netbbs.json unchanged since v1.5.0. Runs on NetBBS 7.31.0 or later.

Upgrading

Replace voidrunner.py. Nothing else changes. The release still carries netbbs.json and SHA256SUMS.

Validation

  • Tests: 3,067.
  • CI: Python 3.11 and 3.13 on Linux and Windows. The release workflow ran the suite again before publishing.
  • Code review: Claude reviewed #49, #50 and #51. Each review's findings were fixed. The one real bug: the results log carried the previous career's results into New Game+.
  • Release files: both assets match SHA256SUMS and are byte-identical to the tag.

Full changelog: v1.7.0...v1.7.1

Voidrunner v1.7.0: Data sheets

Choose a tag to compare

@github-actions github-actions released this 28 Oct 16:11
dd9dcd8

Voidrunner v1.7.0 is data sheets. Dense screens that were paragraphs are now labelled rows and tables, with the figures you decide on picked out in color. The ship's computer also works out more for you: which contracts are about to expire, whether a route arrives in time, what fuel a route needs, and what a crew task still needs.

What's new

  • Data sheets (#39).
    • Contract page: CHECKS rows for cargo, hold, fuel, deadline, danger and cash. Each row ends in ● fine, ▲ a problem, ◆ worth knowing or ? unknown. MONEY runs from payout to net, and one dim footnote covers what every estimate leaves out.
    • Contract route: the same sheet, with a LAST HOP section after each flown leg.
    • Encounters: derelicts and distress calls list one option per row. Good odds are green, middling amber and poor red. Payouts are green, and risks bold red.
    • Combat: the bars drain in place. Incoming damage, the odds of each choice, and bribe and surrender costs stand out from the text around them.
    • Survey, crew task, crew roster, Archive: labelled rows and tables in place of sentences.
    • Status (Pilot Record): job and log counts on the views row, the balance the next rank needs, the crew under the ship, and career paths as a table. All the explanations are one dim NOTES block.
    • Command Deck results: journey results show the place bold and the detail dim.
    • Narrow terminals: at 40 columns the sheets stack their columns. Nothing is dropped.
  • Wide console. From 130 columns, the console grows up to 112 wide and keeps 30 columns for the canopy. Up to 129 columns, nothing changes.
  • The ship's computer, parts two and three (#41).
    • Due HERE: docking at a delivery target without enough cargo says how short you are and whether this market sells it.
    • Promised cargo: the sell prompt splits what's promised to contracts from what's spare, and asks before selling promised cargo. Contract pages no longer count cargo another contract is owed.
    • Futures: each matured order says where it waits. One still waiting here means the hold is too full.
    • Deadlines: an untracked contract within 3 days of its deadline, or one whose route can't make it, gets a deck row. Example: "Contract #2 expires in 2 days, 3 jumps away (late)". Each chart departure shows the soonest deadline it leads toward, e.g. #2 2d.
    • Crew tasks: the deck shows progress and where to hand a task in, or that it's ready here. The market names Machinery the engineer needs, and workshop materials on one dim line.
    • Route fuel: the yard shows what the tracked contract's route burns and what to buy: "3 jumps, 14 fuel; tank 9, buy 5 (30cr)". It counts refuel stops when the route burns more than a full tank.
    • Upgrades: the deck's Yard entry says how many upgrades you can afford now.
  • Fix: a 40x12 freeze. A page with room only for a section rule and a table heading passed them from page to page forever. It could happen when a long result was showing as the Status screen opened. Now fixed.

NetBBS: saved data unchanged; netbbs.json unchanged since v1.5.0. Runs on NetBBS 7.31.0 or later.

Upgrading

Replace voidrunner.py. Nothing else changes. The release still carries netbbs.json and SHA256SUMS.

What's next

  • #46: a log of recent results in the wide console's spare space.
  • #48: one named constant for the fuel price.

Validation

  • Tests: 3,056.
  • CI: Python 3.11 and 3.13 on Linux and Windows; the release workflow ran the suite again before publishing.
  • Code review: Claude reviewed #43 and #47; their findings were fixed, or filed as issues. #44 was play-tested. #44 and #45 had no review.
  • Release files: both assets match SHA256SUMS and are byte-identical to the tag.

Full changelog: v1.6.0...v1.7.0

Voidrunner v1.6.0: The ship's computer

Choose a tag to compare

@github-actions github-actions released this 27 Oct 01:28
2044526

Voidrunner v1.6.0 is the ship's computer: the first fixes from the v1.5.0 playtest. The game now does the small bookkeeping a pilot used to do in their head, and it stops making you press a key to read what just happened.

What's new

  • Return buys the obvious amount (#36).
    • Refuel: Return fills the tanks to what fits and what you can afford. The prompt says so: "Enter buys 9 for 54cr".
    • Repair: Return accepts the offer.
    • Market purchase: Return buys what your contracts still need. With no contract need, Return still cancels, so a slip never fills the hold.
    • Escape always cancels. Irreversible actions, such as abandoning a contract or a hull refit, still need a deliberate Y.
  • The market connects the dots (#37).
    • NEED: a column, shown while contracts need cargo, counts what your deliveries still require after what's aboard. A line under the table names where each goes.
    • PRICE MEMORY: a table points to up to five better prices the ship saw at other stations, with how many jumps away and how old each price is. Cargo a delivery is waiting for is never suggested for sale.
  • A status line instead of "Press any key" (#38).
    • Where: an action's result now rides in the next page's bottom border, beside the session clock. ● means done, ▲ refused, ◆ just said. A result too long for the border takes a row or two above it.
    • How long: it stays while you're on that screen and goes when you move on. An accepted contract is reported on the board you return to.
    • No more waiting after accepting, tracking or abandoning a contract, after a contract refusal, or after a rescue tow. The tow now joins the journey results on the Command Deck.
  • Fixes: dumping contraband now says what it did; before, its message was wiped at once. Tracking a contract now names which one.

NetBBS: saved data unchanged; runs on NetBBS 7.31.0 or later.

Upgrading

Replace voidrunner.py. Nothing else changes. The release still carries netbbs.json, unchanged since v1.5.0, and SHA256SUMS.

What's next

  • #41: more ship's-computer hints, such as a "due here" alert at a delivery target and a warning before selling promised cargo.
  • #39: glanceable data sheets and a wide layout for dense screens.

Validation

  • Tests: 3,029.
  • CI: Python 3.11 and 3.13 on Linux and Windows.
  • Code review: Claude reviewed both PRs (#40, #42) over five rounds. Two real bugs in the status line's lifetime were found, fixed and pinned by tests that fail without the fixes.
  • Release files: both assets match SHA256SUMS and are byte-identical to the tag.

Full changelog: v1.5.0...v1.6.0

Voidrunner v1.5.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 18:05
c512546

Voidrunner v1.5.0 is a visual overhaul, "through the canopy" (#30, #31). Every screen is now the cockpit console on tinted glass, in front of a picture of where the ship is. Nothing about how the game plays has changed.

What's new

  • The canopy.
    • Docked, you see the system's world and its station, with running lights in its trade's color.
    • In a fight, the enemy ship sits under a red lock, and the console turns red with it.
    • Between systems, you see the lane.
    • The sky's light follows the system's danger, from calm indigo to red.
    • On a wide terminal the picture fills a window beside the console. At 80x24 it's a band below it.
  • The star map is a chart. Explored space glows in its trades' colors, with lanes, the plotted route, and rings for your ship and objective. It reveals nothing the old grid didn't.
  • Combat at 80x24: every option is on the first page (#28).
  • Instruments: slim gauge lines replace solid block bars, and the ship is the scenes' own pixel-art hull, with scorch marks for damage.
  • Title screen: after two seconds it comes alive for up to a minute.
  • Node calendar (#27): career dates follow the node's timezone, and are shown in the date part of its datetime_format (NetBBS 7.41.0 or later). They're still stored in ISO format.
  • Fixes: long rows in list pickers stay on the console glass (#33), and the new-pilot page states the same starting terms the career is created with (#34).

NetBBS: saved data unchanged; runs on NetBBS 7.31.0 or later.

Fallbacks and switches

  • Truecolor (auto, fast): the full experience.
  • 256 colors: the same pictures on a black sky.
  • basic, mono, plain: no background picture, but the new header, gauges and layouts.
  • CP437, and fonts without quarter blocks: half-block pixels (NetBBS's quadrants: false).
  • SysOp switches: DOOR_CANOPY=0 turns the pictures off, and DOOR_PIXELS=half forces half blocks.
  • Bandwidth:
    • a full canopy page is about 15 KB at 80x24 and 30 KB at 120x36, against about 2 KB for a plain page;
    • a page turn under the same sky is about 5 KB.

New: a NetBBS door profile (#29)

The release now carries netbbs.json, covered by SHA256SUMS. A SysOp running this release before NetBBS bundles it can import the file with [J] Import JSON and then correct its paths. It:

  • follows the caller's terminal and handles resizes;
  • admits several pilots at once (the game still allows one session per pilot);
  • leaves VOIDRUNNER_SAVE_DIR to NetBBS.

Upgrading

Replace voidrunner.py. Nothing else changes.

Validation

  • Tests: 2,999.
  • CI: Python 3.11 and 3.13 on Linux and Windows.
  • Code review: Claude reviewed each PR and every commit in #31. The findings were fixed or triaged on the PRs.
  • Release files: both assets match SHA256SUMS and are byte-identical to the tag.

Full changelog: v1.4.0...v1.5.0

Voidrunner v1.4.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 05:51
486261b

Voidrunner v1.4.0 reports what pilots earn to NetBBS, so the rest of the BBS can see it (#25, #26).

NetBBS game events (door API 5, NetBBS v7.31.0 or later)

  • Announcements: when a SysOp switches game events on for this door, the node's chat bot announces promotions ("Nib reached Merchant Captain in Voidrunner.") and silver or gold achievements. Bronze achievements are not announced.
  • !top voidrunner: answered from the Hall of Fame's wealth ranking: the top ten pilots by best credits, with their ranks. It updates whenever the order changes.
  • Only live results: a career that unlocks old achievements the first time it opens in a new version sends none of them, and a save that fails reports nothing.
  • Nothing elsewhere: on Synchronet, Mystic, standalone play, or NetBBS with events off, the door writes no files and plays exactly as before.

Full changelog: v1.3.0...v1.4.0

Voidrunner v1.3.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 23:38
ad6ae6c

Voidrunner v1.3.0 draws the viewport as full-screen pictures and makes text-heavy screens easier to read.

Viewport pictures (requested by the first external SysOp, #23)

  • What they show: the Viewport is drawn in the same half-block pixels as the in-flight scenes.
    • [1] Ship: your hull, lit along its plating, with the drive burning and the world you're docked at behind it. Damage shows as scorch marks, then sparks, then smoke and a cockpit alarm.
    • [2] Station: your station, with its ring turning and traffic on its approach.
    • [3] Discovery: each of the four landmarks drawn as itself, or a scanner sweeping empty space.
  • Idle and keys: a picture opens its blast shutters and idles until you press a key. That key is the command, so nothing gets swallowed. The idle stops after about 21 seconds.
  • Presets: fast and DOOR_SCENES=0 get a still picture. mono, plain and terminals too small for a picture keep the ASCII portraits.
  • Wire size: opening plus the whole idle stays under 100 KB at 80×24 in truecolor.

Scenes

  • Each scene now holds its last frame for 2 seconds instead of 0.8, and any key still skips it (#23).

Colors (#22, #24)

  • Prose: running text has its own cool grey and is no longer the brown label color. This affects the Pilot Guide, the viewport and contract terms.
  • Label/value rows: in rows shaped Label: value, the label and the value are colored apart.
  • Gauges: on the Command Deck, the hull condition takes its severity color (Intact green, Damaged amber, Critical red). The words after the other gauges' numbers are prose.
  • Journey Resumed: the pilot's callsign, the destination and the day are highlighted.
  • Achievements:
    • Descriptions are prose, with their numbers in bold and credit amounts in gold.
    • Progress is a gradient. The goal is in its medal's color, and the count so far moves from pink toward that color as you close in.

Full changelog: v1.2.2...v1.3.0

Voidrunner v1.2.2

Choose a tag to compare

@github-actions github-actions released this 13 Oct 21:42
35dcab6

Voidrunner v1.2.2 keeps the Pilot Record's action bar on one row at 80 columns.

  • Since v1.2.0 added [A] Achievements, the Pilot Record's action bar wrapped at 80 columns (#20). The full bar is now used only where it fits. Narrower terminals get [<] [>] for paging and [A] Awards, which keeps the bar at 79 columns, the same as before v1.2.0. Keys and page titles are unchanged.

Full changelog: v1.2.1...v1.2.2

Voidrunner v1.2.1

Choose a tag to compare

@github-actions github-actions released this 13 Oct 16:37
a101548

Voidrunner v1.2.1 fixes how classic drop files handle control characters in caller names.

  • Strip C1 control characters (U+0080–U+009F) from the alias, real name and node name in UTF-8 DOOR32.SYS and DOOR.SYS files (#15). Previously, U+009B (CSI) or U+009D (OSC) could reach a UTF-8 terminal. Worse, a caller who accepted such an alias as their callsign hit "Save failed" at the first save and couldn't keep a career. An alias that cleans down to nothing falls back to the real name. CP437 files are unaffected.
  • Also drop C1 controls from caller-derived text on screen rows, such as names from score files or older saves.
  • Make a timing-sensitive splash test reliable on Windows CI.

NetBBS is unaffected by the drop-file issue, since it passes NETBBS_DOOR_INFO.

Full changelog: v1.2.0...v1.2.1

Voidrunner v1.2.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 16:11
759cc96

Voidrunner v1.2.0 brings play to life with full-screen scenes at the moments a voyage turns on, and adds account-wide achievements with board-wide rarity. It is still a single file using only the standard library.

  • Play short full-screen animated scenes during play, built on the launch splash's machinery. Your own hull class flies in each one:
    • Voyages: the jump, docking (each economy's station has its own look), a contact, a kill, the loss of your ship, an escape, and a customs sweep.
    • Encounters: derelict salvage, distress rescues, trader data bursts, landmarks, and the stranded tow.
    • Milestones: hull refits, promotions, faction emblems, and retirement.
  • Any key skips a scene and is consumed, so it can't act on the next screen. Scenes never wait for a key, play only after the save they show, and never replay on resume. The fast, mono and plain presets have no scenes; DOOR_SCENES=0 turns them off for a whole board.
  • Pay contracts finished on arrival in the docking caption.
  • Add 66 achievements in 12 groups, kept across retirement and measured across every career. Existing careers unlock what they have already done at their first launch; hidden achievements stay secret until earned. Pilot Record [A] Achievements lists progress and how many of the board's pilots hold each one, read from the existing scores/ records.
  • Saves gain an additive, validated accolades record, omitted until something is earned. No migration is needed.

Full changelog: v1.1.0...v1.2.0

Voidrunner v1.1.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 16:49
60d7bd6

Voidrunner v1.1.0 adds classic BBS portability and graceful host time limits while retaining the single-file, standard-library-only distribution for NetBBS.

  • Read caller metadata from DOOR.SYS and DOOR32.SYS; NetBBS JSON metadata retains precedence.
  • Add automatic, UTF-8 and CP437 terminal encoding with saved display preferences. NetBBS continues to receive UTF-8.
  • Support inherited DOOR32 sockets with telnet filtering and checkpointed disconnect handling.
  • Display the host's remaining time, warn near expiry, and save before returning to the BBS, including idle prompts and storage-lock waits.
  • Preserve NetBBS save-directory and backup integration defaults, and add regression coverage for terminal resizing.

For NetBBS vendoring, use the attached voidrunner.py unchanged and verify it against SHA256SUMS. The source commit is 60d7bd6ee2ec30bf151c93b004f4d7c1ef521482.

Validation: 2,762 local tests passed, all four Linux/Windows CI jobs passed, and Codex review findings were fixed and re-reviewed. The release workflow reruns the suite and verifies that the attached file is byte-identical to the tagged source.

Real Synchronet field validation remains pending in #6.

Full changelog