- Redesign SMTP management page with two-column layout
- Add SMTP connection test functionality
- Add link to email templates page
- Show current SMTP status
- Add quick help section
Added Vite dev server proxy configuration to forward /api requests
to the Rust backend gateway at localhost:9100.
This fixes 401 errors by allowing the admin panel to properly
communicate with the backend API.
- Add vitest, Playwright, ESLint, Prettier configs
- Add unit tests and e2e accessibility/visual tests
- Add MSW mocks and test setup
- Update scripts and .gitignore
- Install required dev dependencies
Note: GitHub Actions workflow will be added after token scope is granted.
- All 4 pages now send Bearer token from sessionStorage on every fetch
- Pricing: fixed endpoint from /api/admin/packages → /api/admin/tracecoin-packages;
added search, role filter, status filter, and sort (name/price/coins)
- Coupon: added search by code/title and status filter; fixed refetch to use load()
- Invoice: refactored from createResource to onMount+signals for consistent auth
- Credit: authenticated balance, ledger, adjust, and reconcile fetch calls
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace all /api/gateway/* with /api/* to match gateway routing
- Fix AdminShell.tsx: update UGC route to singular and fix logout URL
- Remove Applications and Responses from sidebar (unused)
- Move conflicting route files into folders (company, approval, verification, users, jobs, kb, leads, photographer) as index.tsx to avoid catch-all interference
- Upgrade ProfessionAdminListPage to match Department Management UI:
• Dark headers with white text
• Icons on Sort/Filters/Export buttons
• Pagination UI
• Improved empty state with Create button
• Hover effects and consistent spacing
- Update all pages using ProfessionAdminListPage to benefit from new UI
- Fix jobs admin endpoint to use /api/admin/companies/jobs with auth
- Add authentication headers to jobs and leads fetch calls
These changes unify the API architecture and bring a consistent, professional look to all management tables.
When roles API fails to load or roleId doesn't match a loaded role,
selectedRoleKey() returns empty string. Fall back to formRoleKey() in
all three DashboardDesignPreview instances (compact, full_preview tab,
fullscreen overlay) so the role-specific preview always renders correctly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Create ProfessionAdminListPage component for admin list views
- Update all 9 profession pages to use /api/admin/<profession> endpoints
- Remove unused FALLBACK_* constants from onboarding-schemas
- Improves performance and data accuracy for admin profession management
- Added full CRUD UI for categories (create/edit/delete)
- Category form with name, slug, description, display order, active toggle
- Categories displayed as editable tags with delete icons
- Removed duplicate second implementation entirely
- Fixed file structure to have single component
- Updated package.json with solid-markdown dependency
- Integrated Markdown component into article detail page for proper rendering