Skip to content

feat(web): reveal exact agent in onboarding - #2181

Merged
Gandy2025 merged 2 commits into
mainfrom
feat/onboarding-agent-arrival
Aug 5, 2026
Merged

feat(web): reveal exact agent in onboarding#2181
Gandy2025 merged 2 commits into
mainfrom
feat/onboarding-agent-arrival

Conversation

@Gandy2025

Copy link
Copy Markdown
Contributor

Summary

  • replace the generic onboarding finale with a shared exact-agent arrival for Admin and Invitee personal-agent paths
  • reveal the resolved agent's avatar or identicon, display name, invitation, single CTA, and first-Chat expectation
  • resolve the target once per mounted payoff screen and reuse that exact object for kickoff without reconnect/focus refetch swaps
  • keep readiness differences behind the shared surface while preserving existing tree-binding, scan-fix, orientation, and completion behavior
  • add production-backed preview states for starting and long-name review

Validation

  • pnpm check
  • pnpm typecheck (includes the Web production build)
  • pnpm test
  • focused onboarding regression suite: 83 tests passed
  • exact-agent and reconnect/remount coverage: 11 tests passed
  • exact-head Playwright preview checks for Admin and Invitee, desktop and 320px, light and dark themes, long names, starting identity, keyboard focus, and reduced motion

Product boundary

This remains the value-first start-chat payoff. It does not change Team-agent quick start, External BYO Context, kickoff kinds or idempotency, first-Chat orientation, onboarding completion/resume semantics, or capability ownership. Repo, Context Tree, and provider readiness remain outside the arrival copy.

The implementation follows the durable onboarding constraints in system/cloud/onboarding.md.

Review

  • Standards: no blockers on final staged diff
  • Spec: no blockers on final staged diff

@yuezengwu yuezengwu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed exact head 0934b5bc5cdb2e829e1d184ade8f47fd8021d6a6.

Goal and core changes: this replaces the generic personal-agent onboarding finale with a shared exact-agent arrival for Admin and Invitee paths. The mounted payoff resolves one active managed agent, shows its avatar/identicon and display name, and passes that same object into kickoff while the existing readiness, tree-binding, scan-fix, orientation, and completion branches remain behind the shared surface.

No blockers found. The diff preserves the durable onboarding boundary: this remains one value-first launch screen, keeps repository/provider/Context Tree readiness out of the copy, and does not change kickoff identity or idempotency. There are no core data-structure or database changes in this PR.

Diff-only review; I did not rerun tests or QA.

@baixiaohang baixiaohang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Recommendation: approve

  • Rationale: The payoff now reveals one resolved personal agent and reuses that same target for kickoff while preserving the existing onboarding launch boundaries.

