alexei.dolgolyov
d155b3ce4a
chore: add plan files for Phase 3 advanced features
2026-03-25 00:16:41 +03:00
alexei.dolgolyov
345f17f25a
feat: Phase 2 — Enhanced Features
...
CI / lint-and-check (push) Failing after 4m57s
CI / test (push) Has been skipped
CI / docker-build (push) Has been skipped
- OAuth/Authentik integration (OIDC/PKCE, auto-provision, admin config)
- Drag-and-drop reordering (sections + widgets, cross-section moves)
- Localization EN/RU (224 translation keys, language switcher)
- 4 new widget types: Bookmark, Note (markdown), Embed (iframe), Status
- Per-board access control UI (permissions editor, share dialog)
- Security: DOMPurify for markdown, iframe sandbox hardening, OAuth state
- 176 tests passing, all build/lint/type checks clean
2026-03-25 00:08:09 +03:00
alexei.dolgolyov
cba160ecb8
fix: address all code review findings
...
- Extract shared permission logic into boardPermissions.ts utility
- Fix DnD drag revert: add dirty flag to prevent overwrite
- Wrap OAuth group sync in Prisma transaction (N+1 fix)
- Add empty widgetIds validation in widget reorder API
- Add invalidateAll() after guest toggle PATCH
- Replace console.error with user-visible error banners
- Extract WidgetCreationForm component (DraggableSection was 448 lines)
- Remove unused boardId prop from DraggableSection
- Always include OAuth state parameter + validate in callback
- Clean up copyLink timer on component destroy
- Add type-specific widget config validation in addWidget action
2026-03-25 00:03:32 +03:00
alexei.dolgolyov
5a6002be76
fix: address security findings from final review
...
- Replace regex HTML sanitization with DOMPurify in NoteWidget (XSS fix)
- Remove allow-same-origin from default iframe sandbox in EmbedWidget
- Add URL scheme validation for embed URLs (http/https only)
- Install isomorphic-dompurify dependency
2026-03-24 23:50:37 +03:00
alexei.dolgolyov
87ed928a3a
feat(phase2): phase 6 - integration & polish
...
Fix all build/type/lint errors, write 60 new tests (175 total),
update seed with new widget types and team board permissions,
install missing svelte-i18n dependency, fix DynamicIcon for Svelte 5.
2026-03-24 23:43:31 +03:00
alexei.dolgolyov
5bb4fbcedf
feat(phase2): per-board access control UI
...
- BoardAccessControl component with user/group autocomplete
- BoardShareDialog modal with copy link, guest toggle, quick add
- Board permissions REST API (GET/POST/DELETE)
- Access indicators on BoardCard (lock, globe, shared icons)
- Guest access toggle in board editor with status preview
- Enhanced PermissionEditor with search autocomplete
- i18n translations for all new strings (EN/RU)
2026-03-24 23:29:19 +03:00
alexei.dolgolyov
477c0e4d52
feat(phase2): localization EN/RU + additional widget types
...
- Add svelte-i18n with 224 translation keys (English + Russian)
- Language switcher in header (EN/RU toggle, persists to localStorage)
- Extract all hardcoded strings from 37 component/page files
- Add 4 new widget types: Bookmark, Note (markdown), Embed (iframe), Status
- WidgetRenderer dispatches by type, WidgetGrid supports full-width widgets
- Type-specific config forms in board editor
- Install marked for markdown rendering
2026-03-24 23:18:05 +03:00
alexei.dolgolyov
bf4e5089ee
feat(phase2): OAuth/Authentik integration + drag-and-drop reordering
...
- Add OIDC/OAuth2 login via openid-client with PKCE flow
- Auto-provision OAuth users with group mapping
- Conditional login page (OAuth/local/both based on auth mode)
- Admin OAuth test connection button
- Install svelte-dnd-action for board editor DnD
- Draggable sections and widgets with cross-section moves
- Reorder APIs with atomic Prisma transactions
- Visual drag handles and drop zone indicators
2026-03-24 22:54:54 +03:00
alexei.dolgolyov
ae114ab9ce
chore: add plan files for Phase 2 enhanced features
2026-03-24 22:44:31 +03:00
alexei.dolgolyov
c4754f23a5
feat: Web App Launcher MVP
...
CI / lint-and-check (push) Failing after 5m0s
CI / test (push) Has been skipped
CI / docker-build (push) Has been skipped
Self-hosted web application launcher/dashboard with:
- Local auth (JWT + refresh token rotation, guest mode)
- App registry with healthcheck monitoring (node-cron)
- Board/section/widget system with permission filtering
- Admin panel (users, groups, settings)
- Dark/light/system theme with HSL customization
- 3 ambient animated backgrounds (mesh gradient, particles, aurora)
- Cmd/Ctrl+K global search
- Responsive layout with collapsible sidebar
- Docker deployment with Gitea CI
- 115 unit tests
Tech stack: SvelteKit, Svelte 5, TypeScript, Tailwind CSS v4,
Prisma + SQLite, shadcn-svelte, Vitest
2026-03-24 22:39:50 +03:00
alexei.dolgolyov
bb3b1a5db7
fix: resolve runtime errors and missing routes
...
- Fix $effect orphan error: move $effect calls from store constructors
to initEffects() methods called from component context
- Fix icon rendering: create DynamicIcon component to render Lucide icons
from name strings instead of displaying raw text
- Add /boards/new route for board creation
- Fix seed emails (admin@launcher.local / user@launcher.local ) to pass
Zod email validation
2026-03-24 22:39:23 +03:00
alexei.dolgolyov
e6b50fb4f1
feat(mvp): phase 8 - integration, testing & deployment
...
Fix all build/type/lint errors (zod 3.25 compat wrapper, Svelte 5 fixes),
write 115 unit tests across 10 test files, expand seed script with demo
data, update Docker config with migration on startup.
2026-03-24 22:09:17 +03:00
alexei.dolgolyov
0bd30c5e17
feat(mvp): phase 7 - UI polish & ambient backgrounds
...
Add layout system (sidebar, header, main layout), dark/light/system theme
with HSL customization, 3 ambient backgrounds (mesh gradient, particle field,
aurora), Cmd/Ctrl+K search dialog, page transitions, card hover effects,
status pulse animations, skeleton loaders, and responsive design. Polish
all existing pages with consistent theming.
2026-03-24 21:37:16 +03:00
alexei.dolgolyov
c5166ba3a9
feat(mvp): phase 6 - admin panel
...
Add admin layout with auth guard, user management (CRUD + group membership),
group management, system settings (auth mode, registration, theme, healthcheck),
permission editor component, and global search API endpoint.
2026-03-24 21:18:06 +03:00
alexei.dolgolyov
b0d77d3c29
feat(mvp): phase 5 - board, section & widget system
...
Add board/section/widget CRUD APIs with permission filtering, board view
page with collapsible sections and app widgets in responsive grid, form-based
board editor, and 9 Svelte components (Board, Section, Widget families).
2026-03-24 21:05:00 +03:00
alexei.dolgolyov
4d941f566f
feat(mvp): phase 4 - app registry & healthcheck
...
Add app CRUD API endpoints, healthcheck service with node-cron scheduler,
icon resolver (Lucide, Simple Icons, CDN, uploads), app management UI
with Superforms, health badge component, and Docker health endpoint.
2026-03-24 20:53:50 +03:00
alexei.dolgolyov
2c001df322
feat(mvp): phase 3 - authentication system
...
Implement local auth flow: login, registration, logout, JWT access/refresh
tokens in HTTP-only cookies, hooks.server.ts middleware, guest mode support,
Superforms + Zod validation, and reusable auth/authorize middleware.
2026-03-24 20:45:14 +03:00
alexei.dolgolyov
f1b1aa5975
feat(mvp): phase 2 - database schema & services layer
...
Define full Prisma schema (10 models), run initial migration, build core
services (auth, user, group, app, board, permission), Zod validators,
type definitions, API response envelope, constants, and seed script.
2026-03-24 20:00:21 +03:00
alexei.dolgolyov
cf6bde238c
feat(mvp): phase 1 - project scaffolding & tooling
...
Initialize SvelteKit project with Svelte 5, TypeScript strict, Tailwind CSS v4,
shadcn-svelte, Prisma + SQLite, Vitest, ESLint, Prettier. Add Docker multi-stage
build, docker-compose, and Gitea Actions CI pipeline.
2026-03-24 19:53:06 +03:00
alexei.dolgolyov
dc9bd3bba4
chore: add plan files and gitignore for MVP feature
2026-03-24 19:46:26 +03:00
alexei.dolgolyov
6d415ac97d
docs: add project plan prompt
2026-03-24 19:42:21 +03:00