You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.py → batch_simu_cli.py. Update any wrappers that invoke the CLI by name.
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).