josh
4eae11b5b0
Phase 1b: React Query + Vitest on client
...
- @tanstack/react-query v5 with QueryClientProvider at app root
- client/src/api/queries.ts: query-key factory, hooks for tickets, ticket, audit,
comments, users, CTI tree + cascade, plus full mutation set
(create/update/delete ticket, add/delete comment, CTI CRUD, user CRUD)
- All page-level useEffect + useState fetching replaced:
Dashboard, MyTickets, TicketDetail, NewTicket, admin/CTI, admin/Users
- Dashboard preserves 300ms debounced search via separate debouncedSearch state
- CTISelect cascades via useCategories / useTypes(categoryId) / useItems(typeId);
dependent hooks disabled until parent selected
- vitest + @testing-library/react + jsdom; 6 client tests cover SeverityBadge + StatusBadge
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-18 15:35:09 -04:00
josh
27d2ab0f0d
Add ESLint + Prettier + EditorConfig tooling at repo root
...
v1.0 Phase 1.1 — repo-wide lint/format baseline.
- eslint.config.mjs (flat config) lints server, client, shared
- .prettierrc.json, .prettierignore, .editorconfig, .nvmrc
- Root package.json holds shared devDeps; per-package scripts keep
their typecheck + test runners
- Fix 7 lint issues surfaced by the baseline run:
- TicketDetail.tsx: replace ternary-with-side-effects with if/else
- admin/Users.tsx: escape apostrophe in JSX
- errorHandler.ts: typed err as unknown with ErrorLike refinement
- users.ts: Prisma.UserUpdateInput instead of Record<string, any>
- seed.ts: drop unused goddard binding
- Run prettier across tracked sources for a clean formatting baseline
2026-04-18 14:47:34 -04:00
josh
f65c259a71
Ticket IDs, audit log, markdown comments, tabbed detail page
...
- Tickets get a random display ID (V + 9 digits, e.g. V325813929)
- Ticket detail page has Overview / Comments / Audit Log tabs
- Audit log records every action (create, status, assignee, severity,
reroute, title/overview edit, comment add/delete) with who and when
- Comments redesigned: avatar (initials + color), markdown rendering
via react-markdown + remark-gfm, Write/Preview toggle
- Dashboard shows displayId and assignee avatar
- URLs now use displayId (/tickets/V325813929)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-30 20:53:37 -04:00