11 KiB
name, description, type, originSessionId
| name | description | type | originSessionId |
|---|---|---|---|
| Session Handoff — 2026-05-01 S2 (Block A 25 FRs + Block B Phase 1 + Day-2 backlog + Block C state restore) | 11 commits closing 25/25 PM friction reports, Block B Phase 1 (#6 Tour Replay + | project | 9b6b4e0d-3d2f-414a-89f7-e852f1aab756 |
Start here next session
Working tree: CLEAN (only pre-existing untracked dirs: benchmarks/gaia2/, external/)
Branch: main
Head: f97b782 docs(day-2): append PM Pass 7 friction notes — FR Pass7-A/B/C (Day-2 Wave 1-2)
Rollback tag: checkpoint/pre-self-evolution-2026-04-14
Suite: tsc clean across apps/web + packages/server + packages/agent
vitest 394/394 (apps/web) — was 381 baseline + 13 new for import-reminder-state.test.ts
Backend: btmoe23pb running at http://127.0.0.1:3333 with WAGGLE_PROMPT_ASSEMBLER=1
Production state RESTORED — frameCount=9, mindSize 4.3MB, embeddingCoverage=100%
Vault preserved (Anthropic + others), system DBs intact
Backup: CONSUMED by mv during Block C — `~/.waggle.backup-onboarding-test-2026-04-30/` no longer exists.
Live `~/.waggle/` IS the production state.
Frontend dev: bvmhtwc59 (Vite :8080) — ran the whole session; HMR picked up every commit
PM walkthrough URL: http://localhost:8080/?forceWizard=true (DEV-gated; clears tour-done localStorage too)
May-8 routine: trig_01JK3YuVe6bAsJvcMBbKfUJ4 — fires 2026-05-08T07:00:00Z (Phase 1 health check + Day-2 wave priority recommendation)
What shipped this session (11 commits)
| Commit | Description |
|---|---|
addf0b5 |
fix(server): fresh-state greeting + workspace summary deduplicates "workspace" word (FR #25/#29/#46) |
5c8f0ec |
fix(onboarding): boot race + wizard backdrop + sequenced post-onboarding overlays + Tour step 2 (FR #23/#33/#34/#45/#47) |
6918837 |
fix(onboarding-steps): copy + branded swatches + tooltips + Continue hints + custom-persona help (FR #36/#37/#38/#39/#40/#41/#42/#43/#44) |
2e9a9a1 |
fix(briefing+chat): fresh-state timestamps + Personal-tag tooltip + auto-send starter prompts + briefing fallback dedupe (FR #24/#25/#26/#27/#32) |
a5eec15 |
fix(onboarding): inline-style wizard backdrop + clear tour-done localStorage on forceWizard (FR #33 round 2 / FR #47 PM hook) |
6fb5f4e |
docs(addiction-features): Block B design pass — 7 feature design docs awaiting PM ratification |
de19f5c |
fix(onboarding): early-return Desktop while wizard active — eliminates Chat/LoginBriefing bleed-through (FR #33 round 3) |
f4e3591 |
feat(onboarding): Tour Replay + Wizard Replay in Settings → Advanced (Phase 1 #6) |
4874f15 |
feat(memory): Pending Imports Reminder banner with auto-detect Claude Code (Phase 1 #7) |
6dfa5da |
docs(day-2): consolidated Day-2 backlog — Phase 2-6 modifications + cross-decisions + FR #30 |
f97b782 |
docs(day-2): append PM Pass 7 friction notes — FR Pass7-A/B/C (Day-2 Wave 1-2) |
Plus one one-shot remote routine armed: trig_01JK3YuVe6bAsJvcMBbKfUJ4 fires 2026-05-08T07:00:00Z with Phase 1 health verification + Phase 2-6 wave priority recommendation. Routine URL: https://claude.ai/code/routines/trig_01JK3YuVe6bAsJvcMBbKfUJ4
Cluster overview — three threads, one outcome
Thread 1: Block A — 25 friction reports closed (5 sequential commits + 1 round-2 + 1 round-3). PM ran fresh-state walkthrough on ?forceWizard=true and surfaced 25 frictions across P0-P3 covering greetings, copy, sequencing, branded swatches, tooltips, Continue hints, persona scroll affordances, and the post-wizard overlay race. Six commits closed 22 of them on the first round (addf0b5 → 2e9a9a1). The wizard backdrop (FR #33) needed three rounds: Tailwind utilities first (5c8f0ec), then inline style={{backgroundColor:'rgba(0,0,0,0.85)',backdropFilter:'blur(8px)'}} (a5eec15) — both still left Chat readable behind. Round 3 (de19f5c) gave up on opacity tuning entirely and adopted PM's recommended option (b): early-return Desktop when !onboardingState.completed so nothing renders behind the wizard. Same pattern as macOS first-launch. PM Pass 6 verified clean. The ?forceWizard=true URL was extended (a5eec15) to also clear waggle:tooltips_done so PM walkthrough always sees the full post-wizard sequence including Tour.
Thread 2: Block B — design pass + Phase 1 ship. Three steps: write 7 addiction-feature design docs (6fb5f4e), halt-and-PM for ratification, then implement what survives. Marko's ratification call: ship Phase 1 (#6 Tour Replay + #7 Imports Reminder) pre-launch as zero-LLM-cost low-risk. Phase 2-6 deferred to Day-2 with concrete modifications (#1 Streak → Memory Growth Chart, #5 Milestones → toast/card split by threshold size, #2 push notification → Today's Brief Dashboard card; #3 Continuity + #4 Wins GO as designed). All five cross-feature decisions ratified at once (frame weighting 1.0/0.5/0.25 with explicit-only fallback, UTC storage + user-local display, suppress when N<3 frames, strict overlay-queue priority order, $0.20/$0.30/uncapped LLM tier caps with upsell on overrun). Phase 1 shipped via f4e3591 + 4874f15 — adds replayTour() to useOnboarding, Settings → Advanced "Help & Tutorials" with Replay tour + Replay wizard (with confirm dialog), and ImportReminderBanner.tsx with a four-gate eligibility ladder (onboarded + retired + frame-count + 7-day cadence) plus auto-detect Claude Code upgrade copy. 13 new unit tests pin the eligibility ladder. PM Pass 7 verified all 9 walkthrough steps PASS. Three small leftover items (FR Pass7-A/B/C) captured in f97b782 for Day-2 Wave 1-2; none blocked Block C.
Thread 3: Block C state restore — production data back, prompt-assembler live. Pre-flight integrity check confirmed 205MB backup with all six expected sub-paths (workspaces, vault.json, personal.mind, skills, plugins, models, audit.db). Sequential destructive ops with halt-and-PM gates: TaskStop bzbcsj9j7 + Stop-Process -Id 58152 to free port 3333, rm -rf ~/.waggle (test stub), mv ~/.waggle.backup-onboarding-test-2026-04-30 ~/.waggle (production restore — backup folder consumed by mv, no leftover). Restored size matches backup (205MB). Backend restart via WAGGLE_PROMPT_ASSEMBLER=1 npm run dev --workspace=packages/server ran in background as task btmoe23pb. /health 200 within ~17s (well under 60s halt threshold). frameCount=9 (real production data, was 0 in test stub), embeddingCoverage=100%, LiteLLM healthy on :4000, defaultModel claude-sonnet-4-6. PA env confirmed via spawn syntax + will surface at first chat turn in agent-loop logs.
What's still open
P0 — ship blockers
- None. All 25 PM friction reports CLOSED. Phase 1 verified PASS 9/9 by PM Pass 7. Production state restored. Backend live with PA enabled. Wizard production-ready.
P1 — handoff to PM / Marko (not CC scope)
- Landing v3.2 update with Marko — ready to write per the milestone validation in commit
33f3ff4from S1. - PM ↔ CC next session kickoff: Day-2 Wave 1-2 per Marko's prioritization. Wave 1 candidates: FR Pass7-A guard fix (~5 LOC, useOnboarding.ts), FR Pass7-C cascade fix (~10 LOC, window-cascade.ts), Memory Growth Chart (~120 LOC), FR #30 option B persona-picker indicator (~50 LOC). Total Wave 1 estimate ~3-4h.
P2 — Day-2 backlog (post-launch waves; doc at docs/DAY-2-BACKLOG-2026-05-01.md)
- Wave 1 (~6h): cross-decision §1.1 weight-counting helper + §1.4 OverlayQueue controller + Feature #1 Memory Growth Chart + FR #30 option B + FR Pass7-A/C
- Wave 2 (~4-5h): Feature #3 Continuity Banner + Feature #2 Today's Brief Dashboard card + FR Pass7-B (window persistence reset)
- Wave 3 (~3h): Feature #5 Milestone toast/card split
- Wave 4 (~5-6h): HybridSearch recall instrumentation + Feature #4 Weekly Wins Digest
P3 — explicitly deferred (per Day-2 backlog §6)
- Tier-gated copy variants (FREE vs Pro vs Teams) — wait for usage data
- Localization (English-only v1)
- Cross-feature combos (Streak + chart + milestone bonuses)
- A/B testing infrastructure
- Email / Slack delivery channels
- Per-workspace addiction surfaces (everything ships personal-mind global v1)
Key design decisions
- Early-return Desktop during wizard beats opacity tuning — three rounds of rgba/blur experiments couldn't cover Chat at 85% alpha; the macOS first-launch pattern (don't render Desktop at all) eliminated the entire bleed-through bug class in a single edit.
- Inline
stylefor wizard backdrop kept as defense-in-depth — even with the early-return, the rgba(0,0,0,0.85) + 8px blur stays so any future render of Desktop concurrent with the wizard still produces an opaque chrome. - Tour replay + wizard replay symmetric in Settings → Advanced — both controls in one "Help & Tutorials" section so users with re-engagement needs find them in the same place; wizard replay gated behind inline confirm so an accidental click can't reset the user's onboarding state.
- Imports Reminder uses a four-gate eligibility ladder — onboarded + not-retired + frame-count + 7-day cadence. Pure function (
shouldShowImportReminderinimport-reminder-state.ts) so the gate is unit-testable without mounting the banner. ?forceWizard=trueclearswaggle:tooltips_donesymmetrically withwaggle:onboarding— PM walkthrough on a returning DEV laptop now always sees the full Tour, not just the wizard. Both are DEV-gated so prod cannot accidentally re-trigger.
Safety
# Nuclear rollback (all work since pre-self-evolution checkpoint, 2026-04-14):
git -C 'D:\Projects\waggle-os' reset --hard checkpoint/pre-self-evolution-2026-04-14
# Rollback just this session (back to 110cc77 = S1 head / S2 baseline):
git -C 'D:\Projects\waggle-os' reset --hard 110cc77
# Production state cannot be rolled back from backup — backup was consumed by mv during Block C.
# If production needs revert, restore from external backup or fresh ingest. The 9 frames live
# in personal.mind 4.3MB; auto-export weekly via Backup app keeps an additional safety copy.
All 11 commits this session are additive. No existing behavior changed when WAGGLE_PROMPT_ASSEMBLER is unset (prod default OFF gate preserved). The Desktop early-return only fires when !onboardingState.completed — for completed users (the launch default), Desktop renders identically to before. The Imports Reminder banner self-suppresses for any user with frames > 0 OR with retired flag set. ?forceWizard=true is DEV-only — Vite tree-shakes it from prod bundles.