Skip to content

v0.4.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Nov 23:10
· 228 commits to main since this release
Immutable release. Only release title and notes can be modified.
2eb988b

Pre-release: this is a 0.x version and may change without notice.

Added

  • Optional fail2ban instructions and a disabled journal jail/filter for refused HTTP status tokens, with offline
    synthetic log checks. Live host bans are unverified; the example leaves game TCP/UDP outside its scope.
  • A recomp developer integration guide with pinned runtime sources, callback/lifecycle and peer-transport guidance.
    A minimal C HELLO/search example runs in the required native-client check; C API comments now clarify blocking
    writes, diagnostic state and reply-wait timeout limits without changing implementation or the wire protocol.
  • Native optional HTTP status in the shared Windows/Linux terminal app: server totals, public-room members/age and
    leaderboard summaries, using a local Bearer-token file. Requests and displayed data are bounded, redirects/proxies
    are disabled and failures fall back to the game protocol. Initial refresh and changed-source sequencing are corrected.
  • Linux desktop startup for the shared terminal app: open an installed terminal when no TTY is attached, with literal
    arguments and a recursion guard. A desktop entry and the site's favicon artwork are provided as installation inputs;
    no release assets are added, and the Windows build retains its normal console behavior.
  • Bounded per-source UDP admission (per IPv4 address, per IPv6 /64) with -max-udp-rate / RE_PSN_MAX_UDP_RATE (default 1000 packets/second,
    same-size burst; 0 disables it), shared by probes and relay datagrams. Aggregate udp_drops counters in the
    opt-in /api/stats identify refusal reasons without per-packet logging or source labels. Relay byte/stream budgets
    remain planned; the packet format and token checks are unchanged.
  • /healthz on the opt-in status listener, protected by the existing HTTP token. It reports game TCP/UDP readiness
    without player data. Shutdown marks the server unready and closes accepted client/relay sockets with bounded cleanup;
    restart behavior and supervisor settings are documented in docs/restarts.md.
  • A stock Caddy 2 example for the HTTP status page, included with the deployment examples. It defaults to loopback;
    game TCP and UDP stay direct. The example has not been run or validated with Caddy.
  • The opt-in server status page now matches the website and terminal app's gruvbox-material palette and monospace
    framing, with Overview/Rooms/Leaderboards tabs, System/Light/Dark, text size, spacing and contrast-checked custom colours.
    Appearance is local to each browser. Live refresh can be paused and retains the last snapshot on failure; without
    JavaScript both tables remain visible and reload as before. The status token is unchanged; the fields of /api/stats
    are unchanged by this page (the udp_drops counters are a separate addition).
    Embedded assets normalize line endings before rendering and CSP hashing. Polling preserves full 64-bit score and
    identifier values without changing their JSON types on the server.
  • An offline repository check for tracked root/top-level layout, local Markdown links and anchors, and static
    workflow/Dependabot input paths. Run python3 tools/repo_check.py; CI runs it with the documentation checks.
  • A focused loopback check: python3 tools/loopback.py runs the existing native C-client and Go app-client conformance
    tests against temporary loopback servers. Required skips and timeouts fail; --race is optional. See docs/testing.md.
  • Numbered file-style output in the website's terminal view: a header, frame, line-number gutter, syntax-style colours
    and wrapped continuation rows with an empty gutter. Headers and numbers are excluded from text selection. See
    docs/website.md for controls and browser-test instructions.
  • Optional install scripts: scripts/install.sh (POSIX sh; Linux amd64 and arm64) and scripts/install.ps1 (Windows amd64;
    written for PowerShell 5.1 and 7, tested on 7 only) install the server for the current user from a GitHub release, the newest one (pre-releases included)
    or a pinned --version / -Version. They check the download against SHA256SUMS and stop before installing anything on a
    mismatch or a missing line, need no sudo or administrator rights, edit no shell profile, and change the user PATH only with
    -AddToPath on Windows. macOS is refused (there are no macOS builds). --dry-run / -DryRun downloads nothing. Tested
    with scripts/test-install.sh and scripts/test-install.ps1 against a fake release. See docs/installing.md.
  • .github/FUNDING.yml, which gives the repository a sponsor link (Ko-fi).
  • Tests for room kick behavior, contributed by Tzeentchnet.

Changed

  • The website's pager trial is removed: the pager command, its keys, buttons and status bar, and the saved pager
    setting are gone, and long output is shown in full in the scrolling output pane. Numbered file output is unchanged.
  • The README install section recommends the release archives and shows an optional quick install: the installer is
    fetched from a pinned revision of the repository, its hash is checked, and it is read before it is run.
  • The release carries seven assets: the three archives, the AppImage, SHA256SUMS, and the two install scripts as
    install.sh and install.ps1, byte for byte the tagged scripts/ files, with their checksums in SHA256SUMS. Check one
    with sha256sum -c SHA256SUMS --ignore-missing before reading and running it. scripts/check-release.sh --assets checks a
    build holds exactly the seven, and release-check compares the published scripts with the tag.

Files

Each archive holds one self-contained server binary (no installer, no runtime needed), LICENSE, NOTICE.md and an examples folder (settings file, systemd unit, proxy configs).
The x86_64 AppImage holds the same Linux binary and examples as one runnable file; it needs FUSE to mount, or run it with --appimage-extract-and-run. It is not signed.
install.sh (Linux) and install.ps1 (Windows) are the install scripts from this tag, listed in SHA256SUMS too: download one with SHA256SUMS, check it, read it, then run it (see docs/installing.md).
Check a download with sha256sum -c SHA256SUMS --ignore-missing.

c9e8a56940d8e828b0e8a096eac9135c8a0cd8057976756acf43fd5e45297a53  re-psn-v0.4.0-windows-amd64.zip
86bc5678b79f089b7bdabe284d562df85c85c0964b7dedfd941a29e9c57f6e8b  re-psn-v0.4.0-linux-amd64.tar.gz
90766c21d90468741105800ad1687f0e33d4c742f60f04c7144eac2404498ef0  re-psn-v0.4.0-linux-arm64.tar.gz
fef1f7f9a424275e45cbca80398477b4440c82b87c106ce6aa7626f3bbce1772  install.sh
98ab633eeeffaecc6968e2fa342830ad4ceed4a5d2397a19dfcfb28e16d9d3a7  install.ps1
acb0bf09dc5f5df1259e612618e3f39b6e3d497ef70fe4e219666ec7796ea328  re-psn-v0.4.0-x86_64.AppImage

Developed with AI agent assistance.

Next release: when ready