Uh oh!
There was an error while loading. Please reload this page.
feat: add profile and contacts fetching from pubky - #824
Conversation
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
This comment has been minimized.
This comment has been minimized.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as outdated.
This comment was marked as outdated.
piotr-iohk
commented
Apr 10, 2026
Create Profile flow testing
1. Create profile - OK. 2. Edit / Delete profile
![]()
Screen.Recording.2026-04-10.at.10.54.33.mov
Screen.Recording.2026-04-10.at.11.05.22.mov
Screen.Recording.2026-04-10.at.11.07.26.mov3. Add contact
Screen.Recording.2026-04-10.at.11.34.19.mov
Screen.Recording.2026-04-10.at.12.00.12.mov4. Edit / Delete contact
![]()
|
ben-kaufman
commented
Apr 10, 2026
Same pubky after delete is expected since we use deterministic derivation based on the seed. So that's the expected behavior there. |
piotr-iohk
commented
Apr 10, 2026
ben-kaufman
commented
Apr 10, 2026
No I think the warning makes sense, it deletes the profile, but not the key to it, maybe can remove the word "permenantly" |
piotr-iohk
commented
Apr 10, 2026
Hm, it's also not like the profile is entirely deleted. From what I see only profile details (bio, links, tags) are deleted but the contacts are preserved. |
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Uh oh!
There was an error while loading. Please reload this page.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ben-kaufman
commented
Apr 10, 2026
@piotr-iohk ah yes I missed that, fixed |
piotr-iohk
commented
Apr 10, 2026
Additional observation (on 1e38929): 1.
Expected:
Actual:
2. It would be great if we could have same behavior on pubky validation when adding contacts (currently differs on iOS - validation on pubky input vs Android - validation after taping add, on Android also subsequent Retry button does not work). It would make things consistent + easier for e2e tests. 🙏 |
ben-kaufman
commented
Apr 10, 2026
About 1, agree it makes sense, but backup and restore should ideally be done in a separate PR since this is already too large and they are a separate area of work. Not sure I understood what you refer to in 2, can you please explain? |
piotr-iohk
commented
Apr 10, 2026
Sorry - I've added video on iOS for 2nd point: synonymdev/bitkit-ios#476 (comment) |
piotr-iohk
left a comment
There was a problem hiding this comment.
I think this is mostly good functionally. There are some UI / Figma mismatches that we can clean up in a follow-up. We still need more testing before we call the feature done, but LGTM to merge this branch.
This comment was marked as duplicate.
This comment was marked as duplicate.
Failed testing this scenario Edit: As far as I can see, it is not implemented, could be addressed to other PR Screen_recording_20260420_135248.webm |
There was a problem hiding this comment.
✅ Sign-in with Pubky ring
✅ Copy contact key
✅ Pubky app data imported successfully
✅ Add contact from drawer option
- Couldn't test create account by Bitkit (home gate endpoint not available)
- Reset wallet -> restore -> Is not restoring the profile
- Expected copy the profile key on QR code click
- Expected decode the profile key when pasting in home
ben-kaufman
commented
Apr 21, 2026
Restore will be handled in a following PR.
Can you please explain what you meant in these? |
jvsena42
commented
Apr 21, 2026
Screen_recording_20260421_064459.webm
|
Uh oh!
There was an error while loading. Please reload this page.



Integrates Pubky decentralized identity into Bitkit, allowing users to create a Bitkit-managed profile or connect via Pubky Ring authentication. Once connected, the user's profile name and avatar appear on the home screen header, a full profile page shows their bio, links, tags, and shareable QR code, and a contacts section lists people they follow on the Pubky network.
Description
pubkyauth://)onboarding
restoration fails
pubkyauth://URLs from QR scans and deep links, biometric auth before approval, three-state sheet (authorize → authorizing → success)PubkyService— service layer wrappingbitkit-core(auth relay, PKDNS file fetching, key derivation, homeserver operations) andpaykit(session management)PubkyRepo— manages auth state, session lifecycle, key derivation, profile creation/editing, contact CRUD, homeserver file operations, and auth approvalPubkyProfileDatabackward-compatible decoding —tagsfield defaults to empty array when missing from JSON (older profiles, other clients)bitkit-coreto v0.1.56 — adds key derivation, homeserver session operations, auth approval FFI functionsKey new files
services/PubkyService.ktrepositories/PubkyRepo.ktmodels/PubkyProfile.ktmodels/PubkyAuthRequest.ktui/components/CenteredProfileHeader.ktui/components/ProfileEditForm.ktui/components/AddLinkSheet.ktui/components/AddTagSheet.ktui/screens/profile/PubkyChoiceScreen.ktui/screens/profile/CreateProfileScreen.ktui/screens/profile/EditProfileScreen.ktui/screens/profile/PayContactsScreen.ktui/screens/profile/PubkyAuthApprovalSheet.ktui/screens/contacts/AddContactScreen.ktui/screens/contacts/EditContactScreen.ktui/screens/contacts/ContactImportOverviewScreen.ktui/screens/contacts/ContactImportSelectScreen.kttests/PubkyProfileDataTest.kttests/PubkyAuthRequestTest.ktQA Notes
pubkyauth://QR code → shows approval sheet with permissions → biometric → authorize → successpubkyauth://deep link → same approval flow