SaelixCode
d64d23fc50
feat(system): background image update checker with stack badges
...
Adds an ImageUpdateService that queries OCI registry manifest endpoints
every 6 hours to compare remote digests against local RepoDigests.
Results are cached in a new stack_update_status SQLite table. A pulsing
blue dot badge appears in the stack sidebar for stacks with updates
available. Manual refresh available via POST /api/image-updates/refresh
with a 10-minute rate limit.
2026-03-19 21:28:48 -04:00
SaelixCode
4e9777d47f
perf: fix dashboard out of memory crashing from massive historical metrics payloads
2026-03-19 19:59:40 -04:00
SaelixCode
c91c9ed7fd
refactor: pivot from ssh proxy to distributed api model
...
- Delete SSHFileAdapter, IFileAdapter, LocalFileAdapter (SSH/SFTP stack)
- Remove ssh2, ssh2-sftp-client dependencies; add http-proxy-middleware, http-proxy
- NodeRegistry: remote nodes no longer use Dockerode TCP; new getProxyTarget() returns {apiUrl, apiToken}
- NodeRegistry.testConnection: remote nodes use HTTP GET /api/auth/check instead of docker.info()
- DatabaseService: Node interface swaps SSH/TLS fields for api_url + api_token; legacy columns preserved for DB compat
- FileSystemService: reverted to clean local-only fs.promises; adapter pattern fully removed
- ComposeService: executeRemote() and SSH log streaming deleted; local-only execution remains
- index.ts: add /api/auth/generate-node-token endpoint (long-lived JWT, scope:node_proxy)
- index.ts: authMiddleware now accepts Bearer token in addition to cookie (Sencho-to-Sencho auth)
- index.ts: remote HTTP proxy middleware intercepts all /api/ requests for remote nodes, strips x-node-id, injects Authorization header, proxies to api_url
- index.ts: WS upgrade handler proxies WebSocket connections for remote nodes via http-proxy wsProxyServer
- NodeManager.tsx: form reduced to Name, API URL, API Token; Generate Node Token button added inline
- NodeContext.tsx: Node interface updated to api_url/api_token
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 12:20:32 -04:00
SaelixCode
26b8f62968
fix: separate Docker API port from SSH port, add SSH credential UI, fix compose_dir routing
2026-03-18 21:04:43 -04:00
SaelixCode
69e86a0a37
fix: Resolve DatabaseService SQL syntax error and add concrete IFileAdapter implementations
2026-03-18 13:13:56 -04:00
SaelixCode
8c51198468
feat: Remote Nodes Wiring & SSH Adapters
2026-03-18 12:55:30 -04:00
SaelixCode
02e1ebe1b6
feat: Remote Nodes Foundation (Strategy B) - Add nodes table with auto-seeded default local node in DatabaseService - Create NodeRegistry service for multi-instance Docker daemon connections - Add 6 Node management API endpoints (CRUD + test connection) - Create NodeManager component with table UI and connection testing - Add NodeContext for frontend-wide active node state management - Add node switcher dropdown to sidebar (visible when >1 node) - Add Nodes tab to Settings Hub
2026-03-18 11:45:04 -04:00
SaelixCode
448a64a10d
feat: implement enterprise sse global logs and developer mode
2026-03-09 14:02:10 -04:00
SaelixCode
a4a5365da1
feat: implement centralized logging and historical metrics dashboard
2026-03-06 21:05:23 -05:00
SaelixCode
b45553c927
feat: refactor authentication handling and migrate config to database
2026-03-04 09:05:03 -05:00
SaelixCode
6bbd9b6484
feat: add notification deletion functionality in API and EditorLayout
2026-02-27 12:47:16 -05:00
SaelixCode
91cafb49f9
refactor: update journal mode comment for DatabaseService and optimize CPU state check in EditorLayout
2026-02-27 11:10:35 -05:00
SaelixCode
c6eb9d76e7
feat: add Notification Settings Modal and Stack Alert Sheet components
...
- Implemented NotificationSettingsModal for configuring notification agents (Discord, Slack, Webhook) and global settings.
- Added StackAlertSheet for managing stack-specific alert rules with metrics, thresholds, and cooldowns.
- Introduced reusable UI components: DropdownMenu, Popover, Select, Sheet, Slider, and Switch.
- Enhanced Tabs component by removing unnecessary client directive.
2026-02-26 23:09:47 -05:00