uwarp-space
2026-02-20
SysOp REST API added, 199+ new unit tests, core models migrated to attrs, and xterm upgraded to v6
563 files · 19,302+ · 2,491-
SysOp management REST API
3 files changed
router.pySysOp Management REST API on port 2106test_system.py51-line system test for sysop APIconftest.pySysop test fixtures
- Added SysOp Management REST API on port 2106 (
feat: add SysOp Management REST API) interface behavioral1 file
router.py
- Merged as PR #5 from
sysop-apibranch interface behavioral1 file
router.py
- Added
tests/sysop/test_system.py(51 lines) qualify internal1 file
test_system.py
TW2002 parity — command and UI
10 files changed
movement.pyAutopilot from Move command: typing destination auto-routes the shipinfo.pyPlanet help menu: ? and ! show planhelp.txt box-drawn menupurchases.pyShipyard B/S/E/R sub-menu with correct prompt textbank.pyBank fund transfer: target name, amount, Y/N confirm flowpolice.pyPolice Claim/Post Reward matching TW2002 UI formattavern.pyTavern key-based menu (A/B/C/E/G/T/U/;/Q); CinePlex AttenDroid host, 5 TW2002 moviestrading.pyPort entry menu: Attack/Trade/Quit choices; port trading parity fixesdeploy.pyCloaking device logout prompt (TW2002 parity)display.pyG/K table format and beacon character limitterminal.htmlPregame settings screen expanded; single-keypress menu navigation
- Autopilot from Move command: typing a destination now automatically routes the ship
specify
behavioral
1 file
movement.py
- Planet help menu:
?and!showplanhelp.txtbox-drawn menu decouple behavioral1 file
info.py
- Shipyard B/S/E/R sub-menu with correct prompt text
remediate
behavioral
1 file
purchases.py
- Port entry menu: Attack/Trade/Quit choices with proper offer prompt spacing
decouple
behavioral
1 file
trading.py
- Police Claim/Post Reward matching TW2002 UI format
decouple
errata
1 file
police.py
- Bank fund transfer: target name, amount, Y/N confirm flow
decouple
internal
1 file
bank.py
- Cloaking device logout prompt (TW2002 parity)
decouple
behavioral
1 file
deploy.py
- G/K table format, beacon character limit, Tavern key-based menu (A/B/C/E/G/T/U/;/Q)
margin
errata
2 files
display.pytavern.py
- CinePlex AttenDroid host, 5 TW2002 movies, updated tests
qualify
internal
1 file
tavern.py
- Corp menu C.E.O. capitalization fix
remediate
internal
1 file
registry.py
- Ether probe path traversal, genesis XP/ownership, planet production table
decouple
internal
1 file
resources.py
- Pregame settings screen expanded to match TW2002 format; single-keypress menu navigation
baseline
errata
1 file
terminal.html
- Port trading parity: correct class extraction, skip-buying logic, prompt format
remediate
errata
1 file
trading.py
Core models migrated to attrs
5 files changed
player.pyPlayer model migrated from dataclasses to attrsplanet.pyPlanet model migrated to attrssector.pySector model migrated to attrscontext.pyEngine context state migrated to attrslocking.pyLocking state migrated to attrs
199+ new unit tests
12 files changed
test_planet_rules.py45 tests for planet rulestest_hardware_shipyard.py89 tests for hardware, shipyard, corporation, and encounter rulestest_banking.py58 tests for ranks, banking, bounty, and robbery rulestest_ticks.py66 tests for game maintenance tick functionstest_movement_deploy.py31 tests for movement and deploy rulestest_combat.py25 tests for combat rulestest_core_models.py28 tests for core gameplay modelstest_trading_stats.py23 tests for trade action and commodity validation helperstest_trading_formulas.py39 tests for combat probability and trade pricing formulastest_stats.py21 tests for metrics calculator and data providertest_encounter.py18 tests for entity locking system (EntityKey and LockManager)test_alien_races.py105-line rework of alien races sysop tests
- 45 tests for planet rules
qualify
internal
1 file
test_planet_rules.py
- 89 tests for hardware, shipyard, corporation, and encounter rules
qualify
internal
1 file
test_hardware_shipyard.py
- 58 tests for ranks, banking, bounty, and robbery rules
qualify
internal
2 files
test_banking.pytest_bounty_robbery.py
- 66 tests for game maintenance tick functions
qualify
internal
1 file
test_ticks.py
- 31 tests for movement and deploy rules
qualify
internal
1 file
test_movement_deploy.py
- 25 tests for combat rules
qualify
internal
1 file
test_combat.py
- 28 tests for core gameplay models
qualify
internal
1 file
test_core_models.py
- 23 tests for trade action and commodity validation helpers
qualify
internal
1 file
test_trading_stats.py
- 39 tests for combat probability and trade pricing formulas
qualify
internal
1 file
test_trading_formulas.py
- 21 tests for metrics calculator and data provider
qualify
internal
1 file
test_stats.py
- 18 tests for entity locking system (EntityKey and LockManager)
qualify
internal
1 file
test_encounter.py
- 23 tests for shared engine command helpers
qualify
behavioral
1 file
test_alien_races.py
- 28 tests for decay tick functions (bust, radiation, cloaking, alien)
qualify
internal
1 file
test_ticks.py
- 23 tests for console configuration and hardware catalog helpers
qualify
internal
1 file
test_hardware_shipyard.py
- 41 tests for NPC helpers, theme utilities, and TriCront slot machine
qualify
internal
2 files
test_tricront_helpers.pytest_theme_utils.py
- 44 tests for stats, targeting, and index sync
qualify
internal
2 files
test_stats.pytest_targeting.py
- 19 tests for GameState helper functions
qualify
internal
1 file
test_core_models.py
- 14 tests for maintenance tick helpers
qualify
internal
1 file
test_ticks.py
- 12 tests for ship capture and psychic probe rules
qualify
internal
1 file
test_capture_psychic.py
- 10 tests for psychic probe rules
qualify
internal
1 file
test_psychic.py
- 11 tests for ANSI color conversion utilities
qualify
internal
1 file
test_ticks.py
- 6 tests for MOTD loading
qualify
internal
1 file
test_motd.py
xterm v6 upgrade and mobile terminal
2 files changed
terminal.jsxterm upgraded to v6; mobile font scaling and touch fixesterminal.htmlvisualViewport used for keyboard height tracking; pull-to-refresh suppressed
- Upgraded xterm to v6 (
@xterm/[email protected],@xterm/[email protected]) decouple internal1 file
terminal.js
- Fixed mobile terminal font sizing using
visualViewportfor keyboard height tracking remediate internal1 file
terminal.js
- Auto-scale font to fit 80 columns on any viewport width
decouple
internal
1 file
terminal.js
- Fixed touch scroll, suppressed Chrome input toolbar on mobile
remediate
internal
1 file
terminal.html
- Prevented pull-to-refresh and overscroll on mobile
decouple
internal
1 file
terminal.html
Test infrastructure fixes
3 files changed
test_ssh_transport.pyStale asyncio module-level mark removedtest_multi_session.pytest_21_messages_rest_endpoint made self-contained for xdisttest_file_locking_stress.pyMoved from test_data/ to tests/fixtures/
- Replaced invalid
LogAction.CANCEL/BACKUPwith valid enum values remediate internal1 file
test_multi_session.py
- Made
test_21_messages_rest_endpointself-contained for xdist decouple internal1 file
test_multi_session.py
- Removed stale
asynciomodule-level mark fromtest_ssh_transportdecouple internal1 file
test_ssh_transport.py
- Replaced deprecated
datetime.utcnow(), fixed test return-value warnings qualify behavioral1 file
test_multi_session_e2e.py
- Moved test fixtures from
test_data/totests/fixtures/qualify internal1 file
test_file_locking_stress.py
- Fixed stale test markers and warp slot count bug from attrs migration
qualify
internal
1 file
test_ssh_transport.py
Binary data and QA
2 files changed
game_state.pySector warp slots off-by-one in sqlite.py (6→7); QA report updated_loader_dat.pyData loader fixes