124a7679b3
- Rename CI workflow to test.yml (lint & test only) - Add release.yml (Docker push + Gitea release on v* tag) - Add README.md and RELEASE_NOTES.md - Bump version to 0.0.1
13 KiB
13 KiB
v0.0.1 (2026-04-10)
Initial release of Web App Launcher — a self-hosted dashboard for organizing, monitoring, and launching web applications.
Features
- Dashboard system — boards, sections, and widgets with drag-and-drop reordering (b0d77d3, a6b09aa)
- App registry & healthcheck — register apps with icons, tags, categories; automatic status monitoring with sparkline history (4d941f5, c5f5f84)
- Authentication — local auth + OAuth/Authentik integration (2c001df, bf4e508)
- Per-board access control — role-based board visibility (5bb4fbc)
- Service integrations — media services, Planka, and six additional integration types (114dee5, d73fb9c, 55e220b)
- Widget system — multi-entity picker, column span resizing, visual app selector grid (5af670f, f559c93, 17c8407)
- WYSIWYG inline editing — edit dashboards in-place (a6b09aa)
- SQLite database backup — replace JSON import/export with full DB backup (b0439e3)
- Admin panel — user management with deletion confirmation (c5166ba, 65783e3)
- Localization — English and Russian (477c0e4)
- PWA support — installable app with auto-discovery and multi-tab sync (dd6958b)
- UI polish — ambient backgrounds, user theme overrides, bits-ui dropdown, collapsible sidebar (0bd30c5, c6a7de8, b5166d9)
Bug Fixes
- SSRF protection on URL preview endpoint (d90507a)
- Enforce API token scope on requests (215c8fd)
- HLS.js for fullscreen camera stream (819283f)
- Search dialog and store fixes (c62ca79, bcde710)
- SVG favicon and PWA manifest (4326d95)
- Polish empty states and status page layout (76ce85c)
Performance
- Batch-load app status history to eliminate N+1 requests (aedc91e, 92eeead)
- Optimize cold start with lazy-loading icons and parallel DB queries (1e3a04f)
Development / Internal
- CI/CD pipeline: lint & test workflow, release workflow with Docker push and Gitea releases
- Prisma schema and migrations for all entities
- Linter and a11y warning cleanup (44e1849)
- Security review fixes (5a6002b)
All Commits
| Hash | Message | Author |
|---|---|---|
| 76ce85c | fix: polish empty states and status page layout | alexei.dolgolyov |
| aedc91e | perf: batch-load app status history server-side to eliminate N+1 requests | alexei.dolgolyov |
| b5166d9 | refactor: header user menu with bits-ui dropdown, collapsible sidebar boards | alexei.dolgolyov |
| 44e1849 | fix: resolve all linter errors and a11y warnings | alexei.dolgolyov |
| f96cbbc | chore(i18n): add locale keys for widget resize, delete user, multi-picker | alexei.dolgolyov |
| 5af670f | feat: multi-entity picker for status widget app selection | alexei.dolgolyov |
| f559c93 | feat: widget column span resizing with visual size picker | alexei.dolgolyov |
| 65783e3 | feat: user deletion confirmation modal | alexei.dolgolyov |
| 1e3a04f | perf: optimize cold start by lazy-loading icons and parallelizing DB queries | alexei.dolgolyov |
| 17c8407 | feat(widget-config): visual app selector grid with search and icons | alexei.dolgolyov |
| c5f5f84 | feat(app-form): icon picker, tag/category autocomplete, typography | alexei.dolgolyov |
| a6b09aa | feat(inline-edit): add WYSIWYG inline dashboard editing mode | alexei.dolgolyov |
| b0439e3 | feat(backup): replace JSON import/export with SQLite database backup system | alexei.dolgolyov |
| d479726 | feat: add app edit page with pre-populated form | alexei.dolgolyov |
| 44bbf7b | fix(service-integrations): resolve type errors and test failures | alexei.dolgolyov |
| 55e220b | feat(service-integrations): phases 9-10 — media integrations + Planka | alexei.dolgolyov |
| d73fb9c | feat(service-integrations): phases 3-8 — six service integrations | alexei.dolgolyov |
| 50e8519 | feat(service-integrations): phase 2 — integration widget & app form UI | alexei.dolgolyov |
| 114dee5 | feat(service-integrations): phase 1 — integration architecture foundation | alexei.dolgolyov |
| c62ca79 | fix: delay search dialog close so link navigation fires first | alexei.dolgolyov |
| bcde710 | fix: search store now parses API envelope response correctly | alexei.dolgolyov |
| 92eeead | perf: batch-load app history to eliminate N+1 fetches on board load | alexei.dolgolyov |
| 4326d95 | fix: use SVG icon for favicon and PWA manifest | alexei.dolgolyov |
| d90507a | fix: add SSRF protection to URL preview endpoint | alexei.dolgolyov |
| 819283f | fix: use HLS.js for fullscreen camera stream | alexei.dolgolyov |
| 215c8fd | fix: enforce API token scope on requests | alexei.dolgolyov |
| 014de02 | fix: address final review blockers | alexei.dolgolyov |
| 1c0a7cb | feat: Phases 4-7 — Full Feature Expansion (26 features) | alexei.dolgolyov |
| 8d78478 | feat: add IconGrid, EntityPicker controls and enhance search panel | alexei.dolgolyov |
| 395ed82 | fix: address all final review findings for Phase 3 | alexei.dolgolyov |
| 7d8a8fb | feat(phase3): phase 7 - integration & polish | alexei.dolgolyov |
| dd6958b | feat(phase3): PWA, auto-discovery, bookmarklet, multi-tab sync | alexei.dolgolyov |
| c6a7de8 | feat(phase3): import/export, sparklines, user theme overrides | alexei.dolgolyov |
| cba160e | fix: address all code review findings | alexei.dolgolyov |
| 5a6002b | fix: address security findings from final review | alexei.dolgolyov |
| 87ed928 | feat(phase2): phase 6 - integration & polish | alexei.dolgolyov |
| 5bb4fbc | feat(phase2): per-board access control UI | alexei.dolgolyov |
| 477c0e4 | feat(phase2): localization EN/RU + additional widget types | alexei.dolgolyov |
| bf4e508 | feat(phase2): OAuth/Authentik integration + drag-and-drop reordering | alexei.dolgolyov |
| bb3b1a5 | fix: resolve runtime errors and missing routes | alexei.dolgolyov |
| e6b50fb | feat(mvp): phase 8 - integration, testing & deployment | alexei.dolgolyov |
| 0bd30c5 | feat(mvp): phase 7 - UI polish & ambient backgrounds | alexei.dolgolyov |
| c5166ba | feat(mvp): phase 6 - admin panel | alexei.dolgolyov |
| b0d77d3 | feat(mvp): phase 5 - board, section & widget system | alexei.dolgolyov |
| 4d941f5 | feat(mvp): phase 4 - app registry & healthcheck | alexei.dolgolyov |
| 2c001df | feat(mvp): phase 3 - authentication system | alexei.dolgolyov |
| f1b1aa5 | feat(mvp): phase 2 - database schema & services layer | alexei.dolgolyov |
| cf6bde2 | feat(mvp): phase 1 - project scaffolding & tooling | alexei.dolgolyov |