uwarp-space 2026-03-13
uwarp-server frontend CLI removed (119 files), combat/movement/planet modules split, NPC alien AI expanded with pack tactics and grudge tracking, and Playwright web smoke tests added
442 files · 25,798+ · 31,635-

Deletion: uwarp-server Frontend CLI (119 files removed)

2 files changed
  • __init__.py Frontend CLI hierarchy removed: all analyze, edit, generate, maintain, optimize, read, reports, research, serve, tools, transform, validate, visualize, and watch submodules
  • __init__.py CLI entry point consolidated into uwarp package
  • Entire src/uwarp/frontend/cli/ hierarchy removed from uwarp-server: all analyze, edit, generate, maintain, optimize, read, reports, research, serve, tools, transform, validate, visualize, and watch submodules decouple behavioral
    1 file
    • __init__.py
  • TUI (app, detail, hexview, sidebar, table) and web static (dashboard, index, screens, terminal) removed from uwarp-server decouple behavioral
    1 file
    • __init__.py
  • dead server/main.py deleted; uwarp-server CLI entry point removed; haggle/port stock deduplicated between packages deprecate internal
    1 file
    • _optimize_helpers.py

Code Split: Combat

5 files changed
  • __init__.py combat.py (944 lines) split into combat/ package
  • _attack.py Attack logic extracted
  • _attack_paths.py Attack path logic extracted
  • _pvp.py PvP combat logic extracted
  • _retreat.py Retreat logic extracted
  • combat.py (944 lines) split into combat/ package: _attack.py, _attack_paths.py, _pvp.py, _retreat.py, _helpers.py, _registry.py decouple internal
    3 files
    • __init__.py
    • _attack.py
    • _pvp.py

Code Split: Movement

3 files changed
  • __init__.py movement.py split into movement/ package
  • _warp.py Warp navigation logic extracted
  • _tractor.py Tractor beam logic extracted
  • movement.py split into movement/ package: _warp.py, _tractor.py, _helpers.py, _registry.py decouple internal
    2 files
    • __init__.py
    • _warp.py

Code Split: Planet and Corporation

4 files changed
  • _special_construction.py Planet special construction logic extracted (387 lines)
  • _surface_trade.py Planet surface trade logic extracted (201 lines)
  • _utils.py Planet utilities extracted (43 lines)
  • _management_helpers.py Corporation management helpers extracted (72 lines)
  • Planet commands split: _special_construction.py (387 lines), _surface_trade.py (201 lines), _utils.py (43 lines) extracted from planet/management.py decouple internal
    2 files
    • _special_construction.py
    • _surface_trade.py
  • Corporation: _management_helpers.py (72 lines) extracted decouple internal
    1 file
    • _management_helpers.py

NPC Alien AI

3 files changed
  • _npc_states.py NPC state machine module added (244 lines)
  • ai_loop.py AI loop expanded: pack tactics, grudge tracking, retreat logic, regen guard, retreat timeout, pack validation
  • combat.py NPC combat logic expanded
  • _npc_states.py (244 lines) added — NPC state machine module for alien AI instantiate internal
    1 file
    • _npc_states.py
  • ai_loop.py expanded: pack tactics, grudge tracking, retreat logic, regen guard, retreat timeout, pack validation harden internal
    1 file
    • ai_loop.py
  • NPC AI edge cases fixed: grudge expiry, regen guard, retreat timeout, pack validation remediate internal
    1 file
    • ai_loop.py

Playwright Web Frontend Tests

1 file changed
  • Line2.js Three.js, React, xterm, Chart.js, fonts, LineGeometry static libraries added
  • Playwright web frontend smoke tests added and static asset serving fixed qualify behavioral
    1 file
    • Line2.js
  • Static libraries added to uwarp frontend (Three.js, React, xterm, Chart.js, fonts, LineGeometry) instantiate internal
    1 file
    • Line2.js

Parser and Game Data

3 files changed
  • alien.py Dual-format alien parser: handles both TWGS and TW4 data formats (368 lines changed)
  • xnond.py xnond reader updated for format compatibility
  • xnond.py xnond editor updated for format compatibility
  • alien.py reworked as dual-format parser supporting both TWGS and TW4 data formats; TW4 haggle formula added; NPC pack tactics/grudges added decouple internal
    1 file
    • alien.py
  • xnon.py and xnond.py reworked for format compatibility decouple errata
    1 file
    • xnond.py

Security and Bug Fixes

2 files changed
  • comms.py Beacon text sanitized against ANSI injection
  • trading.py sell_to_port write-back now uses original demand, not stock_pct-capped value
  • Beacon text sanitized against ANSI injection — user-provided beacon text can no longer inject ANSI escape sequences harden internal
    1 file
    • comms.py
  • sell_to_port write-back now uses original demand value, not the stock_pct-capped value — port trade demand tracking was incorrect remediate internal
    1 file
    • trading.py

Sysop Compare Test Expansion

7 files changed
  • _tests_bank.py Bank tests (251 lines)
  • _tests_combat.py Combat tests (293 lines)
  • _tests_corp.py Corp tests (412 lines)
  • _tests_planet.py Planet tests (290 lines)
  • _tests_planet_ops.py Planet ops tests (452 lines)
  • _tests_haggle.py Haggle tests (66 lines)
  • _tests_stardock_ext.py Stardock extended tests (441 lines)
  • 19 new sysop compare test modules added covering bank, bank_ext, cim, cim_ext, cim_ext2, combat, combat_ext, comms, corp, corp_ext, deploy, deploy_ext, haggle, navigation_ext, personal, planet, planet_ops, stardock_ext, and trading_ext qualify internal
    5 files
    • _tests_bank.py
    • _tests_combat.py
    • _tests_corp.py
    • _tests_planet.py
    • _tests_haggle.py