You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Face verification for document (passport, ID card, driving licence) issuance: after reading the chip over NFC, the app runs a Regula liveness session and passes the resulting liveness transaction id to the passport issuer, which matches the live face against the chip portrait. The Play Store / App Store build uses Regula's native Face SDK; the F-Droid build runs Regula's web Face SDK in an embedded WebView that loads a Yivi-hosted capture page, so no proprietary native code ships in the APK. Whether the step runs is decided per session by the passport issuer (its face verification policy), which also names the Face API the liveness session targets — so face verification can be switched off remotely and no environment is pinned in the app.
Show a confirmation message when you log out from the More tab, so the PIN screen that follows is not mistaken for part of logging out
Certificates installed through the debug certificate management screen can now be deleted again from that screen
Support for Token Status List revocation of SD-JWT credentials issued over OpenID4VCI
Changed
Credential and issuer text is resolved in the app language by the Go client instead of being picked in the app, and text the issuer did not translate falls back to English, or to a language it did supply, rather than reading "[translation missing]"
Logos missing for the language you use are fetched in the background at startup and after a language switch, and appear once they arrive
Fixed
Credential logos supplied as SVG now render correctly instead of appearing blank
The loading spinner is red on every screen; on some screens it was grey
Finishing or dismissing a session while the app believes a session is still active underneath it no longer pops every screen off the navigation stack, which left the app unusable until it was restarted
The Data tab no longer briefly reloads once an hour, nor every few tens of seconds while you hold a revoked credential: the wallet re-reads its credentials only when something about them actually changed
A screen reader now reads out what the terms and conditions checkbox is for, instead of only that it is a checkbox and whether it is ticked; the link to the terms stays separately reachable next to it
The same for the optional error reporting checkbox, and the sentence beside it is read as one phrase rather than broken into "Optional:", "Share error messages and app status" and "with Yivi"
On the PIN screen, a screen reader announces the "Enter your PIN" heading and how many digits you have entered as separate items; the whole screen used to be a single item that fused the two and offered a pointless tap
The screen that sends you back to your browser on iOS is read out as soon as it appears, so you are told what to do rather than being left on a silent screen, and the decorative arrow is no longer announced as an unnamed image
Reading a driving licence now performs Active Authentication when the chip carries the licence's authentication key in DG13; it was previously only performed for documents that store that key in DG15, so it was never attempted for a licence
On iOS the app is no longer covered by a full-screen blur while the NFC reader sheet is up, so the scanning animation and its progress text stay readable for the whole read. The biometric prompt is uncovered too, as it already was. While either is up the app switcher shows the screen underneath unblurred: the scanning animation, or whatever the prompt was raised over, which can be the unlocked wallet
Internal
The Go client schedules the credential status refresh again and wakes the app itself through the new ClientHandler.CredentialsChanged
Remove the unused RecentActivity widget
Add an integration test for the required-update screen
Add an integration test for switching the app language
Add widget tests asserting the semantics of the two enrollment checkboxes, the PIN screen and the iOS back-to-browser screen, so the labels, roles and live regions screen readers rely on are covered
Updated Git submodules
Fix swallowed errors on cancelling embedded issuance flows
The F-Droid build steps now live in yivi_fdroid/fdroid_build.sh with a test that runs them against stub tooling, instead of being inlined in the fdroiddata recipe once per release
Upgrade the Android Kotlin Gradle plugin from 2.2.0 to 2.3.20, resolving the Flutter build warning that support for the old Kotlin version would soon be dropped
Upgrade vcmrtd to v4.1.0: the BAC, PACE and secure-messaging MAC comparisons are constant-time, and the challenge/response and APDU hex dumps are behind the sensitive-data log gate rather than plain verbose logging
The passport issuer's session URL is checked before the signed IRMA issuance request, which carries the attributes read off the chip, is posted to it: it must be https and on an explicit allowlist of IRMA server hosts
The two flows that draw system UI in front of the app, the iOS NFC reader sheet and the OS biometric prompt, now suspend the privacy screen while they are up instead of switching it off and restoring it from the screenshot preference afterwards: suspensions are counted, are undone even when the flow throws, and leave that preference alone. Backgrounding the app blurs whatever the count says
The iOS privacy-screen overlay can no longer stack or get stranded on screen: it is tracked by reference rather than looked up again by view tag through the deprecated keyWindow, adding it is idempotent, and removing it is no longer skipped when the privacy screen was switched off while the overlay was up