Files
sencho/CHANGELOG.md
T
2026-07-01 22:56:46 -04:00

256 KiB

Changelog

All notable changes to this project will be documented in this file. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.93.3 (2026-07-02)

Added

  • add GitHub Sponsors alongside Buy Me a Coffee (#1535) (7c759ff)

Fixed

  • deploy-modal: hide frozen countdown label in inline feedback style (#1534) (60de0dd)
  • deps: patch frontend dompurify and @babel/core advisories (#1539) (d80538f)
  • reflect toggle state in scheduled task Enabled/Disabled label (#1533) (90c69b1)
  • wrap auto-heal policy history in stack monitor sheet (#1538) (c3dcf31)

Miscellaneous

  • correct release version after mistagged sponsors PR (#1537) (ad8d874)

0.93.2 (2026-06-30)

Fixed

  • ci: correct github-script pin in preview workflow (#1528) (c9dcc3a)

0.93.1 (2026-06-30)

Fixed

  • align notification unread badge with panel visibility rules (#1520) (1b9a40f), closes #1513
  • enforce 1:1 compose path mapping for Pilot agent mounts (#1516) (41dc339)
  • make auth canvas scroll actually constrain on short viewports (#1523) (e1176fb)
  • polish sidebar and masthead chrome, scroll setup preflight (#1522) (322d337)
  • replace Janitor wording with reclaim/prune actions in user-facing copy (#1518) (89b9341)
  • scroll auth canvas when preflight content overflows (#1521) (da73ee0)

0.93.0 (2026-06-29)

Added

  • add a Simple mode to the New Schedule flow (#1495) (3bece54)
  • add cron scheduling mode for image update checks (#1460) (7320a86)
  • add node update alerts with changelog tab and skip-version handling (#1463) (315e8b6)
  • add ON/OFF toggle for host threshold alerts (#1456) (b7dd9dc)
  • add per-stack project env file selection for Docker Compose (#1457) (a698aaa)
  • add posture reasons and review queue to Security overview (#1462) (0384c47)
  • add Reduced motion setting and polish chrome, files, and stack-detail (#1501) (b5810a9)
  • add syntax highlighting to .env editor tab (#1459) (3bf677a)
  • appearance: add Calm/Signature visual style, readability mode, and chart palette (#1407) (8d9e657)
  • files: copy & duplicate, bulk actions, disk-backed uploads, and an accessible file tree (#1409) (37e6e48)
  • fleet: cross-node bulk label assign with authoritative label discovery (#1389) (d26ab58)
  • make all security features available on every tier (#1502) (04e6902)
  • per-stack storage inventory and portability guardrails (#1399) (9ea2864)
  • purge scan data for deleted images and stacks (#1467) (26d557a)
  • resources: render anonymous volume names readably in the volume browser (#1429) (401980f)
  • scheduler: add helper text and risk badges to scheduled action picker (#1449) (7982251)
  • scheduler: consistent action targeting in Scheduled Operations (#1431) (bc8c051)
  • scheduler: flag one-shot tasks in the Scheduled Operations table (#1433) (2c70e11)
  • scheduler: group schedule action picker by operator intent (#1446) (cc78873)
  • security: action-posture Security dashboard with exploit intel and triage (#1424) (f794702)
  • security: gate deploys on exploitation risk, not just severity (#1432) (6527bc9)
  • security: prioritization-led Overview charts (posture + exploit intel) (#1427) (b163078)
  • security: surface Compose internet-reachability exposure in posture (#1442) (3a22f59)
  • show container name in structured log output (#1452) (f1f64ec)
  • show node and fleet targets on schedule timeline pills (#1480) (5960c1e)
  • sidebar: surface partial status for multi-container stacks (#1426) (bb4ddde)
  • sortable resource tables and richer dashboard stack-health columns (#1498) (60536aa)
  • split Host Alerts into Host Alerts, Container Alerts, and Stacks guardrails (#1461) (e9c262a)
  • stacks: browse and edit mounted volume files in the explorer (#1403) (b9d8e9f)
  • stacks: per-stack environment inventory and secret-safe guardrails (#1397) (57a0856)

Fixed

  • always reconcile the scan banner with the current policy verdict (#1488) (3343630)
  • bind fleet stop-by-label to the exact confirmed nodes and stacks (#1506) (1dc12f7)
  • bind the node-update changelog to the advertised release version (#1492) (4cf0405)
  • block file-explorer binds that overlap Sencho's application directory (#1479) (3e2f045)
  • build: patch bundled Docker CLI golang.org/x/net to v0.55.0 (#1421) (7c5ba1c)
  • classify degraded remote stacks as partial on the compatibility path (#1511) (e9c2c0c)
  • clear stale node-update changelog notes when a refetch fails (#1494) (ed06900)
  • clear structured log viewer rows on stack switch (#1448) (79f840a), closes #1444
  • contain file-explorer binds into Sencho's system directories (#1484) (73f4bc2)
  • contain file-explorer binds into Sencho's temporary and tool directories (#1487) (3386c63)
  • contain file-explorer binds that reach dangling symlinked managed paths (#1490) (bee0dfd)
  • contain file-explorer binds that reach symlinked Sencho-managed paths (#1489) (349ee1f)
  • contain file-explorer writes and browse reachable out-of-base binds (#1465) (1c82e3e)
  • containers: guard container and port reads with stack:read (#1416) (82cc139)
  • copy the full finding set when reusing a cached scan for the deploy gate (#1476) (000a592)
  • dependency-map: stop flagging env-var bind mounts as missing volumes (#1468) (5e2194f)
  • deploy: preserve compose.override.yml when Mesh is enabled (#1420) (b753d2d)
  • deploy: verify atomic-deploy backup integrity before restore (#1422) (96b3c49)
  • differentiate security action links and add suppression editing (#1500) (083442d)
  • distinguish failed image-update checks from "up to date" (#1470) (d9b7911)
  • drift: reconcile the drift ledger on deploy and timestamp its history (#1405) (f9c6c5f)
  • drift: stop flagging declared external networks as drift (#1402) (b611f41)
  • editor: suppress global hotkeys while the code editor is focused (#1413) (1c5b271), closes #1410
  • enforce the originating user's role on remote WebSocket connections (#1508) (ef164f0)
  • enforce the signed-in user's role on cross-node proxied requests (#1505) (78a742f)
  • explain why a failed pre-deploy scan blocks a deploy (#1477) (628400a)
  • export the full vulnerability list to CSV (#1472) (e3b3c3b)
  • fire a one-time schedule on the exact chosen date and time (#1497) (cf0db36)
  • gate cross-node HTTP and stop-by-label on remote RBAC capability (#1509) (997a6bb)
  • harden cross-node fleet label actions and guard container reads (#1503) (05c483f)
  • honor suppressions in the informational scan policy evaluation (#1481) (7c12081)
  • keep security posture accurate for secret-only scans and any-severity KEVs (#1475) (89a13f5)
  • keep the scan banner consistent with the deploy gate after suppression changes (#1485) (04e9d18)
  • keep the schedule's stack selected on prefill and edit (#1496) (a6d431f)
  • load the full vulnerability list in the scan detail sheet (#1483) (1bca75a)
  • make Reduced motion gate overlays, standardize the tab band, and polish fleet/snapshots (#1504) (d6ce60d)
  • name matched risk inputs in policy block messages (#1471) (ca496c8)
  • name matched risk inputs in policy scan banner and alerts (#1473) (1de49f8)
  • networking: treat host-network services as host-exposed in summaries (#1430) (2eafee3)
  • persist a one-time schedule's run time so edit and disable keep its year (#1499) (ba57c67)
  • preflight: suppress node-state checks when the Docker snapshot is unavailable (#1423) (2ed0164)
  • probe remote RBAC capability live and enforce exact stop-result membership (#1510) (a7144d4)
  • rank exploit-risk findings before the cap and disclose truncation (#1482) (7c9c640)
  • rank the exploit-risk cap by the same tiers the overview list shows (#1486) (c2b508e)
  • rate-limit: key authenticated requests by verified JWT, not unverified decode (#1412) (9480cc9)
  • reject atomic restore when a checksummed backup file is missing (#1466) (eaf0642)
  • render node-update changelog notes as formatted markdown (#1474) (6256131)
  • render node-update changelog only for the advertised release version (#1493) (dd49ef6)
  • request registry tokens with the target repository scope (#1478) (2911ccf)
  • require node:read for fleet topology reads and hide Fleet without it (#1507) (dd76b13)
  • schedule the first image-update check on the cron cadence after a restart (#1491) (3ad807b)
  • scheduler: reject 6-field cron in Scheduled Operations (#1435) (db8bb70)
  • search: don't open the command palette via Cmd/Ctrl+K while typing (#1414) (f91227d)
  • security: fix Security page table layouts and exploit-risk pagination (#1434) (330f9f1)
  • skip Docker Compose $$ escaped variables in Anatomy parser (#1450) (ba1be3c)
  • stack the volume browser panels on phones so the file preview is readable (#1512) (8bec32d)
  • stacks: harden stack file path containment against symlink escapes (#1415) (69ba0e6)

0.92.0 (2026-06-19)

Added

  • add a compact icon-only top navigation toggle (#1363) (1b96f3b)
  • add an inline deploy-progress style for the stack detail (#1355) (e20f1fe)
  • add an on-demand node-wide security scan with live progress (#1367) (ef5a3f0)
  • add Compose Doctor preflight checks for stacks (#1348) (52ff072)
  • add dedicated Security page and policy-pack foundation (#1362) (2a4955f)
  • chart-led Security overview with sortable Images and History tables (#1364) (3d39d85)
  • Compose Network Inspector and exposure intent guard (#1360) (77f1611)
  • detect stalled stack updates and add in-app recovery actions (#1347) (d369b03)
  • editor: enable mobile compose and env editing (#1371) (a5109e7)
  • files: move files and folders across directories in the stack explorer (#1373) (888f658)
  • flag documentation drift in the stack dossier (#1349) (739bbf9)
  • fleet: refine the Fleet Overview toolbar (#1376) (02c3b00)
  • fleet: reorder Overview toolbar actions so Add node sits far right (#1381) (f166a53)
  • fleet: tidy the Overview toolbar and shorten tab labels (#1361) (bef51a9)
  • health-gated updates and rollback readiness (#1354) (38aabe7)
  • link container images to registry and source metadata (#1358) (e394429)
  • make image-update check cadence configurable and visible (#1377) (058cf8f)
  • match the Security masthead to the primary-page hero and make History search realtime (#1365) (6cbab66)
  • mobile: standardize secondary pages and the stack list on the status masthead (#1374) (6cc66fa)
  • ordered multi-file Compose for Git sources (#1380) (f23b7e1)
  • pre-deploy scan visibility and pinned scanner version (#1378) (7ce045a)
  • security: reflow the node Security page for mobile (#1372) (0066887)
  • settings: add Stacks section for stack workflow preferences (#1366) (ebf66fd)

Fixed

  • base Git multi-file Compose deploy env and dossier on the effective config (#1391) (ba09e6f)
  • bind deploy progress, request, and health gate to the captured node (#1357) (48cebf9)
  • deps: bump form-data, protobufjs, and vite to clear high-severity CVEs (#1379) (770bead)
  • fleet: resolve Stop-by-label stack labels across all nodes (#1382) (cb58cc4)
  • fleet: scope Stop-by-label to stack labels with a typed suggestion source (#1368) (4610a43)
  • gate fleet stop-by-label on a resolved preview and validate remote stop responses (#1392) (2821e87)
  • harden deploy/update concurrency and node-targeting safety (#1390) (5f1baa7)
  • make published port links open reliably (#1359) (f253276)
  • mobile: keep the bottom tab bar visible with dynamic viewport height (#1375) (85bcd13)
  • settings: clear stale pending and unsaved indicators after save (#1370) (49f1b49)
  • sidebar: skip the auto-update next-run poll for non-admins (#1388) (2960f9f)
  • stacks: return a handled response when saving env to a stack with no env file (#1393) (29c599d)
  • updates: allow "Apply now" on the readiness board without a schedule (#1394) (de87c41)

0.91.1 (2026-06-10)

Fixed

  • base Stack health uptime on container start, not creation (#1341) (e7895c8)

0.91.0 (2026-06-08)

Added

  • allow local Docker Hub, GHCR, and custom registry credentials on Community (#1338) (2298f47)
  • fleet: add read-only dependency map tab (#1324) (af40831)
  • fleet: export a whole-fleet Markdown dossier (#1334) (842ee7d)
  • give Community a 14-day in-app audit log (#1337) (ea1267b)
  • mobile: bespoke phone layouts for dashboard, fleet, schedules, and settings (#1330) (928a3a8)
  • move trivy auto-update, node labels, fleet topology, and single-scan SBOM to Community (#1336) (54119be)
  • snapshots: preserve stack dossiers with fleet snapshots (#1339) (710647a)
  • stacks: add compose-vs-runtime drift detection (#1329) (421177e)
  • stacks: add Stack Dossier tab with operator notes and Markdown export (#1326) (57fe430)
  • stacks: copy stack anatomy as Markdown (#1323) (13b6aca)
  • stacks: persist a drift ledger with temporal source-change detection (#1333) (b21324f)
  • ui: make Fleet, Settings, and the dashboard table usable on mobile (#1331) (2072378)
  • ui: make the core stack flow usable on mobile (#1327) (e8f271f)

0.90.0 (2026-06-06)

Added

  • resources: reclaim banner controls and accurate reclaim math (#1318) (3089492)
  • settings: reorganize the settings hub into domain groups (#1321) (ce08a59)
  • stacks: one-click import for stray compose files (#1320) (f7f3afe)
  • updates: auto-prune dangling images after updates (#1316) (716daf7)

Fixed

  • blueprints: allow deleting blueprints stuck on awaiting-confirmation deployments (#1313) (b4cca9b)
  • blueprints: keep the edit sheet body within the sheet width (#1314) (5d508b9)
  • security: resolve open CodeQL path-injection and temp-file alerts (#1322) (86bfc10)
  • theme: make sheets and dialogs track the active theme (#1315) (622af7e)

0.89.0 (2026-06-05)

Added

  • appearance: add theme, accent, contrast, and typography personalization (#1307) (c0a2520)
  • mesh: refine the Routing tab and add per-route removal (#1311) (81858a0)
  • pricing: collapse to two tiers (#1309) (865d792)

Fixed

  • settings: reflect role, tier, and node scope in settings panels (#1300) (0683aa9)
  • settings: serialize GET /api/settings from an allowlist (#1299) (4596a90)
  • ui: center create-stack label and drop duplicate plus on mesh CTA (#1310) (9d30550)

0.88.2 (2026-06-03)

Fixed

  • metrics: host memory usage excludes reclaimable page cache (#1297) (42fc804)

0.88.1 (2026-06-03)

Fixed

  • api-tokens: harden rate limiting and surface list-load errors (#1292) (2435da2)

0.88.0 (2026-06-03)

Added

  • fleet-snapshots: add restore-all, per-file download, and scrollable preview (#1276) (e60c1c0)
  • mesh: add developer-mode diagnostics to the mesh data plane (#1287) (5e6e96e)
  • onboarding: add first-run environment checker (#1290) (5289f01)
  • recovery: add safe-mode recovery surface and emergency CLI (#1286) (c6d1631)
  • stacks: guided first stack import flow (#1285) (06b2526)

Fixed

  • blueprints: stop the deployment detail sheet flickering and show deploy progress (#1278) (f6c6ffe)
  • federation: gate node cordon control on node:manage to match backend (#1277) (dd2c2b2)
  • fleet-secrets: restrict bundle management to admin hub sessions (#1274) (9fb4ccc)
  • git-sources: return 200 for stacks without a Git source (#1294) (ae0b9d1)
  • mesh: hide node and stack management controls from non-admins (#1284) (c82a39c)
  • nodes: gate node-management actions by role and release pilot tunnels on delete (#1280) (35a1182)
  • nodes: never send stored node tokens to clients (#1281) (65a69d9)
  • notifications: stop subscribing to offline remote nodes (#1291) (a8f0ce9)
  • stack-files: record download metric when response closes after a full read (#1282) (5af0c04)
  • stacks: name the body field in the stack-create required error (#1289) (653be32)
  • stacks: reflect apply progress and clear the anatomy update banner (#1279) (2dd0660)

0.87.0 (2026-06-01)

Added

  • auto-heal: restart crashed containers and harden the heal loop (#1258) (dbb7fe8)
  • dashboard: surface metrics-stale indicator after sustained poll failure (#1213) (7c3ba3f)
  • deploy-panel: tell Community operators deploys lack auto-rollback (#1193) (27b8954)
  • fleet-sync: gate sync-status polling on admin role (#1271) (7d7e0a6)
  • fleet: show stack-label filtering in Fleet View on every tier (#1268) (d8f73f8)
  • labels: harden Stack Labels (gate parity, abort, dry-run, cap) (#1232) (2a29fed)
  • security: make CVE suppressions optionally honored by deploy-block policies (#1269) (085267b)
  • security: per-image scroll + retention cap in scan history (#1231) (42e8d3a)
  • sidebar: surface unreachable nodes in cross-node stack search (#1195) (5196f04)
  • stack-activity: in-process metrics, structured diagnostic logs, docs (#1229) (80499ee)
  • stack-files: cap directory listings at 1000 + add file-tree filter (#1208) (fcf2222)
  • stack-files: drag-and-drop upload zone (#1207) (ea002cd)
  • stack-files: force-text override for misidentified binary files (#1215) (d8b6f8c)
  • stack-files: in-process metrics and structured mutation logs (#1216) (9f2f13f)
  • stack-logs: WebSocket reconnect with backoff and gap sentinel (#1197) (07a2e8f)
  • stacks: in-process per-(nodeId, action) metrics + admin endpoint (#1196) (7ec6fe0)
  • stacks: optimistic concurrency on compose and env file writes (#1183) (fbd13ac)
  • stacks: server-side POST /api/stacks/bulk endpoint (#1185) (5aedc52)
  • stacks: structured 503 docker_unavailable envelope + disconnect tests (#1191) (009ec43)
  • stacks: surface post-deploy scan attempt status (#1198) (d727a55)

Fixed

  • app-store: harden template deploy, registry fetch, and catalogue refresh (#1250) (96c5f05)
  • atomic-deploy: harden rollback locking, restore fidelity, and tier gating (#1247) (45844b9)
  • audit-log: neutralize CSV export injection, clamp pagination, bound anomaly history (#1259) (5e66b54)
  • auto-heal: gate panel write controls on admin role (#1245) (b034de5)
  • auto-update: paid-gate execute route and harden image-check watchdog (#1257) (ca34691)
  • blueprints: gate Federation pin control on admin role (#1252) (d41282e)
  • dashboard: debounce state-invalidate refetches (#1209) (03a5826)
  • dashboard: decouple FleetHeartbeat refresh from the active local node (#1210) (0db0d29)
  • dashboard: slow HealthStatusBar sync-label tick to 5s (#1211) (6d995b9)
  • deploy-enforcement: surface scan-policy blocks on update and sidebar deploys (#1248) (b33a0e8)
  • deploy-progress: decouple deploys from the live progress stream (#1246) (5dea040)
  • editor: harden save-deploy, node-switch, delete, and stats reactivity (#1188) (7c84969)
  • fleet-actions: stop-by-label works on Community remote nodes (#1270) (7e0cffa)
  • fleet-snapshots: gate reads on admin role and encrypt content at rest (#1273) (c11a550)
  • fleet: gate node update actions to admins and harden update tracking (#1272) (0953025)
  • git-sources: harden webhook delivery, transport errors, and clone limits (#1249) (2844f60)
  • global-search: close the command palette on Escape deterministically (#1256) (a5bfd48)
  • global-search: surface unreachable nodes and harden the command palette (#1253) (98049e3)
  • host-console: audit session lifecycle and harden path, resize, and route gating (#1263) (d4fa4a4)
  • mesh: re-evaluate data plane every 10s and add opt-in auto-recreate (#1184) (aa3d99a)
  • mfa: enforce single-use backup codes under concurrent verification (#1262) (7e65a2a)
  • nodes: close capability-gating gaps in node compatibility (#1261) (d03d97d)
  • notifications: harden alert dispatch crash-safety and redact webhook secrets in logs (#1255) (7d4e616)
  • notifications: prevent self-container stack routing (#1242) (265fece)
  • observability: gate global logs to admins, scope to managed containers, harden SSE (#1254) (69edb0d)
  • rbac: enforce admin seat cap on promotion and harden last-admin and audit paths (#1266) (b61388c)
  • registries: keep registry endpoints local to each instance (#1267) (18762fa)
  • resources: harden Resources Hub data race, prune errors, and scan lifecycle (#1251) (eed7e04)
  • scheduled-ops: run stack lifecycle schedules on remote nodes and harden run visibility (#1260) (6fc7f20)
  • security: gate admin-only scan affordances on isAdmin (#1230) (117f590)
  • sidebar: cancel pending debounce emit on external value reset (#1244) (0a8e6a7)
  • sidebar: require admin role for Schedule task and debounce search input (#1243) (9791818)
  • sso: surface config load, test, and removal errors in the SSO settings UI (#1265) (4248ac0)
  • stack-activity: per-stack history integrity, attribution, sanitization (#1228) (2d56ea9)
  • stack-files: atomic write via tmp+rename with optional exclusive mode (#1205) (668eda6)
  • stack-files: avoid false failed download metrics (#1236) (92355d5)
  • stack-files: confirm before overwriting an existing upload target (#1204) (c8b095b)
  • stack-files: guard download stream destroy against the supertest in-process close race (#1227) (a4a8abb)
  • stack-files: optimistic concurrency on file-tab writes via mtime ETag (#1206) (4964320)
  • stack-files: prompt before discarding unsaved edits on file switch (#1203) (3e56696)
  • stack-files: symlink-aware delete and chmod (#1214) (c2357ec)
  • stack-files: track download metric off the file stream, not the response (#1220) (f86042b)
  • stacks: default Empty template ships ports block commented out (#1189) (8ba8875)
  • stacks: refuse file-explorer delete/rename/chmod on protected stack files (#1202) (37b1237)
  • stacks: require stack:read on file explorer GET routes (#1200) (4c28b37)
  • stacks: serialize concurrent lifecycle operations per stack (#1182) (60ecd57)

0.86.6 (2026-05-23)

Fixed

  • monitor: collapse repeated host-metric alerts into per-window summary (F-11) (#1175) (fcff8e9)
  • webhooks: address Codex review of PR #1177 (#1181) (f03c9dc)
  • webhooks: harden trigger response surface (#1177) (21ec5e7)
  • webhooks: hide write affordances from non-admin paid users (#1176) (a928267)

0.86.5 (2026-05-23)

Fixed

  • security: collapse repeated trivy-missing pre-deploy notifications (#1166) (0947da1)
  • stacks: close dialog and toast on Empty create (F-2) (#1168) (9d8d8ab)

0.86.4 (2026-05-23)

Fixed

  • monitor: decouple janitor disk-usage check from 30s cycle (F-6) (#1164) (a51547a)

0.86.3 (2026-05-23)

Fixed

  • mesh: bias Sencho static IP via IPAM IPRange (F-13) (#1162) (64bf634)

0.86.2 (2026-05-22)

Fixed

  • mesh: log boot state to console so docker logs surfaces mesh status (#1159) (4742900)

0.86.1 (2026-05-22)

Fixed

  • mesh: address Codex audit findings on F-1 PR (#1158) (e4fe4cf)
  • mesh: auto-fallback through candidate subnets when default overlaps (#1156) (1a03cf8)

0.86.0 (2026-05-22)

Added

  • cloud-backup: make Custom S3-compatible target available on every tier (#1143) (380ed6f)
  • files: open stack file explorer to every tier (#1144) (535023b)
  • fleet: move bulk Remote OTA updates to Community tier (#1151) (60f893a)
  • fleet: open Fleet Actions tab to Community (admin-only) (#1153) (519a59e)
  • notifications: move Notification Routing to Skipper tier (#1145) (66b8493)
  • resources: protect Sencho's own image, network, volumes from deletion (#1149) (b740dd1)
  • schedules: make every scheduled action available on Skipper (#1141) (c491d30)
  • security: move managed Trivy auto-update to Skipper tier (#1150) (8a3889d)

Fixed

  • fleet: equalize action card heights, swap order, replace native autocomplete (#1138) (2563e30)
  • fleet: route remaining fleet dispatches through getProxyTarget for pilot-agent nodes (#1152) (2f2401d)
  • frontend: wire favicon to existing logo assets (#1146) (dc8a368)
  • hub-only-guard: reject hub-only collection paths without trailing slash (#1142) (8d1304b)
  • resources: subtract shared layers when accounting managed prune bytes (#1155) (cd1cde2)
  • resources: use daemon-reported reclaimable image bytes (#1154) (a1caf6b)

0.85.0 (2026-05-21)

Added

  • api-tokens: make API tokens available on every tier (#1136) (d0e1404)
  • fleet: redesign Fleet Action cards to the System Sheet recipe (#1137) (6f301e0)
  • routing: redesign node cards to the System Sheet recipe (#1133) (cdb9cd4)

0.84.3 (2026-05-21)

Fixed

  • pilot: post-merge audit followups (WS via getProxyTarget, closeTunnel lifecycle, mesh source buffer, docs) (#1128) (e65c5e8)

0.84.2 (2026-05-20)

Fixed

  • mesh: address audit follow-ups (early-data, recompose, admiral gate, error codes, docs) (#1126) (982c783)

0.84.1 (2026-05-20)

Fixed

  • fleet: route remote update trigger through getProxyTarget (#1123) (0b50c88)
  • pilot: let SENCHO_PUBLIC_URL override the request Host in enrollment (#1122) (282ab8d)
  • self-update: resolve /app/data through bind or named volume (#1124) (ee891b0)

0.84.0 (2026-05-20)

Added

  • pilot: make Docker Compose the canonical pilot enrollment payload (#1121) (3ad6ea9)

Fixed

  • fleet: rename Traffic tab label to Routing for consistency (#1119) (0117556)

0.83.1 (2026-05-19)

Fixed

  • fleet-sync: make control-identity-mismatch sticky and surface in UI (#1117) (e05099f)

0.83.0 (2026-05-19)

Added

  • cloud-backup: paginate cloud snapshots list (#1110) (37413c1)
  • fleet-secrets: add Import from stack action to bundle editor (#1115) (e3e5943)

Fixed

  • fleet-secrets: align bundle-row action aria-label with icon ("Send") (#1116) (96d9bb9)
  • stack-update: refresh frontend state automatically after a stack update (#1113) (6722335)

0.82.1 (2026-05-19)

Fixed

  • spawn: attribute ENOMEM and ENOENT-under-memory-pressure spawn failures to host OOM (#1111) (9dbce9c)

0.82.0 (2026-05-19)

Added

  • fleet: add fleet-wide Docker prune to Fleet Actions (#1104) (1f67307)

Fixed

  • stack-editor: reset tab to compose.yaml when clicking edit (#1107) (3a839b7)
  • stacks: return 404 for nonexistent stacks on deploy/down/update (F-7) (#1108) (523ba58)

0.81.15 (2026-05-19)

Fixed

  • mesh: clean up activeStreams on src socket close/error (F-10) (#1105) (0cffd60)

0.81.14 (2026-05-18)

Fixed

  • security: suppress CVE-2026-41567 and CVE-2026-42306 against vendored docker-compose moby library (VEX) (#1102) (596cce3)

0.81.13 (2026-05-18)

Fixed

  • mesh: probe upstream synchronously in route diagnostic (F-11) (#1100) (c460bb8)

0.81.12 (2026-05-18)

Fixed

  • mesh: surface stopped-stack opt-ins on routing node cards (#1098) (554f662)

0.81.11 (2026-05-18)

Fixed

  • mesh: cascade opt-out when a stack is deleted (F-1 / F-14) (#1096) (9f238e1)

0.81.10 (2026-05-18)

Fixed

  • mesh: route peer→central traffic over the existing forward WS (#1094) (f6e4253)

0.81.9 (2026-05-18)

Fixed

  • http: strip zstd from Accept-Encoding so compression sets Content-Encoding (#1092) (ed49ed6)

0.81.8 (2026-05-17)

Fixed

  • mesh: recompose previously-meshed containers when alias set changes (#1090) (1d7418a)

0.81.7 (2026-05-17)

Fixed

  • mesh: surface data-plane failures in health, meta, and Routing tab (#1088) (578cac8)

0.81.6 (2026-05-17)

Fixed

  • mesh: close data-plane race that dropped early TcpData frames (#1086) (a318e6b)

0.81.5 (2026-05-17)

Fixed

  • mesh: cascade override regen across all meshed nodes on opt-in/opt-out (#1079) (a32183d)
  • stacks: prevent right-side clipping in Create Stack modal (#1081) (24155ca)

0.81.4 (2026-05-17)

Fixed

  • mesh: gate Trigger 2 re-bootstrap on actual api_token change (#1076) (9aaa857)
  • mesh: name actual bridge kind in proxy-bridge rejection (#1075) (7e3e221)
  • mesh: persist PilotMetrics counters across central restart (#1078) (6b72859)

0.81.3 (2026-05-17)

Fixed

  • mesh: persist rotated handshake when peer bridge owns reverse-dialer slot (#1073) (3a20105)

0.81.2 (2026-05-17)

Fixed

  • mesh: peer-initiated callback bridge installs reverse dialer (#1071) (0b4cf90)
  • security-ui: expose Community-tier scan surfaces per PR #930 (#1070) (6354cb3)

0.81.1 (2026-05-16)

Fixed

  • mesh: skip peer-side recovery in openCrossNode on central instances (#1068) (54d84a7)

0.81.0 (2026-05-16)

Added

  • mesh: symmetric WS dial for proxy-mode mesh peers (#1066) (cf618dd)

0.80.0 (2026-05-15)

Added

  • fleet: add node management actions to Fleet Overview (#1064) (16774ae)

0.79.0 (2026-05-15)

Added

  • api-tokens: switch to sen_sk_ prefixed opaque keys (#1062) (d882f22)

0.78.1 (2026-05-15)

Fixed

  • mesh: persist proxy-tunnel self-id across bridge teardown (#1060) (f63ffdd)

0.78.0 (2026-05-15)

Added

  • fleet: multi-mode topology with label grouping and persisted positions (#1054) (2e82eb4)
  • mesh: add topology graph view and per-stack drill sheet (#1052) (9e4b969)

Fixed

  • mesh: poll topology data and tighten stack-membership equality (#1059) (3323a59)
  • mesh: proxy peer learns its central-namespace nodeId at tunnel upgrade (#1055) (6185206)
  • mesh: reject opt-in when every service has empty ports (#1056) (3d5f0ff)
  • mesh: testUpstream dials via ensureBridge so proxy-mode targets are probeable (#1057) (489aab4)
  • ui: close user dropdown after clicking menu actions (#1058) (13e4edc)

0.77.1 (2026-05-15)

Fixed

  • mesh: accept node_proxy at the proxy-tunnel WS upgrade (#1050) (946db9d)

0.77.0 (2026-05-15)

Added

  • mesh: route mesh traffic over Distributed API remotes (#1048) (a38a3e0)

0.76.9 (2026-05-14)

Fixed

  • fleet: show capabilities, version, metrics, and stacks for pilot-agent nodes (#1044) (8dd0fce)
  • harden auto-heal policies (#1042) (e7a3b54)
  • harden git source webhooks (#1033) (c31d48b)
  • harden stack label permissions (#1036) (b523230)
  • harden stack management operations (#1046) (5461bc3)
  • harden vulnerability scan scheduling (#1035) (328a984)
  • monitor: parallelize per-container stats fetch in evaluation cycle (#1045) (2dda1be)
  • schedules: align Schedules surface with backend tier gate for Skipper admins (#1047) (44e40af)

0.76.8 (2026-05-12)

Fixed

0.76.7 (2026-05-10)

Fixed

  • mesh: enumerate stacks on remote pilot nodes for opt-in sheet (#1025) (b8af40d)

0.76.6 (2026-05-10)

Fixed

  • mesh: fix pilot handleAccept dispatch by deriving self nodeId from enrollment token (#1023) (41a1df2)

0.76.5 (2026-05-10)

Fixed

  • mesh: push alias port map to pilot so reverse-direction forwarder binds listeners (#1021) (6ac7da9)

0.76.4 (2026-05-10)

Fixed

  • mesh: apply D-1 pushed override on pilot deploys via file-presence fallback (#1019) (c12b3ba)

0.76.3 (2026-05-09)

Fixed

  • mesh: derive override services from compose file and surface cross-node dispatch (#1017) (2d9e4d0)

0.76.2 (2026-05-09)

Fixed

  • mesh: operator-triggered override regen and boot lifecycle hardening (#1016) (7cca68f)
  • mesh: trust central for cross-node dial auth and regenerate overrides at boot (#1014) (0947a80)

0.76.1 (2026-05-09)

Fixed

  • fleet: drop tier gate from stack and container list endpoints (#1012) (693f9b4)

0.76.0 (2026-05-09)

⚠ BREAKING CHANGES

  • mesh: the operator's docker-compose.yml no longer uses network_mode: host. After upgrading, redeploy any meshed stacks once so they pick up the new IP-based override and join sencho_mesh.

Added

  • mesh: replace host-mode with shared sencho_mesh Docker network (#1009) (23bbee4)
  • nodes: hide hub-only views when active node is remote (#1007) (ccad5c9)

0.75.1 (2026-05-08)

Fixed

  • mesh: bind every alias port on every node, not just local-owned (#1004) (10a469e)

0.75.0 (2026-05-08)

Added

  • drop stack labels and network topology to Community tier (#995) (1803512)
  • mesh: bidirectional routing via tcp_open_reverse and central relay (#1003) (567e524)
  • mesh: collapse sidecar into Sencho process via in-process forwarder (#1000) (f599110)

0.74.4 (2026-05-08)

Fixed

  • pilot: generate auth_jwt_secret on pilot-agent boot (#997) (3d1cf0f)

0.74.3 (2026-05-08)

Fixed

  • mesh: treat local-node aliases as always reachable in diagnostics (#994) (34581e5)

0.74.2 (2026-05-08)

Fixed

  • mesh: inspect remote stacks via HTTP proxy not Dockerode (#992) (e176ae9)

0.74.1 (2026-05-08)

Fixed

  • pilot: inject loopback auth on agent-side HTTP/WS forwarding (#990) (a6d3e5d)

0.74.0 (2026-05-08)

Added

  • app-store: show inline port-conflict message on deploy sheet (#984) (86abd90)

Fixed

  • pilot: harden outbound reverse-tunnel against resource exhaustion (#979) (3d94896)
  • pilot: stop silently swallowing fs errors in agent token helpers (#985) (8f13a7f)
  • proxy: route pilot-agent HTTP via PilotTunnelBridge loopback (#989) (94ce7c7)
  • templates: align App Store deploy gate with stack:create permission (#986) (3112f58)

0.73.0 (2026-05-07)

Added

  • fleet-sync: anchor replicas to a control fingerprint (#968) (f3757b4)
  • fleet-sync: hide other replicas' identity-scoped policies on a replica (#973) (a284732)
  • fleet-sync: replica self-demote endpoint and role UX (#969) (7dde257)
  • fleet-sync: retry failed pushes and backfill on add-node (#970) (33b15d6)
  • security: audit-hardening pass for fleet-replicated CVE suppressions (#976) (060bc30)
  • security: audit-hardening pass for secret and misconfiguration scanning (#977) (887d8fb)

Fixed

  • fleet-sync: clear stale policy_evaluation on replica sync swap (#971) (f8c75aa)
  • fleet-sync: hygiene pass on receiver behavior and cleanup (#972) (4007709)
  • fleet-sync: version the wire protocol and serialize per-node pushes (#967) (27660f6)

0.72.0 (2026-05-07)

Added

  • blueprints: capture compose snapshot before stateful eviction (#957) (7fe90d9)
  • fleet: add Federation tab with cordon and pin policy (Admiral) (#964) (52b4675)
  • fleet: add Fleet Actions tab for cross-node bulk operations (#963) (77d5ff5)
  • fleet: Fleet Secrets tab with env-var bundles (v1 MVP) (#965) (0f0b22c)
  • frontend: add SystemSheet primitive and migrate mesh sheets to §9.11 chrome (#960) (4d9617a)
  • frontend: migrate resources, app store, and blueprint sheets to §9.11 chrome (#962) (907e742)
  • frontend: SystemSheet §9.11 — security and scheduled sheets (PR 2/3) (#961) (3ec0a45)

0.71.2 (2026-05-06)

Fixed

  • harden MonitorService evaluation loop (#942) (13cb49c)

0.71.1 (2026-05-06)

Fixed

  • suppress ERROR logging for missing .env files in image update scan (#936) (72b6cdd)

0.71.0 (2026-05-06)

Added

  • dashboard: replace duplicate Recent Activity card with Fleet Heartbeat / Stack Restart Map (#932) (775fab7)
  • implement file explorer context menus and dialogs (#934) (0c3ce4b)
  • open security basics, manual fleet ops, and basic fleet management to Community (#930) (ecf4dd5)
  • sidebar: filter toggle + action button padding fix (#933) (166ba21)

Fixed

  • add CodeQL barrier model for sanitizeForLog against log injection (#935) (0dcf309)

0.70.0 (2026-05-05)

Added

  • resources: add image details sheet with layer history (#925) (7e5dc2d)
  • volumes: add read-only volume browser (#926) (49d775c)

Fixed

  • frontend: align sidebar brand box with top nav chrome (#928) (6f45a3b)
  • frontend: tighten bell notification panel toolbar (#929) (a85af40)

0.69.3 (2026-05-04)

Fixed

  • ci: create posts dir before writing scaffold output (#914) (73b5ca7)

0.69.2 (2026-05-04)

Fixed

  • backend: batch-insert stress test metrics to avoid per-insert fsync timeout (#911) (2e8ca76)

0.69.1 (2026-05-04)

Fixed

  • frontend: remove unused MockWS constructor param (#904) (34fcb25)

0.69.0 (2026-05-03)

Added

  • license: simplify community license page to activate form + pricing link (#892) (c06f937)
  • ui: add ConfirmModal, migrate EditorLayout inline confirms (#897) (d492594)
  • ui: add Modal chrome primitives, migrate file dialogs (#896) (898ef1a)
  • ui: hide paid features from community-tier dashboard (#891) (1f8ce77)

Fixed

  • ci: disable CLA Assistant PR auto-lock so release-please can comment (#890) (b9ada7f)

0.68.0 (2026-05-02)

Added

  • meta: gate deferred Fleet tabs behind SENCHO_EXPERIMENTAL flag (#886) (d69fb9f)

0.67.1 (2026-05-02)

Fixed

  • ci: tolerate empty inline blogPosts array in scaffold script (#883) (87abfc2)

0.67.0 (2026-05-02)

Added

  • entitlements: wire dynamic import of @studio-saelix/sencho-pro (#880) (cffb481)
  • frontend: add LazyBoundary for chunk-load failure recovery (#875) (b843b89)
  • frontend: code-split non-settings paid views and security overlay (#872) (a8d1a9d)
  • frontend: code-split paid-tier settings sections (#870) (fd05b5e)

Fixed

  • frontend: replace post-dismissal blur in PaidGate / AdmiralGate with click-to-restore pill (#874) (6fa0272)
  • frontend: short-circuit CapabilityGate and extract shared LockCard (#873) (6b74767)

0.66.2 (2026-05-02)

Fixed

  • license: reject activation when LS response is missing instance.id (#867) (d17562a)

0.66.1 (2026-05-02)

Fixed

  • license: verify LS store, product, and variant IDs in validate response (#862) (9f9e1bd)

0.66.0 (2026-05-01)

Added

  • blueprints: add Fleet > Deployments tab UI, node labels, and docs (#861) (e5391e6)
  • blueprints: backend foundation for fleet-wide compose templates (#860) (685d5d7)
  • editor: opt-in diff preview before save (#855) (a25acbe)
  • fleet: §16 orchestrator tab foundation (Deployments, Federation, Secrets) (#856) (b8437e8)
  • fleet: sencho mesh in traffic and routing tab (#858) (7663f4c)
  • pilot: add tcp tunnel frames + mesh sidecar package (#857) (6893ece)
  • settings: dress the page to match the audit (#849) (eead195)
  • sidebar: §14 sidebar orchestration, filter chips, pinned rail, trailing column (#850) (4c0efcb)
  • sidebar: bulk stack operations (#854) (a0bf5b5)
  • stack: per-stack activity timeline with actor attribution (#852) (3e01daf)

0.65.1 (2026-04-29)

Fixed

  • backend: resolve ts-node dynamic import and TS2322 narrowing errors (#839) (7d4390a)
  • cla: ensure signatures file has no BOM (1f21526)
  • cla: strictly enforce no-BOM UTF8 for signatures (1a67c6c)
  • convert: resolve TS7016 and TS2322 for composerize dynamic import (#837) (219dee7)
  • docker: upgrade CLI to v29.4.1 and Compose to v5.1.3, clear VEX (#836) (e124874)

0.65.0 (2026-04-28)

Added

  • scaffold: fully automate release blog post publishing (#810) (b5acfd8)

Fixed

  • backend: batch audit_log inserts into a buffered transaction (#817) (5cf4323)
  • backend: cache global_settings reads in DatabaseService (#814) (836e384)
  • backend: lazy-load @aws-sdk/client-s3 in CloudBackupService (#820) (14c25a6)
  • backend: lazy-load composerize and isomorphic-git (#819) (329b4ec)
  • backend: mark AWS SDK clients as optional dependencies (#821) (04f35fd)
  • backend: parallelize independent startup initializers (#816) (18cf2e6)
  • backend: parallelize pruneManagedOnly removals (#830) (46fae21)
  • backend: replace docker system df shell-out with dockerode API (#818) (279ec62)
  • build: enable incremental tsc (#827) (f4338c9)
  • docker: switch builder stages to npm ci (#822) (eb1d627)
  • fleet: forward main node tier to remote config fetch and hide local-only fields (#811) (ae8211c)
  • frontend: lazy-load Monaco editor + diff editor (#824) (b5d038f)
  • frontend: lazy-load xterm chunk + addons (#825) (e74b4db)
  • frontend: parallelize auth bootstrap fetches (#826) (405f9cd)
  • frontend: split heavyweight vendors into manual chunks (#823) (f5dd8af)
  • proxy: cache LicenseService tier headers for the proxy hot path (#815) (61a7e43)
  • test: build baseline DB once via vitest globalSetup (#829) (2000653)
  • test: cap vitest fork pool at 4 workers (#828) (65f43b8)

0.64.2 (2026-04-27)

Fixed

  • backend: use URL parser for registry scheme + template host check (#808) (6ac02c7)
  • deps: bump dompurify to 3.4.0 to resolve four advisories (#801) (c18d369)

0.64.1 (2026-04-27)

Fixed

  • docker: build compose plugin from ./cmd, not ./cmd/compose (#803) (06d9ef5)

0.64.0 (2026-04-27)

Added

  • app-store: sort grid by stars and rotate featured weekly (#787) (dcf8794)
  • auto-update: per-stack auto-update enable/disable toggle (#771) (af9cb0a)
  • auto-update: show pending image updates fleet-wide on the Auto-Updates page (#770) (58df1a5)
  • change default listen port from 3000 to 1852 (#756) (ed553f1)
  • cloud-backup: mirror fleet snapshots to S3-compatible storage (#782) (03f91cd)
  • dashboard: replace 24h charts with Configuration Status and Recent Activity (#785) (d7d8f9b)
  • deploy-logs: opt-in deploy progress modal with structured log rows (#779) (dd9d338)
  • events: broadcast state-invalidate on docker events so dashboard updates live (#768) (5c50218)
  • files: per-stack file explorer (#780) (801a098)
  • license: replace local auto-trial with Lemon Squeezy hosted trial flow (#755) (d6b744e)
  • notifications: add structured category enum to dispatcher and history (#774) (44dba59)
  • notifications: match routing rules by labels and categories (#776) (e003413)
  • scheduler: add auto_backup, auto_stop, auto_down, auto_start and delete_after_run one-shot mode (#777) (abee078)
  • scheduler: support fleet-wide auto-update schedules per node (#773) (a74564f)
  • security: add SBOM attestations, VEX document, and retire .trivyignore (#790) (3668c71)
  • security: rebuild Docker CLI/Compose from source, pin base image digests (#789) (7e4ea71)
  • sidebar: keyboard shortcuts for stack menu actions (#729) (1ef9658)
  • sso: split SSO providers by delivery model across tiers (#754) (a502da5)
  • stacks: add optional volume prune to delete confirmation (#788) (38a9f27)
  • stacks: add Schedule task shortcut to stack context and kebab menus (#772) (819d2a6)
  • stacks: per-service start/stop/restart lifecycle actions (#778) (6986b92)

Fixed

  • auto-update: label same-tag rebuilds as 'Rebuild available' instead of '10.11 -> 10.11' (#766) (584cda7)
  • backend: restore remote proxy mount order before local routers (#747) (43a5959)
  • env: return empty body for missing .env files; surface non-OK responses cleanly (#767) (a962654)
  • frontend: clear sidebar update dot after toolbar Update click (#763) (5746104)
  • frontend: make copy buttons work over plain HTTP (#757) (4c35226)
  • frontend: stream log lines on next paint and show ms-precision timestamps (#764) (c9657b1)
  • login: remove branding duplication, add shimmer and ping dot (#727) (d47f6b4)
  • logs: drop millisecond suffix from log timestamp display (#769) (c7cdcd0)
  • monitor: include node name in janitor alert and stop firing on near-empty hosts (#765) (9e0f521)
  • notifications: scope routing rules to nodes via node_id column (#775) (fcbdd59)
  • security: clear cached policy evaluations when a scan policy is deleted (#758) (24c0a28)
  • sidebar: remove 1-hour staleness filter from activity ticker (#786) (f94b2ce)

0.63.0 (2026-04-21)

Added

  • auth: redesign login, MFA, and setup surfaces with cockpit voice (#714) (0a01980)
  • design-system: retune oklch tokens to cozy-pebble palette (#709) (2b499cb)
  • fleet: aggregate labels across nodes and allow remote edits (#710) (a41af47)
  • fleet: interactive topology with ReactFlow hub-and-spoke layout (#713) (d95e154)
  • fleet: reorganize overview page for clarity and density (#712) (6f132b7)
  • notifications: add per-node filter and 60s refetch safety net (#717) (3e1fb76)
  • search: add global Ctrl+K command palette (#711) (856de35)
  • security: enforce scan policies as a pre-deploy gate (#719) (661b9c6)
  • security: polish scan sheets, fix CVE links, surface policy violations (#721) (12c2b37)
  • settings: surface security, notifications, and app store on remote nodes (#716) (08f57c7)
  • sidebar: cockpit redesign with grouped stacks and activity footer (#702) (370b67d)
  • sidebar: inline label create, live sync, and kebab submenu parity (#706) (75370d8)
  • ui: redesign global logs as cockpit surface (#699) (b95442c)
  • ui: redesign host console as cockpit surface (#701) (490c89c)

Fixed

  • app-store: use stack name as compose service key (#704) (9f861e0)
  • dashboard: remove peak indicator dot from CPU sparkline (#705) (5f2d678)
  • security: convert scan history from full page to sheet overlay (#720) (e4fdb1c)
  • sidebar: distinct fuchsia notification dot for update indicator (#708) (c7dfde4)
  • trivy: remove unsupported --no-progress flag from trivy config (#718) (aa10db1)
  • ui: raise toast z-index above dialog overlays (#715) (a42cc5b)

0.62.0 (2026-04-19)

Added

  • notifications: deep-link bell rows to source stack and container logs (#692) (ed2a16a)
  • sidebar: global multi-node stack search with status (#685) (bd94ef9)
  • stack-view: anatomy panel replaces always-open yaml (#690) (9e41d5e)
  • stack-view: identity header with health state and action hierarchy (#688) (82aabfe)
  • stack-view: per-container health strip and structured logs viewer (#689) (a65a1c0)
  • ui: redesign node switcher as sidebar identity anchor (#694) (e721742)
  • ui: redesign top bar as chrome-glass masthead (#696) (5589110)
  • ui: redesign user menu and notification panel (#691) (7c01906)
  • ui: replace Switch with TogglePill per design audit (#687) (88ec71f)
  • ui: wire overlay popovers to density tokens (#695) (72a1ecd)

0.61.0 (2026-04-18)

Added

  • app-store: editorial hero, category rail, security scan signal per tile (#679) (ec76206)
  • audit-log: signal rail, day-banded stream, anomaly detection (#682) (591dc75)
  • dashboard: status masthead, unified gauges, stack health sparklines (#676) (748ba46)
  • design-system: adopt cyan as data color, add Instrument Serif, introduce label roles (#674) (7ec189d)
  • fleet: add aggregate masthead and local-vs-remote topology (#677) (c3b06f4)
  • resources: lead with reclaimable disk banner and per-tab landings (#678) (5f6fdfc)
  • schedules: next-24h timeline + merge auto-update into schedules (#681) (9527884)
  • settings: add comfortable/compact density toggle (#683) (ad90bd9)
  • settings: group sections, add ⌘K search, scope breadcrumb (#680) (0bf061a)

0.60.0 (2026-04-18)

Added

  • auto-heal policies for unhealthy containers (#671) (5bb4b01)

0.59.0 (2026-04-18)

Added

  • pilot agent outbound-mode for remote nodes (#667) (8e7a567)

0.58.1 (2026-04-17)

Fixed

  • security: relabel unchanged bucket for cross-image comparisons (#662) (e0f2e23)
  • security: server-driven pagination for scan history (#661) (2fce1d3)
  • security: signal when scan comparison is truncated (#658) (c211f65)

0.58.0 (2026-04-17)

Added

  • security: severity-aware scheduled scan notifications (#654) (29ed052)

0.57.0 (2026-04-17)

Added

  • fleet: replicate scan policies across managed nodes (#649) (708d15b)
  • scheduler: notify on scheduled scan completion (#646) (e660d2a)
  • security: export scan results as SARIF 2.1.0 (#652) (12bbf86)
  • security: fleet-replicated CVE suppression list (#650) (732fc95)
  • security: scan comparison UI (#648) (8ee0c0c)
  • security: secret and misconfiguration scanning (#651) (a95bf1f)

0.56.0 (2026-04-17)

Added

  • security: one-click managed Trivy install (#643) (61bac08)

0.55.1 (2026-04-17)

Fixed

  • security: harden Trivy scan lifecycle, logging, and docs (#639) (dc8370f)

0.55.0 (2026-04-16)

Added

  • images: Trivy-powered vulnerability scanning (#635) (c9cd699)

0.54.1 (2026-04-16)

Fixed

  • sso: harden Custom OIDC provider and SSO configuration (#630) (6890224)

0.54.0 (2026-04-16)

Added

  • add Custom OIDC provider and move SSO to Community tier (#626) (7c6df0a)

0.53.0 (2026-04-16)

Added

0.52.0 (2026-04-15)

Added

  • mfa: UX hardening — auto-submit, paste tolerance, low-codes warning, dev-mode diagnostics (#620) (4722028)

0.51.0 (2026-04-15)

Added

  • auth: add TOTP two-factor authentication with backup codes (#615) (7d78c9f)

0.50.0 (2026-04-15)

Added

  • git-sources: harden create-from-git with LFS + submodule warnings (#609) (6529a24)

0.49.0 (2026-04-15)

Added

  • git-sources: create a stack from a Git repository (#606) (3955267)

0.48.1 (2026-04-15)

Fixed

  • git-sources: harden validation, RBAC, concurrency, and deploy recovery (#603) (00901cf)

0.48.0 (2026-04-15)

Added

  • git-sources: link stacks to Git repositories with diff-and-apply workflow (#600) (377df7e)

0.47.0 (2026-04-14)

Added

  • registries: harden Private Registry Credentials feature (#597) (6275adc)

0.46.20 (2026-04-14)

Fixed

  • notifications: stop Sencho version notifications from silently skipping (#594) (6b8c369)

0.46.19 (2026-04-14)

Fixed

  • docker-events: harden crash detection against edge cases (#591) (44a89d9)

0.46.18 (2026-04-14)

Fixed

  • notifications: replace polling with Docker event stream for container lifecycle detection (#588) (ad9a685)

0.46.17 (2026-04-14)

Fixed

  • notifications: resolve version notification showing 0.0.0 and backfill missing image update notifications (#586) (4a03193)

0.46.16 (2026-04-14)

Fixed

  • network-topology: harden with edge-case fixes, logging, and test coverage (#583) (23fc702)

0.46.15 (2026-04-14)

Fixed

  • host-console: harden with security fixes, validation, and test coverage (#580) (718c1eb)

0.46.14 (2026-04-14)

Fixed

  • container-exec: harden with security fixes, validation, and test coverage (#577) (c4ff583)

0.46.13 (2026-04-14)

Fixed

  • notification-routing: harden with security fixes, validation, and test coverage (#573) (e59df35)

0.46.12 (2026-04-14)

Fixed

  • alerts: harden with security fixes, design compliance, and test coverage (#570) (0a94df3)

0.46.11 (2026-04-13)

Fixed

  • api-tokens: harden with security fixes, design compliance, and test coverage (#567) (e0d1ca9)

0.46.10 (2026-04-13)

Fixed

  • sso: harden SSO with role sync, security fixes, design compliance, and test coverage (#564) (1d89e8c)

0.46.9 (2026-04-13)

Fixed

  • audit: harden audit log with summary fixes, design compliance, and test coverage (#561) (6daa7a1)

0.46.8 (2026-04-13)

Fixed

  • rbac: harden user management with token versioning, session invalidation, and test coverage (#558) (c261fbc)

0.46.7 (2026-04-13)

Fixed

  • fleet: harden fleet snapshots with DRY capture, audit fixes, and design compliance (#555) (809bf76)

0.46.6 (2026-04-13)

Fixed

  • labels: harden stack labels with nodeId filtering, concurrency guard, and test coverage (#552) (a695251)

0.46.5 (2026-04-13)

Fixed

  • scheduler: harden scheduled operations with stale cleanup, cron validation, and design fixes (#549) (44e8fdf)

0.46.4 (2026-04-13)

Fixed

  • scheduler: harden auto-update policies with cascade deletes, error reporting, and UI fixes (#545) (a17b16b)

0.46.3 (2026-04-13)

Fixed

  • fleet: harden remote node updates with admin enforcement, expiry fix, and diagnostics (#542) (d23c677)

0.46.2 (2026-04-13)

Fixed

  • logs: harden global logs with shared parsing, SSE fixes, and level filter (#539) (a74a516)

0.46.1 (2026-04-13)

Fixed

  • fleet: add auth middleware, input validation, and design system compliance (#536) (1702dab)

0.46.0 (2026-04-12)

Added

  • app-store: add port conflict indicator to deploy sheet (#533) (cd3d7b2)

0.45.6 (2026-04-12)

Fixed

  • app-store: handle orphaned stack directories on template deploy (#530) (5f91e16)

0.45.5 (2026-04-12)

Fixed

  • resources: harden Resource Explorer with auth, validation, design, and UX fixes (#527) (4909c35)

0.45.4 (2026-04-12)

Fixed

  • app-store: harden App Store with auth, validation, bug fixes, and design compliance (#523) (d4882d3)

0.45.3 (2026-04-12)

Fixed

  • stacks: harden stack management with security, validation, and logging (#520) (2465f76)

0.45.2 (2026-04-12)

Fixed

  • dashboard: harden real-time dashboard with bug fixes and design compliance (#517) (9db9710)

0.45.1 (2026-04-12)

Fixed

  • updates: scan all filesystem stacks for image updates (#514) (4950cd0)

0.45.0 (2026-04-12)

Added

  • add automated docs pipeline and scaffold /docs folder (9496b14)
  • add Community/Pro licensing, fleet view, and UI reorganization (#145) (4f26f22)
  • add update-screenshots CI job and screenshot capture spec (ed8b8e3)
  • api-tokens: add scoped API tokens for CI/CD automation (Team Pro) (#220) (8d8118c)
  • api: add global rate limiter for all API endpoints (#317) (b28ebfa)
  • app-store: category filter bar + custom registry settings (ae4540b)
  • app-store: category filter bar and custom registry settings (34cad76)
  • audit logging, secrets at rest, and legacy cleanup (#205) (1799030)
  • audit-log: add configurable retention, export, Auditor role, and enhanced filtering (#258) (d586ce3)
  • auth: redesign Login and Setup pages with split-panel branding layout (#153) (e0319b5)
  • auth: redesign Login and Setup pages with split-panel branding layout (#168) (f80190d)
  • auto-refresh doc screenshots on develop push (eaf2177)
  • auto-update: add auto-update policies and fix image update detection (#297) (28c7a8f)
  • automated docs pipeline (05a6b93)
  • ci: add release-please automated versioning workflow (c2d5d37)
  • ci: add release-please automated versioning workflow (c2d5d37)
  • ci: add release-please automated versioning workflow (c294def)
  • ci: automated versioning with release-please (c991b81)
  • ci: automated versioning with release-please (c991b81)
  • contact: add official contact emails throughout app and docs (#428) (8e0857e)
  • dashboard: add node badge to Recent Alerts for remote node alerts (#423) (a6849ae)
  • dashboard: redesign as DevOps command center (#371) (2ee959e)
  • design: animated design system foundation with animate-ui and motion (c34092f)
  • design: animated design system foundation with animate-ui and motion (0cb5fae)
  • docker: add linux/arm64 platform support via xx cross-compilation (cf19390)
  • docker: add linux/arm64 platform support via xx cross-compilation (cf19390)
  • fleet: add Pro fleet management features and container drill-down (#174) (0630f57)
  • fleet: add remote node update management (#353) (87b5908)
  • home dashboard and Settings Hub polish (#506) (622c1f9)
  • host-console: gate Host Console behind Admiral tier (#277) (b5d3f49)
  • labels: add stack labels for organizing, filtering, and bulk actions (#341) (28e7be6)
  • license: distributed license enforcement across multi-node setups (#359) (6c26ae3)
  • multi-node: warn when configuring remote node with plain HTTP URL (#292) (e587256)
  • nav: add pulsing animation to local node status dot (#418) (8920d8c)
  • nodes: add capability-based node compatibility negotiation (#350) (ee75811)
  • nodes: add per-node scheduling and update visibility (#344) (efbd20f)
  • notifications: add shared notification routing rules (Admiral tier) (#347) (1b573f5)
  • notifications: aggregate alerts from all connected nodes in the notification panel (16f55bb)
  • notifications: aggregate alerts from all nodes in the notification panel (1690f0d)
  • notifications: replace polling with WebSocket push (4d1aef7)
  • notifications: replace polling with WebSocket push (a5ac3e4)
  • RBAC, atomic deployments, and fleet-wide backups (Pro) (#181) (db73d76)
  • RBAC, atomic deployments, fleet backups, and licensing (Pro) (#185) (32a7d53)
  • rbac: add Deployer & Node Admin roles with scoped permissions (Team Pro) (#253) (8380fba)
  • registries: add private registry credential management (Team Pro) (#240) (244c83a)
  • release: sign and attest published docker images (#480) (2a2efb8)
  • resources: add loading toast for prune, delete, and purge operations (#426) (f6d2199)
  • resources: add network management with create, inspect, and topology (#338) (24299a0)
  • resources: add network management with create, inspect, and topology visualization (#335) (4488637)
  • resources: managed/unmanaged resource separation across Resources Hub (2a444bd)
  • resources: managed/unmanaged resource separation across Resources Hub (5191737)
  • scheduled-ops: add failure notifications, granular targeting, and history export (#286) (eccdd1b)
  • scheduled-ops: add scheduled operations for Team Pro users (#231) (31e1795)
  • settings: harden settings API and overhaul SettingsModal (23a2259)
  • settings: harden settings API and overhaul SettingsModal (322e717)
  • settings: replace static license CTA with dynamic upgrade cards (#201) (d3828e8)
  • settings: scope split — developer settings always target local node (f7e8e40)
  • SSO & LDAP authentication for Team Pro (#209) (bd4008f)
  • stack context menu, tier icons, centered logo & support (#194) (dda1671)
  • stack-management: add scan stacks folder button (#332) (6f74153)
  • stacks: per-stack action tracking, optimistic status, and bulk status endpoint (#362) (dfd4d28)
  • stacks: state-aware sidebar context menu and Open App action (#368) (55d3b8c)
  • topology: overhaul network topology with dagre layout, enriched nodes, and click-to-logs (#447) (3ee4fe6)
  • UI polish sprint — 7 items + logs toolbar redesign (#365) (f9ebd1d)
  • ui: glassmorphism redesign with settings decomposition (#274) (7637091)
  • ui: redesign top bar with three-zone navigation layout (#237) (b7e7ee8)
  • ui: theme-aware sidebar logo with dark/light variants (#74) (b25574a)
  • webhooks: add CI/CD webhook integration for triggering stack actions (Pro) (#177) (4fc3633)

Fixed

  • add --exclude='.git' to the rsync invocation. (8902f6f)
  • add linux/arm64 platform to Docker build for ARM server support (12467c3)
  • alerts: overhaul alerts & notifications system for local and remote nodes (33c4976)
  • alerts: overhaul alerts & notifications system for local and remote nodes (e190f3a)
  • api-tokens: harden scope enforcement and add expiration support (#224) (954994c)
  • api-tokens: harden scope enforcement and block sensitive endpoints (#228) (5b607de)
  • api: add tiered rate limiting to prevent polling lockouts (#460) (8e1b982)
  • auto-update: proxy update execution to remote nodes via Distributed API (#419) (ca8f227)
  • billing: hide billing portal for lifetime licenses (#427) (be7eda8)
  • charts: suppress Recharts dimension warnings on initial render (#141) (c6633b0)
  • ci: add linux/arm64 Docker build support with QEMU optimization (#76) (278f7f1)
  • ci: add load: true to buildx so Trivy can find the built image (353fd25)
  • ci: correct release-please changelog section names and tag format (ea57cbe)
  • ci: correct release-please changelog section names and tag format (ea57cbe)
  • ci: correct release-please changelog section names and tag format (e653bc2)
  • ci: docker-publish tag trigger (6cd84ba)
  • ci: docker-publish tag trigger + re-release v0.1.0 (6cd84ba)
  • ci: exclude .git from rsync --delete in sync-docs (aefeb7a)
  • ci: exclude .git from rsync --delete in sync-docs (8902f6f)
  • ci: fix sync-docs empty-repo crash and update-screenshots protected-branch push (bed63f8)
  • ci: fix sync-docs empty-repo crash and update-screenshots protected-branch push (9505132)
  • ci: fix update-screenshots token and sync-docs empty-repo handling (392a49e)
  • ci: fix update-screenshots token and sync-docs empty-repo handling (b24863d)
  • ci: release-please config corrections (b6391b9)
  • ci: release-please config corrections (b6391b9)
  • ci: trigger docker-publish on v* tag push instead of GitHub Release event (c8047c2)
  • ci: trigger docker-publish on v* tag push instead of GitHub Release event (c8047c2)
  • ci: trigger docker-publish on v* tag push instead of GitHub Release event (6c911fd)
  • ci: update lock files after adding ESLint deps and fixing high CVEs (3cf9f02)
  • ci: use double-quoted string for if condition to fix YAML parse error (f5c5eda)
  • ci: YAML syntax error and sync-docs git directory failure (dfa93c0)
  • ci: YAML syntax error in if condition and safe.directory for sync-docs (dc79683)
  • compose: move atomic backup out of stack folder, silence stale stats 404s (#498) (ba9c4f4)
  • console: send proxy tier headers for remote node console-token requests (#424) (2354bee)
  • csp: allow external images in App Store and suppress console warnings (#138) (c5217cd)
  • dashboard: correct stale Stats reset with inactive field (0d5dc57)
  • db: recreate stack_update_status table with composite primary key (#356) (4fe4ac5)
  • deps: migrate SSO OIDC code to openid-client v6 (#492) (12fe79f)
  • docker: add entrypoint for volume permission handling (593a709)
  • docker: entrypoint for volume permission handling (c743f6c)
  • docker: fix xx cross-compilation sysroot for native modules (#80) (381701e)
  • docker: fix xx cross-compilation sysroot for node-pty and C++ modules (518b0af)
  • docker: install Docker CLI v29.3.1 from static binaries to resolve CVEs (#268) (f9b86e6)
  • docker: repair broken entrypoint from bad merge conflict resolution (987fc3d)
  • docker: replace QEMU npm execution with tonistiigi/xx cross-compilation (#78) (1e0014e)
  • docker: upgrade Compose v2.40.3 → v5.1.1 to remediate dependency CVEs (#283) (36ebd5a)
  • docker: use native g++ for same-platform builds, xx-clang only for cross (f23d8c6)
  • e2e: fill api_token in nodes tests so submit button is enabled (707a5e8)
  • e2e: fix stacks timeout and nodes skip in CI (14c24c8)
  • e2e: fully rewrite nodes tests to handle Radix UI Select and remote type flow (12bbe51)
  • e2e: get all E2E tests passing and fix AlertDialog crash on delete (f7471a1)
  • e2e: use #node-name locator instead of getByLabel in nodes tests (e01c0d6)
  • e2e: use button role for Resources nav item in screenshots spec (b0e2b2d)
  • e2e: wait for sidebar stacks to finish loading before assertions (#149) (9ba9a3a)
  • editor: bundle Monaco locally to fix stuck Loading state (0eaa45b)
  • editor: bundle Monaco locally to fix stuck Loading state (0eaa45b)
  • editor: bundle Monaco locally to fix stuck Loading state and CSP block (79fde6e)
  • editor: ESLint unused params fix (dd5b698)
  • editor: ESLint unused params fix (dd5b698)
  • editor: Monaco CSP fix + release pipeline fixes (36a9bf3)
  • editor: Monaco CSP fix + release pipeline fixes — v0.2.1 (36a9bf3)
  • editor: remove unused params from getWorker to satisfy ESLint (34172a9)
  • editor: remove unused params from getWorker to satisfy ESLint (34172a9)
  • editor: remove unused params from getWorker to satisfy ESLint (59290e9)
  • env: resolve 404 when loading env files and CSP inline script violation (#134) (1e6367a)
  • error-handling: surface silent errors across the codebase (#326) (10597d2)
  • fleet: add Docker Hub fallback for version detection on private repos (#463) (8adcef8)
  • fleet: capture local self-update helper errors (#495) (4003e7c)
  • fleet: detect updates via GitHub Releases instead of gateway self-comparison (#454) (368bef2)
  • fleet: filter invalid version strings from UI display (#399) (2089e75)
  • fleet: forward host bind mounts to self-update helper container (#509) (023e962)
  • fleet: make local self-update flow reliable end-to-end (#472) (3d69746)
  • fleet: navigate to editor instead of dashboard on "Open in Editor" click (#289) (71ce6b3)
  • fleet: prevent modal flash when clicking Recheck button (#457) (8de82ed)
  • fleet: resolve ENOENT when triggering remote node self-update (#413) (1b890b4)
  • fleet: resolve getSenchoVersion crash in Docker containers (#391) (d437a19)
  • fleet: resolve getSenchoVersion crash in Docker containers (#396) (670a429)
  • fleet: resolve remote node capability detection failures (#388) (dee7c66)
  • fleet: resolve self-update compose file access and improve completion detection (#441) (6fff2c2)
  • fleet: resolve stuck update states and improve detection (#405) (cc2da99)
  • fleet: resolve version detection pipeline for Docker builds (#402) (a55d124)
  • fleet: resolve version detection using package.json over stale generated constant (#410) (8ba4532)
  • fleet: strip trailing slash in fetchRemoteMeta URL construction (#444) (8080540)
  • gate SSO and Audit behind Team Pro license tier (#213) (8d48b0a)
  • license: default 14-day trial to Personal Pro instead of Team Pro (#216) (f99abe9)
  • licensing: backward-compatible tier/variant enforcement and self-healing variant detection (#385) (9e0c9d3)
  • licensing: rename variant values to skipper/admiral and store resolved type (#379) (797623e)
  • licensing: resolve Admiral variant detection and lifetime license handling (#376) (f841c40)
  • licensing: resolve variant from product_name when variant_name lacks tier info (#382) (b08f698)
  • lint: resolve all backend ESLint errors to pass CI lint step (e876a91)
  • lint: resolve all ESLint errors to pass CI lint step (c8a54a9)
  • logs: cap DOM rendering to 300 rows to prevent browser OOM crash (ec3a249)
  • merge: resolve CHANGELOG conflict with develop (9f0257e)
  • nav: remove toggle behavior on navigation tabs (#417) (5b06992)
  • proxy: prevent remote 401 from triggering local session logout (278aa22)
  • proxy: prevent remote 401 from triggering local session logout (aeefd79)
  • proxy: re-stream express.json()-consumed body to remote nodes for POST/PUT/PATCH (a703707)
  • proxy: skip express.json() for remote proxy requests to fix body forwarding (ed69543)
  • remediate Dependabot and Docker Scout security vulnerabilities (#265) (59fd528)
  • resources: unify container/resource classification with multi-fallback resolution (#425) (662bc1a)
  • run as root by default to eliminate stack-folder permission failures (#501) (9eb945a)
  • scheduled-ops: audit log text, run attribution, prune targets, and pagination (#234) (330eec4)
  • schedules: filter auto-update policies from Scheduled Operations view (#420) (455bfa8)
  • security: disable COOP header and Vite module-preload polyfill (c36ee93)
  • security: disable COOP header and Vite module-preload polyfill (35a57e5)
  • security: enforce stack name validation on all routes (#314) (1ab04be)
  • security: explicitly disable upgrade-insecure-requests via Helmet 8 API (50df5b3)
  • security: harden encryption key permissions, increase password minimum, remove sensitive logs (#323) (f317a83)
  • security: pre-launch security hardening audit & remediation (#320) (2d6b4c2)
  • security: prevent path traversal via env_file resolution (#311) (dc545dd)
  • security: remove CSP upgrade-insecure-requests and HSTS for HTTP deployments (25012a0)
  • security: remove CSP upgrade-insecure-requests and HSTS over HTTP (cf2946c)
  • settings: prevent X button overlap and add tooltip to Always Local badge (ed0817b)
  • sidebar: resolve stacks showing unknown status when compose name field is set (#416) (88011e1)
  • stacks: avoid resource busy error in Docker fallback deletion (#271) (10d1636)
  • stacks: resolve permission denied error on stack deletion (#261) (116f15d)
  • stats: classify managed containers by working_dir instead of project name (16e978b)
  • stats: classify managed containers by working_dir instead of project name (d62ac09)
  • trigger docs sync on develop instead of main (7d1b996)
  • ts: remove unused motion import from alert-dialog (0dd72b3)
  • ts: use type-only import for Node to satisfy verbatimModuleSyntax (94d6c8f)
  • ui: resolve 9 animated design system bugs including Monaco tab height accumulation (22e6462)
  • ui: settings modal sidebar nav clipped on smaller viewports (#280) (9e14ce9)
  • ui: standardize toast background to match floating overlay glass style (#451) (089d43b)
  • unify caching behind a single CacheService and enable HTTP compression (#468) (c0c3212)
  • ws: fix remote node console — delegate console session tokens (6c518ce)
  • ws: fix remote node console by delegating console session tokens (30fe77c)

Security

  • harden terminal WebSocket endpoints against three attack vectors (2e0f3e2)
  • pre-release hardening, automated testing, and production readiness (ce50db0)

0.44.1 (2026-04-12)

Fixed

  • fleet: forward host bind mounts to self-update helper container (#509) (023e962)

0.44.0 (2026-04-12)

Added

  • home dashboard and Settings Hub polish (#506) (622c1f9)

0.43.4 (2026-04-11)

Fixed

  • run as root by default to eliminate stack-folder permission failures (#501) (9eb945a)

0.43.3 (2026-04-11)

Fixed

  • compose: move atomic backup out of stack folder, silence stale stats 404s (#498) (ba9c4f4)

0.43.2 (2026-04-10)

Fixed

  • fleet: capture local self-update helper errors (#495) (4003e7c)

0.43.1 (2026-04-10)

Fixed

  • deps: update SSO/OIDC integration for upstream library v6 (#492) (12fe79f)

0.43.0 (2026-04-10)

Added

  • release: sign and attest published docker images (#480) (2a2efb8)

0.42.7 (2026-04-10)

Fixed

  • fleet: make local self-update flow reliable end-to-end (#472) (3d69746)

0.42.6 (2026-04-10)

Fixed

  • unify caching behind a single cache layer and enable HTTP compression (#468) (c0c3212)

0.42.5 (2026-04-10)

Fixed

  • fleet: add Docker Hub fallback for version detection on private repos (#463) (8adcef8)

0.42.4 (2026-04-09)

Fixed

  • api: add tiered rate limiting to prevent polling lockouts (#460) (8e1b982)

0.42.3 (2026-04-09)

Fixed

  • fleet: prevent modal flash when clicking Recheck button (#457) (8de82ed)

0.42.2 (2026-04-09)

Fixed

  • fleet: detect updates via GitHub Releases instead of gateway self-comparison (#454) (368bef2)

0.42.1 (2026-04-09)

Fixed

  • ui: standardize toast background to match floating overlay glass style (#451) (089d43b)

0.42.0 (2026-04-09)

Added

  • topology: overhaul network topology with dagre layout, enriched nodes, and click-to-logs (#447) (3ee4fe6)

0.41.2 (2026-04-08)

Fixed

  • fleet: strip trailing slash in fetchRemoteMeta URL construction (#444) (8080540)

0.41.1 (2026-04-08)

Fixed

  • fleet: resolve self-update compose file access and improve completion detection (#441) (6fff2c2)

0.41.0 (2026-04-08)

Added

  • contact: add official contact emails throughout app and docs (#428) (8e0857e)
  • dashboard: add node badge to Recent Alerts for remote node alerts (#423) (a6849ae)
  • resources: add loading toast for prune, delete, and purge operations (#426) (f6d2199)

Fixed

  • billing: hide billing portal for lifetime licenses (#427) (be7eda8)
  • console: send proxy tier headers for remote node console-token requests (#424) (2354bee)
  • resources: unify container/resource classification with multi-fallback resolution (#425) (662bc1a)

0.40.0 (2026-04-07)

Added

  • nav: add pulsing animation to local node status dot (#418) (8920d8c)

Fixed

  • auto-update: proxy update execution to remote nodes via Distributed API (#419) (ca8f227)
  • nav: remove toggle behavior on navigation tabs (#417) (5b06992)
  • schedules: filter auto-update policies from Scheduled Operations view (#420) (455bfa8)
  • sidebar: resolve stacks showing unknown status when compose name field is set (#416) (88011e1)

0.39.6 (2026-04-07)

Fixed

  • fleet: resolve ENOENT when triggering remote node self-update (#413) (1b890b4)

0.39.5 (2026-04-07)

Fixed

  • fleet: resolve version detection using package.json over stale generated constant (#410) (8ba4532)

0.39.4 (2026-04-07)

Fixed

  • fleet: resolve stuck update states and improve detection (#405) (cc2da99)

0.39.3 (2026-04-06)

Fixed

  • fleet: resolve version detection pipeline for Docker builds (#402) (a55d124)

0.39.2 (2026-04-06)

Fixed

  • fleet: filter invalid version strings from UI display (#399) (2089e75)

0.39.1 (2026-04-06)

Fixed

  • fleet: resolve getSenchoVersion crash in Docker containers (#396) (670a429)

0.39.0 (2026-04-06)

Added

  • add automated docs pipeline and scaffold /docs folder (9496b14)
  • add Community/Pro licensing, fleet view, and UI reorganization (#145) (4f26f22)
  • add dynamic template registry and smart volume path sanitizer (536a714)
  • add update-screenshots CI job and screenshot capture spec (ed8b8e3)
  • Advanced Error Handling & Probes (b90db01)
  • api-tokens: add scoped API tokens for CI/CD automation (Admiral) (#220) (8d8118c)
  • api: add global rate limiter for all API endpoints (#317) (b28ebfa)
  • App Store Polish (5c7e08a)
  • App Templates & One-Click Installs (b519fbb)
  • app-store: category filter bar + custom registry settings (ae4540b)
  • app-store: category filter bar and custom registry settings (34cad76)
  • audit logging, secrets at rest, and legacy cleanup (#205) (1799030)
  • audit-log: add configurable retention, export, Auditor role, and enhanced filtering (#258) (d586ce3)
  • auth: redesign Login and Setup pages with split-panel branding layout (#153) (e0319b5)
  • auto-refresh doc screenshots on develop push (eaf2177)
  • auto-update: add auto-update policies and fix image update detection (#297) (28c7a8f)
  • automated docs pipeline (05a6b93)
  • ci: add release-please automated versioning workflow (c2d5d37)
  • ci: automated versioning with release-please (c991b81)
  • dashboard: redesign as DevOps command center (#371) (2ee959e)
  • Deployment Freedom & Polish (a6bf1a3)
  • design: animated design system foundation with animate-ui and motion (c34092f)
  • docker: add linux/arm64 platform support via xx cross-compilation (cf19390)
  • Dynamic Templates & Sanitizer (c05654b)
  • Enterprise Logs & Dev Mode (b32cf54)
  • fleet: add Pro fleet management features and container drill-down (#174) (0630f57)
  • fleet: add remote node update management (#353) (87b5908)
  • host-console: gate Host Console behind Admiral tier (#277) (b5d3f49)
  • implement app templates storefront and deployment engine (1676dc2)
  • implement centralized logging and historical metrics dashboard (a4a5365)
  • implement dynamic volumes, custom env vars, and timezone detection (f2fbca1)
  • implement enterprise sse global logs and developer mode (448a64a)
  • implement pre-deploy collision checks and universal two-stage t… (12aab3a)
  • implement pre-deploy collision checks and universal two-stage teardown (b979525)
  • implement real-time container log streaming via SSE (49cef7a)
  • implement remote tls/ssh security, isolate system stats, and polish ux (2a37e11)
  • implement smart error parser and post-deploy health probe (953049a)
  • integrate official lsio api and rich template metadata (f9e8874)
  • labels: add stack labels for organizing, filtering, and bulk actions (#341) (28e7be6)
  • license: distributed license enforcement across multi-node setups (#359) (6c26ae3)
  • multi-node: warn when configuring remote node with plain HTTP URL (#292) (e587256)
  • nodes: add capability-based node compatibility negotiation (#350) (ee75811)
  • nodes: add per-node scheduling and update visibility (#344) (efbd20f)
  • notifications: add shared notification routing rules (Admiral tier) (#347) (1b573f5)
  • notifications: aggregate alerts from all connected nodes in the notification panel (16f55bb)
  • notifications: aggregate alerts from all nodes in the notification panel (1690f0d)
  • notifications: replace polling with WebSocket push (4d1aef7)
  • Official LSIO API Integration (33b4881)
  • polish app store ui and add advanced deployment configuration (44acfd7)
  • RBAC, atomic deployments, and fleet-wide backups (Skipper and Admiral) (#181) (db73d76)
  • RBAC, atomic deployments, fleet backups, and licensing (Skipper and Admiral) (#185) (32a7d53)
  • rbac: add Deployer & Node Admin roles with scoped permissions (Admiral) (#253) (8380fba)
  • registries: add private registry credential management (Admiral) (#240) (244c83a)
  • Remote Nodes Foundation (457c997)
  • Remote Nodes foundation: nodes table, node registry service, node management API, Node Manager UI, active-node switcher, and Nodes settings tab (02e1ebe)
  • Remote Nodes Security & Polish (2373043)
  • Remote Nodes Wiring & SSH Adapters (8a4f887)
  • resources: add network management with create, inspect, and topology (#338) (24299a0)
  • resources: add network management with create, inspect, and topology visualization (#335) (4488637)
  • resources: managed/unmanaged resource separation across Resources Hub (2a444bd)
  • scheduled-ops: add failure notifications, granular targeting, and history export (#286) (eccdd1b)
  • scheduled-ops: add scheduled operations for Admiral users (#231) (31e1795)
  • settings: harden settings API and overhaul SettingsModal (23a2259)
  • settings: replace static license CTA with dynamic upgrade cards (#201) (d3828e8)
  • settings: scope split: developer settings always target local node (f7e8e40)
  • SSO & LDAP authentication for Admiral (#209) (bd4008f)
  • stack context menu, tier icons, centered logo & support (#194) (dda1671)
  • stack-management: add scan stacks folder button (#332) (6f74153)
  • stacks: per-stack action tracking, optimistic status, and bulk status endpoint (#362) (dfd4d28)
  • stacks: state-aware sidebar context menu and Open App action (#368) (55d3b8c)
  • system: background image update checker with stack badges (ef5621e)
  • UI polish sprint: 7 items + logs toolbar redesign (#365) (f9ebd1d)
  • ui: glassmorphism redesign with settings decomposition (#274) (7637091)
  • ui: Phase 57 - Remote Context Navigation (b7748b4)
  • ui: Phase 57 - remote context UX (Option A) + network layer fixes (04c770c)
  • ui: redesign top bar with three-zone navigation layout (#237) (b7e7ee8)
  • ui: theme-aware sidebar logo with dark/light variants (#74) (b25574a)
  • Unified Observability (935c2b0)
  • webhooks: add CI/CD webhook integration for triggering stack actions (Skipper and Admiral) (#177) (4fc3633)

Fixed

  • add --exclude='.git' to the rsync invocation. (8902f6f)
  • add linux/arm64 platform to Docker build for ARM server support (12467c3)
  • add tls_ca, tls_cert, tls_key to frontend Node interface (96b1105)
  • alerts: overhaul alerts & notifications system for local and remote nodes (33c4976)
  • api-tokens: harden scope enforcement and add expiration support (#224) (954994c)
  • api-tokens: harden scope enforcement and block sensitive endpoints (#228) (5b607de)
  • App Store Polish & Rollbacks (7935029)
  • backend,frontend: correct docker socket connection on windows and fix api proxy in vite config (4aa4bf1)
  • backend: remove broken remote branch in the system stats endpoint (3f473c5)
  • cast req.params.id as string to resolve TS2345 type errors (d2c5b2d)
  • charts: suppress Recharts dimension warnings on initial render (#141) (c6633b0)
  • ci: add linux/arm64 Docker build support with QEMU optimization (#76) (278f7f1)
  • ci: add load: true to buildx so Trivy can find the built image (353fd25)
  • ci: correct release-please changelog section names and tag format (ea57cbe)
  • ci: docker-publish tag trigger (6cd84ba)
  • ci: docker-publish tag trigger + re-release v0.1.0 (6cd84ba)
  • ci: exclude .git from rsync --delete in sync-docs (aefeb7a)
  • ci: fix sync-docs empty-repo crash and update-screenshots protected-branch push (bed63f8)
  • ci: fix update-screenshots token and sync-docs empty-repo handling (392a49e)
  • ci: release-please config corrections (b6391b9)
  • ci: trigger docker-publish on v* tag push instead of GitHub Release event (c8047c2)
  • ci: update lock files after adding ESLint deps and fixing high CVEs (3cf9f02)
  • ci: use double-quoted string for if condition to fix YAML parse error (f5c5eda)
  • ci: YAML syntax error and sync-docs git directory failure (dfa93c0)
  • ci: YAML syntax error in if condition and safe.directory for sync-docs (dc79683)
  • csp: allow external images in App Store and suppress console warnings (#138) (c5217cd)
  • dashboard cards and stacks list do not update on remote node switch (497a48c)
  • dashboard: correct stale Stats reset with inactive field (0d5dc57)
  • dashboard: surface server error messages in create-stack flow (9367abf)
  • db: recreate stack_update_status table with composite primary key (#356) (4fe4ac5)
  • Distributed API Auth (45a6420)
  • Distributed API auth hardening: Bearer tokens and URL normalization (5932bce)
  • Distributed API Proxy & Auth Refinement (9e6f721)
  • Distributed API proxy memory leak, node switcher refresh, and copy button (fddd855)
  • Distributed API UI & Metrics Polish (ebec4a5)
  • Distributed API UI & metrics polish + DEP0060 suppression (eb0c026)
  • docker: add entrypoint for volume permission handling (593a709)
  • docker: entrypoint for volume permission handling (c743f6c)
  • docker: fix xx cross-compilation sysroot for native modules (#80) (381701e)
  • docker: fix xx cross-compilation sysroot for node-pty and C++ modules (518b0af)
  • docker: install Docker CLI v29.3.1 from static binaries to resolve CVEs (#268) (f9b86e6)
  • docker: repair broken entrypoint from bad merge conflict resolution (987fc3d)
  • docker: replace QEMU npm execution with tonistiigi/xx cross-compilation (#78) (1e0014e)
  • docker: upgrade Compose v2.40.3 → v5.1.1 to remediate dependency CVEs (#283) (36ebd5a)
  • docker: use native g++ for same-platform builds, xx-clang only for cross (f23d8c6)
  • e2e: fill api_token in nodes tests so submit button is enabled (707a5e8)
  • e2e: fix stacks timeout and nodes skip in CI (14c24c8)
  • e2e: fully rewrite nodes tests to handle Radix UI Select and remote type flow (12bbe51)
  • e2e: get all E2E tests passing and fix AlertDialog crash on delete (f7471a1)
  • e2e: use #node-name locator instead of getByLabel in nodes tests (e01c0d6)
  • e2e: use button role for Resources nav item in screenshots spec (b0e2b2d)
  • e2e: wait for sidebar stacks to finish loading before assertions (#149) (9ba9a3a)
  • editor: bundle Monaco locally to fix stuck Loading state (0eaa45b)
  • editor: bundle Monaco locally to fix stuck Loading state and CSP block (79fde6e)
  • editor: ESLint unused params fix (dd5b698)
  • editor: Monaco CSP fix + release pipeline fixes (36a9bf3)
  • editor: Monaco CSP fix + release pipeline fixes: v0.2.1 (36a9bf3)
  • editor: remove unused params from getWorker to satisfy ESLint (34172a9)
  • env: resolve 404 when loading env files and CSP inline script violation (#134) (1e6367a)
  • error-handling: surface silent errors across the codebase (#326) (10597d2)
  • fix dashboard out of memory crash on remote nodes (e027a94)
  • fix dashboard out of memory crashing from massive historical metrics payloads (4e9777d)
  • fleet: navigate to editor instead of dashboard on "Open in Editor" click (#289) (71ce6b3)
  • fleet: resolve getSenchoVersion crash in Docker containers (#391) (d437a19)
  • fleet: resolve remote node capability detection failures (#388) (dee7c66)
  • frontend: remove duplicate ScrollArea tag causing build failure (d38d48f)
  • frontend: sync NodeContext with localStorage on initial load (eb58f30)
  • gate SSO and Audit behind Admiral license tier (#213) (8d48b0a)
  • Global Logs Polish (f501fa4)
  • Global Logs UX Polish (7336ea8)
  • harden docker api validation, handle sftp errors, and fix node manager ui (4bd80e2)
  • harden telemetry parsing and null node fallbacks (f1f8e34)
  • implement atomic deployment rollbacks and custom scrollbar UI (6940825)
  • implement smart auto-scroll and definitive stack filtering in global logs (b267408)
  • implement two-stage teardown for reliable atomic rollbacks (c4805a1)
  • license: default 14-day trial to Skipper instead of Admiral (#216) (f99abe9)
  • licensing: backward-compatible tier/variant enforcement and self-healing variant detection (#385) (9e0c9d3)
  • licensing: rename variant values to skipper/admiral and store resolved type (#379) (797623e)
  • licensing: resolve Admiral variant detection and lifetime license handling (#376) (f841c40)
  • licensing: resolve variant from product_name when variant_name lacks tier info (#382) (b08f698)
  • lint: resolve all backend ESLint errors to pass CI lint step (e876a91)
  • lint: resolve all ESLint errors to pass CI lint step (c8a54a9)
  • logs: cap DOM rendering to 300 rows to prevent browser OOM crash (ec3a249)
  • logs: cap DOM rendering to 300 rows to prevent OOM crash (0db6c94)
  • logs: use monotonic _id key to prevent O(n) DOM mutations on scroll (753b0c3)
  • Memory Leak & Reload Loop (ac5032d)
  • memory leak in SSE log accumulation and infinite reload loop in NodeContext (fd07374)
  • merge: resolve CHANGELOG conflict with develop (9f0257e)
  • Observability Polish & Normalization (da5a74a)
  • Observability UI & TTY Parsing (1f544c6)
  • proxy forwards browser cookie to remote causing 401; fix node context self-heal loop (7b2f28f)
  • proxy: prevent remote 401 from triggering local session logout (278aa22)
  • proxy: re-stream express.json()-consumed body to remote nodes for POST/PUT/PATCH (a703707)
  • proxy: skip express.json() for remote proxy requests to fix body forwarding (ed69543)
  • refine log level parsing and implement bottom auto-scroll (9af0f85)
  • remediate Dependabot and Docker Scout security vulnerabilities (#265) (59fd528)
  • remediate observability dashboard and global logs parsing (29b1015)
  • Remote Nodes Hardening (7f23c88)
  • Remote Nodes Remediation: Port Routing, SSH Credentials & compose_dir (1fb0494)
  • Remote Nodes Telemetry Fixes (792e977)
  • remote proxy strips /api prefix: remote Sencho returns SPA HTML instead of JSON (efd3d7b)
  • remote proxy strips /api prefix causing remote Sencho to return SPA HTML (a26c255)
  • remote: harden WS stream lifecycle, auth precedence, and proxy error handling (1831411)
  • remote: repair stats, bash exec, and Open App for remote nodes (dbf8ec8)
  • remote: strip cookie & nodeId from WS/HTTP proxy to remote nodes (f115a48)
  • remote: strip cookie header and nodeId from WS/HTTP proxy to remote nodes (774190c)
  • remove unused React import in TemplatesView (9c66a4f)
  • replace naive log level detection with robust 3-tier regex class… (c324d98)
  • replace naive log level detection with robust 3-tier regex classification engine (b7e6b5a)
  • resolve a SQL syntax error in the database layer and add concrete file adapter implementations (69e86a0)
  • scheduled-ops: audit log text, run attribution, prune targets, and pagination (#234) (330eec4)
  • security: disable COOP header and Vite module-preload polyfill (c36ee93)
  • security: enforce stack name validation on all routes (#314) (1ab04be)
  • security: explicitly disable upgrade-insecure-requests via Helmet 8 API (50df5b3)
  • security: harden encryption key permissions, increase password minimum, remove sensitive logs (#323) (f317a83)
  • security: pre-launch security hardening audit & remediation (#320) (2d6b4c2)
  • security: prevent path traversal via env_file resolution (#311) (dc545dd)
  • security: remove CSP upgrade-insecure-requests and HSTS for HTTP deployments (25012a0)
  • security: remove CSP upgrade-insecure-requests and HSTS over HTTP (cf2946c)
  • separate Docker API port from SSH port, add SSH credential UI, fix compose_dir routing (26b8f62)
  • settings: prevent X button overlap and add tooltip to Always Local badge (ed0817b)
  • skip remote nodes in the local monitoring loop (880919f)
  • skip remote nodes in the local monitoring loop to prevent direct Docker access errors (b48cf62)
  • stacks: avoid resource busy error in Docker fallback deletion (#271) (10d1636)
  • stacks: resolve permission denied error on stack deletion (#261) (116f15d)
  • stats: classify managed containers by working_dir instead of project name (16e978b)
  • stats: throttle container stat WebSocket updates via ref buffer (74964b0)
  • stop infinite page reload caused by premature NodeProvider mount and 401 hard-redirect (67c7078)
  • strip browser cookie from proxy requests; fix node context self-heal loop (39e63be)
  • trigger docs sync on develop instead of main (7d1b996)
  • ts: remove unused motion import from alert-dialog (0dd72b3)
  • ts: use type-only import for Node to satisfy verbatimModuleSyntax (94d6c8f)
  • tty parsing, timezone mapping, and floating action bar for global logs (8203dd6)
  • ui: resolve 9 animated design system bugs including Monaco tab height accumulation (22e6462)
  • ui: settings modal sidebar nav clipped on smaller viewports (#280) (9e14ce9)
  • update lsio template registry url to valid endpoint (e45915f)
  • ws: fix remote node console: delegate console session tokens (6c518ce)
  • ws: fix remote node console by delegating console session tokens (30fe77c)

Security

  • harden terminal WebSocket endpoints against three attack vectors (2e0f3e2)
  • pre-release hardening, automated testing, and production readiness (ce50db0)

0.38.6 (2026-04-06)

Fixed

  • fleet: resolve getSenchoVersion crash in Docker containers (#391) (d437a19)

0.38.5 (2026-04-06)

Fixed

  • fleet: resolve remote node capability detection failures (#388) (dee7c66)

0.38.4 (2026-04-06)

Fixed

  • licensing: backward-compatible tier/variant enforcement and self-healing variant detection (#385) (9e0c9d3)

0.38.3 (2026-04-05)

Fixed

  • licensing: resolve variant from product_name when variant_name lacks tier info (#382) (b08f698)

0.38.2 (2026-04-05)

Fixed

  • licensing: rename variant values to skipper/admiral and store resolved type (#379) (797623e)

0.38.1 (2026-04-05)

Fixed

  • licensing: resolve Admiral variant detection and lifetime license handling (#376) (f841c40)

0.38.0 (2026-04-04)

Added

  • dashboard: redesign as DevOps command center (#371) (2ee959e)

0.37.0 (2026-04-04)

Added

  • stacks: state-aware sidebar context menu and Open App action (#368) (55d3b8c)

0.36.0 (2026-04-04)

Added

  • UI polish sprint: 7 items + logs toolbar redesign (#365) (f9ebd1d)

0.35.0 (2026-04-03)

Added

  • stacks: per-stack action tracking, optimistic status, and bulk status endpoint (#362) (dfd4d28)

0.34.0 (2026-04-03)

Added

  • license: distributed license enforcement across multi-node setups (#359) (6c26ae3)

0.33.1 (2026-04-03)

Fixed

  • db: recreate stack_update_status table with composite primary key (#356) (4fe4ac5)

0.33.0 (2026-04-03)

Added

  • fleet: add remote node update management (#353) (87b5908)

0.32.0 (2026-04-03)

Added

  • nodes: add capability-based node compatibility negotiation (#350) (ee75811)

0.31.0 (2026-04-03)

Added

  • notifications: add shared notification routing rules (Admiral tier) (#347) (1b573f5)

0.30.0 (2026-04-03)

Added

  • nodes: add per-node scheduling and update visibility (#344) (efbd20f)

0.29.0 (2026-04-02)

Added

  • labels: add stack labels for organizing, filtering, and bulk actions (#341) (28e7be6)

0.28.0 (2026-04-02)

Added

  • resources: add network management with create, inspect, and topology (#338) (24299a0)

0.27.0 (2026-04-02)

Added

  • resources: add network management with create, inspect, and topology visualization (#335) (4488637)

0.26.0 (2026-04-02)

Added

  • stack-management: add scan stacks folder button (#332) (6f74153)

0.25.3 (2026-04-02)

Fixed

  • error-handling: surface silent errors across the codebase (#326) (10597d2)

0.25.2 (2026-04-02)

Fixed

  • security: harden encryption key permissions, increase password minimum, remove sensitive logs (#323) (f317a83)

0.25.1 (2026-04-02)

Fixed

  • security: pre-launch security hardening audit & remediation (#320) (2d6b4c2)

0.25.0 (2026-04-02)

Added

  • api: add global rate limiter for all API endpoints (#317) (b28ebfa)

0.24.2 (2026-04-01)

Fixed

  • security: enforce stack name validation on all routes (#314) (1ab04be)

0.24.1 (2026-04-01)

Fixed

  • security: prevent path traversal via env_file resolution (#311) (dc545dd)

0.24.0 (2026-04-01)

Added

  • auto-update: add auto-update policies and fix image update detection (#297) (28c7a8f)

0.23.0 (2026-03-31)

Added

  • multi-node: warn when configuring remote node with plain HTTP URL (#292) (e587256)

0.22.1 (2026-03-31)

Fixed

  • fleet: navigate to editor instead of dashboard on "Open in Editor" click (#289) (71ce6b3)

0.22.0 (2026-03-31)

Added

  • scheduled-ops: add failure notifications, granular targeting, and history export (#286) (eccdd1b)

0.21.2 (2026-03-30)

Fixed

  • docker: upgrade Compose v2.40.3 → v5.1.1 to remediate dependency CVEs (#283) (36ebd5a)

0.21.1 (2026-03-30)

Fixed

  • ui: settings modal sidebar nav clipped on smaller viewports (#280) (9e14ce9)

0.21.0 (2026-03-30)

Added

  • host-console: gate Host Console behind Admiral tier (#277) (b5d3f49)

0.20.0 (2026-03-30)

Added

  • ui: glassmorphism redesign with settings decomposition (#274) (7637091)

0.19.4 (2026-03-30)

Fixed

  • stacks: avoid resource busy error in Docker fallback deletion (#271) (10d1636)

0.19.3 (2026-03-30)

Fixed

  • docker: install Docker CLI v29.3.1 from static binaries to resolve CVEs (#268) (f9b86e6)

0.19.2 (2026-03-30)

Fixed

  • remediate Dependabot and Docker Scout security vulnerabilities (#265) (59fd528)

0.19.1 (2026-03-30)

Fixed

  • stacks: resolve permission denied error on stack deletion (#261) (116f15d)

0.19.0 (2026-03-30)

Added

  • audit-log: add configurable retention, export, Auditor role, and enhanced filtering (#258) (d586ce3)

0.18.0 (2026-03-29)

Added

  • rbac: add Deployer & Node Admin roles with scoped permissions (Admiral) (#253) (8380fba)

0.17.0 (2026-03-29)

Added

  • registries: add private registry credential management (Admiral) (#240) (244c83a)

0.16.0 (2026-03-29)

Added

  • ui: redesign top bar with three-zone navigation layout (#237) (b7e7ee8)

0.15.1 (2026-03-29)

Fixed

  • scheduled-ops: audit log text, run attribution, prune targets, and pagination (#234) (330eec4)

0.15.0 (2026-03-29)

Added

  • scheduled-ops: add scheduled operations for Admiral users (#231) (31e1795)

0.14.2 (2026-03-29)

Fixed

  • api-tokens: harden scope enforcement and block sensitive endpoints (#228) (5b607de)

0.14.1 (2026-03-28)

Fixed

  • api-tokens: harden scope enforcement and add expiration support (#224) (954994c)

0.14.0 (2026-03-28)

Added

  • api-tokens: add scoped API tokens for CI/CD automation (Admiral) (#220) (8d8118c)

0.13.2 (2026-03-28)

Fixed

  • license: default 14-day trial to Skipper instead of Admiral (#216) (f99abe9)

0.13.1 (2026-03-28)

Fixed

  • gate SSO and Audit behind Admiral license tier (#213) (8d48b0a)

0.13.0 (2026-03-28)

Added

  • SSO & LDAP authentication for Admiral (#209) (bd4008f)

0.12.0 (2026-03-28)

Added

  • audit logging, secrets at rest, and legacy cleanup (#205) (1799030)

0.11.0 (2026-03-28)

Added

  • settings: replace static license CTA with dynamic upgrade cards (#201) (d3828e8)

0.10.0 (2026-03-27)

Added

  • stack context menu, tier icons, centered logo & support (#194) (dda1671)

0.9.0 (2026-03-27)

Added

  • RBAC, atomic deployments, fleet backups, and licensing (Skipper and Admiral) (#185) (32a7d53)

0.8.0 (2026-03-26)

Added

  • RBAC, atomic deployments, and fleet-wide backups (Skipper and Admiral) (#181) (db73d76)

0.7.0 (2026-03-26)

Added

  • webhooks: add CI/CD webhook integration for triggering stack actions (Skipper and Admiral) (#177) (4fc3633)

0.6.0 (2026-03-26)

Added

  • fleet: add Pro fleet management features and container drill-down (#174) (0630f57)

0.5.0 (2026-03-25)

Added

  • auth: redesign Login and Setup pages with split-panel branding layout (#168) (f80190d)

0.4.0 (2026-03-25)

Added

  • auth: redesign Login and Setup pages with split-panel branding layout (#153) (e0319b5)

0.3.1 (2026-03-25)

Fixed

  • e2e: wait for sidebar stacks to finish loading before assertions (#149) (9ba9a3a)

0.3.0 (2026-03-25)

Added

  • add Community/Pro licensing, fleet view, and UI reorganization (#145) (4f26f22)

0.2.5 (2026-03-25)

Fixed

  • charts: suppress Recharts dimension warnings on initial render (#141) (c6633b0)

0.2.4 (2026-03-25)

Fixed

  • csp: allow external images in App Store and suppress console warnings (#138) (c5217cd)

0.2.3 (2026-03-25)

Fixed

  • env: resolve 404 when loading env files and CSP inline script violation (#134) (1e6367a)

0.2.2 (2026-03-25)

Fixed

  • editor: ESLint unused params fix (dd5b698)
  • editor: remove unused params from getWorker to satisfy ESLint (34172a9)

0.2.1 (2026-03-24)

Fixed

  • editor: bundle Monaco locally to fix stuck Loading state (0eaa45b)
  • editor: bundle Monaco locally to fix stuck Loading state and CSP block (79fde6e)
  • editor: Monaco CSP fix + release pipeline fixes (36a9bf3)
  • editor: Monaco CSP fix + release pipeline fixes - v0.2.1 (36a9bf3)

0.2.0 (2026-03-24)

Added

  • ci: add release-please automated versioning workflow (c2d5d37)
  • ci: automated versioning with release-please (c991b81)

Fixed

  • ci: correct release-please changelog section names and tag format (ea57cbe)
  • ci: release-please config corrections (b6391b9)

0.1.0 - 2026-03-24

First public release of Sencho.

Security

  • Closed an authentication gap on several notification and console endpoints that were missing session checks.
  • Added strict validation for remote node URLs to block pointing a node at loopback or internal services (prevents server-side request forgery from node configuration).
  • Prevented path traversal through env_file entries in compose files: all resolved env file paths are now confined to the stack's own directory.
  • Extended stack name validation to every route so traversal-style names are rejected consistently.
  • Hardened the Host Console working-directory parameter to reject paths outside the configured compose base directory.
  • Host Console now launches shells with a sanitized environment so Sencho's own secrets (signing key, stored credentials, database URL) are not inherited by the terminal.
  • Host Console and container exec WebSockets now reject node-to-node proxy tokens, which are only valid for API forwarding.
  • Settings responses no longer expose auth credential fields, and settings writes reject any attempt to modify auth keys.
  • Added login and setup rate limiting to slow down brute-force attempts.
  • Added standard security response headers (frame, content-type, referrer, etc.).
  • CORS is now restricted to the configured frontend origin in production.

Added

Infrastructure

  • linux/arm64 images published alongside linux/amd64, so Sencho runs natively on Raspberry Pi 4/5 and ARM cloud VMs.
  • Automated Docker Hub publishing pipeline for dev and latest images.
  • Automated documentation and screenshot refresh pipeline.
  • Container health check so Docker can auto-restart an unhealthy Sencho instance.
  • Public /api/health endpoint for uptime monitoring and load balancer probes.
  • Graceful shutdown: Sencho drains in-flight requests, stops background workers, and closes its database before exiting.
  • Initial backend unit test suite and end-to-end test suite covering auth, stacks, and node management.

Multi-Node & Distributed API

  • Distributed API proxy architecture: manage remote Sencho instances over HTTP/WebSocket using a long-lived API token. This replaces the previous SSH/SFTP remote node model entirely.
  • Node-to-node authentication tokens generated from the Nodes settings tab.
  • Node management UI: add, edit, delete, and test remote nodes.
  • Top-bar context pill that always shows which node is currently active (green for local, blue pulse for remote).
  • Cross-node notifications: the notification bell aggregates alerts from every connected node in real time.
  • Host Console and container exec are now available on remote nodes via a short-lived proxied session.
  • Settings panel automatically scopes its tabs to the active node type so global-only settings are hidden when a remote node is selected.

Application Features

  • App Store powered by the LinuxServer.io template registry: browse templates with rich metadata, deploy in one click, edit ports/volumes/env vars before deploy, and auto-rollback on failure. Custom Portainer v2 registry URLs are also supported.
  • Resources Hub with Images, Volumes, and Networks tabs, Managed/External/Unused classification, a Docker disk footprint widget, and scoped prune operations (Sencho-only vs. all Docker).
  • Global Observability dashboard with historical CPU/RAM charts and a centralized tail-logs view across every container, including multi-stack filtering, search, and live SSE streaming.
  • Background image update checker that quietly polls your registries and badges stacks whose images have a newer version available.
  • Real-time WebSocket notifications replacing the old polling model: alerts arrive the moment they fire.
  • Live container logs viewer with real-time streaming.
  • Animated design system overhaul with new brand color, spring-based motion on dialogs and tooltips, reduced-motion support, and the Geist font family.
  • Theme-aware sidebar logo with dark/light variants and an Auto theme that follows the system preference.
  • Bulk settings save endpoint with atomic persistence (either every setting saves or none do).
  • Active/external container split in the dashboard Active Containers card.
  • Two-Stage Teardown on stack deletion so ghost networks are always cleaned up before the files are removed.
  • Custom environment variable injection in the deploy flow.
  • Root-level error boundary so an unexpected crash lands on a friendly screen instead of a blank page.

Fixed

Authentication & Proxy

  • Remote node auth failures no longer trigger a full logout of the local session.
  • JSON request bodies are now forwarded correctly to remote nodes (previously the body could be dropped under certain timing conditions).
  • Browser session cookies are stripped from remote-node requests so the remote instance uses the proxy Bearer token exclusively.
  • Deleted-node recovery: the frontend can now re-sync to a valid node after its active node has been removed, instead of getting stuck on an unreachable ID.
  • Fixed a backend memory leak where the remote proxy was being re-instantiated on every API call.

WebSockets & Streaming

  • Container stats streams no longer flood the UI with hundreds of updates per second; updates are now batched and flushed on a steady cadence.
  • Docker stats streams and exec sessions are now cleanly torn down when the client disconnects, so they no longer leak file descriptors.
  • Reliable reconnect strategy for notification WebSockets, with exponential backoff.
  • Terminal logs, host console, and container stats now work correctly through the remote node proxy.

UI & Frontend

  • Sencho now loads correctly over plain HTTP without the browser silently upgrading requests or complaining about security headers.
  • Monaco editor workers and WebSocket connections are no longer blocked by the default content security policy.
  • Several edge cases in the Docker socket permission detection logic now handled correctly.
  • Managed vs. external container counts are now accurate when stacks are launched from the compose base directory itself.
  • Fixed a browser out-of-memory crash in the global logs view when streaming high-volume containers.
  • Many small UI polish items: tooltip crashes, dialog animations, button spacing, menu toggles, tab height accumulation, scrollbar styling in dark mode, and more.
  • Remote-node "Open App" button now resolves the hostname from the remote node's API URL instead of assuming localhost.
  • Dashboard cards and stack lists now update immediately when switching between nodes.
  • Active node state is now hydrated from local storage on first paint so there is no visible flash of the wrong node.
  • Historical metrics polling and log buffers are now capped to avoid long-session memory creep.

Changed

  • Architecture: replaced the SSH/SFTP remote node model with the Distributed API proxy. Adding a remote node now only requires its URL and an API token, no SSH keys.
  • Docs: bootstrapped the full user-facing documentation (configuration, stack management, editor, multi-node, alerts, dashboard, resources, app store, observability, settings reference, troubleshooting, backup & restore).
  • Design system: new brand accent color, refreshed dark-mode shadows, and a consistent animation language across dialogs, tooltips, switches, and tabs.
  • Notification delivery moved from polling to real-time push.
  • Rebranded a few areas for clarity: "Templates" is now "App Store", "Ghost Containers" is now "Unmanaged Containers", and the standalone "Observability" section is now "Logs".
  • Global logs display chronologically (newest at the bottom) with smooth auto-scroll, and timestamps are shown in your local browser timezone.

Removed

  • The entire SSH/SFTP remote node adapter layer, superseded by the Distributed API proxy.