Sprint 29, scoped to what wasn't already covered by concurrent work in this session. - dead code check: grepped console.log/console.debug/console.warn/ debugger/TODO/FIXME across features/admin/** - none found. tsc --noUnusedLocals --noUnusedParameters over features/admin/** - clean, no dangling imports/params. - verified tsc --noEmit, ng build, arch:check:boundaries, and arch:check:cycles all pass against the current working tree - added CHANGELOG.md and RELEASE-NOTES.md at repo root summarizing Sprints 20-28 Translation validation is deliberately not duplicated here - the ~178 missing adminXxx.* i18n keys are already logged in docs/KNOWN-ISSUES.md and being addressed there. No lint script exists in package.json, so a lint pass isn't applicable. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1.4 KiB
1.4 KiB
Release Notes
Admin Backoffice Expansion
This release adds a complete admin backoffice on top of the existing dashboard and product management:
- Categories — create, organize into a hierarchy, reorder by drag-and-drop, and publish categories from the admin panel.
- Products — archive/restore, variants, related products, and a proper image gallery, now linked to real admin-managed categories.
- Media Library — folders, tags, upload validation, automatic image compression, and one shared picker used everywhere an image is needed.
- Orders — view and manage orders: change status, request refunds, cancel, leave notes, print invoices.
- Transactions — track payments and refunds, retry failed ones, flag suspicious activity.
- Users & Roles — invite teammates, assign roles, and review who's logged in.
- Monitoring — one place to see recent admin activity, login attempts, and system health.
- Analytics — sales, revenue, and top-product numbers with a simple date-range chart.
Please note
Orders, transactions, users/roles, monitoring, and analytics run on realistic sample data for now — the backend endpoints for these don't exist yet (tracked in docs/BACKEND.md). Categories, products, and media are fully wired to their own local storage and are ready for a real API to be plugged in behind the same interfaces.