docs(changelog): cut v0.41.0 section

Renames Unreleased to 0.41.0 (2026-07-06), noting it consolidates the
v0.40.x patch tags that were cut without sectioning. Adds entries for
today's safe-area resume re-poll fix (#116) and the plugin module
test-split phase (#118).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
funman300
2026-07-06 13:27:42 -07:00
parent b81b314197
commit 704e70f60a
+15
View File
@@ -6,6 +6,11 @@ project follows [Semantic Versioning](https://semver.org/).
## [Unreleased] ## [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 ### Added
- **Rules decision record: unlimited stock recycling.** Documented in - **Rules decision record: unlimited stock recycling.** Documented in
@@ -32,6 +37,10 @@ project follows [Semantic Versioning](https://semver.org/).
### Changed ### 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 - **Core type ownership.** Routed all klondike/card imports through
`solitaire_core` and unified local `Suit` / `Rank` with upstream `card_game` `solitaire_core` and unified local `Suit` / `Rank` with upstream `card_game`
types. types.
@@ -43,6 +52,12 @@ project follows [Semantic Versioning](https://semver.org/).
### Fixed ### 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 - **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 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 cold-start deal, every move, and on resize (incl. the Android safe-area-inset