Skip to content

fix: onboarding finish, level-up re-trigger, fresh start focus - #10

Merged
thomasluizon merged 1 commit into
mainfrom
fix/onboarding-levelup-freshstart
Apr 5, 2026
Merged

fix: onboarding finish, level-up re-trigger, fresh start focus#10
thomasluizon merged 1 commit into
mainfrom
fix/onboarding-levelup-freshstart

Conversation

@thomasluizon

Copy link
Copy Markdown
Owner

Summary

  • Fix onboarding "Começar a Usar o Orbit" button not navigating to home (profile cache only updated on error, not success)
  • Fix level-up overlay re-triggering infinitely (ref-based acknowledgment replaced with state to trigger useMemo recomputation)
  • Fix fresh start modal input focus shifting to X button on every keystroke (unstable handleOpenChange callback)
  • Fix authFetch crashing on empty 200 response bodies (profile reset, onboarding complete)
  • All fixes applied to both web and mobile (cross-platform parity)

Test plan

  • Reset account via Fresh Start, verify input stays focused and no JSON error
  • Complete onboarding (create habit, trigger level-up), click finish button -- should navigate to home without level-up re-triggering
  • Verify level-up overlay shows once and dismisses after 3 seconds, never reappears

🤖 Generated with Claude Code

…ocus

- Fix handleFinish not navigating: profile cache was only updated in
  catch block, so OnboardingFlow portal stayed visible on success.
  Now updates cache unconditionally before navigation (web + mobile).

- Fix level-up overlay re-triggering infinitely: acknowledgedLevel
  changed from useRef to useState so clearing triggers useMemo
  recomputation. Removed onClear from effect deps. Replaced no-op
  onClear callbacks with gamification.clearLevelUp (web + mobile).

- Fix fresh start modal focus trap: memoize handleOpenChange with
  useCallback to prevent AppOverlay focus trap effect from re-running
  on every keystroke.

- Fix authFetch empty body parsing: handle 200 responses with empty
  body via res.text() + JSON.parse instead of res.json().

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Apr 5, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
orbit-ui-mobile-web Ready Ready Preview, Comment Apr 5, 2026 7:38pm

@thomasluizon
thomasluizon merged commit bb055d4 into main Apr 5, 2026
4 checks passed
@sonarqubecloud

sonarqubecloud Bot commented Apr 5, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
60.0% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

@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: e8aedf5cc3

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

import { AchievementToast } from '@/components/gamification/achievement-toast'
import { LevelUpOverlay } from '@/components/gamification/level-up-overlay'
import { StreakFreezeCelebration } from '@/components/gamification/streak-freeze-celebration'
import { CalendarImportPrompt } from '@/components/onboarding/calendar-import-prompt'

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Restore missing CalendarImportPrompt module

The new import @/components/onboarding/calendar-import-prompt does not resolve to any file in apps/mobile/components/onboarding, so any mobile typecheck/bundle run will fail with an unresolved module error before the app can start. This blocks the mobile build/runtime path introduced by this commit.

Useful? React with 👍 / 👎.

@thomasluizon
thomasluizon deleted the fix/onboarding-levelup-freshstart branch April 6, 2026 12:26
thomasluizon added a commit that referenced this pull request Jul 10, 2026
…e plan (#445)

Stage 8 of the harness-upgrade plan landed in agentic-dev-workflow PR #10
(repo-clean / global-only install mode: an out-of-repo store under ~/.claude
keyed by git root, dual-target FACT/RULE injectors, DEFAULT<global<store<in-repo
layering, and a 10th CI gate). Tick Stage 8 complete and note the harness now
supports both in-repo and repo-clean installs.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
thomasluizon added a commit that referenced this pull request Jul 12, 2026
…e-quality (#243) (#460)

* chore(skills): integrate React Doctor into prod-readiness + audit-code-quality (#243)

Make the React-correctness gate (React Doctor — already a required CI check on
orbit-ui-mobile) a first-class part of the launch-readiness skills, so the full
standing backlog is surfaced and driven to zero, not just the PR-scoped CI gate.

- prod-readiness workflow: new React phase runs a scoped full-repo scan
  (react-doctor@0.7.6 --project apps/web,apps/mobile,packages/shared, hermetic
  flags matching CI, design/handoff excluded) and returns structured findings.
- prod-readiness SKILL: React Doctor is binding inventory item #10 (errors -> High,
  warnings -> Low/Info); coverage row + GO verdict now require zero react-doctor errors.
- audit-code-quality SKILL: Phase 2.5 runs the same scan on any frontend scope.

Refs #243

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(skills): derive react-doctor counts from findings + portable temp path

Addresses PR #460 review. (1) prod-readiness.mjs now derives react-doctor
errorCount/warningCount deterministically from reactDoctor.findings (reusing
audit.mjs's countBy pattern) instead of trusting the sub-agent's self-reported
aggregate that gates the launch verdict, so a mis-reported count can no longer
produce a false GO. (2) Replaces the shell-specific %TEMP%/$TMPDIR --json-out
paths (duplicated and drifted across prod-readiness.mjs and
audit-code-quality/SKILL.md) with one portable convention (os.tmpdir()).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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