v4.21 — First-Class User Guide + Marketing Refresh
Objectuve now has a real, public, interactive user guide at
help.objectuve.com— and the marketing landing page finally shows the shipped Teams features.
Summary
Before this milestone, Objectuve had no public user guide at all. The only "how to use the app" content was a single 704-line markdown page, trapped behind the staff-only internal docs site (docs.objectuve.com, Clerk @objectuve.com / password gate). Nothing about it was reachable by an actual user.
v4.21 replaced that with guide_site/ — a wholly new, standalone VitePress site with its own Firebase Hosting target (enkidu-guide, mapped to help.objectuve.com), no auth chrome, and a public information architecture spanning 18 feature pages. Phase 1 stood up the shell and carved the existing content out of the internal docs tree. Phase 2 rewrote every page into comprehensive, task-oriented, brand-voice content — device-framed screenshots, numbered steps, Coach callouts, reference tables — verified against the rails_api gamification source. Phase 3 made the guide genuinely interactive: a reusable step-through walkthrough player embedded across six feature areas, plus three stateful demos (a tappable check-in ring, a Coach persona/tone matrix, an XP-to-rank meter). Phase 4 closed out the milestone by extending the shared screenshot-capture pipeline to cover the Teams routes, regenerating every app screenshot off the shipped v4.19 Teams UI, and replacing the guide's placeholder Teams page with a full walkthrough verified against the live components.
All four phases shipped the same day (2026-07-28), but the milestone's own tracking file and this narrative page didn't get written until now, six days later (2026-08-04), after Orion's OBJ-2150 milestone-ledger reconciliation found the gap. This page corrects two inaccuracies the milestone's own records carried in the interim, rather than repeating them: Phase 3's PR (#1845) squash-merged into the milestone's integration branch, not master — its cited commit 63ab4349f is confirmed not a master ancestor. Phase 3's actual content (the five interactive Vue components) reached master through a different commit, 0f3d0253e, which is Phase 4's own PR (#1850) — that PR's diff carried the full accumulated Phase 3 + Phase 4 changes to master in one squash-merge, the same "final phase merges everything" shape v4.17-design-system-facelift used. Separately, the milestone's -ROADMAP.md file sat with Phase 4 marked unchecked and gated on OBJ-1827 for several days after Phase 4 had actually shipped and CHANGELOG.md already documented it — that ROADMAP file was corrected 2026-08-04 as part of the same reconciliation (OBJ-2150, PR #2104). Both are now closed; see Tech Debt below. Every phase's content has been confirmed live on master as of this writing — the gap was in the paperwork, not the delivery.
Goal
Turn the "user guide" from a single 704-line markdown page (
docs/product/user-guide.md) — today trapped inside the staff-only internal docs site (docs.objectuve.com, Clerk@objectuve.com/ password gate), unreachable by any real user — into a first-class, public, interactive content surface that end users of Objectuve can actually find and read, and refresh the marketing landing app screenshots so both surfaces reflect the current app (including the newly-wired v4.19 Teams features).
Scope — What Shipped
- New standalone public site —
guide_site/(own VitePress config, theme,.github/workflows/guide.yml), deployed to a new, additive Firebase Hosting target (enkidu-guide) mapped tohelp.objectuve.com. The internal, staff-gateddocs.objectuve.comand itsAuthGatewere left untouched. - 18 rewritten guide pages covering account/onboarding, dashboard & goals, habits & streaks, the Coach, achievements/XP, communities, and Teams — each using a shared content system (
GuideFiguredevice-framed screenshots,GuideCardsreference tables). - 5 interactive Vue SFCs —
GuideWalkthrough/GuideStep(a reusable, WAI-ARIA-Tabs-pattern step-through player, keyboard + touch accessible) instantiated across 6 feature areas, plusGuideCheckinDemo,GuideCoachToneDemo, andGuideRankMeter— three small stateful demos, all SSR-safe and gated onprefers-reduced-motion. Confirmed present onmasteratguide_site/.vitepress/theme/. - Extended screenshot pipeline —
scripts/capture-screenshots.mjsnow captures the Teams routes (team home, leaderboard, sub-communities, collective goal) and writes into three targets in one pass:docs/assets/,marketing_landing/images/screenshots/, andguide_site/public/assets/. - A full
guide_site/teams.mdrewrite (112 lines), replacing the Phase 2 placeholder, covering team home, collective goals, the leaderboard, sub-communities, members & invites, and starting/joining a team — verified against the shipped Teams V1 components. - SEO hardening (OBJ-1853) — canonical
<link>,robots.txt, and a sitemap onguide_site/, preventing the.web.apporigin and custom domain from being indexed as duplicate content. - Operational surface —
guide_site/joins the repo's independently-deployed surface lanes (see Independent surface lanes), with its own path-filteredmaster-push deploy workflow (guide.yml).
Phases
| Phase | Name | Status | Plans | Highlights |
|---|---|---|---|---|
| 1 | Publish & restructure the guide (foundation) | Shipped — PR #1841 → master @ 335a2344c | 1 | New standalone guide_site/ site, own Firebase target, 18-page IA carved from docs/product/user-guide.md; internal docs AuthGate untouched |
| 2 | Content overhaul | Shipped — PR #1844 → master @ e4ce0c3a5 | 1 | All 18 pages rewritten in brand voice; XP/rank/streak content verified against rails_api source |
| 3 | Interactivity | Shipped — PR #1845 → integration branch @ 63ab4349f (not master); content reached master via PR #1850's accumulated squash-merge | 1 | 5 interactive SFCs across 6 feature areas — reusable walkthrough player + 3 stateful demos |
| 4 | Asset refresh + marketing screenshots | Shipped — PR #1850 → master @ 0f3d0253e (also carried Phase 3's content to master) | 1 | Teams-route capture gap closed, all screenshots regenerated off shipped v4.19 UI, full teams.md rewrite |
Key Decisions
- Public guide built as a wholly new site, not carved inside
docs_site/— Codi stood upguide_site/as its own standalone VitePress project (own config, theme, CI workflow, Firebase target) rather than reusing the internal docs tree with pages excluded, keeping the public surface's build/deploy/auth posture fully independent of the staff-gated site from day one. help.objectuve.com, confirmed by Josh — decoupled fromdocs.objectuve.com, which stays staff-only for internal engineering/product documentation.- Real Teams content, gated on the real UI shipping — Phase 4 hard-gated on OBJ-1827 (v4.19 Teams UI) actually merging, not just being scheduled, and Phase 3 deliberately shipped no interactive walkthrough for Teams so nothing would document UI that hadn't shipped yet. Teams got a static, screenshot-driven page in Phase 4 instead, captured against the real shipped components (
TeamHomeView.vue,TeamLeaderboardView.vue,TeamSettingsView.vue,CreateTeamView.vue,JoinTeamView.vue). deploy-sites.shturned out to be unnecessary — bothguide_site/andmarketing_landing/already auto-deploy on path-filteredmasterpushes; the manual deploy script referenced in the ROADMAP's Phase 4 task package was never actually invoked.- A milestone's phases don't all have to land through the milestone's own cited PR — Phase 3's PR (#1845) landed on the integration branch, and its content only reached
masterbecause Phase 4's PR (#1850) squash-merged the full accumulated diff. This is the same shapev4.17-design-system-faceliftused deliberately; here it happened without anyone updating the ROADMAP to say so, which is why this page and the milestone audit exist six days later than they should have (see Tech Debt).
Requirements Coverage
9 / 9 requirements satisfied (per the Milestone Audit; this milestone has no standalone REQUIREMENTS.md — coverage is derived from the ROADMAP's own task checklist).
| Category | Count | Status |
|---|---|---|
| Phase 1 (GUIDE-UISPEC-1, GUIDE-1, GUIDE-DOCS-1) | 3 | All satisfied |
| Phase 2 (CONTENT-UISPEC-1, CONTENT-1) | 2 | All satisfied |
| Phase 3 (INTERACT-UISPEC-1, INTERACT-1) | 2 | All satisfied (content confirmed on master; landing commit corrected — see Related Commits) |
| Phase 4 (ASSET-1, ASSET-DOCS-1) | 2 | All satisfied |
Full detail: v4.21-user-guide-first-class-MILESTONE-AUDIT.md.
Outcomes
Anyone can now visit https://help.objectuve.com without signing in and read a comprehensive, brand-voice guide to every major feature — account setup, the dashboard, goals, habits and streaks, the Coach, achievements and XP, communities, and Teams. Several pages let a reader try the interaction before they see it in the app: tap the check-in ring and watch the streak tick up, drag the Coach tone slider and see a live sample line change, or slide an XP amount and watch the rank meter recompute. The Teams page shows real, shipped UI — team home, the leaderboard, sub-communities — captured directly from the live v4.19 release, not placeholders. The internal, staff-gated docs site at docs.objectuve.com is completely unaffected — its AuthGate was never touched.
Tech Debt
- (Documentation accuracy, closed by this page + OBJ-2150.) For several days post-ship, the milestone's own
-ROADMAP.mdfile andCHANGELOG.mddisagreed about whether Phase 4 had shipped, and the ROADMAP's Phase 3 entry cited a commit (63ab4349f) that is not actually amasterancestor without noting that gap. Corrected 2026-08-04 (OBJ-2150, PR #2104) and compiled into the audit and this page. See the Milestone Audit's Tech Debt #1 for the full correction. - (Phase 4)
collective-goal.pngshows a 0/1000 (0%) progress card andteam-leaderboard.pngshows a generic "Admin Account" entry — both real captures off the seeded demo Team, just not visually compelling for a marketing surface. A reseed + recapture is a tracked fast-follow, not a regression. - (Phase 4, pre-existing)
.github/workflows/visual-regression.ymlinstallspuppeteerbut the capture script uses Playwright — a tooling mismatch surfaced, not caused, by this milestone. - (Phase 4, pre-existing)
goal_details_desktop.png(docs-only) stayed stale — a desktop-width goal-card click doesn't fire even with the corrected selector. Unrelated to Teams; needs its own small investigation.
Related Artifacts
- Roadmap: v4.21-user-guide-first-class-ROADMAP.md
- Milestone Audit: v4.21-user-guide-first-class-MILESTONE-AUDIT.md
- Live guide: help.objectuve.com
- Ledger correction:
.planning/ROADMAP.md(search "v4.21 First-Class User Guide"), OBJ-2150 - Merge PRs: #1841 (Phase 1) · #1844 (Phase 2) · #1845 (Phase 3, integration branch only) · #1850 (Phase 4) · #1847 (OBJ-1852) · #1846 (OBJ-1853) · #1849 (OBJ-1856)
Related Commits
335a2344c— [Codi] Phase 1: stand up public user-guide surface on its own Firebase target (GUIDE-1, OBJ-1846) (#1841)e4ce0c3a5— [Dori] Phase 2: comprehensive content pass acrossguide_site(CONTENT-1) (#1844)0f3d0253e— [Codi] Phase 4: Teams-route screenshot capture + regenerated app screenshots (ASSET-1, OBJ-1849) (#1850) — also the actualmaster-landing commit for Phase 3's 5 interactive SFCs, since PR #1845's own squash-merge (63ab4349f) only reached the milestone's integration branch, nevermaster1e58acbaf— [Dori] docs(planning): reconcile ROADMAP.md/STATE.md/PROJECT.md to verified ship state (OBJ-2150 Tasks 3+3b+4+5) (#2104) — corrected this milestone's-ROADMAP.mdStatus header and Definition-of-Done
Last updated: 2026-08-04