Append 2026-04-12 session summary for billing, auth, onboarding, and dashboard work
This commit is contained in:
parent
4f2f6227c0
commit
77ef81a31d
@ -53,7 +53,7 @@ Dev container model:
|
|||||||
- Traefik dynamic file provider confirmed as correct routing approach — no plugin needed, no SRV records needed
|
- Traefik dynamic file provider confirmed as correct routing approach — no plugin needed, no SRV records needed
|
||||||
|
|
||||||
Agent review (zlh-agent commit 6019d0bc — 2026-03-15):
|
Agent review (zlh-agent commit 6019d0bc — 2026-03-15):
|
||||||
- Catalog transition confirmed correct — ValidateRuntimeSelection gates all dev provisions
|
- Catalog transition confirmed correct — ValidateRuntimeSelection gates all dev provisioning
|
||||||
- Scripts unchanged — embedded script execution via bash stdin pipe, no 126 risk from runtime installs
|
- Scripts unchanged — embedded script execution via bash stdin pipe, no 126 risk from runtime installs
|
||||||
- devcontainer/common.go is clean and complete
|
- devcontainer/common.go is clean and complete
|
||||||
- node/verify.go has hardcoded /opt/zlh/runtime/node/bin/node — wrong path, pre-existing issue
|
- node/verify.go has hardcoded /opt/zlh/runtime/node/bin/node — wrong path, pre-existing issue
|
||||||
@ -75,3 +75,68 @@ Code-server routing:
|
|||||||
1. Assign code-server a port that won't conflict with Node (6000 taken)
|
1. Assign code-server a port that won't conflict with Node (6000 taken)
|
||||||
2. Add launch step to addon install script — install != start, binary must be daemonized after provisioning
|
2. Add launch step to addon install script — install != start, binary must be daemonized after provisioning
|
||||||
- Suggested launch: nohup /opt/zlh/services/code-server/bin/code-server --bind-addr 0.0.0.0:<port> --auth none /home/dev/workspace > /opt/zlh-agent/logs/code-server.log 2>&1 &
|
- Suggested launch: nohup /opt/zlh/services/code-server/bin/code-server --bind-addr 0.0.0.0:<port> --auth none /home/dev/workspace > /opt/zlh-agent/logs/code-server.log 2>&1 &
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2026-04-12
|
||||||
|
|
||||||
|
Goal: Close the billing loop, ship first-run onboarding, and refresh the dashboard home surface.
|
||||||
|
|
||||||
|
Work completed:
|
||||||
|
|
||||||
|
Infra / Billing path:
|
||||||
|
- public billing hostname and reverse proxy path fixed at `billing.zerolaghub.com`
|
||||||
|
- Caddy TLS issuance succeeded for `billing.zerolaghub.com` and `portal.zerolaghub.com`
|
||||||
|
- Stripe webhook delivery validated live against the public billing endpoint
|
||||||
|
- Prisma verified local billing state persistence after webhook delivery
|
||||||
|
|
||||||
|
API:
|
||||||
|
- billing webhook now persists live billing state
|
||||||
|
- `subscriptionStatus`
|
||||||
|
- `plan`
|
||||||
|
- `currentPeriodEnd`
|
||||||
|
- `lastInvoicePaidAt`
|
||||||
|
- `billingSyncedAt`
|
||||||
|
- direct upgrade flow implemented via `POST /api/billing/upgrade`
|
||||||
|
- period-end scheduled downgrade flow implemented via `POST /api/billing/downgrade`
|
||||||
|
- scheduled downgrade persistence added:
|
||||||
|
- `scheduledPlan`
|
||||||
|
- `scheduledPlanEffectiveAt`
|
||||||
|
- centralized plan limits added and enforced in `POST /api/instances`
|
||||||
|
- basic: 1 game / 1 dev
|
||||||
|
- pro: 3 game / 3 dev
|
||||||
|
- admin exempt
|
||||||
|
- password reset API flow implemented:
|
||||||
|
- `POST /api/auth/password-reset/request`
|
||||||
|
- `POST /api/auth/password-reset/confirm`
|
||||||
|
|
||||||
|
Portal:
|
||||||
|
- billing page aligned to live API billing state
|
||||||
|
- honest Stripe portal section reduced to one real portal entry point
|
||||||
|
- direct in-app Basic → Pro upgrade flow wired
|
||||||
|
- direct in-app Pro → Basic scheduled downgrade flow wired
|
||||||
|
- quota/plan-limit messaging added to server create flow with billing upgrade guidance
|
||||||
|
- forgot-password and reset-password pages added and linked from login
|
||||||
|
- first-login onboarding shipped on dashboard:
|
||||||
|
- welcome modal
|
||||||
|
- quick tour
|
||||||
|
- full tour
|
||||||
|
- skip / completion persistence via localStorage
|
||||||
|
- dashboard refreshed from mini-listing to home surface:
|
||||||
|
- duplicate resource overview removed
|
||||||
|
- spotlight server card/carousel added
|
||||||
|
- primary actions + notices retained
|
||||||
|
|
||||||
|
Outcome:
|
||||||
|
- billing loop is now functional end-to-end
|
||||||
|
- auth reset flow is present end-to-end
|
||||||
|
- onboarding is now in-product
|
||||||
|
- dashboard now feels like a dashboard instead of a duplicate servers page
|
||||||
|
|
||||||
|
Confirmed remaining follow-ups:
|
||||||
|
- game server world backup / restore
|
||||||
|
- email notifications
|
||||||
|
- Open IDE production-path confirmation
|
||||||
|
- SSH config snippet for power users
|
||||||
|
- service discovery cleanup
|
||||||
|
- upload, stress, and provisioning validation
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user