Repository navigation
feat(connect): show ring and bitkit buttons on touch devices - #106
Conversation
dzdidi
left a comment
There was a problem hiding this comment.
Recommended human verdict: request changes.
One blocking staging correctness issue remains; see inline comment. Exact-head Checks completed successfully. The RustSec failure is inherited from unchanged Cargo.lock and is being handled separately in #104, so it is not the basis for this verdict.
dzdidi
left a comment
There was a problem hiding this comment.
Recommended human verdict: request changes.
The legacy standalone shell now advertises Bitkit even though legacy auth remains Ring-only; see blocking inline comment. Exact-head Checks succeeded. RustSec failed on three advisories in unchanged Cargo.lock (tracked separately in #104), so that inherited failure is not the basis for this verdict.
dzdidi
left a comment
There was a problem hiding this comment.
Internal exact-head review evidence. Recommended human verdict: approve.
Reviewed d1d5ff89a27b969e78b6baae2e5fe91062e407fb against base ac8e893b4cb9d21b7736a431b511acd3efdfb83a. No actionable correctness, security, persistence, API-contract, test, or documentation findings. Prior Bitkit environment selection and legacy Ring-only blockers are fixed.
Exact-head hosted CI: Checks and RustSec both completed successfully. Relevant grant/legacy shell and Android intent tests passed. Blockers: 0.
Residual risk: physical-device/browser custom-scheme and visual behavior were not independently reproduced. Deployment still requires merged pubky/pubky-app#2907 to reach production before Locks Server.
dzdidi
left a comment
There was a problem hiding this comment.
Re-reviewed exact head d1d5ff8 against ac8e893. Prior staging Bitkit package and legacy Ring-only copy/logo blockers are fixed; grant/legacy shell coverage is present. Exact-head Checks and RustSec both pass. No blocking findings. Physical-device deep-link/visual behavior not independently reproduced; deploy pubky.app #2907 before Locks Server.
Summary
On touch devices,
/connectshows only "Continue with Pubky Ring", so a creator whose identity is in Bitkit cannot approve the creator authority. The Bitkit link exists only on iPhone, inside the embedded page. Closes #103. Closes #35.This PR changes the connect shell to the new design for pubky/pubky-app#2859:
intent://URL with its app's package, so Android opens the right app instead of a chooser or a saved default. Pubky Ring usesto.pubky.ring. Bitkit usesto.bitkitin production andto.bitkit.devin staging and development. This is the same fix as fix: deeplink for pubky-ring and bitkit from sign in page on android pubky-app#2885. Firefox on Android keeps the plainpubkyauth://link, and legacy connect keeps the plainpubkyauth://signinlink.bitkit://pubky-auth/signinwith the same query, as before. When the shell is embedded, both buttons open in the top frame.(pointer: coarse), the same media query pubky.app uses to size its iframe. The old query,(hover: none) and (pointer: coarse), does not match touch devices that also report hover. On those devices the shell showed the 192px QR inside pubky.app's 132px button box, so the QR was cut off.The embedded touch layout is two 60px buttons with a 12px gap (132px). pubky.app's iframe box matches this height.
Contract and risk impact
The authorization URL and the connect flow do not change. Only the shell's HTML and its links change.
Deploy order: ship pubky/pubky-app#2907 first, then this Lock Server change.
Verification
cargo fmt --check: passes.cargo clippy --all-targets --all-features -- -D warnings: passes.cargo test -p locks-server connect_shell: 16 passed. New tests cover the legacy shell (Ring link only, and no Bitkit text or logo), the grant shell (Ring and Bitkit links with Android and iOS variants, and the Bitkit package for each environment), and theintent://builder.locks-servertest run fails only in thepaykit_http_clientoversized-response tests. Those tests also fail onmasterwithout this change.Documentation
docs/API.mdanddocs/SDK.mdnow describe the Pubky Ring and Bitkit buttons and their platform links.docs/API.mdalso says that legacy connect keeps the plain link and names only Pubky Ring.Checklist
locks-signer-desktop-20261022-1344.mp4
locks-signer-mobile-grant-20261022-1533.mp4
locks-signer-mobile-ring-20261022-1414.mp4