|
|
9afb5fcee8
|
fix(web): handle empty-body 201/204 responses in API client
|
2026-08-22 20:29:35 +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 |
|