Skip to content

Conversation

@alexjba
Copy link
Contributor

@alexjba alexjba commented Dec 10, 2025

What does the PR do

Iterating
#19545
#19546
#19547
#19548

Adding a KeycardChannelDrawer that's guiding the user whenever the keycard is needed.

On IOS the system drawer is used.

Screencapture of the functionality

Screen_Recording_20251210_154214_Status.mp4
ScreenRecording_12-10-2025.17-21-13_1.MP4
Screen.Recording.2025-12-10.at.15.11.49.mov

Impact on end user

How to test

desktop:
make run USE_STATUS_KEYCARD_QT=1
iOS:
make mobile-run USE_STATUS_KEYCARD_QT=1 DEVELOPMENT_TEAM=...
android:
make mobile-run

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@alexjba alexjba marked this pull request as ready for review December 10, 2025 16:40
@alexjba alexjba requested review from a team, caybro, micieslak and noeliaSD as code owners December 10, 2025 16:40
@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

✔️ status-desktop/e2e/prspr19549 🔹 ~17 min 🔹 7515f6e 🔹 📦 tests/e2e package

@alexjba alexjba requested a review from a team as a code owner December 11, 2025 08:13
@alexjba alexjba requested review from friofry and vkjr and removed request for a team December 11, 2025 08:13
@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@status-im-auto
Copy link
Member

@glitchminer
Copy link
Contributor

glitchminer commented Dec 12, 2025

Hi @alexjba , tried on Moto G55, Android 14. During onboarding flow (create with empty keycard) it consistently ends up on "Smartcard reader service unavailable" after "reading card" is shown in the drawer.

In the logs I can see it go from tag discovered
act=android.nfc.action.TAG_DISCOVERED flg=0x20000000 cmp=app.status.mobile/.StatusQtActivity (has extras)
to
Permission Denial: Tag ( ID: 04 95 35 A2 F0 6E 80 ) is out of date\n\x09at android.nfc.tech.IsoDep.isConnected(IsoDep.java:40)

