Merge pull request 'docs(changelog): cut v0.41.0 section' (#126) from docs/changelog-v0.41.0 into master

This commit is contained in:
2026-07-06 20:27:43 +00:00
+15
View File
@@ -6,6 +6,11 @@ project follows [Semantic Versioning](https://semver.org/).
## [Unreleased]
## [0.41.0] — 2026-07-06
> Consolidates everything shipped since v0.39.0, including the v0.40.0v0.40.3
> patch tags (which were cut from this section without renaming it at the time).
### Added
- **Rules decision record: unlimited stock recycling.** Documented in
@@ -32,6 +37,10 @@ project follows [Semantic Versioning](https://semver.org/).
### Changed
- **Engine plugin modules restructured.** The five oversized plugin files
(card, hud, settings, game, input) are now module directories with their
test suites in sibling `tests.rs` files — no behaviour change; first phase
of the module-split plan (#118).
- **Core type ownership.** Routed all klondike/card imports through
`solitaire_core` and unified local `Suit` / `Rank` with upstream `card_game`
types.
@@ -43,6 +52,12 @@ project follows [Semantic Versioning](https://semver.org/).
### Fixed
- **Safe-area insets now re-polled after app resume.** The inset poller settled
permanently once insets first resolved, so inset changes while backgrounded
(fold/unfold, rotation, gesture ↔ 3-button nav switch) kept stale layout until
the app was killed. Each resume now re-arms a fresh poll window; the cached
value is rewritten only when it actually changed, so unchanged resumes still
cause no relayout flash. (#116)
- **Tableau fill on foldables / tall screens.** The tableau fan now spreads from
each column's total depth (face-down cards included) and refills on the
cold-start deal, every move, and on resize (incl. the Android safe-area-inset