Skip to content

Releases: kkoishichan/Rustris

v0.6.4

Choose a tag to compare

@kkoishichan kkoishichan released this 28 Feb 11:31

Changes

  • Change default versus port from 3000 to 21711
  • Add firewall hint on host lobby screen
  • Add troubleshooting section to README
  • Add recommended terminal settings to README

Binary

  • rustris-v0.6.4-linux-x86_64 — Linux x86_64

v0.6.3

Choose a tag to compare

@kkoishichan kkoishichan released this 27 Feb 20:14

Changes

  • Strip symbols from release binary (1.4MB → 1.1MB)

Binary

  • rustris-v0.6.3-linux-x86_64 — Linux x86_64

v0.6.2

Choose a tag to compare

@kkoishichan kkoishichan released this 27 Feb 19:49

Changes

Refactoring

  • Deduplicate repeated code patterns across codebase (shared helpers for formatting, board borders, time display, audio toggles, handshake logic, records insertion, settings rendering)
  • Rename srs to srs_enabled, merge VersusSettings into Settings
  • Clean up module structure across codebase
  • Misc code quality improvements

UI

  • Reorder versus forfeit menu: Continue/Forfeit first, BGM/SFX below

Docs

  • Add tree-drawing characters to project structure in README
  • Update project structure documentation

Binary

  • rustris-v0.6.2-linux-x86_64 — Linux x86_64

v0.6.1

Choose a tag to compare

@kkoishichan kkoishichan released this 27 Feb 17:37

Patch

  • Deduplicated BGM score data: store one 128-beat cycle instead of 512 beats of repeated data (2124 → 260 lines)

Binary

  • rustris-v0.6.1-linux-x86_64 — Linux x86_64

v0.6.0

Choose a tag to compare

@kkoishichan kkoishichan released this 27 Feb 17:03

What's New

Buffer Zone & Garbage Out

  • Board expanded to 40 rows internally (20 visible + 20 buffer) per Tetris guideline
  • Implemented garbage out detection: game over when blocks remain above the visible area after garbage rise
  • Garbage bar now animates smoothly during garbage rise instead of dropping instantly

Cross-Platform Fixes

  • Fixed double key input on Windows (filter KeyEventKind::Press)
  • Added gateway/IP detection for macOS and Windows (previously Linux-only)
  • Show error kind (e.g. ConnectionRefused) on connection failure instead of generic message

Versus Mode Improvements

  • Forfeit menu is now non-blocking — gravity, network, and animations continue while the overlay is shown
  • BGM/SFX toggles directly in the forfeit menu
  • Versus mode forces default settings (no custom settings carry over)

Menu Navigation Overhaul

  • Split IP and Port into separate input fields (fits 20-char board width)
  • Added Back (previous page) and Menu (main menu) distinction across all screens
  • Left/Right arrows switch game mode from any item on the main menu
  • Removed Quit from all sub-pages (only main menu has Quit)
  • Renamed Cancel → Menu / Back for clarity

Robustness

  • Removed potential crash points: replaced unwrap() calls with safe alternatives
  • Fixed wrapping_sub → saturating_sub to prevent overflow
  • Added bounds check for piece color lookup
  • Fixed clippy warnings

Docs

  • Added demo GIFs (solo & versus) to README via Git LFS
  • Added full menu navigation tree to README

Binary

  • rustris-v0.6.0-linux-x86_64 — Linux x86_64

v0.5.2

Choose a tag to compare

@kkoishichan kkoishichan released this 26 Feb 19:24

What's New

Cross-platform

  • Gate Unix-only stderr suppression behind #[cfg(unix)] for cross-platform audio compilation

Refactoring

  • Split game/mod.rs into movement, scoring, animation submodules
  • Move BoardSnapshot construction into from_game() method
  • Remove CLI --host/--join args (use menu instead)

Binary

  • rustris-v0.5.2-linux-x86_64 — Linux x86_64

v0.5.1

Choose a tag to compare

@kkoishichan kkoishichan released this 26 Feb 18:24

What's New

Network Hardening

  • Protocol version handshake — mismatched clients show a clear error instead of crashing
  • 5s connect timeout and 10s recv timeout prevent indefinite hangs
  • 64KB message length guard rejects malformed packets

Non-blocking Garbage Animation

  • Garbage rise animation (40ms/line) no longer freezes the game loop
  • Network messages and input (including Ctrl+C) are processed during animation

Cross-platform

  • LAN IP detection gated behind #[cfg(target_os = "linux")]; other platforms fall back gracefully

Tests

  • 39 unit tests covering garbage queue, attack calculation, piece spawning, 7-bag randomizer, board fitting, garbage receive, and scoring (T-spin, B2B, combo, all clear)

Binary

  • rustris-v0.5.1-linux-x86_64 — Linux x86_64

v0.5.0

Choose a tag to compare

@kkoishichan kkoishichan released this 26 Feb 17:00

What's New

Versus Mode

  • Lobby UI redesign — Host/Join/input screens now use consistent TUI with selectable menu items and cursor indicators
  • LAN IP display on host lobby screen for easy sharing
  • LAN IP detection fix — read default gateway from /proc/net/route to avoid Docker bridge addresses
  • Garbage lines now rise one by one with per-line SFX instead of appearing all at once

Controls

  • Ctrl+C force quit from any screen with clean terminal restore
  • Input field alignment — port input centered, address input left-aligned, both fixed position during typing

Refactoring

  • All modules moved into proper directory hierarchy (audio/, game/, ui/menus/)
  • Extracted shared menu_nav/play_menu_sfx helpers, unified text input, resolved all clippy warnings

Binary

  • rustris-v0.5.0-linux-x86_64 — Linux x86_64

v0.4.0

Choose a tag to compare

@kkoishichan kkoishichan released this 25 Feb 21:14

What's New

LAN Versus Mode

  • 1v1 multiplayer over TCP (--host <port> / --join <addr:port>)
  • Guideline garbage system with attack tables, combo bonus, B2B, and Perfect Clear
  • Cancel-before-send mechanic: clearing lines absorbs pending garbage
  • Dual-board rendering with garbage indicator bar
  • Lobby, countdown, result, forfeit, and rematch screens
  • Also accessible from the in-game menu (Versus mode)

Binary

  • rustris-v0.4.0-linux-x86_64 — Linux x86_64

v0.3.0

Choose a tag to compare

@kkoishichan kkoishichan released this 25 Feb 11:19

What's New

Game Modes

  • Endless mode — play with no goal until game over, with level progression same as Marathon

Leaderboard

  • Persistent top-10 records per mode, stored as JSON via serde
  • Records are only saved under default settings (Marathon goal=150, Sprint goal=40, Ultra time=120, Endless always records)
  • New Records menu accessible from mode select screen

Changes

  • Mode cycle: Marathon → Sprint → Ultra → Endless → Marathon
  • Marathon goal changed from optional to fixed range (10–300), Endless takes over the unlimited role
  • Added serde, serde_json, dirs dependencies

Metadata

  • Added repository, readme, keywords, categories, rust-version to Cargo.toml
  • CI now installs libasound2-dev for ALSA support

Binary

  • rustris-v0.3.0-linux-x86_64 — Linux x86_64