50 Commits

Author SHA1 Message Date
zetaloop 0e7270aa8d refactor: align client state and ui with backend contract 2026-05-03 06:02:05 +08:00
zetaloop cd469d3d54 refactor(notifications): fetch from backend API instead of local generation
Rewrite store/notifications.ts to fetch via listNotifications
API and remove local generateId-based notification creation.
The store now acts as a simple cache with fetch/invalidate methods.
Header unread count reads from this API-backed cache.
2026-05-01 17:33:05 +08:00
zetaloop d76866ac3b fix(auth): persist login state to localStorage
Save user data, role, and verification status on login so that
page refresh does not lose the session. On mount, AuthBootstrap
always verifies against the backend via getCurrentUserForLogin
to confirm the cookie JWT is still valid.

Remove unused verification store methods (submitVerification,
approveVerification, rejectVerification) — the verify page
already calls lib/api/users.ts directly.
2026-05-01 17:32:06 +08:00
zetaloop 86d1b05271 refactor: remove unused dispute store and orphaned domain stores
Delete store/disputes.ts and 8 other stores that are no longer
referenced by any page, component, or other store after the order
and wallet rewrites. All pages now use lib/api directly.

Also delete lib/domain/income.ts, order-machine.ts, and
resolve-current-shop.ts which were only used by these stores.
2026-05-01 17:32:06 +08:00
zetaloop 8f70c89fb0 refactor(wallet): remove local balance logic and orphaned domain modules
Delete store/wallet.ts which is no longer referenced anywhere.
Remove lib/domain/income.ts, order-machine.ts, resolve-current-shop.ts
and their test files — all depended on removed local state machines.
Wallet page already uses lib/api/transactions.ts for backend API calls.
2026-05-01 17:32:06 +08:00
zetaloop cf0fea9926 refactor(orders): replace local state machine with minimal cache
Strip store/orders.ts to a thin local cache with setOrders and
updateOrder only. Remove all client-side state transition logic,
actor validation, chat sync, notification generation, and wallet
integration — these are now handled by the backend API.

