徐枫
6504d3c7b9
fix: resolve 6 QA bugs in frontend admin panel (RCA-19)
...
Bug 1: Dashboard child route path "" → "dashboard" + redirect from /
Bug 2: Test localStorage key "admin_token" → "cb_admin_token"
Bug 3: Router setup check data.isSetUp → data.initialised
Bug 4: Setup wizard button text to match test selectors
Bug 5: loginViaAPI helper sets localStorage directly instead of hitting relay
Bug 6: Login button disabled when fields are empty
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-03-18 01:47:21 +08:00
徐枫
147f9d4761
feat: enhance all frontend management views
...
Dashboard (RCA-15):
- Stats cards: server status, devices (online/offline breakdown), cookies
by domain count, WebSocket connections
- Device status table with online badges
- Quick action cards linking to cookies, devices, settings
Cookies (RCA-16):
- Domain-grouped collapsible list with expand/collapse
- Search by domain or cookie name
- Right-side detail panel showing all cookie fields (Headless UI transition)
- Checkbox selection + batch delete
- Per-cookie inline delete
Devices (RCA-17):
- Card grid with platform icons (CH/FF/ED/SA), online/offline badges
- Status filter tabs (All/Online/Offline)
- Expandable details (full device ID, platform, registration date)
- Two-step revoke confirmation dialog inline
Settings (RCA-18):
- Headless UI Tab component with 3 tabs: Sync, Security, Appearance
- Sync: auto-sync toggle, frequency selector (real-time/1m/5m/manual)
- Security: change password form, max devices
- Appearance: theme picker (light/dark/system), language selector
- Save with success toast notification
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-03-17 20:35:45 +08:00
徐枫
1a6d61ec36
feat: add setup wizard and enhance login flow
...
- Add /setup route with 4-step wizard: welcome, admin account creation,
basic config (port, HTTPS), completion
- Router auto-detects first-time setup via GET /admin/setup/status
- Redirects to /setup if not configured, blocks /setup after init
- Uses Headless UI TransitionRoot for step animations
- Password confirmation with mismatch validation
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-03-17 20:31:34 +08:00
徐枫
a320f7ad97
feat: add admin REST API layer for frontend management panel
...
Implement JWT-protected /admin/* routes on the relay server:
- Auth: login, logout, me, setup/status, setup/init (first-time config)
- Dashboard: stats overview (connections, devices, cookies, domains)
- Cookies: paginated list with domain/search filter, detail, delete, batch delete
- Devices: list with online status, revoke
- Settings: get/update (sync interval, max devices, theme)
Uses scrypt for password hashing and jsonwebtoken for JWT.
Adds listAll/revoke to DeviceRegistry, getAll/getById/deleteById to CookieBlobStore,
disconnect to ConnectionManager. Updates frontend to use /admin/* endpoints.
All 38 existing tests pass.
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-03-17 20:28:56 +08:00
徐枫
f4144c96f1
test(web): add Playwright E2E and admin API test suite for RCA-19
...
Prepares the full QA test infrastructure for the admin frontend before
all prerequisite feature tasks (RCA-12–18) are complete.
- playwright.config.ts: 6 browser/device projects (Chromium, Firefox,
WebKit, mobile Chrome, mobile Safari, tablet)
- tests/e2e/01-login.spec.ts: login form, route guards, setup wizard
- tests/e2e/02-dashboard.spec.ts: stats cards, device list, quick actions
- tests/e2e/03-cookies.spec.ts: cookie list, search, detail panel, delete
- tests/e2e/04-devices.spec.ts: device cards, revoke flow, status filter
- tests/e2e/05-settings.spec.ts: three-tab layout, save/error toasts
- tests/e2e/06-responsive.spec.ts: no horizontal scroll on mobile/tablet
- tests/api/admin-api.spec.ts: REST API contract tests for all /admin/* endpoints
- helpers/auth.ts: loginViaUI + loginViaAPI helpers
- helpers/mock-api.ts: route intercept fixtures for all pages
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-03-17 20:24:22 +08:00
徐枫
e3a9d9f63c
feat: scaffold Vue 3 + TypeScript + Vite frontend admin panel
...
Set up web/ directory with complete frontend scaffolding:
- Vue 3 + TypeScript + Vite with Tailwind CSS v4
- Vue Router with auth guard (redirects to /login when unauthenticated)
- Pinia stores: auth, cookies, devices, settings
- Axios HTTP client with token interceptor
- Views: Login, Dashboard, Cookies, Devices, Settings
- Vite dev server proxy to relay API on port 8100
- Headless UI and Heroicons dependencies
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-03-17 20:22:35 +08:00