- Translated using Weblate (Italian) ([435f30ba](https://git.duniter.org/clients/gecko/-/commit/435f30ba))
- Translated using Weblate (Esperanto) ([5e769536](https://git.duniter.org/clients/gecko/-/commit/5e769536))
- Translated using Weblate (Spanish) ([9050ed3c](https://git.duniter.org/clients/gecko/-/commit/9050ed3c))
- Translated using Weblate (Esperanto) ([c554295a](https://git.duniter.org/clients/gecko/-/commit/c554295a))
- Translated using Weblate (Esperanto) ([d5d45295](https://git.duniter.org/clients/gecko/-/commit/d5d45295))
- fix: show UD toggle for member identities instead of checking UD history ([3d462b62](https://git.duniter.org/clients/gecko/-/commit/3d462b62))
- fix: only show membership renewal banner in last third of period ([219e20e4](https://git.duniter.org/clients/gecko/-/commit/219e20e4))
- docs: add git commit convention for GitLab issue closing ([ad12bf39](https://git.duniter.org/clients/gecko/-/commit/ad12bf39))
- fix: use TextCapitalization.none for numeric PIN field to avoid input issues on MIUI keyboards ([e966c3fc](https://git.duniter.org/clients/gecko/-/commit/e966c3fc))
- fix: pass cached username to WalletEntity so names display for non-member contacts ([18a3f1bd](https://git.duniter.org/clients/gecko/-/commit/18a3f1bd))
- fix: show UD toggle for past members (expired, revoked) not just current ([57301230](https://git.duniter.org/clients/gecko/-/commit/57301230))
- fix: show error message when PIN is rejected as too simple in onboarding ([4b0789aa](https://git.duniter.org/clients/gecko/-/commit/4b0789aa))
- docs: add bug research strategy to CLAUDE.md ([24e57a93](https://git.duniter.org/clients/gecko/-/commit/24e57a93))
- fix: disable forget-all-safes button when no safes exist  Closes #152 ([fffc0f3e](https://git.duniter.org/clients/gecko/-/commit/fffc0f3e))
- fix: prevent premature auto-advance in mnemonic input fields  Closes #153 ([be5f0a49](https://git.duniter.org/clients/gecko/-/commit/be5f0a49))
- feat: add typo suggestion for invalid mnemonic words  Closes #154 ([b434fd42](https://git.duniter.org/clients/gecko/-/commit/b434fd42))
- feat: merge adjacent UDs in transaction history with expandable inline view ([e2b18137](https://git.duniter.org/clients/gecko/-/commit/e2b18137))
- fix: preserve cursor position in mnemonic input fields on macOS ([9d585c58](https://git.duniter.org/clients/gecko/-/commit/9d585c58))
- fix: pass old PIN through change-PIN flow to avoid re-unlock loop ([03c41dc3](https://git.duniter.org/clients/gecko/-/commit/03c41dc3))
- fix: pass old PIN to ChangePinScreen from safe_options entry point ([aef5bf67](https://git.duniter.org/clients/gecko/-/commit/aef5bf67))
- fix: add error handling for changePin failure in ConfirmChangePinScreen ([77e60918](https://git.duniter.org/clients/gecko/-/commit/77e60918))
- refactor: adapt to durt2 WalletBalance API changes (total, transferable excludes ED) ([312696a1](https://git.duniter.org/clients/gecko/-/commit/312696a1))
- fix: restore ED subtraction in payment validation (transferableBalance no longer excludes ED) ([a5edcefc](https://git.duniter.org/clients/gecko/-/commit/a5edcefc))
- fix: keep passwordTooSimple error visible when PIN is cleared in ChangePinScreen ([e07f3fa6](https://git.duniter.org/clients/gecko/-/commit/e07f3fa6))
- refactor: use WalletBalance.spendable for payment validation instead of manual ED subtraction ([d3aea8aa](https://git.duniter.org/clients/gecko/-/commit/d3aea8aa))
- fix: re-enroll biometric with new PIN after successful PIN change ([829d04b0](https://git.duniter.org/clients/gecko/-/commit/829d04b0))
- bump 1.0.4 ([6ece8ad8](https://git.duniter.org/clients/gecko/-/commit/6ece8ad8))