view logcat (message:nfc) and screenshot image
025-12-12 09:52:20.461 15426-19416 libnfc_nci              com.android.nfc                      E  [ERROR:nfa_dm_discover.cc(2235)] NFA_DM_RF_DEACTIVATE_NTF p_data->nfc_discover.deactivate.reason = 0
2025-12-12 09:52:20.545 15426-19416 libnfc_nci              com.android.nfc                      E  [ERROR:NativeNfcTag.cpp(1512)] nativeNfcTag_doCheckNdefResult: Check Ndef Failed (flags =0x8) , (status =0xE8)
2025-12-12 09:52:20.546 15426-19416 libnfc_nci              com.android.nfc                      E  [ERROR:NativeNfcTag.cpp(1529)] nativeNfcTag_doCheckNdefResult: no NDEF content on the tag (status =0xE8)
2025-12-12 09:52:20.569 14120-15071 ActivityTaskManager     system_server                        W  startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { act=android.nfc.action.TAG_DISCOVERED flg=0x20000000 cmp=app.status.mobile/.StatusQtActivity (has extras) }
2025-12-12 09:52:20.576 14120-15071 ActivityTaskManager     system_server                        I  START u0 {act=android.nfc.action.TAG_DISCOVERED flg=0x20000000 cmp=app.status.mobile/.StatusQtActivity (has extras)} with LAUNCH_SINGLE_TOP from uid 10382 (realCallingUid=1027) (PendingIntentRecord) (BAL_ALLOW_VISIBLE_WINDOW) result code=3
2025-12-12 09:52:20.578 15426-15426 PowerManager            com.android.nfc                      V  userActivity when=28942359 event=0 flags=0 displayId=0 by (com.android.nfc) callers=com.android.nfc.NfcService$NfcServiceHandler.dispatchTagEndpoint:3801 com.android.nfc.NfcService$NfcServiceHandler.handleMessage:3343 android.os.Handler.dispatchMessage:111 
2025-12-12 09:52:20.585 15426-2650  Checkin                 com.android.nfc                      D  publish the event [tag = MOT_NFC_L1 event name = NfcEvent]
2025-12-12 09:52:28.429 15426-19416 libnfc_nci              com.android.nfc                      E  [ERROR:nfc_ncif.cc(1389)] nfc_ncif_proc_deactivate - evt_data.deactivate.reason 0, nfc_cb.deact_reason = 0
2025-12-12 09:52:28.442 15426-19416 libnfc_nci              com.android.nfc                      E  [ERROR:nfc_ncif.cc(1389)] nfc_ncif_proc_deactivate - evt_data.deactivate.reason 0, nfc_cb.deact_reason = 0
2025-12-12 09:52:28.442 15426-19416 libnfc_nci              com.android.nfc                      E  [ERROR:nfa_dm_discover.cc(2235)] NFA_DM_RF_DEACTIVATE_NTF p_data->nfc_discover.deactivate.reason = 0
2025-12-12 09:52:28.722  2040-2076  chronicles              app.status.mobile                    W  �[33mWRN�[0m 2025-12-12 09:52:28.716Z �[1mqt warning                                �[0m �[33mtopics�[0m=�[93m"qt"�[0m �[33mtid�[0m=�[94m2076�[0m �[33mcategory�[0m=�[94mdefault�[0m �[33mfile�[0m=�[94m:0�[0m �[33mtext�[0m=�[94m"java.lang.SecurityException: Permission Denial: Tag ( ID: 04 95 35 A2 F0 6E 80 ) is out of date\n\x09at android.nfc.Tag.getTagService(Tag.java:402)\n\x09at android.nfc.tech.BasicTagTechnology.isConnected(BasicTagTechnology.java:63)\n\x09at android.nfc.tech.IsoDep.isConnected(IsoDep.java:40)\n\x09at org.qtproject.qt.android.QtNative.startQtApplication(Native Method)\n\x09at org.qtproject.qt.android.QtNative$$ExternalSyntheticLambda5.run(D8$$SyntheticClass:0)\n\x09at org.qtproject.qt.android.QtThread$1.run(QtThread.java:25)\n\x09at java.lang.Thread.run(Thread.java:1012)\n"�[0m
2025-12-12 09:52:28.725  2040-2076  chronicles              app.status.mobile                    W  �[33mWRN�[0m 2025-12-12 09:52:28.720Z �[1mqt warning                                �[0m �[33mtopics�[0m=�[93m"qt"�[0m �[33mtid�[0m=�[94m2076�[0m �[33mcategory�[0m=�[94mdefault�[0m �[33mfile�[0m=�[94m:0�[0m �[33mtext�[0m=�[94m"java.lang.SecurityException: Permission Denial: Tag ( ID: 04 95 35 A2 F0 6E 80 ) is out of date\n\x09at android.nfc.Tag.getTagService(Tag.java:402)\n\x09at android.nfc.tech.BasicTagTechnology.isConnected(BasicTagTechnology.java:63)\n\x09at android.nfc.tech.IsoDep.isConnected(IsoDep.java:40)\n\x09at org.qtproject.qt.android.QtNative.startQtApplication(Native Method)\n\x09at org.qtproject.qt.android.QtNative$$ExternalSyntheticLambda5.run(D8$$SyntheticClass:0)\n\x09at org.qtproject.qt.android.QtThread$1.run(QtThread.java:25)\n\x09at java.lang.Thread.run(Thread.java:1012)\n"�[0m
2025-12-12 09:52:28.730  2040-2076  chronicles              app.status.mobile                    W  �[33mWRN�[0m 2025-12-12 09:52:28.724Z �[1mqt warning                                �[0m �[33mtopics�[0m=�[93m"qt"�[0m �[33mtid�[0m=�[94m2076�[0m �[33mcategory�[0m=�[94mdefault�[0m �[33mfile�[0m=�[94m:0�[0m �[33mtext�[0m=�[94m"java.lang.SecurityException: Permission Denial: Tag ( ID: 04 95 35 A2 F0 6E 80 ) is out of date\n\x09at android.nfc.Tag.getTagService(Tag.java:402)\n\x09at android.nfc.tech.BasicTagTechnology.isConnected(BasicTagTechnology.java:63)\n\x09at android.nfc.tech.IsoDep.isConnected(IsoDep.java:40)\n\x09at org.qtproject.qt.android.QtNative.startQtApplication(Native Method)\n\x09at org.qtproject.qt.android.QtNative$$ExternalSyntheticLambda5.run(D8$$SyntheticClass:0)\n\x09at org.qtproject.qt.android.QtThread$1.run(QtThread.java:25)\n\x09at java.lang.Thread.run(Thread.java:1012)\n"�[0m
2025-12-12 09:53:35.463 14120-20769 PackageManager          system_server                        W  Missing required system package: com.google.android.apps.walletnfcrel, but found with extended search.

@glitchminer
Copy link
Contributor

glitchminer commented Dec 12, 2025

Tried Samsung A36, Android 15. Got further than the Moto but there appears to be a regression in backup seed phrase stage of onboarding, the phrase is not revealed. Then it got stuck on "Creating key pair on Keycard" screen.

Screenshots on first attempt image image image

Attempted closing app and retrying but got stuck at the initial "insert your keycard" stage

logcat on second attempt (message:nfc)
2025-12-12 10:50:57.036  2282-2326  ActivityTaskManager     system_server                        E  Background activity launch blocked! [callingPackage: app.status.mobile; callingPackageTargetSdk: 35; callingUid: 10357; callingPid: -1; appSwitchState: 2; callingUidHasVisibleActivity: true; callingUidHasVisibleNotPinnedActivity: true; callingUidHasNonAppVisibleWindow: false; callingUidProcState: TOP; isCallingUidPersistentSystemProcess: false; forcedBalByPiSender: BSP.NONE; intent: Intent { act=android.nfc.action.TAG_DISCOVERED flg=0x20000000 cmp=app.status.mobile/.StatusQtActivity (has extras) }; callerApp: null; balAllowedByPiCreator: BSP.NONE; balAllowedByPiCreatorWithHardening: BSP.NONE; resultIfPiCreatorAllowsBal: BAL_ALLOW_VISIBLE_WINDOW; hasRealCaller: true; isCallForResult: false; isPendingIntent: true; autoOptInReason: null; realCallingPackage: com.android.nfc; realCallingPackageTargetSdk: 35; realCallingUid: 1027; realCallingPid: 3812; realCallingUidHasVisibleActivity: false; realCallingUidHasVisibleNotPinnedActivity: false; realCallingUidHasNonAppVisibleWindow: false; realCallingUidProcState: PERSISTENT; isRealCallingUidPersistentSystemProcess: true; originatingPendingIntent: PendingIntentRecord{dc46095 app.status.mobile startActivity}; realCallerApp: null; balAllowedByPiSender: BSP.ALLOW_FGS; resultIfPiSenderAllowsBal: BAL_BLOCK; balImproveRealCallerVisibilityCheck: true; balRequireOptInByPendingIntentCreator: true; balRequireOptInSameUid: false; balRespectAppSwitchStateWhenCheckBoundByForegroundUid: true; balDontBringExistingBackgroundTaskStackToFg: true]
2025-12-12 10:50:57.046  2282-2326  ActivityTaskManager     system_server                        W  startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { act=android.nfc.action.TAG_DISCOVERED flg=0x20000000 cmp=app.status.mobile/.StatusQtActivity (has extras) }
2025-12-12 10:50:57.051  2282-2326  ActivityTaskManager     system_server                        I  START u0 {act=android.nfc.action.TAG_DISCOVERED flg=0x20000000 cmp=app.status.mobile/.StatusQtActivity (has extras)} with LAUNCH_SINGLE_TOP from uid 10357 (realCallingUid=1027) (BAL_BLOCK) result code=3
2025-12-12 10:50:57.054  2282-4169  VibratorManagerService  system_server                        D  vibrate - uid: 1027, opPkg: com.android.nfc, effect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1, mMagnitudeType=TYPE_EXTRA}}, attrs: VibrationAttributes{mUsage=HARDWARE_FEEDBACK, mAudioUsage= USAGE_UNKNOWN, mCategory=UNKNOWN, mFlags=0, tags=}, reason: null, token: android.os.BinderProxy@4040db8
2025-12-12 10:50:57.058  3812-3812  [NFC_SE]Sa...gExtension com.android.nfc                      D  onOemLogEventNotified: PersistableBundle[{techList=[android.nfc.tech.IsoDep, android.nfc.tech.NfcA], action=3}]
2025-12-12 10:50:57.058  3812-3812  [NFC_SE]NfcOemLogHelper com.android.nfc                      D  reportLogEvent = PersistableBundle[{techList=[android.nfc.tech.IsoDep, android.nfc.tech.NfcA], action=3}]
2025-12-12 10:50:57.058  3812-3812  [NFC_SE]NfcLogSender    com.android.nfc                      D  NfcLogMessage : {
                                                                                                        "DE_REV": "10",
                                                                                                        "DE_VEN": "NXP",
                                                                                                        "DE_FWV": "1.1.3d",
                                                                                                        "TG_ERR": 10,
                                                                                                        "TG_TYP": 8
                                                                                                    }, TAGF
2025-12-12 10:50:57.067  3812-1619  libnfc_nci              com.android.nfc                      D  nfcManager_doSetTimeout: tech=3, timeout=3000
2025-12-12 10:50:57.067  3812-4080  libnfc_nci              com.android.nfc                      D  nativeNfcTag_doHandleReconnect: targetHandle = 0
2025-12-12 10:50:57.067  3812-4080  libnfc_nci              com.android.nfc                      D  nativeNfcTag_doConnect: targetHandle = 0
2025-12-12 10:50:57.067  3812-4080  libnfc_nci              com.android.nfc                      E  nativeNfcTag_doConnect:  doConnect sCurrentConnectedTargetProtocol 4 sCurrentConnectedTargetType 3
2025-12-12 10:50:57.067  3812-4080  libnfc_nci              com.android.nfc                      D  notifyNfcEvt: evtString : nativeNfcTag_doConnect
2025-12-12 10:50:57.067  3812-4080  libnfc_nci              com.android.nfc                      D  nativeNfcTag_doConnect: exit 0x0
2025-12-12 10:50:57.068  3812-1619  libnfc_nci              com.android.nfc                      D  nativeNfcTag_doTransceive: enter; raw=1; timeout = 3000
2025-12-12 10:50:57.099  3812-4712  libnfc_nci              com.android.nfc                      D  notifyNfcEvt: evtString : nfaConnectionCallback
2025-12-12 10:50:57.099  3812-4712  libnfc_nci              com.android.nfc                      D  Enter NfcExtnsNtfHandler::nfaConnectionCallback()
2025-12-12 10:50:57.099  3812-4712  libnfc_nci              com.android.nfc                      D  NfcExtnsNtfHandler::nfaConnectionCallback: Unknown Event
2025-12-12 10:50:57.099  3812-4712  libnfc_nci              com.android.nfc                      D  Exit NfcExtnsNtfHandler::nfaConnectionCallback()

...

2025-12-12 10:50:58.377  3812-4712  libnfc_nci              com.android.nfc                      D  Exit NfcExtnsNtfHandler::nfaConnectionCallback()
2025-12-12 10:50:58.377  3812-4712  libnfc_nci              com.android.nfc                      D  NfcTag::setDeactivationState: state=0
2025-12-12 10:50:58.377  3812-4712  libnfc_nci              com.android.nfc                      E  NfcTag::connectionEventHandler: Already deactivated
2025-12-12 10:50:58.377  3812-4712  libnfc_nci              com.android.nfc                      D  nativeNfcTag_abortWaits
2025-12-12 10:50:58.966 11226-11256 chronicles              app.status.mobile                    W  �[33mWRN�[0m 2025-12-12 10:50:58.959Z �[1mqt warning                                �[0m �[33mtopics�[0m=�[93m"qt"�[0m �[33mtid�[0m=�[94m11256�[0m �[33mcategory�[0m=�[94mdefault�[0m �[33mfile�[0m=�[94m:0�[0m �[33mtext�[0m=�[94m"java.lang.SecurityException: Permission Denial: Tag ( ID: 04 95 35 A2 F0 6E 80 ) is out of date\n\x09at android.nfc.Tag.getTagService(Tag.java:381)\n\x09at android.nfc.tech.BasicTagTechnology.isConnected(BasicTagTechnology.java:63)\n\x09at android.nfc.tech.IsoDep.isConnected(IsoDep.java:40)\n\x09at org.qtproject.qt.android.QtNative.startQtApplication(Native Method)\n\x09at org.qtproject.qt.android.QtNative$$ExternalSyntheticLambda5.run(D8$$SyntheticClass:0)\n\x09at org.qtproject.qt.android.QtThread$1.run(QtThread.java:25)\n\x09at java.lang.Thread.run(Thread.java:1012)\n"�[0m
image

Copy link
Member

@caybro caybro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work but some suggestions

}

// Error state
KeycardStateDisplay {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All these KeycardStateDisplay QML elements could be just one, and proper QML States could be used to just change the iconSource, title or description properties

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As @caybro suggested, or alternatively some inline component to avoid repeating fixed part as the behavior on opacity. Hmm, state machine approach won't give the effect of opacity-based transition, right?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've moved the state queue logic to a new component and simplified the drawer. Now it only has a single KeycardStateDisplay with a few states driven by KeycardChannelStateManager. The qtqml state machine doesn't seem to help much. 90% of the logic is related to holding a backend state queue and do some state translations (the backend changes states very fast - and this queue will make sure the user has some time to see the transitions)

// INTERNAL STATE MANAGEMENT - Queue-based approach
// ============================================================

QtObject {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this whole state machine could be a proper one (https://doc.qt.io/qt-6/qml-qtqml-statemachine-statemachine.html), but definitely not here inside a StatusDialog, wdyt?

@alexjba alexjba requested a review from a team as a code owner December 22, 2025 08:42
…keycard interactions

Adding a `KeycardChannelDrawer` that's guiding the user whenever the keycard is needed.

On IOS the system drawer is used
…ponents

- use a single KeycardStateDisplay instance with the necessary states
- The state queue, transitions and entire logic moved to KeycardChannelStateManager component
InProgress,
Completed
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

re: #19548 (comment)

@caybro Moved it here, in qml

@status-im-auto
Copy link
Member

status-im-auto commented Dec 22, 2025

Jenkins Builds

Click to see older builds (31)
Commit #️⃣ Finished (UTC) Duration Platform Result
23b6c55 #1 2025-12-10 11:50:38 ~6 min macos/aarch64-nwaku 📄log
23b6c55 #1 2025-12-10 11:51:05 ~6 min macos/aarch64 📄log
23b6c55 #1 2025-12-10 11:52:00 ~8 min android/arm64 📄log
23b6c55 #1 2025-12-10 11:54:05 ~10 min ios/aarch64 📄log
✔️ 23b6c55 #1 2025-12-10 11:56:24 ~12 min tests/nim 📄log
✔️ 23b6c55 #1 2025-12-10 12:03:14 ~19 min tests/ui 📄log
✔️ 23b6c55 #1 2025-12-10 12:05:20 ~21 min linux/x86_64 📦tgz
✔️ 23b6c55 #1 2025-12-10 12:08:15 ~24 min linux/x86_64-nwaku 📦tgz
✔️ 23b6c55 #1 2025-12-10 12:17:04 ~32 min windows/x86_64 💿exe
✖️ 23b6c55 pr19549 2025-12-10 12:23:25 ~17 min tests/e2e 📊rpt
✖️ 23b6c55 PR19549 2025-12-10 12:45:51 ~28 min tests/e2e-windows 📊rpt
7515f6e #2 2025-12-10 16:24:42 ~14 min windows/x86_64 📄log
✖️ 7515f6e #2 2025-12-10 16:30:52 ~21 min ios/aarch64 📱ipa
7515f6e #2 2025-12-10 16:35:12 ~25 min macos/aarch64-nwaku 📄log
✔️ 7515f6e #2 2025-12-10 16:38:44 ~29 min android/arm64 🤖apk 📲
✔️ 7515f6e #2 2025-12-10 16:40:26 ~30 min tests/nim 📄log
✔️ 7515f6e #2 2025-12-10 16:42:30 ~32 min macos/aarch64 🍎dmg
✔️ 7515f6e #2 2025-12-10 16:47:38 ~37 min tests/ui 📄log
✔️ 7515f6e #2 2025-12-10 16:50:27 ~40 min linux/x86_64 📦tgz
✔️ 7515f6e #2 2025-12-10 16:52:43 ~42 min linux/x86_64-nwaku 📦tgz
✔️ 7515f6e pr19549 2025-12-10 17:07:59 ~17 min tests/e2e 📊rpt
✖️ ff70aed #3 2025-12-11 12:59:38 ~14 min ios/aarch64 📱ipa
ff70aed #3 2025-12-11 13:00:16 ~14 min windows/x86_64 📄log
✔️ ff70aed #3 2025-12-11 13:08:50 ~23 min macos/aarch64-nwaku 🍎dmg
240efa3 #4 2025-12-11 13:27:44 ~15 min windows/x86_64 📄log
✔️ 240efa3 #4 2025-12-11 13:39:17 ~27 min android/arm64 🤖apk 📲
240efa3 #4 2025-12-11 13:42:31 ~30 min macos/aarch64-nwaku 📄log
✖️ 240efa3 #4 2025-12-11 13:43:48 ~31 min ios/aarch64 📱ipa
✔️ 240efa3 #4 2025-12-11 13:44:18 ~32 min tests/nim 📄log
✔️ 240efa3 #4 2025-12-11 13:47:34 ~35 min macos/aarch64 🍎dmg
✔️ 240efa3 #4 2025-12-11 13:50:37 ~38 min tests/ui 📄log
Commit #️⃣ Finished (UTC) Duration Platform Result
✖️ b1b5809 #5 2025-12-11 14:05:24 ~14 min ios/aarch64 📱ipa
✔️ b1b5809 #5 2025-12-11 14:10:41 ~19 min macos/aarch64 🍎dmg
✔️ b1b5809 #5 2025-12-11 14:11:01 ~20 min macos/aarch64-nwaku 🍎dmg
b1b5809 #5 2025-12-11 14:11:06 ~20 min windows/x86_64 📄log
✔️ b1b5809 #5 2025-12-11 14:33:26 ~42 min android/arm64 🤖apk 📲
✔️ b1b5809 #5 2025-12-11 14:35:17 ~44 min tests/nim 📄log
✔️ b1b5809 #5 2025-12-11 14:41:06 ~50 min tests/ui 📄log
b1b5809 #5 2025-12-11 14:44:54 ~54 min linux/x86_64 📄log
✔️ b1b5809 #5 2025-12-11 14:48:03 ~57 min linux/x86_64-nwaku 📦tgz
1daf137 #6 2025-12-22 15:16:09 ~8 min macos/aarch64-nwaku 📄log
✔️ 1daf137 #6 2025-12-22 15:18:01 ~10 min android/arm64 🤖apk 📲
✔️ 1daf137 #6 2025-12-22 15:18:11 ~10 min tests/nim 📄log
✖️ 1daf137 #6 2025-12-22 15:19:11 ~11 min ios/aarch64 📱ipa
✔️ 1daf137 #6 2025-12-22 15:22:01 ~14 min macos/aarch64 🍎dmg
✔️ 1daf137 #6 2025-12-22 15:22:42 ~15 min tests/ui 📄log
✔️ 1daf137 #6 2025-12-22 15:27:33 ~20 min linux/x86_64 📦tgz
✔️ 1daf137 #6 2025-12-22 15:27:42 ~20 min linux/x86_64-nwaku 📦tgz
✔️ 1daf137 pr19549 2025-12-22 15:44:06 ~16 min tests/e2e 📊rpt
✔️ 1daf137 #6 2025-12-22 15:52:42 ~45 min windows/x86_64 💿exe
✖️ 1daf137 PR19549 2025-12-22 16:11:59 ~19 min tests/e2e-windows 📊rpt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants