Skip to content

feat: Doku onboarding checklist for new users - #93

Merged
kaihere14 merged 3 commits into
mainfrom
feat/doku-onboarding
Oct 9, 2026
Merged

kaihere14 merged 3 commits into
mainfrom
feat/doku-onboarding

Conversation

@kaihere14

@kaihere14 kaihere14 commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

What

Replaces the old first-run walkthrough (localStorage banners, a modal and a dashed repo highlight) with a quiet getting-started checklist guided by Doku, the new mascot.

New users see three steps in a panel that follows them across the dashboard:

  1. Choose how README updates land: Direct or Pull Request. This used to default to Direct without saying so.
  2. Turn on your first repository: shows what DaemonDoc will and won't do (only README.md, [skip ci] commits, turn off anytime).
  3. See your first README: live progress from the worker's log stream, with Doku working, an "oops" state on failure, and a link to the commit or PR when done.

The panel folds into a corner launcher ("I'll finish later") or can be hidden for good. When every step is done it shows a one-off "All set" celebration.

How it works

  • Server: new accounts get onboarding.startedAt, so existing users never see the checklist. GET /auth/onboarding derives steps 2 and 3 from active repos and logs, so they can't drift from reality. PATCH /auth/onboarding records snooze, resume, dismiss and complete. Saving a commit type marks step 1.
  • Client: an OnboardingProvider in DashboardLayout polls only while the first README is on its way. The commit type moved into a shared store, so the toolbar toggle and the checklist stay in sync. The Cleanup spotlight now only shows to accounts that predate onboarding.
  • Motion: follows the newly added design skills (better-ui, emil-design-eng, 12-principles-of-animation):
    • staged entrances
    • a 0.96 press on every control
    • cross-faded state changes
    • fold and reopen that happen at once, without waiting for the server
    • everything reduced to opacity fades under prefers-reduced-motion
  • Art: seven Doku poses as PNG masters in logo-candidates/doku/ and 12–16 KB WebP exports in client/public/doku/, plus the ChatGPT prompt sheets used to make them in logo-candidates/doku-prompts/.

Testing

  • pnpm test: 161 server tests pass, including 16 new onboarding tests.
  • pnpm lint, pnpm typecheck, pnpm format:check and pnpm build all pass.
  • Ran against the local Docker stack with a reset test user. The endpoint returns the right state, and the checklist renders with live data.
  • Walked every widget state (each step, queued, failed, done, folded, celebration) in a browser with a stubbed backend. No console errors.

Not verified: the reduced-motion OS setting and phone-width layout.

Deploy note

Merging to main triggers the EC2 API deploy (ci.yml). The schema change is additive. Existing users have no onboarding.startedAt and are unaffected.

Summary by CodeRabbit

  • New Features
    • Added a guided onboarding checklist that follows you between dashboard pages and tracks progress through choosing a commit type, enabling a repository, and completing the first README run.
    • Snooze the checklist and reopen it later, or dismiss it or finish when onboarding is complete. Helpful tips, progress indicators, and a completion celebration are included.
    • Added animated Doku illustrations during onboarding, with reduced-motion support.

Add the 12-principles-of-animation, better-ui and emil-design-eng agent
skills and record them in skills-lock.json. They guide motion, press
feedback and surface polish for dashboard UI work.
New accounts get an onboarding start date, so existing users never see
the checklist. GET and PATCH /auth/onboarding return the checklist state
and record snooze, resume, dismiss and complete events.

Only the commit-type confirmation and those events are stored. Whether a
repository is on and whether the first README has run are read from the
active repos and logs, so the steps always match what actually happened.
A deactivated repository no longer counts as connected, and a skipped
first run counts as a finished README.
New users get a quiet getting-started checklist, guided by the Doku
mascot, in place of the old localStorage banners and modals:

1. Choose how README updates land (Direct or Pull Request).
2. Turn on a first repository, with the trust guarantees spelled out.
3. Watch the first README being written, with live progress from the
   worker's log stream.

The checklist follows the user across dashboard pages, folds into a
corner launcher and can be hidden for good. Its state comes from the
server, so it no longer replays on a new browser or device. The Cleanup
announcement is now only shown to accounts that predate onboarding.

