Introduce support structures (roof supports) and a stress system that
propagates from bases through tunnels, causing collapses when stress
reaches 100 %. Add auto‑support feature with toggleable tasks, new
keybindings (Tasks, AutoSupports, Stress), and a support‑building tab.
Implement collapsed tunnels, support work progress, and related UI
rendering (stress view, auto‑support indicators). Extend board resize
logic, update game state structs, and adjust keybinding actions. Update
documentation (README, AGENTS, CODE_MAP, PROGRESS, TESTING) to reflect
new features. Add flake.nix dependencies (bash, gitea‑actions‑runner,
docker). Add extensive tests for tunnel stress, support building,
auto‑supports, and related mechanics.
- Add selection indices and option lists to SkirmishState.
- Implement `cycle_popup_option` and expose Left/Right actions in
keybindings.
- Introduce `cancel_focused_tasks` in BoardState for Delete handling.
- CellWidget now displays recruitment progress on Base structures.
- Update README and documentation to describe new tabs and arrow
navigation.
- Adjust test counts and add extensive task‑cancellation tests.
- Replace Ctrl+Space with `b` and Alt+Space with `r` in README and
documentation.
- Remove the old Alt+Space recruitment keybinding and adjust key
handling code.
- Revamp skirmish view to display colored lines and updated status
messages.
- Increase test suite to 83 tests and update test expectations for new
shortcuts.
- Update flake.lock with the latest revision and hash.
- Adjust rustfmt.toml to set tab_spaces = 4.
- Reformat imports, struct definitions, function bodies, and match arms
across the project to match the new style (aligned fields, added
spacing, etc.).
- Ensure all code complies with the updated rustfmt settings.
- Updated CLI, README and documentation to use `--starting-metal` with
`--starting-iron` retained as an alias.
- Introduced `Resources` struct and constants for wood delivery and mine
production.
- Added new structures `Mine` and `MineConstruction` with cost,
production
and cancel logic.
- Implemented building view for constructing mines and recruitment view
for spawning miners.
- Extended keybindings with `Building` and `Recruitment` actions and
updated
action availability logic.
- Modified game state, board, units and UI widgets to handle metal
resources
and new construction mechanics.
- Updated tests and increased total test count to 82, covering
resources,
construction, recruitment and context‑aware keybindings.
Introduce a new CI workflow `.gitea/workflows/packages.yml` that builds
deb, rpm, AppImage, Flatpak and AUR packages on push and PR events.
Add packaging helpers (`build.sh`, `stage.sh`, spec file, PKGBUILD,
desktop entry, SVG icon) and supporting assets under `packaging/`.
Update `.gitignore` to ignore the generated `dist` directory.
Expand documentation (CODE_MAP, AGENTS, PROGRESS, TESTING and new
PACKAGING.md) to describe the packaging process and its limitations.
Adjust `src/app/threads/audio.rs` and `tests/audio.rs` imports to
support loading audio files from installed package layouts.
- Document new Rust formatting standards in AGENTS, CODE_MAP, and
PROGRESS.
- Add rustfmt.toml with style 2024, 2‑space indents, 100‑char width, LF
endings.
- Apply consistent 2‑space indentation and ordering across source files.
- Minor clean‑up of imports and whitespace to match the new style.
Introduce a new MovingTask type for movement segments and extend
the Tasks enum
to include it. Add total‑step tracking and a get_total_progress default
in the
Task trait, and implement the corresponding methods for MovingTask.
Update
units to allow coordinate changes via set_coords, add stone damage
handling,
and adjust board advancement logic to use the new task system. Update
UI
code to display step and total percentages in the Tab panel. Expand
documentation (README, AGENTS, CODE_MAP, PROGRESS, TESTING) to describe
digging
and moving, and add extensive tests (including tests/digging.rs) for the
new
behaviour.
- Introduce a comprehensive test suite (cli, app, board, tasks, audio)
and a
new TESTING.md document describing test execution.
- Correct vertical offset calculation in `BoardState` to use saturating
subtraction and ceiling division.
- Clamp initial `Offset` values to the provided maximum in
`Offset::new`.
- Export `load_audio` from the audio thread module and switch to
`LoopedDecoder` for proper OGG looping.
- Update several crate versions: clap, ratatui, log, rodio, and
bitflags.