Skip to content

Set up repo with organized docs and structure - #11

Merged
kchaw2005 merged 39 commits into
mainfrom
integration/authenticator-demo
Oct 19, 2026
Merged

kchaw2005 merged 39 commits into
mainfrom
integration/authenticator-demo

Conversation

@kchaw2005

@kchaw2005 kchaw2005 commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Why

What

  • Bring together passkey wallet access, staging proof requests and camera guidance using published product dependencies, including WalletKit 0.27.1.
  • Organize the code into top-level web/ and api/, with React components grouped under web/components/ and no src/ wrappers.
  • Keep setup, commands and the file map in short root and app READMEs.
  • Remove planning documents and experimental demos from the PR file tree; preserve them separately for local reference.

Test

  • Frozen install, lint, typecheck and both builds passed with Bun 1.4.2.
  • 85 unit tests passed; Chromium/WebKit: 16 passed, 2 skipped.
  • Source and isolated compiled-server smoke checks passed. CI also passed the Docker build and container smoke test before this documentation/demo cleanup.
  • Reviewed the home screen at mobile and desktop sizes; screenshots are retained at the earlier review commit. UI screenshots and test conditions.
Mobile Desktop
Mobile Desktop

Risk

  • Broad baseline change; staging only. Selfie enrollment, user presence and recovery remain incomplete.

Dzejkop and others added 26 commits October 7, 2026 16:45
Migrate clean-start from web-authenticator-experiments b4139268da213a680e89bf5877c29fcafb145f25, preserving the browser UI, contracts, simulator and tests. Add npm WalletKit 0.27.1, PRF-derived encrypted storage, explicit simulation labeling and browser regression coverage. Exclude private biometric and staging tooling.
@socket-security

socket-security Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Priority Alert  (click "▶" to expand/collapse) Action
Low priority
License policy violation: npm caniuse-lite under CC-BY-4.0

License: CC-BY-4.0 - The applicable license policy does not permit this license (5) (npm metadata)

License: CC-BY-4.0 - The applicable license policy does not permit this license (5) (package/package.json)

License: LicenseRef-CC-BY-4.0-0c618849 - The applicable license policy does not permit this license (5) (package/LICENSE)

From: package.json → npm/eslint-plugin-react-hooks@7.1.1 → npm/caniuse-lite@1.0.30001810

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/caniuse-lite@1.0.30001810. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn

View full report

@kchaw2005
kchaw2005 marked this pull request as ready for review October 14, 2026 18:26
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-16T17:41:01.821584Z 8095f73 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 21f9353ae8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread api/http.ts Outdated
@kchaw2005

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 88ff25e5ff

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread web/App.tsx Outdated
{incoming && <button className="secondary-action" disabled={busy} onClick={() => void cancel()}>Cancel request</button>}
{wallet && !incoming && screen === "review" && <button className="secondary-action" disabled={busy} onClick={closeWallet}>Lock wallet</button>}
</>}
{screen === "delivery" && <button className="primary-action" disabled={busy || expired} onClick={() => void run(deliver)}>{busy ? "Sending…" : "Retry sending proof"}</button>}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Provide an exit when a delivery retry expires

If the initial bridge upload fails and the request then reaches expires_at, this button becomes disabled while the delivery screen suppresses every other action, including cancellation and the link back to the authenticator. The user is left permanently stranded on “Sending your proof” with no actionable control; expose an abandon/return action when expired is true rather than only disabling the retry.

Useful? React with 👍 / 👎.

