Skip to content

feat: extract standalone FV intro screen, improve reverify UX, merge bounty spec - #4378

Merged
L03TJ3 merged 5 commits into
masterfrom
copilot/update-pull-request-description
Apr 21, 2026
Merged

feat: extract standalone FV intro screen, improve reverify UX, merge bounty spec#4378
L03TJ3 merged 5 commits into
masterfrom
copilot/update-pull-request-description

Conversation

Copilot AI commented Apr 17, 2026

Copy link
Copy Markdown
Contributor

Monolithic screens/IntroScreen.jsx mixed standalone FV-flow components with deprecated native-flow components (Intro, IntroReVerification), and standalone/AppRouter reached back through the main barrel to import FaceVerificationIntro. Reverify users also saw the same Overview screen as new users, lacked a "Last verified" date, and weren't required to confirm the age checkbox.

Structural changes

  • New standalone/screens/IntroScreen.jsx — migrated IntroFVFlowOverview, IntroFVFlowAction, IntroFVFlow, WalletDeletedPopupText, WarningBlock, shortenWalletAddress, own getStylesFromProps; no isFVFlow references anywhere; all gate hooks preserved (useDisposingState, useFVLoginInfoCheck, camera permission, useFaceTecSDK)
  • Deleted screens/IntroScreen.jsx — deprecated Intro and IntroReVerification components gone, file removed
  • standalone/AppRouter.jsx — rewired import to ./screens/IntroScreen
  • standalone/index.js — exports FaceVerificationIntro from new location
  • faceVerification/index.jsFaceVerificationIntro export removed

Reverify UX improvements

  • IntroFVFlow initialises showActionScreen = isReverify → reverify users skip Overview and land directly on the Action screen
  • Action screen renders Wallet Linked box with "Last verified: {date}" for reverify users (zero-value guarded via lastAuthenticated?.isZero())
  • Age confirmation checkbox now shown and required for all users; button disabled until both checkboxes are ticked
// IntroFVFlow — reverify users skip the overview
const [showActionScreen, setShowActionScreen] = useState(isReverify)

// IntroScreen — lastVerified derived from on-chain timestamp
const lastVerified = useMemo(() => {
  const ts = expiryDate?.lastAuthenticated
  return ts && !ts.isZero() ? moment.unix(ts.toNumber()).format('l') : null
}, [expiryDate?.lastAuthenticated])

// IntroFVFlowAction — both checkboxes required for everyone
disabled={!ageConfirmed || !goodDollarOnlyConfirmed}

