Skip to content

ORB-201 Remove challenge and accountability social UI - #698

Open
thomasluizon wants to merge 3 commits into
mainfrom
feature/orb-201-delete-social-layer-ui-part-1
Open

ORB-201 Remove challenge and accountability social UI#698
thomasluizon wants to merge 3 commits into
mainfrom
feature/orb-201-delete-social-layer-ui-part-1

Conversation

@thomasluizon

@thomasluizon thomasluizon commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • Removes the challenge and accountability social UI from web, mobile, and shared client code.
  • Keeps Feed, Friends, social opt in, social identity, cheers, and the Today social entry card.
  • Removes retired routes, proxy allowlist entries, hooks, actions, query helpers, types, validation, i18n keys, embedded friend and habit context, and orphaned tests.
  • Regenerates the architecture map after the route and module deletions.

Closes ORB-201

Verification

  • npm run lint
  • npm run type-check
  • npm test
  • Focused web, mobile, and shared regression suites
  • Cross Platform Parity local equivalent: web-scope files: 33, mobile-scope files: 26
  • Pre-commit and pre-push hooks

Reference sweep

Retired accountability and buddy client references:

rg -n -i "accountability|buddies|buddy" apps packages --glob "*.ts" --glob "*.tsx" --glob "!**/node_modules/**" --glob "!**/.next/**" --glob "!packages/shared/src/types/__generated__/**"
no matches

Production challenge references, excluding tests and the generated server contract:

