Skip to content

WP-07: Voice onboarding + settings - #9

Merged
gitAbid merged 3 commits into
mainfrom
wp-07-voice-onboarding
Oct 27, 2026
Merged

gitAbid merged 3 commits into
mainfrom
wp-07-voice-onboarding

Conversation

@gitAbid

@gitAbid gitAbid commented Oct 27, 2026

Copy link
Copy Markdown
Owner

WP-07: Voice onboarding + settings

Continued and landed by the integrator after the original agent hit a usage limit mid-task (its backend work was committed; integration + verification completed here). Base includes WP-08 (merged mid-flight; conflicts resolved: DECISIONS.md both-sets, copy.ts both-sets, settings.spec.ts updated so Voice+Billing are real tabs and Account remains the stub).

Acceptance — U3 ✅

  • Learn flow: paste sample → [Learn my voice] → tone chips/sliders per §7.4 → Continue → step 3: voice.spec.ts > learn flow: paste sample → Learn → chips/sliders → Continue → step 3
  • Skip → default §7.4 profile (asserted field-by-field in unit tests) → skip for now lands on step 3 without learning
  • Word-count gate (Each example needs at least 150 words.), max 3 examples, removable tone chips, ≤15 s deterministic learn path (no AI keys exist — GLM key in env is a placeholder; deterministic learn produces the profile, labelled honestly per U3/U10 copy)
  • Settings → Voice per MK-8: chips + sliders + Never say / Always include + samples list + Preview card + [Update preview]: default §7.4 profile renders keyless with preview and samples block, Update preview re-renders; Save keyless shows the preview copy, adding a sample requires 150 words; remove works

Verification (integrator-run on the merged tree)

  • pnpm lint ✓ · pnpm typecheck ✓ · pnpm test 355 passed / 2 skipped (skips = WP-04 CI-excluded live tests) · pnpm build ✓
  • pnpm e2e (production server, port 3107): 31 passed incl. all WP-07 voice specs
  • Routes per §7.5: POST /api/show/voice/learn · POST /api/show/voice/preview (boundary-mocked DB tests; deterministic learn/preview in lib/ai/voice.ts)

Decisions

Logged in docs/relaunch/DECISIONS.md by the agent (voice copy constants in lib/copy.ts per §0.4 rule 4, honest "Basic profile" labelling, §7.4 tone count gating) plus the integrator conflict resolutions noted above.

Hand-offs

  • AudioMini real src wiring → WP-06; FeedbackThumbs API → WP-09.

Onboarding step 2 (M1, MK-2, U3): paste 1-3 past show notes (>=150 words,
word counters, + add another), Learn my voice -> chips/sliders/segmented
editor with preview, Skip for now -> §7.4 default via read-time resolution.
Settings -> Voice (M9, MK-8): chips + sliders + Never say / Always include
+ samples list; preview card with Update preview.

Routes (§7.5): POST /api/show/voice/learn and /api/show/voice/preview via
lib/show/voice.ts; persistence through the @/db/queries boundary
(shows.voice_profile / voice_samples). Deterministic no-AI learn/preview
added at the lib/ai boundary (labelled 'Basic', never passed off as AI);
learn/preview provider timeout capped at 12 s for the U3 <=15 s budget.

Tests: 28 unit (default byte-for-byte, deterministic path, word-count
validation, boundary-mocked route behaviour), 8 e2e (learn flow, skip,
tone chip gating, settings preview + keyless save copy). Fixture
tests/fixtures/voice-sample.txt is synthetic productivity-podcast text.
# Conflicts:
#	docs/relaunch/DECISIONS.md
#	web/lib/copy.ts
#	web/tests/e2e/settings.spec.ts
# Conflicts:
#	docs/relaunch/DECISIONS.md
#	web/lib/copy.ts
@gitAbid
gitAbid merged commit a4c685d into main Oct 27, 2026
2 checks passed
@gitAbid
gitAbid deleted the wp-07-voice-onboarding branch October 27, 2026 14:52
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