Tests & bounty spec

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • explorer.fuse.io
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node node ./node_modules/.bin/jest --testPathPattern=faceVerification/__tests__/IntroScreen -u --no-coverage --noprofile (dns block)
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node node ./node_modules/.bin/jest --testPathPattern=faceVerification/__tests__/IntroScreen --no-coverage --no�� --noprofile (dns block)
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node node ./node_modules/.bin/jest --testPathPattern=faceVerification/__tests__/IntroScreen --no-coverage /hom�� e (dns block)
  • forno.celo.org
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node node ./node_modules/.bin/jest --testPathPattern=faceVerification/__tests__/IntroScreen -u --no-coverage --noprofile (dns block)
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node node ./node_modules/.bin/jest --testPathPattern=faceVerification/__tests__/IntroScreen --no-coverage --no�� --noprofile (dns block)
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node node ./node_modules/.bin/jest --testPathPattern=faceVerification/__tests__/IntroScreen --no-coverage /hom�� e (dns block)
  • rpc.fuse.io
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node node ./node_modules/.bin/jest --testPathPattern=faceVerification/__tests__/IntroScreen -u --no-coverage --noprofile (dns block)
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node node ./node_modules/.bin/jest --testPathPattern=faceVerification/__tests__/IntroScreen --no-coverage --no�� --noprofile (dns block)
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node node ./node_modules/.bin/jest --testPathPattern=faceVerification/__tests__/IntroScreen --no-coverage /hom�� e (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

Okay, the pull-request itself was supposed to be a starting point. it should be turned into the action plan/executing of the bounty/issue.
you can go ahead and update the pull-requests description to indicate this and then start applying the requested fixes in the bounty-spec

[Chronological Review: The conversation began with the user requesting to ensure that bounty artifacts were aligned, pushing local changes to the origin, creating a pull request from the current feature branch, and creating an issue in the repository based on a specified file. The user then paused the execution to clarify that the branch was stale and needed updates. After pulling in the latest changes, the user instructed to continue with the execution plan, indicating that the pull request should serve as a starting point for an action plan related to the bounty. The user requested to update the pull request description and start applying requested fixes from the bounty specification.]

[Intent Mapping:

  1. "make sure the bounty artifacts are aligned" - User wants to ensure all changes are consistent.
  2. "push our local changes to origin and create an initial pull-request" - User requests to push changes and create a pull request.
  3. "create an issue in the repository with the details of @file:03_bounty_spec.md" - User wants to create an issue based on a specific file.
  4. "the pull-request itself was supposed to be a starting point" - User clarifies the purpose of the pull request and requests updates to its description and action plan.]

[Technical Inventory:

  • Repository: GoodDAPP
  • Current branch: master
  • Default branch: master
  • User is working with Git for version control and managing pull requests.]

[Code Archaeology: No specific files or code changes were detailed in the conversation, but the user referenced a bounty specification file (@file:03_bounty_spec.md) that will inform the updates needed.]

[Progress Assessment:

  • Completed Tasks: User pulled the latest changes to align the branch with the remote repository.
  • Partially Complete Work: User has not yet pushed changes or created the pull request, but has outlined the steps to be taken.]

[Context Validation: All necessary context for continuing work is captured, including the need to update the pull request and apply fixes from the bounty specification.]

[Recent Commands Analysis:

  • Last Agent Commands: User requested to pause execution, then later confirmed to continue after pulling changes.
  • Tool Results Summary: The repository information was provided, confirming the current branch and its status.
  • Pre-Summary State: The agent was preparing to push changes and create a pull request when the token budget was exceeded.
  • Operation Context: The commands executed were directly related to the user's goals of aligning artifacts, pushing changes, and creating a pull request for the bounty issue.]
1. Conversation Overview: - Primary Objectives: - "make sure the bounty artifacts are aligned" - "push our local changes to origin and create an initial pull-request" - "create an issue in the repository with the details of @file:03_bounty_spec.md" - "the pull-request itself was supposed to be a starting point" - Session Context: The conversation involved ensuring alignment of code artifacts, managing Git operations, and setting up a pull request and issue for a bounty. - User Intent Evolution: The user initially focused on alignment and pushing changes, then clarified the purpose of the pull request and requested updates to its description.
  1. Technical Foundation:
  • Repository: GoodDAPP
  • Current Branch: master
  • Default Branch: master
  1. Codebase Status:
  • No specific files were modified or discussed in detail, but the user referenced a bounty specification file for upcoming changes.
  1. Problem Resolution:
  • Issues Encountered: The branch was stale and needed to be updated with the latest changes.
  • Solutions Implemented: User pulled the latest changes to align the branch.
  • Debugging Context: No ongoing troubleshooting was mentioned, but the user clarified the need for alignment.
  • Lessons Learned: Importance of keeping branches updated to avoid misalignment.
  1. Progress Tracking:
  • Completed Tasks: User successfully pulled the latest changes.
  • Partially Complete Work: User has yet to push changes or create the pull request.
  • Validated Outcomes: No specific features or code confirmed working through testing yet.
  1. Active Work State:
  • Current Focus: Updating the pull request description and applying fixes from the bounty specification.
  • Recent Context: User confirmed the branch was updated and requested to proceed with the execution plan.
  • Working Code: No specific code snippets were discussed recently.
  • Immediate Context: User is preparing to update the pull request and apply requested fixes.
  1. Recent Operations:
  • Last Agent Commands: User requested to pause execution, then confirmed to continue after pullin...

Created from VS Code.

L03TJ3 and others added 2 commits April 17, 2026 14:01
Adds .bounties/20260417-fv-intro-screen-flow/ with:
- meta.yaml
- 01_clarified_intent.md
- 02_repo_context.md
- 03_bounty_spec.md
- 04_review_dod.md

Also resolves .gitignore merge conflict from pull.
@vercel

vercel Bot commented Apr 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

3 Skipped Deployments
Project Deployment Actions Updated (UTC)
gooddollar-delta Ignored Ignored Preview Apr 17, 2026 7:42am
goodid Ignored Ignored Preview Apr 17, 2026 7:42am
goodwallet Ignored Ignored Apr 17, 2026 7:42am

Request Review

Copilot AI and others added 2 commits April 17, 2026 07:38
- Create standalone/screens/IntroScreen.jsx: migrated IntroFVFlowOverview,
  IntroFVFlowAction, IntroFVFlow, WalletDeletedPopupText, WarningBlock,
  shortenWalletAddress with all gate hooks and camera permission logic
- IntroFVFlow initializes showActionScreen=isReverify so reverify users
  skip the Overview screen
- IntroFVFlowAction shows Wallet Linked box with 'Last verified: {date}'
  for reverify users; both consent checkboxes now required for all users
- Thread lastVerified (moment-formatted lastAuthenticated) and walletAddress
  into action screen
- standalone/AppRouter.jsx: rewire FaceVerificationIntro import to
  standalone/screens/IntroScreen
- standalone/index.js: export FaceVerificationIntro from new location
- Delete deprecated screens/IntroScreen.jsx (Intro, IntroReVerification
  and standalone components removed)
- faceVerification/index.js: remove FaceVerificationIntro export
- Update __tests__/IntroScreen.jsx: mock useIdentityExpiryDate, add
  isReverify===true snapshot test; regenerate snapshots

Agent-Logs-Url: https://github.com/GoodDollar/GoodDAPP/sessions/a59b871f-7339-49a6-b05f-66a6f6c17c43

Co-authored-by: L03TJ3 <6606028+L03TJ3@users.noreply.github.com>
Brings in .bounties/20260417-fv-intro-screen-flow/ (meta.yaml,
01_clarified_intent.md, 02_repo_context.md, 03_bounty_spec.md,
04_review_dod.md) alongside the implementation from this PR.
Co-authored-by: L03TJ3 <6606028+L03TJ3@users.noreply.github.com>
@L03TJ3 L03TJ3 linked an issue Apr 17, 2026 that may be closed by this pull request
9 tasks
Copilot AI changed the title [WIP] Update pull request to reflect action plan for bounty feat: extract standalone FV intro screen, improve reverify UX, merge bounty spec Apr 17, 2026
Copilot AI requested a review from L03TJ3 April 17, 2026 07:43
@L03TJ3
L03TJ3 marked this pull request as ready for review April 17, 2026 07:49
@L03TJ3

L03TJ3 commented Apr 17, 2026

Copy link
Copy Markdown
Collaborator

Because the flow needs a verified signer its not easy to instruct copilot to test these screens.
The screens and flow:

Only seen by users that reverify
Screenshot from 2026-04-17 14-56-27

Only seen by new users
Screenshot from 2026-04-17 14-56-05
Screenshot from 2026-04-17 14-56-09

@L03TJ3
L03TJ3 requested a review from sirpy April 17, 2026 07:58
@L03TJ3
L03TJ3 merged commit 8330246 into master Apr 21, 2026
5 checks passed
@L03TJ3
L03TJ3 deleted the copilot/update-pull-request-description branch April 21, 2026 10:50
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.

Bounty: FV Standalone Flow — Differentiate first-time vs. reverify intro screens

2 participants