|
|
0b2a786791
|
feat(web): assets, net worth, manual assets, lending
|
2026-08-22 20:58:36 +08:00 |
|
|
|
2555e42f21
|
test(web): polyfill CSS.supports in shared vitest setup (Seed TextField needs it)
|
2026-08-22 20:45:59 +08:00 |
|
|
|
efd252e8ff
|
merge task/t7: auth screens (login/register/forgot/2FA)
|
2026-08-22 20:45:48 +08:00 |
|
|
|
ef0fe234b8
|
feat(web): auth screens (login/register/forgot/2FA)
|
2026-08-22 20:42:29 +08:00 |
|
|
|
08cae39f59
|
feat(web): responsive app shell + tab navigation
|
2026-08-22 20:39:22 +08:00 |
|
|
|
071b5bdb6f
|
merge task/t6: Mercury DS components + base i18n
|
2026-08-22 20:35:15 +08:00 |
|
|
|
7868c7e6f4
|
test(web): render real Seed components under vitest (inline @seed-design) + assert Mercury button styling
|
2026-08-22 20:34:14 +08:00 |
|
|
|
9afb5fcee8
|
fix(web): handle empty-body 201/204 responses in API client
|
2026-08-22 20:29:35 +08:00 |
|
|
|
83c5ffbdaf
|
feat(web): Mercury DS components + base i18n
|
2026-08-22 20:29:14 +08:00 |
|
|
|
53755e9c3a
|
feat(web): typed API client + TanStack Query hooks
|
2026-08-22 20:24:53 +08:00 |
|
|
|
3fd45fe54d
|
fix(web): reject path-traversal segments in the API proxy
|
2026-08-22 20:19:31 +08:00 |
|
|
|
25bdfda5a3
|
feat(web): auth proxy with httpOnly cookie session + route guard
|
2026-08-22 20:15:39 +08:00 |
|
|
|
b1cb04747e
|
test(web): keep localStorage polyfill in vitest setup (required — jsdom has no localStorage here)
|
2026-08-22 20:12:59 +08:00 |
|
|
|
1051ecdc5b
|
merge task/t2: money formatting + hide-amounts
# Conflicts:
# web/vitest.setup.ts
|
2026-08-22 20:12:26 +08:00 |
|
|
|
ad215b9416
|
feat(web): money formatting + hide-amounts, ported from iOS
|
2026-08-22 20:09:15 +08:00 |
|
|
|
6454bc0a51
|
feat(web): Zod DTO schemas mirroring backend + fixtures
|
2026-08-22 20:09:04 +08:00 |
|
|
|
0275aeaaaf
|
feat(web): scaffold Next.js app with Seed Design + Mercury theme + Zona Pro
|
2026-08-22 20:02:52 +08:00 |
|