chore(main): release 0.87.0 (#1186)

Co-authored-by: sencho-quartermaster[bot] <275163604+sencho-quartermaster[bot]@users.noreply.github.com>
This commit is contained in:
sencho-quartermaster[bot]
2026-06-01 17:41:06 -04:00
committed by GitHub
parent c11a550b6a
commit 53be6a258e
4 changed files with 80 additions and 4 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
{
".": "0.86.6"
".": "0.87.0"
}
+76
View File
@@ -4,6 +4,82 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.87.0](https://github.com/Studio-Saelix/sencho/compare/v0.86.6...v0.87.0) (2026-06-01)
### Added
* **auto-heal:** restart crashed containers and harden the heal loop ([#1258](https://github.com/Studio-Saelix/sencho/issues/1258)) ([dbb7fe8](https://github.com/Studio-Saelix/sencho/commit/dbb7fe8215a2c21522f5ced1c2d2a0ea901a11ee))
* **dashboard:** surface metrics-stale indicator after sustained poll failure ([#1213](https://github.com/Studio-Saelix/sencho/issues/1213)) ([7c3ba3f](https://github.com/Studio-Saelix/sencho/commit/7c3ba3f24d9ee1cf1302c42cb6c33d659b4118e7))
* **deploy-panel:** tell Community operators deploys lack auto-rollback ([#1193](https://github.com/Studio-Saelix/sencho/issues/1193)) ([27b8954](https://github.com/Studio-Saelix/sencho/commit/27b89546766eda1aa2d6d3f10a92b168f6e32ac8))
* **fleet-sync:** gate sync-status polling on admin role ([#1271](https://github.com/Studio-Saelix/sencho/issues/1271)) ([7d7e0a6](https://github.com/Studio-Saelix/sencho/commit/7d7e0a6264f2563a3d25c497db17d85e27d93d87))
* **fleet:** show stack-label filtering in Fleet View on every tier ([#1268](https://github.com/Studio-Saelix/sencho/issues/1268)) ([d8f73f8](https://github.com/Studio-Saelix/sencho/commit/d8f73f820315d4d43a89e49882a59f425213c048))
* **labels:** harden Stack Labels (gate parity, abort, dry-run, cap) ([#1232](https://github.com/Studio-Saelix/sencho/issues/1232)) ([2a29fed](https://github.com/Studio-Saelix/sencho/commit/2a29fed11703e98f39dd239b205ae8ac69888706))
* **security:** make CVE suppressions optionally honored by deploy-block policies ([#1269](https://github.com/Studio-Saelix/sencho/issues/1269)) ([085267b](https://github.com/Studio-Saelix/sencho/commit/085267b466d76e28466ae099a3e09b46f320b424))
* **security:** per-image scroll + retention cap in scan history ([#1231](https://github.com/Studio-Saelix/sencho/issues/1231)) ([42e8d3a](https://github.com/Studio-Saelix/sencho/commit/42e8d3a78cde7f1fc411cdeb3586f6856baa16d6))
* **sidebar:** surface unreachable nodes in cross-node stack search ([#1195](https://github.com/Studio-Saelix/sencho/issues/1195)) ([5196f04](https://github.com/Studio-Saelix/sencho/commit/5196f0440e363a447d51b81892d9bcb2a94142f7))
* **stack-activity:** in-process metrics, structured diagnostic logs, docs ([#1229](https://github.com/Studio-Saelix/sencho/issues/1229)) ([80499ee](https://github.com/Studio-Saelix/sencho/commit/80499ee18da248d38d6cd4a73c10b930cf152969))
* **stack-files:** cap directory listings at 1000 + add file-tree filter ([#1208](https://github.com/Studio-Saelix/sencho/issues/1208)) ([fcf2222](https://github.com/Studio-Saelix/sencho/commit/fcf22226041e2eb6845dcf90b1a6b36ed92d57d7))
* **stack-files:** drag-and-drop upload zone ([#1207](https://github.com/Studio-Saelix/sencho/issues/1207)) ([ea002cd](https://github.com/Studio-Saelix/sencho/commit/ea002cd9a0a9950225326660944efbeb3583a455))
* **stack-files:** force-text override for misidentified binary files ([#1215](https://github.com/Studio-Saelix/sencho/issues/1215)) ([d8b6f8c](https://github.com/Studio-Saelix/sencho/commit/d8b6f8cf3bc29be7c5f1887bb1d19dc664507350))
* **stack-files:** in-process metrics and structured mutation logs ([#1216](https://github.com/Studio-Saelix/sencho/issues/1216)) ([9f2f13f](https://github.com/Studio-Saelix/sencho/commit/9f2f13f35acf267a5a156c4714148255d9b2591a))
* **stack-logs:** WebSocket reconnect with backoff and gap sentinel ([#1197](https://github.com/Studio-Saelix/sencho/issues/1197)) ([07a2e8f](https://github.com/Studio-Saelix/sencho/commit/07a2e8f0e31bfcf2494d863255e604397a2ca283))
* **stacks:** in-process per-(nodeId, action) metrics + admin endpoint ([#1196](https://github.com/Studio-Saelix/sencho/issues/1196)) ([7ec6fe0](https://github.com/Studio-Saelix/sencho/commit/7ec6fe05bb7e32921b9dd06e52a850918f4e7bbc))
* **stacks:** optimistic concurrency on compose and env file writes ([#1183](https://github.com/Studio-Saelix/sencho/issues/1183)) ([fbd13ac](https://github.com/Studio-Saelix/sencho/commit/fbd13accdaa554e08a980fb516af896fa3f84c94))
* **stacks:** server-side POST /api/stacks/bulk endpoint ([#1185](https://github.com/Studio-Saelix/sencho/issues/1185)) ([5aedc52](https://github.com/Studio-Saelix/sencho/commit/5aedc52737c155be735b663809df05d213ef7d35))
* **stacks:** structured 503 docker_unavailable envelope + disconnect tests ([#1191](https://github.com/Studio-Saelix/sencho/issues/1191)) ([009ec43](https://github.com/Studio-Saelix/sencho/commit/009ec43638455f42428424629ffb1cfe074786f1))
* **stacks:** surface post-deploy scan attempt status ([#1198](https://github.com/Studio-Saelix/sencho/issues/1198)) ([d727a55](https://github.com/Studio-Saelix/sencho/commit/d727a55a5fbbdb26c3c3103cdc0d43a0e0628e95))
### Fixed
* **app-store:** harden template deploy, registry fetch, and catalogue refresh ([#1250](https://github.com/Studio-Saelix/sencho/issues/1250)) ([96c5f05](https://github.com/Studio-Saelix/sencho/commit/96c5f05cdcb547ec0069b125135c0bd6a14baae0))
* **atomic-deploy:** harden rollback locking, restore fidelity, and tier gating ([#1247](https://github.com/Studio-Saelix/sencho/issues/1247)) ([45844b9](https://github.com/Studio-Saelix/sencho/commit/45844b92ca187d1a0d759554cfcf18effc81838e))
* **audit-log:** neutralize CSV export injection, clamp pagination, bound anomaly history ([#1259](https://github.com/Studio-Saelix/sencho/issues/1259)) ([5e66b54](https://github.com/Studio-Saelix/sencho/commit/5e66b541535f4818791123c71a57d2b7e6018398))
* **auto-heal:** gate panel write controls on admin role ([#1245](https://github.com/Studio-Saelix/sencho/issues/1245)) ([b034de5](https://github.com/Studio-Saelix/sencho/commit/b034de58f32993435ddc0a0aaa44242a9805e8b9))
* **auto-update:** paid-gate execute route and harden image-check watchdog ([#1257](https://github.com/Studio-Saelix/sencho/issues/1257)) ([ca34691](https://github.com/Studio-Saelix/sencho/commit/ca346916c1683279f18526358e953aa87bc1879c))
* **blueprints:** gate Federation pin control on admin role ([#1252](https://github.com/Studio-Saelix/sencho/issues/1252)) ([d41282e](https://github.com/Studio-Saelix/sencho/commit/d41282e3520995ec54d8f51eff9b97d791ab03c7))
* **dashboard:** debounce state-invalidate refetches ([#1209](https://github.com/Studio-Saelix/sencho/issues/1209)) ([03a5826](https://github.com/Studio-Saelix/sencho/commit/03a5826f7e31b3fbb53c1e4ca251935da2111d62))
* **dashboard:** decouple FleetHeartbeat refresh from the active local node ([#1210](https://github.com/Studio-Saelix/sencho/issues/1210)) ([0db0d29](https://github.com/Studio-Saelix/sencho/commit/0db0d29f3b31c9e3a1ca931b8a9822601e62193e))
* **dashboard:** slow HealthStatusBar sync-label tick to 5s ([#1211](https://github.com/Studio-Saelix/sencho/issues/1211)) ([6d995b9](https://github.com/Studio-Saelix/sencho/commit/6d995b9aafbc481678a6fbd9a79e179c7d9d763b))
* **deploy-enforcement:** surface scan-policy blocks on update and sidebar deploys ([#1248](https://github.com/Studio-Saelix/sencho/issues/1248)) ([b33a0e8](https://github.com/Studio-Saelix/sencho/commit/b33a0e842243fcb2a618e1fe544c6e7639b5fb96))
* **deploy-progress:** decouple deploys from the live progress stream ([#1246](https://github.com/Studio-Saelix/sencho/issues/1246)) ([5dea040](https://github.com/Studio-Saelix/sencho/commit/5dea040ec84ff38aa09f0fbb0b9b38ebc3bd40ad))
* **editor:** harden save-deploy, node-switch, delete, and stats reactivity ([#1188](https://github.com/Studio-Saelix/sencho/issues/1188)) ([7c84969](https://github.com/Studio-Saelix/sencho/commit/7c84969b310b7c58c94ddab04854c47e63b607cf))
* **fleet-actions:** stop-by-label works on Community remote nodes ([#1270](https://github.com/Studio-Saelix/sencho/issues/1270)) ([7e0cffa](https://github.com/Studio-Saelix/sencho/commit/7e0cffa3762fa1247d69aac78ca450ab0e753aa5))
* **fleet-snapshots:** gate reads on admin role and encrypt content at rest ([#1273](https://github.com/Studio-Saelix/sencho/issues/1273)) ([c11a550](https://github.com/Studio-Saelix/sencho/commit/c11a550b6a6724889d7e07fe817b6591c27250d6))
* **fleet:** gate node update actions to admins and harden update tracking ([#1272](https://github.com/Studio-Saelix/sencho/issues/1272)) ([0953025](https://github.com/Studio-Saelix/sencho/commit/09530250364de607e059c27b84aae1ea12d2c58f))
* **git-sources:** harden webhook delivery, transport errors, and clone limits ([#1249](https://github.com/Studio-Saelix/sencho/issues/1249)) ([2844f60](https://github.com/Studio-Saelix/sencho/commit/2844f606cd7ac0543a398ee44d55b1caacfeef7b))
* **global-search:** close the command palette on Escape deterministically ([#1256](https://github.com/Studio-Saelix/sencho/issues/1256)) ([a5bfd48](https://github.com/Studio-Saelix/sencho/commit/a5bfd480056e93f275e130cbdec4dbfb383df440))
* **global-search:** surface unreachable nodes and harden the command palette ([#1253](https://github.com/Studio-Saelix/sencho/issues/1253)) ([98049e3](https://github.com/Studio-Saelix/sencho/commit/98049e3b1c89c06ae1ad8e6480d50f0f474d1ca3))
* **host-console:** audit session lifecycle and harden path, resize, and route gating ([#1263](https://github.com/Studio-Saelix/sencho/issues/1263)) ([d4fa4a4](https://github.com/Studio-Saelix/sencho/commit/d4fa4a496580aca3be1268c3490f34bfef93104f))
* **mesh:** re-evaluate data plane every 10s and add opt-in auto-recreate ([#1184](https://github.com/Studio-Saelix/sencho/issues/1184)) ([aa3d99a](https://github.com/Studio-Saelix/sencho/commit/aa3d99a594bbef3fe146fb31eb85bb97e378e7c3))
* **mfa:** enforce single-use backup codes under concurrent verification ([#1262](https://github.com/Studio-Saelix/sencho/issues/1262)) ([7e65a2a](https://github.com/Studio-Saelix/sencho/commit/7e65a2ae19a9c1e95d3033695324cbd405eb4568))
* **nodes:** close capability-gating gaps in node compatibility ([#1261](https://github.com/Studio-Saelix/sencho/issues/1261)) ([d03d97d](https://github.com/Studio-Saelix/sencho/commit/d03d97d964c0f60b4c425877ddda3886d78ac05a))
* **notifications:** harden alert dispatch crash-safety and redact webhook secrets in logs ([#1255](https://github.com/Studio-Saelix/sencho/issues/1255)) ([7d4e616](https://github.com/Studio-Saelix/sencho/commit/7d4e61625f64bd33b2a7dba316b76e4d5071cd47))
* **notifications:** prevent self-container stack routing ([#1242](https://github.com/Studio-Saelix/sencho/issues/1242)) ([265fece](https://github.com/Studio-Saelix/sencho/commit/265fece988804bf2b983080dd45331963df5981f))
* **observability:** gate global logs to admins, scope to managed containers, harden SSE ([#1254](https://github.com/Studio-Saelix/sencho/issues/1254)) ([69edb0d](https://github.com/Studio-Saelix/sencho/commit/69edb0dcbb68100e42a9990bf70e3fcee8fb0dc8))
* **rbac:** enforce admin seat cap on promotion and harden last-admin and audit paths ([#1266](https://github.com/Studio-Saelix/sencho/issues/1266)) ([b61388c](https://github.com/Studio-Saelix/sencho/commit/b61388c675b82eaefd44943fed5b64774cb1839f))
* **registries:** keep registry endpoints local to each instance ([#1267](https://github.com/Studio-Saelix/sencho/issues/1267)) ([18762fa](https://github.com/Studio-Saelix/sencho/commit/18762fa74b7ce2d1516ad87c1565cbc9f177328f))
* **resources:** harden Resources Hub data race, prune errors, and scan lifecycle ([#1251](https://github.com/Studio-Saelix/sencho/issues/1251)) ([eed7e04](https://github.com/Studio-Saelix/sencho/commit/eed7e04e7133c4e11cc4d3db70c0c6f4fdc16223))
* **scheduled-ops:** run stack lifecycle schedules on remote nodes and harden run visibility ([#1260](https://github.com/Studio-Saelix/sencho/issues/1260)) ([6fc7f20](https://github.com/Studio-Saelix/sencho/commit/6fc7f200a61fbde175a43f3f9350ae6ebee6de2d))
* **security:** gate admin-only scan affordances on isAdmin ([#1230](https://github.com/Studio-Saelix/sencho/issues/1230)) ([117f590](https://github.com/Studio-Saelix/sencho/commit/117f590332f1ed53dde4399f479b0484b5d9e3c5))
* **sidebar:** cancel pending debounce emit on external value reset ([#1244](https://github.com/Studio-Saelix/sencho/issues/1244)) ([0a8e6a7](https://github.com/Studio-Saelix/sencho/commit/0a8e6a79ae01261fa15c09f99da7db539cca7559))
* **sidebar:** require admin role for Schedule task and debounce search input ([#1243](https://github.com/Studio-Saelix/sencho/issues/1243)) ([9791818](https://github.com/Studio-Saelix/sencho/commit/979181875dea9e12d1de3f54e69f5a5001aff17b))
* **sso:** surface config load, test, and removal errors in the SSO settings UI ([#1265](https://github.com/Studio-Saelix/sencho/issues/1265)) ([4248ac0](https://github.com/Studio-Saelix/sencho/commit/4248ac0e7235cb7926ebda07d8d57d888f0e73d3))
* **stack-activity:** per-stack history integrity, attribution, sanitization ([#1228](https://github.com/Studio-Saelix/sencho/issues/1228)) ([2d56ea9](https://github.com/Studio-Saelix/sencho/commit/2d56ea958acd36b4b910e481e518bc841edeb170))
* **stack-files:** atomic write via tmp+rename with optional exclusive mode ([#1205](https://github.com/Studio-Saelix/sencho/issues/1205)) ([668eda6](https://github.com/Studio-Saelix/sencho/commit/668eda6cc87ad17330d40b70c9a0eea734817010))
* **stack-files:** avoid false failed download metrics ([#1236](https://github.com/Studio-Saelix/sencho/issues/1236)) ([92355d5](https://github.com/Studio-Saelix/sencho/commit/92355d51a1045eaf6d1fec3a0995bc0552699a99))
* **stack-files:** confirm before overwriting an existing upload target ([#1204](https://github.com/Studio-Saelix/sencho/issues/1204)) ([c8b095b](https://github.com/Studio-Saelix/sencho/commit/c8b095b88791424fac6c6955d7d3853ef59eb3e3))
* **stack-files:** guard download stream destroy against the supertest in-process close race ([#1227](https://github.com/Studio-Saelix/sencho/issues/1227)) ([a4a8abb](https://github.com/Studio-Saelix/sencho/commit/a4a8abb5f803d49aaf401bcce90c2286ccdfd686))
* **stack-files:** optimistic concurrency on file-tab writes via mtime ETag ([#1206](https://github.com/Studio-Saelix/sencho/issues/1206)) ([4964320](https://github.com/Studio-Saelix/sencho/commit/4964320f505c9d33c0976f8e77c8541a855b2f3b))
* **stack-files:** prompt before discarding unsaved edits on file switch ([#1203](https://github.com/Studio-Saelix/sencho/issues/1203)) ([3e56696](https://github.com/Studio-Saelix/sencho/commit/3e56696c912bdbf393276ed144bc8fc17244c6e7))
* **stack-files:** symlink-aware delete and chmod ([#1214](https://github.com/Studio-Saelix/sencho/issues/1214)) ([c2357ec](https://github.com/Studio-Saelix/sencho/commit/c2357ec5347960a01aec0af4a95c024ad680570e))
* **stack-files:** track download metric off the file stream, not the response ([#1220](https://github.com/Studio-Saelix/sencho/issues/1220)) ([f86042b](https://github.com/Studio-Saelix/sencho/commit/f86042b2ad594531d66e4d2c8669c2779da2b650))
* **stacks:** default Empty template ships ports block commented out ([#1189](https://github.com/Studio-Saelix/sencho/issues/1189)) ([8ba8875](https://github.com/Studio-Saelix/sencho/commit/8ba88755b1e85aa60a8b08c03da4a0cfa2801d30))
* **stacks:** refuse file-explorer delete/rename/chmod on protected stack files ([#1202](https://github.com/Studio-Saelix/sencho/issues/1202)) ([37b1237](https://github.com/Studio-Saelix/sencho/commit/37b12379c1b12aa71aee2c834086d41b0ff1f583))
* **stacks:** require stack:read on file explorer GET routes ([#1200](https://github.com/Studio-Saelix/sencho/issues/1200)) ([4c28b37](https://github.com/Studio-Saelix/sencho/commit/4c28b37a59daa67e388d07948319a0f02921b305))
* **stacks:** serialize concurrent lifecycle operations per stack ([#1182](https://github.com/Studio-Saelix/sencho/issues/1182)) ([60ecd57](https://github.com/Studio-Saelix/sencho/commit/60ecd574b3488aff53c0c417d1cd8087251b763a))
## [0.86.6](https://github.com/Studio-Saelix/sencho/compare/v0.86.5...v0.86.6) (2026-05-23)
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "sencho",
"version": "0.86.6",
"version": "0.87.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sencho",
"version": "0.86.6",
"version": "0.87.0",
"license": "SEE LICENSE IN LICENSE",
"devDependencies": {
"@commitlint/cli": "^21.0.1",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "sencho",
"version": "0.86.6",
"version": "0.87.0",
"description": "Self-hosted Docker Compose management dashboard with fleet control, atomic deployments, and self-healing infrastructure.",
"main": "index.js",
"scripts": {