[1.4.0] — 2026-06-02
Added
- German (
de) translation of the Compose UI layer, with the user-facing
strings externalized to resources and relative-time labels using
locale-correct plurals (#168). - ViewModel-layer error messages (Scan / Detail / Buying-list / camera-settings
Toast) externalized to string resources with German translations via a new
UiTextresolvable-text type, completing the internationalization sweep
(#218, #168). - Monochrome / themed-icon layer (Android 13+) on the adaptive launcher icon, so
the OS can tint the canisters-and-shelf foreground to the user's monochrome theme. - README hero banner (
docs/brand/hero.svg) and store-style screenshots; the
crisp 2560×1120 PNG export of the hero is deferred to the maintainer.
Changed
- Refined the adaptive launcher-icon foreground geometry: the three flat
rectangles become rounded three-height pantry canisters with recessed lids,
and the shelf is redrawn as the DocGerdSoft datum stroke — all white on the
unchanged Fern#4F7942background. - Expanded the Material 3 theme from the previous primary-only override into a
full hand-built light/dark colour scheme seeded from Fern#4F7942(the
primary/secondary/tertiary/error/surface/outline/inverse roles mapped to hex;
the surface-tint tonal variants — surfaceContainerLowest/Low/High/Highest,
surfaceBright, surfaceDim, scrim, surfaceTint — seeded from Fern's neutral
tonal palette via material-color-utilities (HCT), so ModalBottomSheets and
other surface-tinted components no longer fall back to the M3 Baseline-purple
tint; #236/#240). TheAddGreen/RemoveRedverb accents are retained as
brand constants outside the scheme. - Backed the ≥80% statement-coverage gate by promoting the emulator-backed
androidTestCI job (which runs:app:jacocoTestCoverageVerificationat 0.80
LINE on the merged unit + instrumented JaCoCo report; baseline ~85.93% line)
to a required check on the develop ruleset, and closed the delete/undo
snackbar render path + an EN/DE format-template drift guard, satisfying
OpenSSF Silvertest_statement_coverage80. (#219)
Fixed
- Verb-action buttons (Home "Scan to Add" / "Scan to Remove", the Scan top app
bar title + back arrow, and the scan result-sheet confirm / switch buttons)
now use a fixed white foreground on theAddGreen/RemoveRedfills instead
of the theme-derived M3 default content colour, which rendered the labels +
icons at ~2:1 contrast. White reads on both fills in light and dark
(~6.6:1 on AddGreen, ~8.6:1 on RemoveRed), clearing WCAG 2.1 AA. (#241)
APK: app-release.apk — SHA-256 724c0cf9cf7d7f8215c3ad860a13d8b787fa1a0b6d86b9ef961cd591a857b669 (24,326,201 bytes)
Signing: apksigner with the project lifetime keystore — certificate SHA-256 ec9a4bb8…b3d9 (unchanged since v1.0.0). Verify with apksigner verify --print-certs app-release.apk and compare the SHA-256 above.
Provenance: GitHub automatically generates a Sigstore artifact attestation for this asset — verify with gh attestation verify app-release.apk -R DocGerd/pantry-tracker (gh ≥ 2.49). The former cosign + SLSA-generator release.yml was retired (#210/#211) as broken under cosign v4 and incompatible with the immutable-releases policy; see SECURITY.md.
No Room schema change since v1.3.1 — upgrade-install over a prior version preserves all pantry data.