- 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
- AdminShell: added notification bell polling every 30s
- KB page: added createCategory, updateCategory, deleteCategory API helpers
- KB page: added category management state and handlers
- KB page: removed duplicate second implementation (partial)
- KB page: need to insert category UI in next step
- verification/[id].tsx: approve, reject, request-documents, request-revision
all wired to real API endpoints with loading states and feedback banners
- Delete onboarding-management/ (flow moved to dashboard My Profile/Portfolio)
- kb.tsx: remove stray closing brace (TS1128 syntax error)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace runtime storage CRUD with real /api/admin/kb endpoints
- Add proper error handling and state management
- Support seed functionality via API
- Align data mapping with backend Article and Category structs
- Improves data persistence and admin UX
Closes #KB-API-Migration
- Wire dashboard home to live /api/admin/dashboard/metrics with 8 KPI widgets
- Add pending_approvals and total_revenue widget definitions
- Fix JSX syntax errors in [...module].tsx and modules.tsx
- Fix '>' character in DashboardDesignPreview.tsx
- AdminShell: add PAGE_TITLES and ROUTE_MODULE_KEYS entries for
/admin/ugc-content-creators with UGC_CONTENT_CREATOR_MANAGEMENT keys
- DashboardDesignPreview: fix portfolioMediaConfig to include DEVELOPER and
FITNESS_TRAINER as visual portfolio roles
- DashboardDesignPreview: add missing customerViewFor handlers for
'applications', 'shortlisted candidates', 'my applications', 'saved jobs'
- external-dashboard-management: add 'Settings' to CUSTOMER sidebar array
- Fix launch.json PATH so npm is found in sh shell
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace per-page AdminShell wrapping with a single SolidStart layout file
(src/routes/admin.tsx) so the shell mounts once and persists across all
/admin/* navigation — eliminating the sidebar bounce and session re-check
flash that occurred on every page transition.
- Create src/routes/admin.tsx as layout with <Outlet /> for child routes
- Remove <AdminShell> import/wrapper from all 66 route files and 2 shared
components (RoleUserManagementTablePage, UserListPage)
- Fix company.tsx: wrong fetch URL /api/admin/companies → /api/gateway/api/admin/companies
- Add missing auth headers (Authorization Bearer) to company.tsx and users.tsx
- Fix admin/index.tsx API constant from hardcoded localhost:8000 → /api/gateway
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Was calling /api/admin/auth/login which had no handler.
Fixed to /api/gateway/auth/login which proxies to Rust backend.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>