gsxdsm
74dacd0758
FN-9188: respect externally managed updates
Managed deployments can now suppress self-update offers while unsupported installs receive actionable guidance.
- Add an install-level environment policy for externally managed updates across CLI, server, and dashboard surfaces.
- Detect missing npm shell failures and replace raw stderr with deployment-aware remediation.
- Document managed-update behavior and add regression coverage for checks, installs, automation, and UI actions.
Files changed:
.changeset/fn-9188-managed-updates.md | 7 +++
docs/architecture.md | 6 +--
docs/cli-reference.md | 2 +-
docs/dashboard-guide.md | 2 +-
docs/settings-reference.md | 4 +-
packages/cli/src/__tests__/update-cache.test.ts | 11 ++++-
.../update-command-externally-managed.test.ts | 39 +++++++++++++++
packages/cli/src/commands/update.ts | 42 +++++++++++-----
packages/cli/src/update-cache.ts | 3 +-
.../core/src/__tests__/update-management.test.ts | 15 ++++++
packages/core/src/config/update-management.ts | 21 ++++++++
packages/core/src/index.gate.ts | 5 ++
packages/core/src/index.ts | 5 ++
packages/dashboard/app/api/client/health.ts | 3 ++
.../dashboard/app/components/SettingsModal.tsx | 4 ++
.../__tests__/SettingsModal.general.test.tsx | 20 ++++++++
.../__tests__/UpdateAvailableBanner.test.tsx | 26 ++++++++++
.../components/__tests__/settings-mobile.test.tsx | 24 +++++++++-
.../__tests__/SystemControlsArea.test.tsx | 20 ++++++++
.../command-center/areas/SystemControlsArea.tsx | 6 +++
.../app/hooks/__tests__/useUpdateCheck.test.ts | 1 +
packages/dashboard/app/hooks/useUpdateCheck.ts | 3 +-
.../dashboard/src/__tests__/auto-update.test.ts | 10 ++++
.../dashboard/src/__tests__/update-check.test.ts | 56 ++++++++++++++++++++++
packages/dashboard/src/auto-update.ts | 9 +++-
.../__tests__/register-update-check-routes.test.ts | 24 +++++++++-
.../src/routes/register-update-check-routes.ts | 47 +++++++++++++++++-
packages/dashboard/src/update-check.ts | 50 ++++++++++++++++---
28 files changed, 433 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-9188
Fusion-Task-Lineage: 60b114b9-8bf7-434f-9d26-0c954aea45ba
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-21 10:18:45 -07:00
..
2026-07-12 23:29:06 -07:00
2026-07-23 22:35:12 -07:00
2026-08-03 00:20:53 -07:00
2026-06-02 21:54:14 -07:00
2026-07-21 10:30:19 -07:00
2026-07-25 00:54:46 -07:00
2026-07-05 11:31:45 -07:00
2026-05-27 21:31:13 -07:00
2026-07-16 09:14:15 -07:00
2026-07-16 09:14:15 -07:00
2026-08-11 04:20:33 -07:00
2026-07-30 08:28:32 -07:00
2026-08-11 04:20:33 -07:00
2026-07-25 00:54:46 -07:00
2026-07-25 00:54:46 -07:00
2026-08-11 01:51:22 -07:00
2026-07-30 12:25:00 -07:00
2026-07-31 08:13:57 -07:00
2026-07-13 19:07:58 -07:00
2026-08-19 21:14:31 -07:00
2026-05-04 22:17:10 -07:00
2026-06-29 19:46:23 -07:00
2026-07-11 18:06:45 -07:00
2026-07-14 23:18:55 -07:00
2026-07-16 16:01:29 -07:00
2026-07-16 09:14:15 -07:00
2026-08-07 01:36:34 -07:00
2026-08-11 10:57:36 -10:00
2026-05-19 06:51:26 -07:00
2026-08-10 20:32:26 -07:00
2026-07-17 11:18:50 -07:00
2026-07-17 11:18:50 -07:00
2026-07-13 19:07:58 -07:00
2026-07-16 09:24:56 -07:00
2026-08-12 15:51:22 -07:00
2026-07-18 07:48:45 -07:00
2026-07-31 01:06:09 -07:00
2026-08-11 01:45:08 -07:00
2026-08-15 00:35:12 -07:00
2026-07-29 00:04:28 -07:00
2026-07-16 14:01:59 -07:00
2026-08-10 20:32:26 -07:00
2026-07-30 04:10:06 -07:00
2026-08-19 19:46:35 -07:00
2026-08-19 21:01:56 -07:00
2026-06-16 15:08:24 -07:00
2026-07-13 19:07:58 -07:00
2026-05-29 08:25:38 -07:00
2026-05-28 19:44:15 -07:00
2026-08-10 06:15:17 -07:00
2026-08-10 06:15:17 -07:00
2026-07-17 11:43:46 -07:00
2026-08-12 14:07:30 -07:00
2026-08-07 17:33:56 -07:00
2026-07-19 21:40:57 -07:00
2026-06-13 09:14:02 -07:00
2026-06-26 10:18:04 -07:00
2026-07-12 21:27:38 -07:00
2026-08-11 01:51:22 -07:00
2026-07-23 22:35:12 -07:00
2026-08-15 12:04:30 -07:00
2026-08-03 12:16:32 -07:00
2026-07-10 23:21:37 -07:00
2026-07-10 23:21:37 -07:00
2026-07-30 11:25:46 -07:00
2026-07-30 22:46:19 -07:00
2026-07-14 23:18:55 -07:00
2026-07-16 06:20:20 -07:00
2026-07-14 23:18:55 -07:00
2026-07-15 11:25:55 -07:00
2026-06-05 13:58:34 -07:00
2026-07-30 21:50:37 -07:00
2026-05-06 09:43:51 -07:00
2026-08-15 17:16:05 -07:00
2026-07-15 14:01:08 -07:00
2026-08-19 20:17:42 -07:00
2026-07-16 16:01:29 -07:00
2026-07-30 21:50:37 -07:00
2026-08-21 04:32:53 +00:00
2026-07-31 00:03:02 -07:00
2026-07-31 13:34:03 -07:00
2026-07-23 20:19:18 -07:00
2026-07-30 06:51:25 -07:00
2026-07-16 08:58:13 -07:00
2026-07-16 09:14:15 -07:00
2026-08-21 10:18:45 -07:00
2026-08-21 10:18:45 -07:00
2026-08-10 22:12:15 -07:00
2026-07-18 02:15:09 -07:00
2026-07-23 22:35:12 -07:00