Risk level: C

  • Path baseline: packages/web/** only -> C.
  • Semantic lift: none; the change does not alter subscriptions, WebSocket parsing, or shared data-layer semantics.

PR summary

  • Author / repo: Gandy2025 / agent-team-foundation/first-tree
  • Problem: Admins and invitees currently reach a generic onboarding finale that does not show which personal agent they are about to meet.
  • Approach: Resolve one active managed agent per mounted payoff screen, render that agent's name and avatar/identicon through one shared arrival surface, and pass the same object into the existing kickoff branches.
  • Impacted modules: Web onboarding start-chat UI, copy, preview fixtures, and regression tests.

Review findings

  • ✅ The focus/reconnect refetch controls and mount-scoped query key keep the revealed identity stable, and every Admin/Invitee kickoff branch receives that resolved object.
  • ✅ The repository, provider, and Context Tree readiness differences remain behind the shared surface; scan-fix, orientation, tree-binding, and completion calls retain their prior semantics.
  • ⚠️ Non-blocking: ManagedAgent does not currently carry avatarColorToken, so a resumed agent with a manager-selected identicon color can appear with its UUID-derived hue here and switch back to the configured hue in Chat. Consider threading the canonical color token through this identity source in a follow-up. [packages/web/src/pages/onboarding/steps/step-start-chat.tsx:118]

Action taken

  • Approved exact head 0934b5bc5cdb2e829e1d184ade8f47fd8021d6a6.
  • Diff-only review; I did not rerun tests or QA. All reported GitHub checks were passing when approval was submitted.

…-arrival

# Conflicts:
#	packages/web/src/pages/__tests__/web-dom-interactions.test.tsx
@Gandy2025

Copy link
Copy Markdown
Contributor Author

Synced the latest main into this branch at 1c0fcb9f0.

The only conflict was in packages/web/src/pages/__tests__/web-dom-interactions.test.tsx. The resolution preserves both sides of the Invitee coverage: the Agent Arrival assertions from this PR and the new View setup prompt absence assertions from main.

Exact-head validation:

  • pnpm check (passes; only existing non-blocking warnings)
  • pnpm --filter @first-tree/web typecheck
  • design-token guardrails
  • focused onboarding/DOM regression: 75 tests passed
  • full Web suite: 244 files / 2168 tests passed
  • git diff --check

No dedicated Mobile route, page, navigation, or feature gate was added; 320px remains a generic Web narrow-viewport robustness check only.

Please re-review exact head 1c0fcb9f0d089a6b8102a0c90ebfc8dd4c9827b5.

@baixiaohang baixiaohang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Recommendation: approve

  • Rationale: The latest head only syncs current main; its single conflict resolution preserves both this PR's exact-agent arrival coverage and main's new setup-prompt boundary assertions.

Risk level: C

  • Path baseline: the PR diff remains limited to packages/web/**.
  • Semantic lift: none.

PR summary

  • Author / repo: Gandy2025 / agent-team-foundation/first-tree
  • Problem: The personal-agent onboarding payoff does not currently reveal the exact agent the user is about to meet.
  • Approach: Resolve one active managed agent per mounted payoff screen, render its identity through a shared Admin/Invitee arrival, and pass that same object into the existing kickoff paths.
  • Impacted modules: Web onboarding start-chat UI, copy, previews, and regression tests.

Review findings

  • ✅ The eight previously reviewed PR files outside the conflicted DOM suite are byte-for-byte unchanged from approved head 0934b5bc5cdb2e829e1d184ade8f47fd8021d6a6.
  • ✅ The conflict resolution adds the five View setup prompt absence assertions introduced on main while retaining the Agent Arrival copy, CTA, and kickoff assertions from this branch.
  • ⚠️ The prior non-blocking avatarColorToken observation remains unchanged; the sync neither introduces nor worsens it.

Action taken

  • Approved exact head 1c0fcb9f0d089a6b8102a0c90ebfc8dd4c9827b5.
  • Incremental diff-only review; I did not rerun tests or QA. New-head GitHub checks were still running when this review was submitted.

@yuezengwu yuezengwu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Re-reviewed exact head 1c0fcb9f0d089a6b8102a0c90ebfc8dd4c9827b5 after syncing current main.

The core implementation is unchanged from the previously approved head. I inspected the merge parents, current PR diff, combined conflict diff, and the resolved test file. The only conflict resolution preserves the Agent Arrival text, CTA, and kickoff assertions from this PR while also retaining the five new View setup prompt absence assertions from main.

No blockers found. The PR remains limited to the same nine Web onboarding UI/test files, preserves the durable value-first start-chat and readiness boundaries, and introduces no core data-structure or database changes.

Incremental diff-only review; I did not rerun tests or QA.

@Gandy2025
Gandy2025 merged commit 0c96785 into main Aug 5, 2026
27 of 29 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 5, 2026
@Gandy2025

Copy link
Copy Markdown
Contributor Author

Merged after exact-head approvals and green CI.

The first Test Client & Web attempt had one unrelated focus assertion failure in chat-components-extra.test.tsx (1 failed / 2168 Web tests). The same exact head had already passed the full Web suite locally. The failed CI job was rerun without code changes and passed, as did the aggregate Test gate.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants