Mar 09, 11-12 PM (31)
Mar 09, 12-1 PM (60)
Mar 09, 1-2 PM (24)
Mar 09, 2-3 PM (74)
Mar 09, 3-4 PM (60)
Mar 09, 4-5 PM (127)
Mar 09, 5-6 PM (50)
Mar 09, 6-7 PM (54)
Mar 09, 7-8 PM (23)
Mar 09, 8-9 PM (25)
Mar 09, 9-10 PM (13)
Mar 09, 10-11 PM (60)
Mar 09, 11-12 AM (24)
Mar 10, 12-1 AM (5)
Mar 10, 1-2 AM (35)
Mar 10, 2-3 AM (34)
Mar 10, 3-4 AM (6)
Mar 10, 4-5 AM (3)
Mar 10, 5-6 AM (5)
Mar 10, 6-7 AM (20)
Mar 10, 7-8 AM (69)
Mar 10, 8-9 AM (110)
Mar 10, 9-10 AM (30)
Mar 10, 10-11 AM (30)
Mar 10, 11-12 PM (53)
Mar 10, 12-1 PM (65)
Mar 10, 1-2 PM (51)
Mar 10, 2-3 PM (90)
Mar 10, 3-4 PM (39)
Mar 10, 4-5 PM (44)
Mar 10, 5-6 PM (26)
Mar 10, 6-7 PM (10)
Mar 10, 7-8 PM (30)
Mar 10, 8-9 PM (15)
Mar 10, 9-10 PM (33)
Mar 10, 10-11 PM (30)
Mar 10, 11-12 AM (46)
Mar 11, 12-1 AM (13)
Mar 11, 1-2 AM (10)
Mar 11, 2-3 AM (6)
Mar 11, 3-4 AM (0)
Mar 11, 4-5 AM (4)
Mar 11, 5-6 AM (3)
Mar 11, 6-7 AM (26)
Mar 11, 7-8 AM (41)
Mar 11, 8-9 AM (94)
Mar 11, 9-10 AM (24)
Mar 11, 10-11 AM (67)
Mar 11, 11-12 PM (37)
Mar 11, 12-1 PM (67)
Mar 11, 1-2 PM (63)
Mar 11, 2-3 PM (42)
Mar 11, 3-4 PM (45)
Mar 11, 4-5 PM (41)
Mar 11, 5-6 PM (51)
Mar 11, 6-7 PM (35)
Mar 11, 7-8 PM (20)
Mar 11, 8-9 PM (39)
Mar 11, 9-10 PM (14)
Mar 11, 10-11 PM (57)
Mar 11, 11-12 AM (43)
Mar 12, 12-1 AM (4)
Mar 12, 1-2 AM (8)
Mar 12, 2-3 AM (6)
Mar 12, 3-4 AM (3)
Mar 12, 4-5 AM (4)
Mar 12, 5-6 AM (8)
Mar 12, 6-7 AM (46)
Mar 12, 7-8 AM (15)
Mar 12, 8-9 AM (62)
Mar 12, 9-10 AM (50)
Mar 12, 10-11 AM (88)
Mar 12, 11-12 PM (29)
Mar 12, 12-1 PM (60)
Mar 12, 1-2 PM (51)
Mar 12, 2-3 PM (48)
Mar 12, 3-4 PM (62)
Mar 12, 4-5 PM (23)
Mar 12, 5-6 PM (26)
Mar 12, 6-7 PM (14)
Mar 12, 7-8 PM (39)
Mar 12, 8-9 PM (28)
Mar 12, 9-10 PM (10)
Mar 12, 10-11 PM (41)
Mar 12, 11-12 AM (16)
Mar 13, 12-1 AM (7)
Mar 13, 1-2 AM (21)
Mar 13, 2-3 AM (13)
Mar 13, 3-4 AM (7)
Mar 13, 4-5 AM (1)
Mar 13, 5-6 AM (2)
Mar 13, 6-7 AM (7)
Mar 13, 7-8 AM (32)
Mar 13, 8-9 AM (48)
Mar 13, 9-10 AM (90)
Mar 13, 10-11 AM (25)
Mar 13, 11-12 PM (32)
Mar 13, 12-1 PM (54)
Mar 13, 1-2 PM (59)
Mar 13, 2-3 PM (35)
Mar 13, 3-4 PM (58)
Mar 13, 4-5 PM (26)
Mar 13, 5-6 PM (30)
Mar 13, 6-7 PM (17)
Mar 13, 7-8 PM (39)
Mar 13, 8-9 PM (28)
Mar 13, 9-10 PM (14)
Mar 13, 10-11 PM (23)
Mar 13, 11-12 AM (26)
Mar 14, 12-1 AM (1)
Mar 14, 1-2 AM (1)
Mar 14, 2-3 AM (9)
Mar 14, 3-4 AM (2)
Mar 14, 4-5 AM (0)
Mar 14, 5-6 AM (1)
Mar 14, 6-7 AM (0)
Mar 14, 7-8 AM (1)
Mar 14, 8-9 AM (19)
Mar 14, 9-10 AM (3)
Mar 14, 10-11 AM (0)
Mar 14, 11-12 PM (3)
Mar 14, 12-1 PM (1)
Mar 14, 1-2 PM (20)
Mar 14, 2-3 PM (5)
Mar 14, 3-4 PM (0)
Mar 14, 4-5 PM (0)
Mar 14, 5-6 PM (0)
Mar 14, 6-7 PM (2)
Mar 14, 7-8 PM (4)
Mar 14, 8-9 PM (10)
Mar 14, 9-10 PM (10)
Mar 14, 10-11 PM (20)
Mar 14, 11-12 AM (66)
Mar 15, 12-1 AM (6)
Mar 15, 1-2 AM (23)
Mar 15, 2-3 AM (8)
Mar 15, 3-4 AM (0)
Mar 15, 4-5 AM (1)
Mar 15, 5-6 AM (1)
Mar 15, 6-7 AM (0)
Mar 15, 7-8 AM (0)
Mar 15, 8-9 AM (2)
Mar 15, 9-10 AM (14)
Mar 15, 10-11 AM (1)
Mar 15, 11-12 PM (7)
Mar 15, 12-1 PM (20)
Mar 15, 1-2 PM (19)
Mar 15, 2-3 PM (30)
Mar 15, 3-4 PM (2)
Mar 15, 4-5 PM (4)
Mar 15, 5-6 PM (4)
Mar 15, 6-7 PM (8)
Mar 15, 7-8 PM (8)
Mar 15, 8-9 PM (11)
Mar 15, 9-10 PM (7)
Mar 15, 10-11 PM (28)
Mar 15, 11-12 AM (23)
Mar 16, 12-1 AM (7)
Mar 16, 1-2 AM (19)
Mar 16, 2-3 AM (14)
Mar 16, 3-4 AM (9)
Mar 16, 4-5 AM (0)
Mar 16, 5-6 AM (5)
Mar 16, 6-7 AM (21)
Mar 16, 7-8 AM (31)
Mar 16, 8-9 AM (52)
Mar 16, 9-10 AM (81)
Mar 16, 10-11 AM (37)
Mar 16, 11-12 PM (0)
4,452 commits this week Mar 09, 2026 - Mar 16, 2026
Merge from develop to main (#1636)
* chore: rename passcode

* fix: UI issue in RecoverySeedPhraseModule

* feat(core): Cleaner way to provide group name to UI (#1408)

* refactor: rename userName to proposedUsername in group metadata

* feat: add groupUsername to IdentifierMetadataRecord and related services

* refactor(EditProfile): streamline parameter handling for displayName and groupMetadata updates

* refactor(ui): simplify username handling and remove unused groupMetadata updates

* chore: fix type error after merge develop

* test: add unit test for updating identifier groupUsername

* refactor(ui): enhance username handling in various components and streamline identifier retrieval

* feat(ui): add setProfileMultisigConnections action and update group creation handler to refresh multisig connections

* test: enhance group creation handler tests

* feat(ui): update addGroupProfileAsync to fetch and dispatch multisig connections for group members

* refactor(core): simplify groupId filtering logic

* chore(ui): remove outdated comment

* refactor(core): streamline profilesCache logic and remove unused setProfileMultisigConnections action

* refactor(core): update connection types to use MultisigConnectionDetails for improved type safety

* test(ui): update ProfileSetup tests to utilize MultisigConnectionDetails

* fix(core): Notifications and operation tracking not restarting properly on error (#1420)

* fix(core): Update error handling in KeriaNotificationService to use arrow functions for polling methods

* test(core): Enhance context preservation tests

* Fix/delete wallet bug (#1417)

* fix: delete wallet

* feat: add agent initilized flags

* fix: unit tests

* feat(ui): Initial basic push notifications (#1410)

* wip: add basic notifications

* feat: adding cold start and performance optimization

* fix: cold start won't switch profile

* wip: fix persistent notifications bug

* test(jest): fix unit test

* fix: replaced timeout-based workaround with event-driven state machine solution

* fix: update package-lock

* fix: mock a basic IonIcon

* fix: updated the lock file to match the current state

* wip: troubleshooting profile switch

* fix: duplicate notification bug

* chore: bring back react-hooks/exhaustive-deps deleted by mistake

* fix: review PR comments

* fix: add NSUserNotificationsUsageDescription

* chore: service relocation

* chore: remove MultiSigExn

* wip: simplify & refactor

* chore: cleanup

* fix: remove dynamic imports in handleNotificationReceived

* fix: Android cold start and failing tests

* feat: add CapacitorLocalNotifications.release.xcconfig

* wip: fix PR comments

* fix: handleNotificationNavigation

* wip: fix PR comments

* fix: navigate first and then clear in the background

* wip: fix PR comments

* fix: PR comments & clearDeliveredNotificationsForProfile

* fix: failing test

* fix: PR suggestions

* fix: wrong validation

* fix: no need for type casting

---------

Co-authored-by: J Caso <[email protected]>

* fix(ui): read groupUsername instead of proposedUsername for IPEX details (#1424)

* fix(ui): read groupUsername instead of proposedUsername for IPEX details

* test(ui): add groupUsername to fixture

* fix(ui): Fix hidden profile details after profile deletion (#1426)

Co-authored-by: Vu Van Duc <[email protected]>

* fix(core): reliability of getInceptionStatus (#1422)

* fix(core): reliable groupInceptionStatus (fix in KERIA)

* chore: update compose file keria

* fix(core): wallet cannot receive credentials with multiple acdc edge hops (#1421)

* fix(core): recursively resolve schemas

* fix(core): recursive schema resolve should return correctly with no edges too

* feat(core): enhance recursiveschemaresolve with better errors and saidification support

* refactor(core): extract edge parsing to separate function

* feat(core): use allSettled for recursive schema resolutions

* Revert "feat(core): use allSettled for recursive schema resolutions"

This reverts commit a3208174ea01ca08a3ffbfaba9e7d462957b33f4.

* fix(core): add role to group OOBI so that KERIA treats it as a wallet (#1423)

* fix(core): add role to group OOBI so that KERIA treats it as a wallet for one-way scanning

* test(core): update multisig oobi test

* feat(ui): Code cleanup (#1418)

* feat(ui): remove scan

* feat(ui): update UI, remove operation type, fix password module not working

* feat(ui): update UT

* feat(ui): update save password method

* chore: remove unecessary type

* feat(ui): remove credential filter

* fix(ui): remove unecessary message

* fix(ut): remove unecessary test

* feat(ui): remove create singleton notification func

* feat(ui): resolve review comments

---------

Co-authored-by: Vu Van Duc <[email protected]>

* fix(core): ensure connection date always stored if connecting 2 wallets or multiple profiles to a wallet (#1428)

* fix(core): ensure completed connection handled correctly for multiple profiles

* feat(core): use notification processsing time as connection date instead of OOBI resolution

* refactor(core): remove unused string constant

* test(core): advance jest timers to show delay in processing notification

* fix(core): align saved connection history items with profile (#1429)

* chore(gha): enable PR docker images push for gchr.io

* chore(gha/docker-publish): fix typo

* fix(core): failed credential operations not handle correctly (#1419)

* feat(core): enhance credential handling with error management and retry logic

* test(core): enhance ACDC action tests with detailed credential metadata handling

* test(core): add unit test for OOBI resolution error handling

* test(core): add tests for credential availability checks in KERIA during ACDC processing

* fix(core): add TODO comment for improving credential availability handling in KERIA

* feat(core): add OnlineOnly decorator to markAcdc method and refine error handling for 404 status

* refactor(core): remove unused credential availability handling

* chore: rollback changes in ipex service

* test(core): update credentialService tests

* chore: remove empty if block

* chore: fix docker-compose image repo

* chore(gha/cf-gha-baseline): pin a newer version

* chore(gha/cf-gha-baseline): pin a newer version (for the rest of steps :)

* chore: use correct image this time

* chore(gha): fix typo while setting DOCKER_REGISTRIES_OVERRIDE

* chore(gha): fix multi-platform manifest push

* chore(gha): fix multi-platform manifest push

* chore(gha): fix multi-platform manifest push

* feat(core): Alternative schema discovery mechanism (#1425)

* feat(core): Alternative schema discovery mechanism

* refactor(core): Simplify schema OOBI resolution

* refactor(core): Update OOBI URL handling

* fix(core): update OOBI URL handling in agent communication fixtures

* refactor(core): streamline schema URL resolution

* fix(ui): set signers box missing (#1433)

Co-authored-by: Vu Van Duc <[email protected]>

* feat(core): cleanup queued identifier or group creations when deleting profile (#1435)

* feat(ui): Swiping notifications (#1427)

* wip: swiping notifications

* fix: activated button color

* feat(ui): KERIA Error after SSI Agent screen (#1432)

* feat(ui): KERIA Error after SSI Agent screen

* feat(ui): remove z-index

---------

Co-authored-by: Vu Van Duc <[email protected]>

* feat(ui): Home tab (#1436)

* wip: initial tab & route setup

* wip: home header & profile

* wip: tiles

* wip: tiles colors

* wip: tiles translation and scan modal

* wip: tile coming soon badge

* wip: dapp - connections - rotate

* fix: rotate - split section - new tests

* fix: group selector for split section

* fix: remove responsive grid from small screens

* Feature/android 16 compliance (#1431)

* fix: test android 16 page size 16kb

* Remove generated output-metadata.json from version control

* Add output-metadata.json to .gitignore

* fix: remove xcconfig

* fix: remove comment

* fix: revert remove safe area plugin

* fix: add missing .gradle and Podfile for capacitor-plugin-safe-area

* feat(ui): Removal and migration of dApps and Rotate key options (#1440)

* wip: initial tab & route setup

* wip: home header & profile

* wip: tiles

* wip: tiles colors

* wip: tiles translation and scan modal

* wip: tile coming soon badge

* wip: dapp - connections - rotate

* fix: rotate - split section - new tests

* fix: group selector for split section

* fix: remove responsive grid from small screens

* wip: remove dapps

* feat: remove and refactor RotateKeyModal

* feat: update rotate key modal & info card

* chore: update rotate key modal

* fix: profile details header in small screens

* feat(ui): update onboarding slide image (#1437)

* feat(ui): update onboarding slide image

* feat(ui): fix review comment

* feat(ui): fix review comment

---------

Co-authored-by: Vu Van Duc <[email protected]>

* feat: include mailbox and controller in regex (#1439)

* feat: include mailbox and controller in regex

* feat: Add support for witness OOBI URLs and simplify OOBI regex usage

* feat(ui): Update Recovery Wallet - SSI Agent Details Flow (#1412)

* feat(ui): update UI for recovery SSI agent

* fix(ut): update UT

* feat(ui): update onboarding button text

* feat(ui): update recovery flow

* fix(ui): update UI

---------

Co-authored-by: Vu Van Duc <[email protected]>

* feat(ui): Remove Recovery Phrase from Onboarding (#1442)

* feat(ui): add term and privacy page

* feat(ui): add term and policy page

* fix(ut): fix UT

* fix(ui): fix flow recovery wallet

* feat(ui): remove advance setting when recovery wallet

* feat(ui): fix test and rename

* fix(ut): fix UT

---------

Co-authored-by: Vu Van Duc <[email protected]>

* feat(ui): Implement push notifications preferences (#1443)

* wip: implement push notifications preferences

* feat: android messages

* fix: string conversion

* fix: ensure groupUsername is added on recovery (#1446)

* feat(core): seed phrase verification tracking (#1441)

* feat: Add seed phrase verification status tracking and mark as verified during dev wallet creation.

* feat: add tests for seed phrase verification methods in Agent

* feat: Add critical action state tracking and remove  decorator from various service methods

* refactor: replace  decorator with explicit seed phrase verification checks and correct critical action recording order in IdentityWalletConnect

* refactor: relocate Agent.agent.recordCriticalAction() calls from multiSigService to identifierService

* fix: unconditionally delete notification record after processing

* fix: Centralize critical action recording within the  decorator and update seed phrase verification checks to use

* feat: add `@SeedPhraseVerified` decorator to critical agent methods and remove redundant `recordCriticalAction` calls.

* fix: Remove unused `SeedPhraseVerified` import from wallet connect and credential services.

* fix: replace explicit seed phrase verification and critical action recording with SeedPhraseVerified decorator

* fix: mark seed phrase as verified and remove critical action state initialization during agent setup

* feat: add seed phrase verification cache to optimize `isSeedPhraseVerified` calls

* feat: make isSeedPhraseVerified private and add unit tests

* feat: Add SeedPhraseVerified decorator to admitAcdcFromGrant method

* fix: remove unnecessary agent method mocks from credentialService tests

* fix: improve agent method mocking in identifier service tests

* fix: remove unused Agent import

* feat: Adjust `@SeedPhraseVerified` and `@OnlineOnly` decorator placement for IPEX communication methods

* fix: add missing mock agent online status in `joinMultisigOffer` test cases

* feat(ui): Filtering of profiles could be more efficient (#1434)

* feat(ui): refactor filter data

* feat(ui): update filter

---------

Co-authored-by: Vu Van Duc <[email protected]>

* feat(core): implement pending identifier updates functionality (#1438)

* feat(core): implement pending identifier updates functionality

- Added `pendingUpdate` flag to `IdentifierMetadataRecord` to track updates.
- Introduced `getIdentifiersPendingUpdate` method in `IdentifierStorage` to retrieve identifiers marked for updates.
- Implemented `processPendingIdentifierUpdates` in `IdentifierService` to handle updates for identifiers with the `pendingUpdate` flag.
- Updated relevant tests to cover new functionality and ensure correct behavior.
- Created migration script to add `pendingUpdate` flag to existing records in the database.

* feat(core): add mock for processPendingIdentifierUpdates in tests

* refactor(core): streamline identifier update logic and remove unused methods

- Removed the `resolveGroupUsername` method as it was redundant.
- Simplified the handling of `pendingUpdate` in the `pushIdentifierStateToKeria` method.
- Updated tests to reflect changes in identifier metadata handling and removed unnecessary assertions.
- Enhanced the logic for updating group metadata and username in the identifier service.

* chore(core): revert the migration script for identifier updates

* test(core): add test for updating identifier pendingUpdate flag

* fix(core): enhance identifier state update logic

* refactor(core): update identifier metadata update logic

* refactor(core): simplify identifier metadata update process

* test(core): enhance tests for processing multiple pending identifier updates

* test(core): add tests IdentifierMetadataRecord

* refactor(core): rename methods for clarity in identifier update process

* chore(core): rename method for processing identifier updates

* fix: rename `isVerificationMandatory` to `isVerificationEnforced` and make `isSeedPhraseVerified` public (#1448)

* fix: rename `isVerificationMandatory` to `isVerificationEnforced` and make `isSeedPhraseVerified` public

* fix: rename `isVerificationMandatory` to `isVerificationEnforced` in test mocks

* fix(ui): display setting icons (#1450)

Co-authored-by: Vu Van Duc <[email protected]>

* chore(ui): Replace onboarding images with better quality ones (#1451)

* feat: Add content type validation for DOOBI URLs in connection servic… (#1445)

* feat: Add content type validation for DOOBI URLs in connection service and update tests

* feat: update INVALID_DOOBI_CONNECTION_CONTENT_TYPE

* fix: remove keria-src directory (#1456)

* feat(ui): Verify Seed Phrase from the Wallet Home screen (#1447)

* feat(ui): update recovery screen

* fix(ut): update UT

* feat(ui): update UI

* feat(ui): using core func to check and verify seed phrase

* feat(ui): clear name

* fix(ui): fix review comment

* fix(ui): update content of recovery phrase modal

* feat(ui): fix review comment

---------

Co-authored-by: Vu Van Duc <[email protected]>

* feat(ui): Set individual name in legacy multisig identifiers (#1449)

* feat(ui): set individual name for legacy group identifier

* feat(ui): update placeholder

---------

Co-authored-by: Vu Van Duc <[email protected]>

* fix(core): various 1.2 recovery fixes (#1454)

* fix(core): correctly set deleted identifier hab name format

* fix(core): various recovery fixes

* feat(ui): update onboarding (#1457)

Co-authored-by: Vu Van Duc <[email protected]>

* fix(ui): fix load pending profile (#1452)

Co-authored-by: Vu Van Duc <[email protected]>

* feat(core): idempotent connection deletion (#1460)

* fix(ui): "Unable to get identifier details" when group initiator leaves (#1461)

* fix(ui): fix show unknown error

* fix(ui): fix issue open set groupName when create new group

---------

Co-authored-by: Vu Van Duc <[email protected]>

* fix(ui): fix keria not connect this moment (#1453)

Co-authored-by: Vu Van Duc <[email protected]>
Co-authored-by: Salvatore Di Salvo <[email protected]>

* fix: verify passcode and password (#1463)

* fix(ui): Provided group username instantly lost during group creation (#1462)

* fix(ui): fix display set group name after create group profile and connections is undefined after delete last profile

* fix(ui): show set group username for profile

* feat(ui): set user name for pending group

* feat(ui): rename component

* feat(ui): update group user name

---------

Co-authored-by: Vu Van Duc <[email protected]>

* feat(ui): redirect to homepage after switch profile (#1465)

Co-authored-by: Vu Van Duc <[email protected]>

* feat(ui): Duplicate Group Name Handling (#1466)

* feat(ui): make group name is not duplicate

* feat(ui): fix UT

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): allow connection name has space character (#1468)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Unable to delete profile after recovering a single profile and deleting immediately (#1469)

* fix(ui): fix a error when delete profile after recovery wallet

* fix(ui): fix UT

* fix(ut): update UT

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix: eslint warns (#1459)

* refactor: Refine `admitExnToJoin` parameter type to `Record<string, unknown>` in `submitMultisigAdmit`

* chore: Fix unused variable ESLint errors in Capacitor mocks and ReadMore component

* fix: refine various type definitions from  to  or specific types, and address / dependency warnings.

* fix: merge develop

* fix(ui): fix error not display when input wrong display name (#1473)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): remove cardano connect from home when use grp (#1474)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix: bind identityWalletConnect (#1472)

* fix: bind identityWalletConnect

* fix: remove redundant proj

* chore: update title (#1475)

* feat(ui): Verify Seed Phrase - Limit reached (#1464)

* feat(ui): add limit verify seed phrase reached modal

* fix(ut): fix UT

* feat(ui): fix app style

---------

Co-authored-by: Vu Van Duc <[email protected]>

* feat(ui): Handle offline mode screen mid-recovery (#1471)

* feat(ui): display offline screen when recovery wallet

* feat(ui): handle if wallet lost connection while sync data

* feat(ui): show offline screen when sync data after open app

* feat(ui): Fix review comment

* feat(ui): check network error by using isNetworkError

* feat(ui): add loading screen when syncing

* feat(ui): fix review comments

* fix(ui): fix UT

* feat(ui): fix UT

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): Error when initiator sends a request (#1476)

* feat(ui): fix error when initiator sends a request

* feat(ui): fix setup profile screen still display when group complete

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): SSI Agent - Manual input not clearing out on close (#1477)

* fix(ui): clear input after modal close

* feat(ui): remove error after close modal

* feat(ui): fix review comment

* feat(ui): fix input error

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Invalid connect URL if KERIA is down (#1467)

* feat(ui): handle network issue

* feat(ui): check network error by isNetworkError func

* feat(ui): update error message

* feat(ui): fix UT

* feat(ui): update error message

* feat(ui): update catch

* feat(ui): update error message for ssi agent screen

* feat(ui): remove toast

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Error on Android biometrics setup (#1478)

* fix(ui): fix android onboarding biometric setup

* feat(ui): biometric on ios

* feat(ui): update UT

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): fix cannot join group when wallet have pending group profile (#1479)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): add rotate button to profile detail page (#1480)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* chore: podfile commit

* fix(migration): update tags handling in peer connection and group sco… (#1488)

* fix(migration): update tags handling in peer connection and group scoped migrations

* chore: update logic handle tags

* fix(): ensure proposedUsername is added only for group members in migration

* fix: skip adding proposedUsername for non-group members in migration v1.2.0.2

* fix(ui): update alert text of recovery phrase (#1482)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): display notification description (#1484)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): fix infinite load notifications (#1485)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Verify password style mismatch and not disabled button (#1486)

* fix(ui): enable confirm button when password length greater than 8

* fix(ui): update styles

* fix(ui): fix UT

* fix(ui): update styles

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): fix issue when join other group when setup a group profile (#1489)

* fix(ui): fix issue when join other group when setup a group profile

* fix(ui): fix close scan

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* Fix/receive group credential (#1492)

* feat: refactor credential acceptance UI state.

* feat: add race condition test

* fix: merge develop fix conflicts

* fix: remove duplicated IpexCommunicationService

* fix(ui): New password screen styles and text mismatch (#1483)

* feat(ui): update style and text for forgot password modal

* feat(ui): update UT

* feat(ui): update password style

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(core): upsert records used in connect/recover flow for agent (#1487)

* feat(core): upsert records used in connect/recover flow for agent

* test(core): updates to agent tests

* fix(ui): Update verify button height (#1493)

* fix: create variant for button slim

* fix: responsiveness issues

* fix(ui): Failed profile creation screen not showing (#1490)

* fix(ui): show failed profile creation screen

* fix(ui): update toast message

* fix(ui): fix UT

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* chore(ui): Update scan to login modal text (#1494)

* chore: text adjustment

* fix: improve types

* chore(deps): bump qs from 6.1[34].0 to 6.14.1 (#1497)

* chore(deps): bump qs from 6.14.0 to 6.14.1

* chore(deps): bump qs from 6.13.0 to 6.14.1

* chore(deps): bump some more qs-6.13.0 ocurrencies (appium ones) to 6.14.1

* feat(ui): Adding verify phrase to Settings page (#1499)

* wip: refactoring and adding verify card

* fix: margin

* test(jest): fix old tests

* test(jest): add new unit tests

* fix(ui): fix display pending state modal when group profile is in pending stage and waiting other members accept (#1500)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* chore(build/android): set target/max sdk version to 36 to enable android 16 support (#1501)

* chore(deps): fix qs-6.14.1 as override depend (#1503)

* fix(ui): Cannot set username of group before creation after migrating from 1.1 (#1491)

* fix(ui): fix issue cannot set username

* fix(ui): add UT

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* chore(deps): make qs-6.14.1 an overriden depend so it's not downgraded by any new install (#1505)

* fix(ui): Multisig Setup: Forgotten to scan someone’s QR code in the process (#1498)

* fix(ui): handle issue about user forgot scan

* fix(ui): update UI for error page

* fix(ui): add UT

* fix(ui): update UI

* fix(ui): add UT for getGroupSizeFromIcpExn

* fix(core): member introduction process to share OOBI before group inception (#1506)

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>
Co-authored-by: Sotatek-DucPhung <[email protected]>

* feat(ui): remove OK button (#1510)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(migration): refactor connection pair handling and tag management (#1496)

* fix(core): Cannot recover a group post migration if the name was not set after migration (#1507)

* fix(core): Improve proposedUsername validation

* fix(core): remove unneed if block

* feat(ui): Connection name in Revoked credential (#1502)

* feat(ui): update revoke cred list ui

* fix(ui): update UI

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): extend timeout for recovery seed copy & verification (#1509)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): fix wrong error message when input ssi url (#1511)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(core): remove critical action count for joining grant (only offer counted) (#1515)

* fix(ui): Recovery spinner not shown after reconnecting to KERIA while syncing (#1508)

* fix(ui): fix missing spinner when recovery data from KERIA

* fix(ui): fix review comment

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Misconfigured cloud screen has a check again button that simply closes the screen (#1514)

* fix(ut): handle check witness

* fix(ui): fix review comment

* fix(ut): fix UT

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): update text for learn more (#1516)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): update delete wallet message (#1517)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): remove cancel button on verify seed phrase modal when time is up (#1518)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): set revoke tab is default when has no active credential (#1520)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(core): only recover held credentials (not chained etc) (#1519)

* feat(core): credentials filter with identifier

* fix: filter credentials by local identifiers during sync to prevent chained ACDC errors

* test: update identifier sync test description for clarity

* fix(core): Core onboarding does not correctly capture boot and connect URL mismatch (#1512)

* fix(core): throw KERIA_NOT_BOOTED error

* fix(core): refine KERIA_NOT_BOOTED error handling and update test descriptions

* chore: remove redundant KERIA_NOT_BOOTED error tests

* fix(ui): fix toggle button is not working when drag (#1523)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat: ensure OOBI connection createdAt syncs between KERIA and local (#1525)

* feat: ensure OOBI connection createdAt syncs between KERIA and local storage

* fix(test): ensure createdAt matches between local storage and KERIA updates

* fix(ui): Display network errors correctly (#1526)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): update change password subtitle (#1524)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix: class names - colors - animation (#1528)

* fix(ui): fix black screen when biometric scan (#1529)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): add toast message when connect duplicate connection (#1531)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix: prevent error popup when deleting wallet (#1521)

* fix: prevent error popup when deleting wallet

Add guards to check Agent.agent.dependenciesInitialized before accessing
storage. This fixes a race condition during wallet deletion where React
effects would try to access uninitialized Agent.

Changes:
- Added dependenciesInitialized check in syncNotificationsPreferences effect
- Added guard in persistNotificationsPreferences callback
- Added guard in setProfileSwitcher callback

This ensures operations are either completed fully or not at all when
the Agent is being reset during wallet deletion.

* refactor: remove redundant comments

* fix: remove unnecessary comments

* feat: allow async OOBI resolution and clean up schema connections (#1527)

* fix(ui): allow DOOBI

* feat(core): allow async OOBI resolution and clean up schema connections

* test(core): async OOBI resolution

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): fix open advance modal on profile detail (#1534)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): update style for connection title (#1533)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(core): revise onlineonly decorators and cleanup test mocks (#1522)

* fix(core): revise onlineonly decorators and cleanup test mocks

* test(core): post merge fixes

* test(core): remove last onlineonly negative test

* fix(ui): update error message when input group oobi to connection scan (#1535)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix: icon size (#1536)

* fix(ui): Pending Connection Chip #1538

* fix: Connection details labels (#1539)

* fix(ui): I can add connection notes that do not have a title or note (#1540)

* fix(ui): fix validate connection note

* fix(ui): display error message when touched

* fix(ui): fix ut

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat: more appropraite toast messages for negative boot/connect onboarding/recovery flows (#1542)

* feat: more appropraite toast messages for negative boot/connect onboarding/recovery flows

* fix(core): protect connect URL discover from case of domain starting with http like httptest.com

* fix(ui): ensure connectUrl defined to be considered discovered

* feat(ci): add E2E PR check workflow for onboarding-intro test

* refactor(tests): clean up onboarding step definitions and helpers

- Remove unnecessary console.log statements from step files
- Simplify complex logic where possible
- Remove duplicate step definitions
- Fix misplaced steps (moved password/biometric navigation steps to correct files)
- Clean up ssi-agent-urls.helper.ts: remove console.logs, extract constants, simplify logic

* refactor(tests): split onboarding tests into separate feature files

- Split onboarding.feature into separate feature files:
  - onboarding-intro.feature
  - onboarding-terms.feature
  - onboarding-pin.feature
  - onboarding-biometrics.feature
  - onboarding-password.feature
  - onboarding-ssi-agent.feature
  - onboarding-individual-profile.feature
  - onboarding-new-wallet-e2e.feature

- Split step definitions into separate files per feature
- Add new screen objects for onboarding screens
- Add helper for SSI agent URLs
- Update documentation for testing and emulator setup
- Add network security config for Android HTTP support
- Update onboarding actions and constants
- Remove debug console.log statements and unused imports

* fix(ci): update Node.js version to 20 for Capacitor CLI requirement

* fix(ci): update Java version to 21 to match Capacitor requirements

* fix(ci): add Java 21 verification steps and ensure JAVA_HOME is preserved

* fix(ci): handle uiautomator2 driver already installed case

* fix(ci): replace timeout command with bash loop for macOS compatibility

* fix(ci): add Android emulator startup and boot wait steps

* chore(ci): use emulator-runner, pin actions, increase timeout

* chore(ci): set APP_PATH via GITHUB_ENV and pin setup-android

* chore(ci): use setup-java tag to fix action download

* chore(ci): use setup-android v3 tag to avoid missing tarball

* fix(ui): clear error of ssi input when new error appear (#1546)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): Improve error messages when adding connections (#1545)

* feat(ui): improve error message when adding connections

* fix(ui): fix review comment

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(core): connection name should be profile scoped (#1530)

* feat: add alias support to connection pair records and related services

* feat: enforce alias as a required field in connection pair records and related services

* test: add validation for missing identifier alias when fetching connection by id

* feat: update connection migration scripts to use alias directly and define IdentifierMetadataRecordProps type

* feat: update IdentifierMetadataRecordProps to use CreationStatus enum

* chore: update type

* fix(ci): increase emulator boot timeout, align API levels, add device profile

* fix(ui): Stale connection and Connection details design mismatch (#1547)

* wip: connection details patch

* fix: apply same style to credential cloud error

* fix: replace assets with svg (#1548)

* feat(ui): Add PIN/Password fallback for biometric-protected in-app actions (#1544)

* feat(ui): show PIN screen after user cancel biometric screen

* fix(ui): allow  biometric auth in password manager

* feat(ui): move biometric overlay outsite app.tsx

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): redirect to connection tab after scan (#1550)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix: Align recovery phrase screens with designs (#1551)

* fix: correct db query for cleaning up pending operations for ipex notification deletion (#1552)

* fix(android): prevent infinite retry loop for pending credentials by unblocking notification cleanup

* fix(android): replace unsupported regex query with in-memory filtering to prevent sqlite crash

* fix: remove regex filter and use getAll

* refactor(android): use explicit  query for pending operations with maintenance warning

* test(android): update utils tests to expect explicit  query

* revert(android): restore blocking notification cleanup flow as sqlite crash is fixed

* fix: revert notifi service

* chore: remove accidental submodule tracking of signify-ts

* chore: add signify-ts to gitignore

* chore: add debug logging to verify pending operation cleanup

* fix: remove debugs

* fix: implement handling for broken 1.1.X deleted mHab format and reso… (#1549)

* fix: implement handling for broken 1.1.X deleted mHab format and resolve group initiator

* fix: remove handling for broken 1.1.X deleted mHab format and default groupInitiator to false

* test(core): refactor identifier service test (#1555)

* updated yaml

* feat(core): Clean up long-running operations when profiles are deleted (#1543)

* feat(core): Clean up long-running operations when profiles are deleted

* test(core): Cleam up long-runningoperaionts when profiles are deleted

* test(core): add tests for cleanupPendingOperationsForIdentifier

* feat: more appropraite toast messages for negative boot/connect onboarding/recovery flows (#1542)

* feat: more appropraite toast messages for negative boot/connect onboarding/recovery flows

* fix(core): protect connect URL discover from case of domain starting with http like httptest.com

* fix(ui): ensure connectUrl defined to be considered discovered

* fix(ui): clear error of ssi input when new error appear (#1546)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): Improve error messages when adding connections (#1545)

* feat(ui): improve error message when adding connections

* fix(ui): fix review comment

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(core): connection name should be profile scoped (#1530)

* feat: add alias support to connection pair records and related services

* feat: enforce alias as a required field in connection pair records and related services

* test: add validation for missing identifier alias when fetching connection by id

* feat: update connection migration scripts to use alias directly and define IdentifierMetadataRecordProps type

* feat: update IdentifierMetadataRecordProps to use CreationStatus enum

* chore: update type

* fix(ui): Stale connection and Connection details design mismatch (#1547)

* wip: connection details patch

* fix: apply same style to credential cloud error

* fix: replace assets with svg (#1548)

* feat(ui): Add PIN/Password fallback for biometric-protected in-app actions (#1544)

* feat(ui): show PIN screen after user cancel biometric screen

* fix(ui): allow  biometric auth in password manager

* feat(ui): move biometric overlay outsite app.tsx

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): redirect to connection tab after scan (#1550)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix: Align recovery phrase screens with designs (#1551)

* fix: correct db query for cleaning up pending operations for ipex notification deletion (#1552)

* fix(android): prevent infinite retry loop for pending credentials by unblocking notification cleanup

* fix(android): replace unsupported regex query with in-memory filtering to prevent sqlite crash

* fix: remove regex filter and use getAll

* refactor(android): use explicit  query for pending operations with maintenance warning

* test(android): update utils tests to expect explicit  query

* revert(android): restore blocking notification cleanup flow as sqlite crash is fixed

* fix: revert notifi service

* chore: remove accidental submodule tracking of signify-ts

* chore: add signify-ts to gitignore

* chore: add debug logging to verify pending operation cleanup

* fix: remove debugs

* fix: implement handling for broken 1.1.X deleted mHab format and reso… (#1549)

* fix: implement handling for broken 1.1.X deleted mHab format and resolve group initiator

* fix: remove handling for broken 1.1.X deleted mHab format and default groupInitiator to false

* test(core): refactor identifier service test (#1555)

* test(core): Cleam up long-runningoperaionts when profiles are deleted

* test(core): revert private function tests

* test(core): add Happy path test for OperationRemoved

* test(core): remove Happy path from private function tests and keep it from interface

---------

Co-authored-by: Fergal <[email protected]>
Co-authored-by: Sotatek-DukeVu <[email protected]>
Co-authored-by: Sotatek-DukeVu <[email protected]>
Co-authored-by: Sotatek-DucPhung <[email protected]>
Co-authored-by: Salvatore Di Salvo <[email protected]>
Co-authored-by: Jaime Caso <[email protected]>

* updated yaml

* refactor(tests): improve onboarding SSI Agent tests and webview handling

- Add webview.helper.ts with robust context switching and retry logic
- Simplify onboarding-ssi-agent.steps.ts by removing redundant context switching
- Add 'user is on Connect to Veridian screen' step definition with proper webview handling
- Improve SsiAgentScanScreen.clickAdvancedSetup() with JavaScript-native click for Shadow DOM
- Update wdio configs with improved ADB and ChromeDriver settings
- Remove emojis from console logs across test files
- Simplify ProfileSetupScreen.loads() method
- Update feature files for better test organization

* chore(ci): disable E2E tests on PR checks

- Comment out entire e2e-pr-check.yaml workflow
- Prevents E2E tests from running on pull requests

* updated tests

* fixed build issues

* fix(core): use correct hab name format when deleting wallet identifiers (#1556)

* fix(core): use correct hab name format when deleting wallet identifiers

* fix: replace IdentifierService.DELETED_IDENTIFIER_THEME with direct reference

* chore: fix test

* chore: replace IdentifierService.DELETED_IDENTIFIER_THEME

* fix(core): update theme check to use parseHabName function

* fix(core): update mock name in notification service tests

* refactor(core): cleanup formatToV1_2_0_2 (undefined is not possible here)

---------

Co-authored-by: iFergal <[email protected]>

* fix(core): properly migrate connections from 1.0.0 wallet (#1557)

* addressing review comments, added group file tests

* fix(ui): Handle push notification navigation when the target profile no longer exists (#1553)

* fix(ui): prevent switch profile when open deleted profile

* fix(ui): add UT for switchProfileFromNotification

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(core): ensure users migrating do not have to re-verify their recover phrase (#1560)

* feat(core): add migration for marking existing users' seed phrase as verified (v1.2.0.3)

* chore: remove debug logs

* fix(core): update migration logic to check for onboarding completion

* Review feedback: debug-only Android network config, KERIA_IP in e2e workflow and docs, revert configurationService to develop

* fix(ui): hide biometric prompt when screen is locked (#1559)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* Revert ipexCommunicationService to develop per review

* fix(core): remove duplicate calls of deleteCredentialMetadata (#1567)

* fix: Ionic 8 scroll ensure dhadow DOM scroll container has explicit height (#1566)

* chore(gha/e2e-pr-check): pinning versions (commits) for gh-actions dependencies

* fix(ui): Opening a push notification does not close settings menu/profile switcher (#1554)

* fix(ui): close profiles page after open push notification

* fix(ui): close all modal after change profile

* fix: use static key for Profile Setup and Group Profile Setup

* feat: add dismissAllModals function and BLOCKING_MODALS

* fix: disable backdrop dismissal for VerifySeedPhraseAlert modal

* feat: Implement pending navigation in notification service to queue and process navigation blocked by modals.

* fix(ui): update dismiss

* fix(ui): dismiss all modal and keep blocking modal is present

* feat(ui): switch profile and nav to notification after user tap to local notification

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>
Co-authored-by: J Caso <[email protected]>

* fix(ui): Changing PIN uses biometric authentication instead of requiring current PIN (#1562)

* fix(ui): open confirm passcode/password after successful biometric authentication when make the changing

* fix(ui): remove biometric auth when change passcode/password

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Incorrect share modal opens from profile details screen (#1563)

* fix(ui): replace old share modal by share profile modal

* feat(ui): get oobi from outside of share profile modal

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): update setup group UI (#1564)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): hide delete button on notification's profile detail (#1565)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): update behavior of credential request (#1570)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): show connection detail on request individual cred (#1572)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): remove group member in propose cred (#1573)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fear(ui): Profile Details - Signers modal (#1558)

* fear(ui): update UI signers modal

* fix(ui): fix review comment

* fix(ui): add UT and update i18n

* fix(ui): update member text on profile detail

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Favourite credential cards not rendered properly (#1569)

* fix(ui): fix UI styles of favourite credentials

* fix(ui): remove shadow box

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* chore(gha/e2e-pr-check): switch to ubuntu as base system

* chore(gha/e2e-pr-check): fix typo on runs-on

* chore(gha/e2e-pr-check): add pr trigger

* fix(ui): Biometric Lockout Alerts – Missing i18n & Test Coverage (#1571)

* fix(ui): update lockout biometric modal

* fix(ui): fix review comment

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* chore(gha/e2e-pr-check): introducing some base system optimizations

* chore(gha/e2e-pr-check): rework appium wait

* fix(ui): show section title of archived cred and revoked cred (#1575)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Group IPEX refresh notifications are duplicated in Redux if we are in another profile (#1574)

* fix(ui): fix issue delete notification when current profile is not notification's wallet

* fix(ui): improve func remove notification

* feat(ui): clean notification service

* fix(ui): revert pod file

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Login attempts not reset after successful biometrics login (#1577)

* fix(ui): reset login attemp after successful biometrics login

* fix(ut): update UT

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): remove releated profile in credential detail (#1580)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): fix style for pending cred section (#1581)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Omitted profiles shown in group list while setting group up (#1568)

* fix(ui): fix display group members

* fix(ui): fix review comment

* fix(ui): use local state instead of selected connection from root state when display group member

* fix(ui): remove unecessary method

* fix(ui): Simple member mapping logic

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Group Creation - Overall Improvements (#1578)

* fix(ui): fix review comment of old PR

* fix(ui): reset threshold when close init modal

* refactor(ui): review tweaks

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>
Co-authored-by: iFergal <[email protected]>

* chore(gha): rename workflow to e2e-pr-check

* fix(ui): fix issue about unable to delete connection when it's connecting (#1583)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ut): add missing UT for threshold (#1584)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix: prevent premature seeding of critical action state (#1585)

* fix: prevent premature seeding of critical action state

* fix: comments

* fix(ui): disable verify password CTA when password is wrong (#1588)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): update label of input in change profile username label (#1589)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix: only your signing key should be shown in the group details view (#1591)

* fix: show only the relevant signing key in profile details

* fix: refactor unit tests

* fix: testId in CardDetailsItem prop

* fix(ui): prevent get oobi of current profile when it's pending (#1579)

* fix(ui): prevent get oobi of current profile when it's pending

* fix(ui): remove joinedCredRequestMembers prop

* fix(ui): remove i18n and fix infitinite loop when load oobi fail

* fix(ui): add retry to get oobi hook

* fix(ui): allow infinity retry

* fix(ui): fix issue about delay time

* fix(ui): fix get oobi retry

* fix(ui): fix UT

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(core): Incorrect fallback icon for CIP-45 stored in DB (#1587)

* fix(core): save connection icon when connect first time

* fix(ui): revert change and update base64 logo

* chore(ui): rename icon

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Scanner should stay open when scanning an existing group OOBI (#1576)

* fix(ui): keep scan screen display after scan wrong url

* fix(ui): reload scan after scan wrong url

* fix(ui): fix review comment

* fix(ui): fix display toast message to fast when scan wrong link

* fix(ui): fix UT

* fix(ui): fix review comment

* fix(ui): fix review comment

* fix(ui): reload when scan a url is not part of group

* fix(ui): fix scan not working after scan wrong url

* test(ui): revert toastMsgs redux setup for tests (unused now)

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>
Co-authored-by: iFergal <[email protected]>

* feat(ui): Show Feedback When Adding the Same Member Twice to a Group (#1582)

* feat(ui): close and display toast message when user scan exist member

* fix(ui): show error when user scan self oobi

* fix(ui): fix review comment

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>
Co-authored-by: J Caso <[email protected]>

* fix(ui): fix add cred button fall off (#1590)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Large gap in group credential acceptance screen while pending (#1586)

* fix(ui): fix gap of receive credetial notification

* fix(ui): fix gap of icon in receive cred notification

* fix(ui): fix style for small screen

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): update toast message when user try to add 6 cred to favourite list (#1593)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): display issued date in revoke cred card (#1595)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Issuer is blank instead of Unknown on credential card (#1596)

* fix(ui): display issuer name is unknown if cred is unknown cred card

* fix(ui): add unknown text for revoke and archived card when connection is missing

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>
Co-authored-by: Jaime Caso <[email protected]>

* fix(ui): add connection name to credential list view (#1598)

Co-authored-by: Sotatek-DukeVu <[email protected]>
Co-authored-by: J Caso <[email protected]>

* fix: skip signers modal if group members are unchanged during edit (#1592)

* fix: skip signers modal if group members are unchanged during edit

* fix: avoid unnecessary signer setup when members don't change

* fix: update InitializeGroup test expectation for no changes

* fix(ui): prevent scanner tabs from scrolling during group setup (#1600)

* fix:  start duplicate group naming at #2 (#1601)

* fix:  start duplicate group naming at #2

* fix: comment

* fix: test MockGroup # 2

* fix: refine ForgotAuthInfo success callback to pass `true`. (#1602)

* fix: Synchronize `ManagePassword` component state with Redux (#1603)

* fix: Synchronize `ManagePassword` component state with Redux store and add corresponding test

* fix: Streamline password state management with Redux

* fix: remove setPasswordIsSet prop from CreatePassword, use Redux dispatch directly

* feat(ui): use safe-area inset instead of fixed margin value (#1606)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): adjust layout to avoid scrolling to access Archived & Revoked button (#1607)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): reduce gap at the bottom of the modal (#1610)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): close notificatio swipe after read or unread (#1614)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): add margin top when user finish scan all missing member (#1616)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): add separator in profile switcher (#1617)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): remove arrow icon of propose from field in request cred notification (#1615)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): standardise QR code loading screen across the app (#1618)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Outdated designs for resetting PIN via recovery phrase (#1612)

* feat(ui): remove out of date PIN screen

* feat(ui): update UI for small screen

* fix(ui): fix review comment

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* Vt20 2474 no search results for connections text is scrollable (#1604)

* feat: dynamically control ConnectionsBody scroll based on search resultsand add component tests

* feat: Dynamically control Connections page scrolling based on search results by adding a `scrollY` prop to `TabLayout`.

* fix: connection search filtering

* fix: Adjust Connections page layout

* refactor(connections): simplify search map/filter chain into single pass reduce

* refactor: Adjust connections UI layout ande remove scrollY

* fix: Remove unused `scrollY` prop from `TabLayout`

* fix: restore CSS regressions and fix scroll on connections list

* fix: center search empty state and fix unwanted scroll

* fix: Relocate connection search filtering logic to SearchConnectionContent

* fix(ui): Recovery phrase CTA is not fixed to the bottom of the screen (#1609)

* fix(ui): adjust recovery seedphrase modal

* fix(ui): fix review comments

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): Review and replace blurry images (#1611)

* feat(ui): replace blurry images

* fix(ui): update blurry image

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* chore: add the empty state message for earlier notifications. (#1605)

* chore: add the empty state message for earlier notifications.

* fix:  refine notification UI logic

* fix: unify notification empty state logic and resolve UI regressions in NotificationSection

* chore: update button color (#1623)

* feat(ui): keep password module display after user input existing password (#1624)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): Standardize Toast Messages (#1620)

* feat(ui): standardize toast messages

* fix(ui): fix review comments

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): CIP-45 UI Alignment with App Designs (#1622)

* feat(ui): wallet connect ui alignment

* feat(ui): update UT

* fix(ui): fix review comments

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): fix flickering to home page while joining a group (#1625)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): Update sign request (#1627)

* wip: update stringify JSON logic

* fix: i18n - copy btn - style

* test(jest): add new and improve old unit tests

* feat(ui): Add Close button to Misconfigured cloud Pop-up (#1619)

* feat(ui): show close button when missing witness outside onboarding

* fix(ui): add max zindex for no witness alert

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): fix set pincode screen pushes up the number keyboard (#1630)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* feat(ui): Review and Standardize Text Capitalization Across App (#1629)

* fix(ui): Review and Standardize Text Capitalization Across App

* feat(ui): standardize text

* feat(ui): update text for scan peer id

* fix(ui): update message that metion in slack chat

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix: npm vulnerabilities (#1631)

* fix: Update biometric plugin and other dependencies, adjust biometric hook types

* fix(deps): update @types/node and sync lockfile to resolve CI failures

* fix: update biometrics hook to use full AvailableResult object

* feat: update biometric tests and mocks to include authentication strength and device security properties

* fix: security vulnerabilities in package-lock.json

* fix(ui): Fix Animation and Vertical Centering in Credential Acceptance Screen (#1632)

* feat(ui): fix animation centering in credential acceptance screen

* fix(ui): fix wrong translateY position when keyboard is showing

* fix(ui): fix review comments

---------

Co-authored-by: Sotatek-DukeVu <[email protected]>

* fix(ui): fix flickering to homepage while joining a group (#1633)

Co-authored-by: Sotatek-DukeVu <[email protected]>

* test(e2e): group profile setup as initiator (#1626)

* Add group profile onboarding E2E: feature files, remote-initiator helper, ssi-agent-urls

* updated the helper, steps

* updated the test

* added contract

* test: split group profile features and backend step definitions

* chore(test): added createBackendUser and createRemoteInitiator interfaces

* chore: add support for witness config

* fixed getOObi, added agent role in init

* chore: eventual acceptGroupInvitation fix

* fix: Joiner business logic

* fix: add endRole sign from remoteJoiner aafter group creation

* test: normalize tests for Initiator creates multisig group and it becomes active

* test: fix the step "all members accept the group invitation"

* test(e2e): address PR comments

---------

Co-authored-by: Ankit Shukla <[email protected]>
Co-authored-by: Ankit Shukla <[email protected]>
Co-authored-by: Ankit Shukla <[email protected]>

* chore: vulnerability scanning updates (#1444)

* chore: ignore mostly irrelevant vulnerabilities for now and remove unneeded ones

* chore(cred-serv): audit fixes

* chore: update ignore list for osv scanner

* chore(gha/depcheck): ignore osv-scanner dev depends until end of 01/2026 when they can be re-reviewed

* chore(gha/depcheck-owasp): added owasp depcheck for package[-lock].json

* chore(gha/depcheck-owasp): changed android specific job to scan any jar file in the repo/depends

* chore(gha/depcheck-owasp): changed ios specific job to check Podfile.lock only (tho currently it checks zero depends for some reason)

* chore(gha/depcheck-owasp): change android job to only look into jar files in android/ and node_modules/

* chore(gha/depcheck-owasp-ios): fix report upload

* fix: package-lock.json

* fix: resolve high-severity vulnerabilities for qs and axios

* feat: update JavaScript dependencies to allow minor versions

* fix: resolve production vulnerabilities and stabilize CI scanners

* fix: resolve CI vulnerabilities and fix lockfile synchronization

* fix:  CI lockfile sync and OWASP dependency-check failures

* fix: extend OSV scanner vulnerability ignore dates

* feat: relax Appium dependency version constraints.

* ifx: update dependency vulnerability suppression rules

* fix: CI lockfile sync, OWASP scan failures, and configuration cleanup

* fix: fix vulnerabilities and repair broken CI scans

* fix: vulnerabilities and repair broken CI scans

* fix: override dep @types/qs

---------

Co-authored-by: Roberto C. Morano <[email protected]>
Co-authored-by: J Caso <[email protected]>

* fix: flatted vulnerability (GHSA-25h7-pfq9-p65f) (#1637)

* fix: update npm audit allowlist for undici and yauzl advisories (#1639)

* fix: resolve undici and yauzl vulnerabilities via npm overrides (#1640)

---------

Co-authored-by: Salvatore Di Salvo <[email protected]>
Co-authored-by: Sotatek-DucPhung <[email protected]>
Co-authored-by: Salvatore Di Salvo <[email protected]>
Co-authored-by: Fergal <[email protected]>
Co-authored-by: Sotatek-DukeVu <[email protected]>
Co-authored-by: Vu Van Duc <[email protected]>
Co-authored-by: Roberto C. Morano <[email protected]>
Co-authored-by: Achraf Belkhiria <[email protected]>
Co-authored-by: Ankit Shukla <[email protected]>
Co-authored-by: Ankit Shukla <[email protected]>
Co-authored-by: Ankit Shukla <[email protected]>