28 Commits

Author SHA1 Message Date
639af6371e feat: add PWA support - manifest, service worker, offline page, icons 2026-06-14 10:15:20 -04:00
01f1215cef fix: replace confirm() with proper delete confirmation modal 2026-06-14 10:07:21 -04:00
a25ebdcb75 feat: add resend notification action with push 2026-06-14 10:05:19 -04:00
aea0a4d189 feat: add delete notification button with confirmation in admin notifications 2026-06-14 10:03:59 -04:00
6b2300de07 fix: style custom checkbox with checkmark icon, add disabled button colors 2026-06-14 09:58:44 -04:00
e6a70c427e fix: add terms/privacy checkbox to download modal, button disabled until checked 2026-06-14 09:56:43 -04:00
448a593423 fix: add required permissions section to download modal, use direct download to avoid blob HTTPS warning 2026-06-14 09:54:30 -04:00
5453a5d856 feat: add download modal with app summary and progress bar for APK download 2026-06-14 09:52:18 -04:00
f48a5a5495 feat: improve sidebar design - rounded nav items, gradient header accent, better collapsible, refined sublist 2026-06-14 09:48:34 -04:00
36b0d8dfd9 fix: close notification dropdown when opening user menu and vice versa 2026-06-14 09:36:45 -04:00
00bad074d3 fix: remove notifications link from user menu, add view-all button to notification dropdown, fix admin link 2026-06-14 09:31:27 -04:00
74cf9739d6 refactor: replace sidebar user footer with topbar dropdown menu 2026-06-14 09:26:52 -04:00
b7bd4bfe92 fix: append command history row in real-time after execution 2026-06-14 09:12:28 -04:00
49d724cf9c fix: add Accept: application/json to terminal execute fetch 2026-06-14 09:09:40 -04:00
4ce6b27f96 fix: use serverId variable and add Accept: application/json to server-show.js fetch calls 2026-06-14 09:02:13 -04:00
d1da560764 fix: sync CSS classes with refactored layout, restore missing sidebar items, add asset versioning, fix routes and auth 2026-06-14 08:54:37 -04:00
88f3c1f964 refactor: extract inline CSS/JS from views into separate asset files (20+ files)
Phase A — HTML removed from PHP files:
- RateLimitMiddleware.php: heredoc moved to views/errors/429.php
- public/index.php: inline HTML replaced with View::error()
- AuthMiddleware.php: <script> redirect replaced with <meta refresh>

Phase B — Inline CSS/JS extracted from views:
- CSS: landing.css (459 lines), legal.css (shared by terms+privacy)
- JS: 17 new files extracted from ~20 view files
  - main.js (layout sidebar + notifications)
  - dashboard-chart.js, server-show.js, server-services.js
  - nginx-manager.js, database-manager.js
  - terminal.js, team-show.js, team-index.js
  - server-list.js, server-permissions.js (shared by edit+create)
  - server-ssl.js, server-processes.js, system-users.js
  - admin-users.js, audit-log.js, admin-notifications.js, admin-security.js
  - notifications.js

Total: -3264 lines from views, +288 lines in new assets
2026-06-14 08:04:01 -04:00
e1b6650454 feat: notification dropdown panel and /notifications page 2026-06-13 16:48:05 -04:00
25dfb517ee feat: notification bell with modal showing 10 latest notifications 2026-06-13 16:41:56 -04:00
e92f51e36b replace number inputs with range sliders in threshold modal 2026-06-13 16:32:53 -04:00
12c3e23d9c feat: track notification read receipts per user
- New notification_reads table (migration 008) with unique (notification_id, user_id)
- Notification model: markAsRead inserts into notification_reads; getForUser JOINs
  to show per-user read status; getUnreadCount checks NOT EXISTS in reads table
- getAll() includes read_count subquery for admin view
- Admin view shows 'X / Y' read count for broadcast notifications,
  'Read'/'Unread' badge for user-targeted ones
- Migrates existing read notifications into notification_reads
- AGENTS.md updated with new conventions
2026-06-13 11:48:05 -04:00
0cfed5bf27 feat: validate required SSH permissions before creating server
- New server_permissions table (migration 007) stores required SSH permissions per server
- PermissionValidator service connects via SSH and validates each permission before save
- ServerPermission model for CRUD on server_permissions table
- Web flow: create/edit forms include dynamic permission rows with quick-add presets
- API flow: serverAdd/serverUpdate accept permissions array, return 400 on failure
- Show view displays required permissions on server detail page
- Form input preserved on validation failure (credentials excluded)
- AGENTS.md updated with new conventions
2026-06-13 10:41:18 -04:00
13f14416a4 feat: teams redesign — cards, filter, user autocomplete
- Teams index: cards with animation, search filter
- Team detail: user autocomplete via AJAX (search on type)
- CSS: card grid styles, autocomplete dropdown
- Backend: searchUsers endpoint, filter support
2026-06-09 18:11:20 -04:00
5789c77d9a Fix icon click propagation in sidebar — add pointer-events: none to all nav icons 2026-06-07 13:10:32 -04:00
c45354db11 Fix theme toggle (add light theme CSS) and improve mobile sidebar usability 2026-06-07 13:02:31 -04:00
cd24cc53a0 Add per-column filters, smart pagination (25/page), and date range filter to audit logs 2026-06-07 12:43:50 -04:00
516ffbb579 Add user registration page with default operator role 2026-06-06 19:41:03 -04:00
9c0bc7f189 ServerManager project files 2026-06-06 17:58:34 -04:00