dependabot[bot]
f00b726e89
chore(deps-dev): bump @types/node from 25.3.0 to 25.5.0 in /backend ( #116 )
...
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) from 25.3.0 to 25.5.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-version: 25.5.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-25 03:06:17 +00:00
dependabot[bot]
4a82141c75
chore(deps-dev): bump typescript-eslint in /backend ( #110 )
...
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint ) from 8.57.1 to 8.57.2.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases )
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md )
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.2/packages/typescript-eslint )
---
updated-dependencies:
- dependency-name: typescript-eslint
dependency-version: 8.57.2
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-25 03:01:14 +00:00
dependabot[bot]
83a12e0afc
chore(deps): bump yaml from 2.8.2 to 2.8.3 in /backend ( #118 )
...
Bumps [yaml](https://github.com/eemeli/yaml ) from 2.8.2 to 2.8.3.
- [Release notes](https://github.com/eemeli/yaml/releases )
- [Commits](https://github.com/eemeli/yaml/compare/v2.8.2...v2.8.3 )
---
updated-dependencies:
- dependency-name: yaml
dependency-version: 2.8.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-25 02:57:06 +00:00
dependabot[bot]
8c5733f41c
chore(deps): bump systeminformation from 5.31.1 to 5.31.5 in /backend ( #108 )
...
Bumps [systeminformation](https://github.com/sebhildebrandt/systeminformation ) from 5.31.1 to 5.31.5.
- [Release notes](https://github.com/sebhildebrandt/systeminformation/releases )
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md )
- [Commits](https://github.com/sebhildebrandt/systeminformation/compare/v5.31.1...v5.31.5 )
---
updated-dependencies:
- dependency-name: systeminformation
dependency-version: 5.31.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-25 02:55:42 +00:00
dependabot[bot]
90331dd0a3
chore(deps): bump dockerode from 4.0.9 to 4.0.10 in /backend ( #107 )
...
Bumps [dockerode](https://github.com/apocas/dockerode ) from 4.0.9 to 4.0.10.
- [Release notes](https://github.com/apocas/dockerode/releases )
- [Commits](https://github.com/apocas/dockerode/compare/v4.0.9...v4.0.10 )
---
updated-dependencies:
- dependency-name: dockerode
dependency-version: 4.0.10
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-25 02:55:23 +00:00
dependabot[bot]
40288afb51
chore(deps): bump better-sqlite3 from 12.6.2 to 12.8.0 in /backend ( #122 )
...
Bumps [better-sqlite3](https://github.com/WiseLibs/better-sqlite3 ) from 12.6.2 to 12.8.0.
- [Release notes](https://github.com/WiseLibs/better-sqlite3/releases )
- [Commits](https://github.com/WiseLibs/better-sqlite3/compare/v12.6.2...v12.8.0 )
---
updated-dependencies:
- dependency-name: better-sqlite3
dependency-version: 12.8.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-25 02:52:40 +00:00
dependabot[bot]
544effab19
chore(deps-dev): bump nodemon from 3.1.13 to 3.1.14 in /backend ( #123 )
...
Bumps [nodemon](https://github.com/remy/nodemon ) from 3.1.13 to 3.1.14.
- [Release notes](https://github.com/remy/nodemon/releases )
- [Commits](https://github.com/remy/nodemon/compare/v3.1.13...v3.1.14 )
---
updated-dependencies:
- dependency-name: nodemon
dependency-version: 3.1.14
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-25 02:52:18 +00:00
SaelixCode
3cf9f023d3
fix(ci): update lock files after adding ESLint deps and fixing high CVEs
...
- backend/package-lock.json: regenerated after adding eslint, typescript-eslint, @eslint/js devDeps
- frontend/package-lock.json: ran npm audit fix to resolve 3 high-severity CVEs
(flatted DoS, minimatch ReDoS, rollup path traversal)
- backend/package-lock.json: resolved minimatch high ReDoS CVE
2026-03-22 01:02:17 -04:00
SaelixCode
ce50db0fde
security: pre-release hardening, automated testing, and production readiness
...
SECURITY (critical fixes):
- Add authMiddleware to /api/system/console-token (was publicly accessible)
- Validate api_url on node create/update to prevent SSRF (rejects localhost/loopback)
- Add rate limiting (5 req/15 min/IP) to /api/auth/login and /api/auth/setup
- Fix path traversal in env_file resolution — absolute/escaping paths rejected
- Add stack name validation to GET routes (was only on PUT/POST)
- Add helmet security headers middleware
- Restrict CORS to FRONTEND_URL in production
PRODUCTION READINESS:
- Add GET /api/health public endpoint + HEALTHCHECK in Dockerfile
- Add SIGTERM/SIGINT graceful shutdown handler (drains connections, closes DB)
- Run container as non-root sencho user in Dockerfile
QUALITY:
- Fix 4 silent empty catch{} blocks in EditorLayout (now show toast.error)
- Connect ErrorBoundary to root App in main.tsx
- Replace WebSocket.Server with named WebSocketServer import (ESM compat)
TESTING (new automated test suite):
- Install Vitest; 38 backend tests across 4 suites covering validation utilities,
health endpoint, auth middleware, login flows, SSRF protection, and path traversal
- Extract isValidStackName/isValidRemoteUrl/isPathWithinBase to utils/validation.ts
- Playwright E2E scaffolding: auth, stacks, nodes specs + shared login helper
- CI: run Vitest + ESLint on every PR
2026-03-21 21:59:44 -04:00
SaelixCode
322e717514
feat(settings): harden settings API and overhaul SettingsModal
...
Security:
- Strip auth credential keys (auth_username, auth_password_hash,
auth_jwt_secret) from GET /api/settings response
- Add allowlist guard to POST /api/settings — rejects unknown or
auth-namespace keys with a 400
Backend:
- Add PATCH /api/settings bulk endpoint with Zod schema validation
(type coercion, range checks, URL format) and atomic SQLite transaction
- Add system_state table — moves last_janitor_alert_timestamp out of
global_settings; adds getSystemState/setSystemState on DatabaseService
- Add metrics_retention_hours and log_retention_days configurable settings;
MonitorService reads both dynamically each evaluation cycle
- Add cleanupOldNotifications(days) to DatabaseService, called each cycle
Frontend:
- Replace single isLoading flag with per-operation states
(isSavingSystem, isSavingDeveloper, isSavingPassword, isSavingRegistry,
isSavingAgent/isTestingAgent per agent type)
- Add skeleton loader that blocks interaction until fetchSettings resolves
- Explicit key-picking in fetchSettings — auth keys cannot enter state
- Unsaved-changes amber dot on System Limits and Developer sidebar items
- Separate saveSystemSettings / saveDeveloperSettings — no cross-tab clobber
- Developer tab gains Data Retention section (metrics hours, log days)
- All settings saves use new PATCH /api/settings endpoint
2026-03-20 19:57:34 -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
8c51198468
feat: Remote Nodes Wiring & SSH Adapters
2026-03-18 12:55:30 -04:00
SaelixCode
1676dc22df
feat: implement app templates storefront and deployment engine
2026-03-04 14:26:07 -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
SaelixCode
fcf0c9f983
feat: add HostConsole component for interactive terminal access and integrate into EditorLayout
2026-02-26 19:52:43 -05:00
SaelixCode
e94b706a9f
refactor: enhance DockerController with smart fallback for legacy containers; add YAML parsing support and improve container retrieval logic
2026-02-20 23:37:37 -05:00
unknown
293f9cef26
Initial commit: Sencho V1 complete with Auth and Dockerization
2026-02-20 18:39:32 -05:00