feat: Phases 4-7 — Full Feature Expansion (26 features)

Phase 4 — New Widget Types:
- Clock/Weather, System Stats, RSS/Feed, Calendar, Markdown,
  Metric/Counter, Link Group, Camera/Stream widgets
- Backend services with caching for each data source
- Full creation form with dynamic config fields per type

Phase 5 — Visual & Styling Enhancements:
- Glassmorphism card style (solid/glass/outline)
- Board-level themes with per-board hue/saturation
- Animated SVG status rings replacing static dots
- Card size options (compact/medium/large)
- Custom CSS injection (admin + per-board, sanitized)
- Wallpaper backgrounds with blur/overlay/parallax

Phase 6 — Functional Features:
- Favorites bar with drag-and-drop reordering
- Recent apps tracking with privacy toggle
- Uptime dashboard page (/status, guest-accessible)
- Notifications system (Discord/Slack/Telegram/HTTP webhooks)
- App tags with filtering in board view
- Multi-URL app cards with expandable sub-links
- Personal API tokens with scoped permissions
- Audit log with retention and admin viewer

Phase 7 — Quality of Life:
- Onboarding wizard (5-step first-launch setup)
- App URL health preview with favicon/title detection
- Board templates (4 built-in + custom import/export)
- Keyboard shortcut overlay (j/k nav, 1-9 boards, ? help)

212 files changed, 15641 insertions, 980 deletions.
Build, lint, type check, and 222 tests all pass.
This commit is contained in:
2026-03-25 14:18:10 +03:00
parent 8d7847889e
commit 1c0a7cb850
212 changed files with 15642 additions and 981 deletions
@@ -5,6 +5,7 @@
**Domain:** fullstack
## Objective
Integrate all phases into a fully working application. Fix all build errors, add test coverage, verify Docker deployment, and finalize the CI pipeline. This is the Big Bang convergence phase — everything must work after this.
## Tasks
@@ -29,6 +30,7 @@ Integrate all phases into a fully working application. Fix all build errors, add
## Files Modified/Created
### Build fixes
- `src/lib/components/admin/SettingsForm.svelte` — Fixed JSON curly brace escaping in placeholder
- `src/lib/server/services/authService.ts` — Fixed JWT `expiresIn` type cast for zod 3.25+
- `src/lib/stores/theme.svelte.ts` — Reordered `#systemPreference` initialization before `$derived`
@@ -42,6 +44,7 @@ Integrate all phases into a fully working application. Fix all build errors, add
- `src/lib/components/app/AppForm.svelte` — Fixed iconType type cast
### Lint fixes
- `eslint.config.js` — Disabled `svelte/no-navigation-without-resolve` for static routes
- `src/lib/components/admin/PermissionEditor.svelte` — Added `{#each}` keys
- `src/lib/components/admin/UserTable.svelte` — Added `{#each}` key
@@ -52,6 +55,7 @@ Integrate all phases into a fully working application. Fix all build errors, add
- `src/routes/boards/[boardId]/edit/+page.server.ts` — Removed unused `redirect` import
### Tests (NEW)
- `src/lib/utils/__tests__/cn.test.ts` — cn() utility tests
- `src/lib/utils/__tests__/constants.test.ts` — Constants coverage tests
- `src/lib/utils/__tests__/validators.test.ts` — Zod schema validation tests (35 tests)
@@ -64,6 +68,7 @@ Integrate all phases into a fully working application. Fix all build errors, add
- `src/lib/server/services/__tests__/permissionService.test.ts` — Permission service tests
### Docker & config
- `Dockerfile` — Added prisma migrate deploy on container startup
- `vite.config.ts` — Changed test environment from jsdom to node
- `prisma/seed.ts` — Expanded with regular user, 7 apps, 3 sections, idempotent seeding
@@ -82,6 +87,7 @@ Integrate all phases into a fully working application. Fix all build errors, add
The main convergence issue was **zod 3.25 incompatibility** with sveltekit-superforms v2's `ZodObjectType` constraint. Fixed with a typed wrapper in `src/lib/utils/zod-adapter.ts` that preserves type inference while bypassing the constraint boundary.
## Review Checklist
- [x] All critical tasks completed
- [x] Code follows project conventions
- [x] No unintended side effects
@@ -89,7 +95,9 @@ The main convergence issue was **zod 3.25 incompatibility** with sveltekit-super
- [x] Tests pass (new + existing)
## Handoff
Phase 8 core tasks complete. Remaining items for future iteration:
- API integration tests and component tests (Tasks 7-8)
- Full coverage analysis (Task 9)
- Docker runtime verification (Tasks 12-13)