Motion follows the project's design skills: staged entrances, a 0.96
press on every control, cross-faded state changes and a one-off
celebration, all reduced to opacity fades under prefers-reduced-motion.

Also adds the seven Doku poses (PNG masters plus cropped WebP exports)
and the ChatGPT prompt sheets used to make them, and moves the commit
type into a shared store so the toolbar toggle and the checklist stay
in sync.
@vercel

vercel Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated
daemon-doc Ready Ready Preview Oct 9, 2026 11:23pm UTC
read-it Ready Ready Preview Oct 9, 2026 11:23pm UTC

@coderabbitai

coderabbitai Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2c96d526-c059-4397-b77f-a49f3581abfb

📥 Commits

Reviewing files that changed from the base of the PR and between 4146902 and f104043.


⛔ Files ignored due to path filters (7)
  • logo-candidates/doku/doku-celebrate.png is excluded by !**/*.png
  • logo-candidates/doku/doku-oops.png is excluded by !**/*.png
  • logo-candidates/doku/doku-point.png is excluded by !**/*.png
  • logo-candidates/doku/doku-reading.png is excluded by !**/*.png
  • logo-candidates/doku/doku-resting.png is excluded by !**/*.png
  • logo-candidates/doku/doku-wave.png is excluded by !**/*.png
  • logo-candidates/doku/doku-working.png is excluded by !**/*.png

📒 Files selected for processing (46)
  • .agents/skills/12-principles-of-animation/SKILL.md
  • .agents/skills/better-ui/SKILL.md
  • .agents/skills/better-ui/agents/openai.yaml
  • .agents/skills/better-ui/animations.md
  • .agents/skills/better-ui/enter-exit.md
  • .agents/skills/better-ui/icon-transitions.md
  • .agents/skills/better-ui/icons.md
  • .agents/skills/better-ui/performance.md
  • .agents/skills/better-ui/surfaces.md
  • .agents/skills/emil-design-eng/SKILL.md
  • client/public/doku/doku-celebrate.webp
  • client/public/doku/doku-oops.webp
  • client/public/doku/doku-point.webp
  • client/public/doku/doku-reading.webp
  • client/public/doku/doku-resting.webp
  • client/public/doku/doku-wave.webp
  • client/public/doku/doku-working.webp
  • client/src/components/common/DashboardLayout.jsx
  • client/src/components/onboarding/Doku.jsx
  • client/src/components/onboarding/OnboardingChecklist.jsx
  • client/src/components/repos/CommitTypeToggle.jsx
  • client/src/components/repos/RepoCard.jsx
  • client/src/components/repos/WalkthroughOverlay.jsx
  • client/src/context/OnboardingContext.jsx
  • client/src/context/onboarding-context.js
  • client/src/hooks/useCommitType.js
  • client/src/index.css
  • client/src/lib/api.js
  • client/src/lib/pages/Home.jsx
  • client/src/lib/pages/Logs.jsx
  • logo-candidates/doku-prompts/README.md
  • logo-candidates/doku-prompts/doku-celebrate.md
  • logo-candidates/doku-prompts/doku-oops.md
  • logo-candidates/doku-prompts/doku-point.md
  • logo-candidates/doku-prompts/doku-reading.md
  • logo-candidates/doku-prompts/doku-resting.md
  • logo-candidates/doku-prompts/doku-wave.md
  • logo-candidates/doku-prompts/doku-working.md
  • server/src/controllers/__tests__/onboarding.controller.test.js
  • server/src/controllers/oauthcontroller.js
  • server/src/controllers/onboarding.controller.js
  • server/src/routes/auth.routes.js
  • server/src/schema/user.schema.js
  • server/src/services/__tests__/onboarding.service.test.js
  • server/src/services/onboarding.service.js
  • skills-lock.json

 ____________________________________________
< Your exception handling needs a therapist. >
 --------------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR

🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR


  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@kaihere14
kaihere14 merged commit 3a364bc into main Oct 9, 2026
9 of 10 checks passed

This branch was successfully deployed

2 active deployments
Preview – read-it — f1040434 Deployed Oct 9, 2026 by vercel[bot]
Preview – daemon-doc — f1040434 Deployed Oct 9, 2026 by vercel[bot]
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