slice 3 COMPLETE: onboarding wizard (complexity/risk/drawdown + starter watchlist + demand subscribe)

starter.ts by ornith (9 symbols w/ ticker-kind + ADR-0007 reasons, defaults, 12 tests).
onboarding.complete + onboarding.starter + me().onboarded by orchestrator; schema
+drawdown_tolerance. Wizard UI (complexity picker, starter list, disclaimer, finish).
onboarding subscribes starter symbols to the demand set (adapter fetches them). 87/87
backend + 2/2 lint green. Slice 3 done; slices 1-3 complete.
This commit is contained in:
Investor Flow Build
2026-06-29 21:31:59 -04:00
parent 4816b19976
commit 965f8d3b1c
8 changed files with 352 additions and 28 deletions
+11 -2
View File
@@ -1,7 +1,7 @@
// Curated user-facing strings (P6 plain English; ADR-0007 Primary-Rule compliant).
// The Primary-Rule lint test (src/__tests__/primary-rule-lint.test.ts) scans these and the
// panel/page source for imperative trade verbs (a stoplist of directives). Approved noun
// phrases such as the buy-zone estimate are allowed.
// panel/page/client source for imperative trade verbs (a stoplist of directives). Approved
// noun phrases such as the buy-zone estimate are allowed.
export const UI_STRINGS = {
appTitle: "Investor Flow",
appSubtitle: "Educational investment research terminal",
@@ -33,6 +33,15 @@ export const UI_STRINGS = {
twoFactorEnabled: "Two-factor is now enabled. Login will ask for a code.",
oauthGithub: "Continue with GitHub",
oauthGoogle: "Continue with Google",
onboardingTitle: "Welcome — set up your research defaults.",
complexityLabel: "Experience level",
complexityBeginner: "Beginner",
complexityIntermediate: "Intermediate",
complexityAdvanced: "Advanced",
starterWatchlistLabel: "Your starter watchlist",
drawdownNote: "A default max-drawdown tolerance is set from your experience level (you can change it later).",
completeOnboardingButton: "Finish setup",
onboardingDone: "Setup complete — your starter watchlist is tracking.",
} as const;
export const UI_STRING_LIST: string[] = Object.values(UI_STRINGS);