This website requires JavaScript.
d40cb834b1
docs(plan): L1 workspace Phase 1 implementation plan
Michael Chihlas
2026-05-28 11:58:41 -04:00
07a29f630a
docs(design): revise L1 spec after review (sessions, adhoc, OAuth, seat enforcement)
Michael Chihlas
2026-05-28 10:51:57 -04:00
d1cf77cd41
docs(design): L1 workspace feature spec
Michael Chihlas
2026-05-28 03:33:32 -04:00
93ce0490e0
Merge pull request 'feat(routing): serve public landing at / and move authed index to /home' (#174 ) from feat/public-landing-routing-refactor into main
chihlasm
2026-05-15 05:18:37 +00:00
f9f98b1a65
fix(routing): finish /home migration in WelcomeStep3 + VerifyEmailPage
Michael Chihlas
2026-05-15 00:34:23 -04:00
86163a69aa
test(welcome): align Router/Step1/Step2 stub routes with /home destination
Michael Chihlas
2026-05-14 19:25:50 -04:00
13f527c4ad
test(e2e): align auth + public smoke tests with new / and /home routing
Michael Chihlas
2026-05-14 17:35:44 -04:00
41f5519916
docs(legal): add baseline legal documents (privacy, ToS, DPA, subprocessors, cookies)
Michael Chihlas
2026-05-14 12:51:19 -04:00
05646465b8
feat(routing): serve public landing at / and move authed index to /home
Michael Chihlas
2026-05-14 01:58:10 -04:00
b1ee46656e
Merge pull request 'docs(handoff): record PR #166/#168 merges + issues #171/#172' (#173 ) from docs/handoff-pr-168-merge into main
chihlasm
2026-05-14 05:02:08 +00:00
3cea0f23ee
docs(handoff): record PR #166/#168 merges, dashboard CTA + welcome step-2 fixes, issues #171/#172
Michael Chihlas
2026-05-14 00:57:46 -04:00
3a35121578
Merge pull request 'feat(auth): session expiration policy (3d idle / 14d absolute) + per-account override + bulk revoke' (#168 ) from feat/session-expiration-policy into main
chihlasm
2026-05-14 04:33:49 +00:00
fe0e6923d5
Merge pull request 'docs(handoff): record PR #164/#165 merges; flag Stripe activation as current blocker' (#166 ) from docs/handoff-pr-165-merge into main
chihlasm
2026-05-14 03:59:59 +00:00
e5b26245ca
docs: add architecture reports, public-landing routing plan, build-a-page tutorial, self-serve signup phase-2 design
Michael Chihlas
2026-05-13 23:59:29 -04:00
dc88797469
feat(welcome): two-button PSA CTA in step-2 — Connect now / Connect later
Michael Chihlas
2026-05-13 23:59:18 -04:00
cbb4b25671
fix(ui): drop setState-in-effect in useAuthSessionExpiry
Michael Chihlas
2026-05-13 20:15:11 -04:00
8d79dd93b8
feat(dashboard): focus same-page Start Session input from NextStep CTA and checklist
Michael Chihlas
2026-05-13 15:48:21 -04:00
1106f79611
docs: add session-expiration-policy decision entry + CURRENT-STATE summary
Michael Chihlas
2026-05-13 17:09:09 -04:00
c7cd711859
feat: AccountSecuritySettingsPage + active-users list + toast + login banner
Michael Chihlas
2026-05-13 17:07:14 -04:00
aad554bb9c
feat(ui): handle session_expired_{idle,absolute} in axios interceptor
Michael Chihlas
2026-05-13 16:33:56 -04:00
cabd745a2b
feat(api): add POST /accounts/me/security/revoke-sessions
Michael Chihlas
2026-05-13 16:31:10 -04:00
8cfaef6a9d
feat(api): add GET/PATCH /accounts/me/security endpoint
Michael Chihlas
2026-05-13 16:28:51 -04:00
b21d2fc234
feat(auth): enforce absolute session cap in /auth/refresh
Michael Chihlas
2026-05-13 16:26:00 -04:00
d6a02ee8da
feat(auth): embed auth_time/idle_max/abs_max in refresh tokens at every login
Michael Chihlas
2026-05-13 16:22:53 -04:00
2375948b7a
feat(auth): distinguish idle expiry from invalid refresh tokens
Michael Chihlas
2026-05-13 16:11:01 -04:00
92fa3bc6ab
feat(auth): add session policy settings + account columns + migration
Michael Chihlas
2026-05-13 15:52:21 -04:00
dc22aa0ff0
docs(handoff): record PR #164/#165/#167 merges, EIN blocker, pending bug
Michael Chihlas
2026-05-12 01:25:19 -04:00
e50a2150d5
Merge pull request 'feat(admin): add create_site_admin.py for bootstrapping a super_admin' (#167 ) from feat/site-admin-script into main
chihlasm
2026-05-12 06:17:31 +00:00
3a3844b68e
feat(admin): add create_site_admin.py for bootstrapping a super_admin
Michael Chihlas
2026-05-12 01:58:53 -04:00
ba45cfeec1
feat(legal): add /policies, /contact, /promotions pages + MarketingFooter (#165 )
Michael Chihlas
2026-05-12 05:23:43 +00:00
3f04911070
feat(billing): plan taxonomy reconciliation + Stripe sync + internal-tester allowlist (#164 )
Michael Chihlas
2026-05-11 05:07:07 +00:00
25d124c6eb
wip(handoff): pr #164 cutover blockers + doc refresh + dns triage
feat/billing-plan-taxonomy
Michael Chihlas
2026-05-08 11:12:05 -04:00
2c9f5e95ff
fix(frontend): page-title — escapes + propagate plan taxonomy through frontend types
Michael Chihlas
2026-05-08 00:07:51 -04:00
8649a4aa29
docs: refresh CURRENT-STATE, ROADMAP, README, DECISIONS for self-serve cutover
Michael Chihlas
2026-05-07 22:56:01 -04:00
8494366ec6
feat(billing): add INTERNAL_TESTER_EMAILS allowlist for self-serve soft cutover
Michael Chihlas
2026-05-07 16:57:25 -04:00
a628b2410d
chore(dev): pass STRIPE_* env to backend container; add repo-root .env.example
Michael Chihlas
2026-05-07 15:59:57 -04:00
ba36c47075
feat(billing): reconcile plan taxonomy and add Stripe sync script
Michael Chihlas
2026-05-07 15:59:21 -04:00
dad5e1f546
fix(seed): mark seeded test users as email-verified (#163 )
Michael Chihlas
2026-05-07 18:42:32 +00:00
f1be3abcc5
feat: self-serve signup Phase 2 (frontend cutover) (#162 )
Michael Chihlas
2026-05-07 18:42:20 +00:00
f85b90c95e
fix(frontend): satisfy phase 2 lint checks
feat/self-serve-signup-phase-2
Michael Chihlas
2026-05-07 12:02:49 -04:00
5e6541ab92
fix(ci): set up node in gitea workflow
Michael Chihlas
2026-05-07 11:45:58 -04:00
4a37a47887
chore(env): standardize backend python on 3.12
Michael Chihlas
2026-05-07 11:31:28 -04:00
f31b873459
wip(handoff): record native python status
Michael Chihlas
2026-05-07 11:14:59 -04:00
0c64e9ad62
fix(seed): mark seeded test users as email-verified
fix/seed-test-users-verified
Michael Chihlas
2026-05-07 02:11:16 -04:00
380fcf7bde
docs(env): document Stripe env vars in backend/.env.example
Michael Chihlas
2026-05-07 01:58:15 -04:00
4b098deac5
docs(handoff): record four post-implementation fixes from external review
Michael Chihlas
2026-05-07 01:45:35 -04:00
502c0a44e8
feat(billing): add /account/billing and /account/billing/select-plan pages
Michael Chihlas
2026-05-07 01:43:48 -04:00
06200fabb1
fix(billing): make Stripe webhook idempotency atomic so failed handlers can retry
Michael Chihlas
2026-05-07 01:36:13 -04:00
3630dd5a80
fix(auth): mark store authenticated after OAuth setTokens
Michael Chihlas
2026-05-07 01:32:53 -04:00
5e0c9d2de1
fix(auth): store OAuth refresh token JTI to fix /auth/refresh after OAuth signup
Michael Chihlas
2026-05-07 01:30:14 -04:00
fee4cb5b74
docs(handoff): capture Phase 2 (frontend cutover) code completion
Michael Chihlas
2026-05-06 23:46:15 -04:00
c75ce0c9a3
feat(sales): redirect beta-signup to /register; queue waitlist emails
Michael Chihlas
2026-05-06 23:35:26 -04:00
db2478dd89
feat(sales): add /contact-sales form + landing page CTA
Michael Chihlas
2026-05-06 23:31:56 -04:00
67fae91087
feat(pricing): add /pricing page (B-style)
Michael Chihlas
2026-05-06 23:26:27 -04:00
0c326d0616
feat(dashboard): replace checklist with next-step card + unified list
Michael Chihlas
2026-05-06 23:19:58 -04:00
99343ab7a9
feat(dashboard): add TrialPill in AppLayout topbar
Michael Chihlas
2026-05-06 23:06:09 -04:00
53dd5f13e5
feat(onboarding): add wizard Steps 2 (PSA) and 3 (Invite team)
Michael Chihlas
2026-05-06 23:02:00 -04:00
9b517d3320
feat(onboarding): add welcome wizard scaffold + Step 1 (Your shop)
Michael Chihlas
2026-05-06 22:54:10 -04:00
7d939a4acf
feat(auth): add email verification banner, wall, /verify-email page
Michael Chihlas
2026-05-06 21:41:30 -04:00
39e85c9770
feat(auth): add /accept-invite page + lookup endpoint
Michael Chihlas
2026-05-06 21:26:51 -04:00
70ab1f34d4
feat(auth): redesign /register with OAuth buttons; hide invite-code under flag
Michael Chihlas
2026-05-06 21:11:09 -04:00
ece82225f2
feat(billing): add FeatureGate, UpgradePrompt, EmailVerificationGate components
Michael Chihlas
2026-05-06 21:01:53 -04:00
0b5ed9aa10
feat(billing): add useFeature, useFeatureLimit, useTrialBanner hooks
Michael Chihlas
2026-05-06 20:52:18 -04:00
7a9cb4b03b
feat(billing): add useBillingStore and /billing/state integration
Michael Chihlas
2026-05-06 20:44:20 -04:00
80baf89b00
feat(config): add SELF_SERVE_ENABLED flag + GET /config/public
Michael Chihlas
2026-05-06 20:38:50 -04:00
d05b475a41
feat(admin): extend /admin/plan-limits to manage plan_billing fields
Michael Chihlas
2026-05-06 20:32:09 -04:00
694279f89e
feat(sales): add POST /sales-leads public endpoint
Michael Chihlas
2026-05-06 20:12:03 -04:00
16f5e4ce05
feat(onboarding): add PATCH /users/me/onboarding-step + dismiss-rest
Michael Chihlas
2026-05-06 20:04:43 -04:00
2f8ec3775e
feat(billing): add BillingService.open_customer_portal + GET endpoint
Michael Chihlas
2026-05-06 19:55:42 -04:00
f918b766b0
feat: self-serve signup backend (Phase 1) (#161 )
chihlasm
2026-05-06 23:46:34 +00:00
fbb41e789c
docs(handoff): capture Phase 1 backend completion + followups
Michael Chihlas
2026-05-06 16:10:58 -04:00
97d36dd400
test(kb-accelerator): downgrade kb_setup user to free plan
Michael Chihlas
2026-05-06 16:09:50 -04:00
f26f468878
feat(billing): pilot user backfill — set existing accounts to complimentary
Michael Chihlas
2026-05-06 15:14:47 -04:00
79942c3fd3
feat(billing): add GET /billing/state aggregating subscription + plan + features
Michael Chihlas
2026-05-06 15:12:12 -04:00
4768ae0648
feat(invites): add bulk-create and soft-revoke invite endpoints
Michael Chihlas
2026-05-06 15:10:06 -04:00
e54d6c586a
feat(invites): wire EmailService.send_account_invite_email into create handler
Michael Chihlas
2026-05-06 15:07:29 -04:00
86893562b9
feat(auth): auto-send verification email on register; enforce invite email match
Michael Chihlas
2026-05-06 15:05:15 -04:00
b0708ed650
feat(auth): guard login/password paths against OAuth-only users
Michael Chihlas
2026-05-06 15:02:28 -04:00
2ef2350de7
feat(auth): add Microsoft OAuth callback
Michael Chihlas
2026-05-06 14:59:47 -04:00
f4606f073a
feat(auth): add Google OAuth callback with oauth_identities linking
Michael Chihlas
2026-05-06 14:58:35 -04:00
9b709488d9
feat(billing): extend Stripe webhook stub with concrete event handlers
Michael Chihlas
2026-05-06 14:55:23 -04:00
18180bc57f
feat(billing): apply_subscription_event with stripe_events idempotency
Michael Chihlas
2026-05-06 14:53:07 -04:00
f683bb5720
feat(billing): add /billing/checkout-session via BillingService
Michael Chihlas
2026-05-06 14:51:06 -04:00
9851d56633
feat(billing): add BillingService.start_trial; wire into /auth/register
Michael Chihlas
2026-05-06 14:48:30 -04:00
519c7eb5ce
feat(deps): add require_verified_email_after_grace guard
Michael Chihlas
2026-05-06 14:44:50 -04:00
9ec208f6e7
feat(deps): add require_active_subscription guard with allowlist
Michael Chihlas
2026-05-06 14:35:59 -04:00
cfe0e6cae6
refactor(deps): remove trial auto-downgrade; expiry now non-mutating per spec
Michael Chihlas
2026-05-06 04:02:20 -04:00
e3f5ed4985
feat(billing): add complimentary status, fix is_paid, add has_pro_entitlement
Michael Chihlas
2026-05-06 03:59:19 -04:00
5105eaf529
feat(billing): add sales_leads and stripe_events tables
Michael Chihlas
2026-05-06 03:32:30 -04:00
974b188c1e
feat(billing): add plan_billing sibling table for Stripe + catalog metadata
Michael Chihlas
2026-05-06 03:30:22 -04:00
a28b635b19
feat(invites): add revoked_at + email_sent_at to account_invites
Michael Chihlas
2026-05-06 03:29:08 -04:00
50e7763380
feat(onboarding): add accounts.team_size_bucket and primary_psa for wizard
Michael Chihlas
2026-05-06 03:27:31 -04:00
b3ed76c203
feat(onboarding): add users.role_at_signup and onboarding_step_completed
Michael Chihlas
2026-05-06 03:25:34 -04:00
453ba3fefc
feat(auth): make users.password_hash nullable for OAuth-only accounts
Michael Chihlas
2026-05-06 03:24:07 -04:00
143c979975
feat(auth): add oauth_identities table for Google/Microsoft sign-in
Michael Chihlas
2026-05-06 03:18:00 -04:00
ab0d40c1e2
docs(plan): self-serve signup & onboarding implementation plans
Michael Chihlas
2026-05-06 03:12:44 -04:00
278b9342b4
docs(spec): self-serve signup & onboarding design
Michael Chihlas
2026-05-06 02:28:15 -04:00
a8b22cfa0b
feat: post-PR-159 UI cleanup — sidebar IA + account redesign (#160 )
chihlasm
2026-05-06 23:14:16 +00:00
b544a7a462
test(e2e): update account page heading assertion to match redesign
Michael Chihlas
2026-05-06 18:54:53 -04:00
07a3f01184
fix(qa): ISSUE-001 — fall back to members.length when usage.user_count is missing
Michael Chihlas
2026-05-05 01:02:44 -04:00