Skip to content

v1.1.0

Choose a tag to compare

@Lazy-Beee Lazy-Beee released this 20 May 16:05
· 63 commits to main since this release

New

  • Windows x64 onefile binaries ship as release assets — no Python install needed. Copy config.example.json next to the exe as config.json and run.
    • batch_simu_tui.exe (~35 MB, Textual TUI)
    • batch_simu_cli.exe (~12 MB, interactive CLI)
  • Per-Add exe snapshot: each Add takes its own copy of the simulator exe, so recompiling mid-batch only affects cases queued after the rebuild. Cases added in the same Add share one copy; reference-counted cleanup runs on Remove / Reset / app exit.
  • Copy log button on the Running and case-log tab toolbars (Textual's click-drag selection does not work on RichLog — this provides a reliable cross-terminal OSC-52 copy path).
  • Close button on case-log tabs.
  • Drag-target indicator + Clear buttons next to the Simulator and Scene inputs. The next paste / drop lands in whichever input you last clicked or Tab-focused.
  • OMP / MPI numeric inputs gray out when their switch is off.
  • TUI "Setup" tab renamed to Queue; redesigned with bold field labels, muted hints, accent-coloured queue-table border, consistent vertical breaks, and a progress bar with its own bottom margin.
  • Case-log tab now mirrors the Running tab's three-row header (case / simulator / stats + Copy) and the same accent border on the log panel.

Changes (potentially breaking for callers)

  • CLI script renamed: batch_simu.pybatch_simu_cli.py. Update any wrappers that invoke the CLI by name.
  • Queue-table column "Exe" → "Simulator" (UI label only).
  • Tab "Setup" → "Queue"; the F1 footer label follows.

Fixes

  • Simulator hang from unread stderr PIPE. stderr is now merged into stdout so the existing reader drains both streams; stdin is DEVNULL to avoid simulators stalling on accidental input reads.
  • Footer key order shifting when an Input was focused — Ctrl+X (Stop) and Ctrl+W (Close case tab) are now show=False so they no longer shuffle their visible position depending on focus.

Removed

  • Replay-mode fake simulator. Synthetic mode covers the manual testing path.

Internal

  • simulation.py:_app_root() resolves config.json correctly in both frozen-exe and source-tree modes (PyInstaller sets sys.frozen).
  • build.bat: one-step PyInstaller chain (--onefile, --collect-submodules textual so Textual's lazy widget loading survives freezing).