Fix components/order-actions.tsx and stores that depended on
the removed order store methods (markDisputed, autoTimeout*).
2026-05-01 17:32:06 +08:00
zetaloop 452004b194 refactor: remove demo timers and client-side timeout simulation
Remove lib/config/demo-timers.ts and all usages across stores
and pages. Order timeout scheduling, dispute auto-progression,
and hardcoded countdown displays are removed — timeouts are
now handled server-side by the backend.
2026-05-01 17:32:06 +08:00
zetaloop d59f7c6dc8 fix(auth): preserve backend roles on login 2026-04-24 09:06:44 +08:00
zetaloop 12284290cc refactor(store): adapt Zustand stores to backend-aligned types
- orders: remove name fields from creation, keep dispatchMode logic
- chat: remove readonly/senderName/senderAvatar references
- reviews: remove fromUserAvatar/toUserId, simplify participant check
- disputes: remove initiatorId/initiatorName from creation
- posts: remove authorRole/quotedPostId, keep linkedOrderId as number
- comments: remove postId from creation
- wallet: use string amounts
2026-04-23 21:15:11 +08:00
zetaloop 9e64fb1201 refactor(mock): remove lib/mock fixtures and empty stores 2026-03-01 22:26:50 +08:00
zetaloop f5df00df4e refactor(auth): align auth UI and mock auth API 2026-02-28 07:26:05 +08:00
zetaloop bce99c4c54 refactor(order): createPaidOrder uses id references 2026-02-28 07:25:52 +08:00
zetaloop cc24a0cbc3 refactor(errors): migrate decisions to {code,msg} 2026-02-28 07:21:51 +08:00
zetaloop 336aa36d5a feat(theme): add dark mode with next-themes and settings toggle 2026-02-25 20:01:52 +08:00
zetaloop 2d42473910 chore(format): add prettier-plugin-organize-imports and sort imports 2026-02-25 15:34:33 +08:00
zetaloop c1f00f0dbc chore(lint): remove non-null assertion in order timeout map 2026-02-25 02:42:59 +08:00
zetaloop b1a8fd448d fix(dispute): drive order to pending_review on dispute resolution 2026-02-23 11:06:47 +08:00
zetaloop da5574c5b3 fix(order): remove status bypass and wire pending_review lifecycle 2026-02-23 11:05:38 +08:00
zetaloop c986539954 feat(notifications): add notification system and wire order/dispute events 2026-02-23 11:05:04 +08:00
zetaloop 2222dccbb7 feat(domain): add income calculation with commission support 2026-02-23 11:04:48 +08:00
zetaloop 77d23d0c9d refactor(community): extract comment store and post/comment API adapters 2026-02-23 11:04:40 +08:00
zetaloop 8e62b15403 refactor(api): add adapter layer for order/chat/review/dispute writes 2026-02-23 11:04:16 +08:00
zetaloop 1f2dc1434b fix(dispute): enforce participant checks and phase constraints 2026-02-23 11:04:08 +08:00
zetaloop ca95165e1b fix(review): enforce pending-review submission and remove auto reply 2026-02-23 11:04:08 +08:00
zetaloop 385dac2d49 refactor(order): rewrite store around state machine transitions 2026-02-23 11:04:00 +08:00
zetaloop 6517018a9c refactor(order): add transition evaluator and timer constants 2026-02-23 11:03:31 +08:00
zetaloop c9dbf5037e refactor(auth): support async deferred actions for login gating
Allow deferred login actions to return promises and execute them safely without violating lint rules. Also initialize order detail timer state without impure render-time Date.now calls so React hook purity checks pass.
2026-02-22 09:50:48 +08:00
zetaloop 2ade1780c1 fix(settings): enable profile save and avatar selection 2026-02-22 08:30:40 +08:00
zetaloop 43a0cf7a73 feat(post): persist new posts and wire like interactions 2026-02-22 08:29:59 +08:00
zetaloop 237cf90f5e refactor(favorites): replace localStorage with centralized favorite store 2026-02-22 08:29:37 +08:00
zetaloop 8ce3b8a8b5 feat(auth): add pending action queue and api auth wrapper 2026-02-22 08:29:18 +08:00
zetaloop dc629c9472 feat(wallet): add runtime balance flow and role-gated order posting 2026-02-22 08:17:31 +08:00
zetaloop ea822aaa8d feat(chat): add image messages and enforce readonly sessions 2026-02-22 08:17:09 +08:00
zetaloop 5542015abe feat(dispute): support bilateral evidence, timeline, and one-time appeal 2026-02-22 08:16:51 +08:00
zetaloop a7d56240ff feat(order): add sealed review reveal, timeout rules, and dispatch behavior 2026-02-22 08:16:35 +08:00
zetaloop 33b7e4d0b9 feat(auth): complete verification state machine with resubmit flow 2026-02-22 08:16:14 +08:00
zetaloop 7bcb73f139 refactor(data): add mock API adapters, id utility, and toast feedback 2026-02-22 08:02:48 +08:00
zetaloop 5f25043923 fix: sync notification and shop dashboard state 2026-02-22 06:43:24 +08:00
zetaloop 02269dd9c3 feat: wire order and chat state flow 2026-02-22 06:40:40 +08:00
zetaloop 4ce7303258 fix: replay pending action after login 2026-02-22 06:36:49 +08:00
zetaloop 6ed8620ca6 fix: sync verification state with auth guards 2026-02-21 15:53:46 +08:00
zetaloop 6469811382 feat: connect dashboard shop pages to mutable state 2026-02-21 15:49:42 +08:00
zetaloop 94b96ac577 feat: make dashboard service management actionable 2026-02-21 15:47:30 +08:00
zetaloop 6008aa9b04 fix: improve auth store with user state and role validation 2026-02-20 20:40:25 +08:00
zetaloop a4e05cf482 chore: clean up placeholder comments and over-engineering 2026-02-20 20:20:22 +08:00
zetaloop e92657d0dd chore: add auth store placeholder for future use 2026-02-20 20:02:29 +08:00
zetaloop 60eafc571d feat: player status store for online/busy/available state management 2026-02-20 18:51:01 +08:00
zetaloop 07754069c1 feat: global login dialog with useRequireAuth hook for 401 auth gating 2026-02-20 18:50:46 +08:00
zetaloop 87de02b316 chore: upgrade biome warn rules to error, deduplicate UserRole 2026-02-20 17:45:53 +08:00
zetaloop 3093da1665 feat: route structure, providers, layouts, and placeholder pages 2026-02-20 12:43:34 +08:00