rg -n -i "challenge|accountability|buddies|buddy" apps/web apps/mobile packages/shared --glob "*.ts" --glob "*.tsx" --glob "!**/__tests__/**" --glob "!packages/shared/src/types/__generated__/**" --glob "!**/node_modules/**" --glob "!**/.next/**"
packages/shared/src/types/ai.ts:87:export const agentStepUpChallengeSchema = z.object({
packages/shared/src/types/ai.ts:88:  challengeId: z.string(),
packages/shared/src/types/ai.ts:92:export type AgentStepUpChallenge = z.infer<typeof agentStepUpChallengeSchema>
apps/mobile/components/message-bubble.tsx:33:  ) => Promise<{ ok: boolean; error?: string; challengeId?: string; confirmationToken?: string }>;
apps/mobile/components/message-bubble.tsx:36:    challengeId: string,
apps/mobile/hooks/use-pending-operation-execution.ts:6:  AgentStepUpChallenge,
apps/mobile/hooks/use-pending-operation-execution.ts:19:      challenge: AgentStepUpChallenge;
apps/mobile/hooks/use-pending-operation-execution.ts:79:        const challenge = await apiClient<AgentStepUpChallenge>(
apps/mobile/hooks/use-pending-operation-execution.ts:89:          challenge,
apps/mobile/hooks/use-pending-operation-execution.ts:102:      challengeId: string,
apps/mobile/hooks/use-pending-operation-execution.ts:111:            body: JSON.stringify({ challengeId, code }),
apps/mobile/hooks/use-pending-operation-execution.ts:140:        challengeId: result.challenge.challengeId,
apps/mobile/hooks/use-pending-operation-execution.ts:150:      challengeId: string,
apps/mobile/hooks/use-pending-operation-execution.ts:156:        challengeId,
apps/web/hooks/use-chat-pending-operations.ts:55:      const challenge = await issuePendingOperationStepUp(pendingOperationId, locale)
apps/web/hooks/use-chat-pending-operations.ts:56:      if (!challenge.ok) {
apps/web/hooks/use-chat-pending-operations.ts:57:        return { ok: false as const, error: getFriendlyErrorMessage(challenge.error, t, 'chat.sendError', 'generic') }
apps/web/hooks/use-chat-pending-operations.ts:62:        challengeId: challenge.data.challengeId,
apps/web/hooks/use-chat-pending-operations.ts:72:      challengeId: string,
apps/web/hooks/use-chat-pending-operations.ts:78:        challengeId,
apps/mobile/components/chat/pending-operation-card.tsx:42:  ) => Promise<{ ok: boolean; error?: string; challengeId?: string; confirmationToken?: string }>;
apps/mobile/components/chat/pending-operation-card.tsx:45:    challengeId: string,
apps/mobile/components/chat/pending-operation-card.tsx:93:  const [challengeId, setChallengeId] = useState<string | null>(null);
apps/mobile/components/chat/pending-operation-card.tsx:112:        if (!result.ok || !result.challengeId || !result.confirmationToken) {
apps/mobile/components/chat/pending-operation-card.tsx:118:        setChallengeId(result.challengeId);
apps/mobile/components/chat/pending-operation-card.tsx:141:    if (!challengeId || !confirmationToken || verificationCode.trim().length < 6) {
apps/mobile/components/chat/pending-operation-card.tsx:152:        challengeId,
apps/mobile/components/chat/pending-operation-card.tsx:192:      {challengeId && !successMessage ? (
apps/mobile/components/chat/pending-operation-card.tsx:221:      {!challengeId && !successMessage ? (
apps/web/app/actions/chat.ts:6:  AgentStepUpChallenge,
apps/web/app/actions/chat.ts:55:): Promise<PendingOperationActionResult<AgentStepUpChallenge>> {
apps/web/app/actions/chat.ts:57:    serverAuthFetch<AgentStepUpChallenge>(API.ai.pendingOperationStepUp(id), {
apps/web/app/actions/chat.ts:67:  challengeId: string,
apps/web/app/actions/chat.ts:73:      body: JSON.stringify({ challengeId, code }),
apps/web/components/chat/pending-operation-card.tsx:25:  ) => Promise<{ ok: boolean; error?: string; challengeId?: string; confirmationToken?: string }>
apps/web/components/chat/pending-operation-card.tsx:28:    challengeId: string,
apps/web/components/chat/pending-operation-card.tsx:70:  const [challengeId, setChallengeId] = useState<string | null>(null)
apps/web/components/chat/pending-operation-card.tsx:90:        if (!result.ok || !result.challengeId || !result.confirmationToken) {
apps/web/components/chat/pending-operation-card.tsx:95:        setChallengeId(result.challengeId)
apps/web/components/chat/pending-operation-card.tsx:119:    if (!challengeId || !confirmationToken || verificationCode.trim().length === 0) {
apps/web/components/chat/pending-operation-card.tsx:130:        challengeId,
apps/web/components/chat/pending-operation-card.tsx:209:      {challengeId && !successMessage && (
apps/web/components/chat/pending-operation-card.tsx:241:      {!challengeId && !successMessage && (
apps/web/components/chat/message-bubble.tsx:31:  ) => Promise<{ ok: boolean; error?: string; challengeId?: string; confirmationToken?: string }>
apps/web/components/chat/message-bubble.tsx:34:    challengeId: string,

All remaining production hits are the unrelated agent step-up confirmation flow required to survive this ticket.

Scope decision

packages/shared/src/types/generated/api.generated.ts remains unchanged. It describes the server API, which this ticket explicitly does not delete. It is excluded from the client reference sweep above. Embedded social context in friend profiles, habit detail, and notification glyph routing was removed because it otherwise left orphaned client references.

Visual check

Human visual verification is owed after review for the two-tab social hub on web and mobile, removed entry points, and removed deep-link destinations. The work order prohibits starting the app or taking screenshots in this implementation session.

@vercel

vercel Bot commented Aug 8, 2026

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
orbit-ui-mobile-web Ignored Ignored Aug 8, 2026 9:38am

Request 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: 1d40e92c9e

ℹ️ 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 apps/web/app/(app)/social/page.tsx
Comment thread packages/shared/src/i18n/en.json
Comment thread apps/web/app/(app)/social/page.tsx
Retain the retired team_player, mission_accomplished, and battle_buddy translations because existing earned-achievement records still resolve those IDs on the web and mobile achievement histories.
@sonarqubecloud

sonarqubecloud Bot commented Aug 8, 2026

Copy link
Copy Markdown

@thomasluizon

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: 24ba2f042f

ℹ️ 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".

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.

1 participant