Jesse_Chen
6d192ad175
feat: add consultation and product domain registries
2026-08-15 06:04:23 +08:00
Jesse_Chen
5012ff7212
feat: add persistent personal report document v2
2026-08-15 05:10:37 +08:00
Jesse_Chen
8696eca022
fix: keep one active email OTP per account
Staging Backend Quality Gate / validate (push) Successful in 12m39s
Staging Backend Quality Gate / publish (push) Successful in 12m9s
2026-08-10 10:49:25 +08:00
Jesse
d63f10dcc2
fix(db): isolate redemption migration from identity schema
Staging Backend Quality Gate / validate (push) Successful in 15m31s
Staging Backend Quality Gate / publish (push) Successful in 23m10s
2026-08-07 19:05:01 +08:00
Jesse
280d3e7a35
feat(membership): replace purchase modal with membership page
2026-08-07 18:24:16 +08:00
Jesse_Chen
28147b40d0
Merge origin/main into admin release candidate
Staging Backend Quality Gate / validate (push) Successful in 12m49s
Staging Backend Quality Gate / publish (push) Has been cancelled
2026-08-07 12:27:47 +08:00
Jesse_Chen
66a6c96a5c
fix(admin): fail safe across migration and auth boundaries
...
The recovery migration crossed the identity and RBAC ledgers without guarding schema prerequisites, while unknown configuration, provider, and database failures escaped the admin authorization boundary as 500s. Keep recovery in the DB ledger with explicit prerequisite no-ops, and sanitize unknown authorization failures to the existing 503 path.
2026-08-07 12:08:58 +08:00
Jesse
49f6edd7fb
feat(web): add persistent beam avatars
Staging Backend Quality Gate / validate (push) Successful in 13m34s
Staging Backend Quality Gate / publish (push) Has been cancelled
2026-08-07 12:07:57 +08:00
Jesse_Chen
754505d40a
fix(admin): preserve revoked owners and 503 status
...
Owner recovery lived in the identity-only migration path and could clear historical revocations on conflict. Admin layout also rethrew authorization 503s, turning service-unavailable failures into 500 responses.\n\nMove recovery behind the RBAC migration sequence, exclude revoked candidates without mutating their history, and terminate layout redirects at a no-store 503 route.
2026-08-07 11:33:48 +08:00
Jesse_Chen
0d7e5a26d5
fix(admin): break denied-session redirect loop
...
Preserve 403/503 responses instead of redirecting them through the Caddy root, and recover Owner only for the sole loginable synced identity admin.
2026-08-07 11:06:13 +08:00
Jesse_Chen
6457c836fa
feat(admin): add RBAC identity and MFA controls
2026-08-06 20:15:08 +08:00
Jesse
82dab96b07
feat(report): add personal report contract and persistence
2026-08-06 12:43:10 +08:00
Jesse
02ec5db361
feat(admin): add audited Refine staging console
2026-07-28 09:47:13 +08:00
Jesse_Chen
a1b8eaec36
feat(staging): switch to local postgres
2026-07-22 11:04:36 +08:00
Jesse_Chen
5da3dd38ff
feat(identity): add local postgres identity schema
2026-07-21 17:52:25 +08:00
Jesse_Chen
9e119df977
fix: keep staging control plane on main
2026-07-21 07:45:14 +08:00
Jesse_Chen
53d9aaf846
fix: enforce postgres least privilege
2026-07-21 07:45:14 +08:00
Jesse_Chen
69b38ee6ed
feat: add reviewed postgres migration foundation
2026-07-21 07:45:14 +08:00