@kchaw2005

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1ef90128ca

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +26 to +27
if (!["queued", "batching", "submitted", "finalized"].includes(status.state)) {
throw new Error("Registration was not finalized.");

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Recover wallets after a definitive registration failure

When pollRegistration() returns its explicit failed state, this branch throws but leaves the persisted state as submitting. Every subsequent unlock therefore skips both registration and polling and calls initializeAuthenticator() for an account known not to have finalized, permanently stranding the new passkey despite telling the user to unlock and retry. Preserve the no-resubmission behavior for ambiguous transport failures, but provide a reset or explicit retry path when staging definitively reports failure.

Useful? React with 👍 / 👎.

Comment thread web/lib/wallet-session.ts Outdated
import { WalletOpenError } from "./wallet-errors";

const PROFILE_KEY = "world-id-wallet-v1";
const PRF_INPUT = new TextEncoder().encode("world-id/web-authenticator/prf/v1");

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Align the wallet PRF input with the exported V1 contract

The newly exported V1 contract fixes the PRF input to world-id:web-authenticator:world-id-4:v1 (SHA-256 0b2ba1…), while the actual passkey ceremony uses this different label, whose digest is 98c8c3…. Consequently, an integration that provisions or validates authenticator material according to WebAuthnPrfAuthenticatorPolicyV1 derives a different secret from the wallet created by this app; use the shared contract label or version the contract to match the implemented derivation.

Useful? React with 👍 / 👎.

@kchaw2005

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b3126d2806

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread web/lib/rgbnet-model.json
@@ -0,0 +1,6 @@
{
"url": "/models/rgbnet.onnx",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Provision RGBNet before exposing the preview

In a clean checkout—including the CI and Docker builds—the requested /models/rgbnet.onnx cannot exist: a repo-wide tree search finds only web/public/models/README.md, and .gitignore excludes the model binary. Consequently every shipped build exposes “Open camera preview” but the worker always receives a 404 and reports that face guidance is unavailable. Add a build/deployment provisioning step for the pinned model, or hide the preview when the asset is absent.

Useful? React with 👍 / 👎.

@kchaw2005 kchaw2005 changed the title Cold start web authenticator from #9 with organized docs and structure Set up repo with organized docs and structure Oct 14, 2026
@kchaw2005

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 512976b94b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

const connector = parseConnector(href)
if (!connector) return null
progress('Fetching the encrypted request from the World ID bridge…')
const bridge = await openBridge(connector, signal)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Bind the fallback return URL to authenticated request data

When the encrypted payload omits return_to_url, this fallback accepts return_to directly from the mutable connector query. Anyone who can rewrite or redistribute an otherwise valid connector link can therefore send the user to an arbitrary HTTPS site through the trusted “Return to requesting app” action after approval or cancellation. Only expose a callback authenticated by the payload/RP, or otherwise bind the query callback to the validated request.

Useful? React with 👍 / 👎.

@kchaw2005

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8095f73959

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread web/App.tsx Outdated
</>}
{screen === "delivery" && <button className="primary-action" disabled={busy || expired} onClick={() => void run(deliver)}>{busy && !expired ? "Sending…" : "Retry sending proof"}</button>}
{finished && incoming?.returnUrl && <a className="primary-action return-link" href={incoming.returnUrl}>Return to requesting app</a>}
{(finished || loadFailed || deliveryExpired || screen === "wallet-timeout" || screen === "wallet-error") && <a className="secondary-action return-link" href="/" onClick={deliveryExpired ? leaveDelivery : undefined}>Open authenticator</a>}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Offer an exit for requests that expire before delivery

When a request expires while the user is still on the review or enrollment screen, supported becomes false and removes the unlock, approve, and back actions, but this condition does not render the “Open authenticator” link because deliveryExpired is false. The only remaining action is cancellation; if the expired bridge request rejects that upload, the user is left retrying cancellation with no in-app way to clear the request other than manually reloading or closing the tab. Include ordinary expired requests in the local-exit condition as well.

Useful? React with 👍 / 👎.

Takaros999
Takaros999 previously approved these changes Oct 16, 2026
Kartike Chawla added 2 commits October 17, 2026 12:49
The v1 contract named a different PRF input label and a verbatim
output mapping, so an integration following it would derive other keys
than this wallet. Describe the implemented input and HKDF mapping, and
test that the wallet's label stays equal to the contract.
A request expiring on the review or enrollment screen removed every
action except cancellation. Show the local exit and the requesting
app's return link for any expired request.
@kchaw2005
kchaw2005 merged commit 68c3cf5 into main Oct 19, 2026
7 checks passed
@kchaw2005
kchaw2005 deleted the integration/authenticator-demo branch October 19, 2026 09:13
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.

3 participants