@chanlerdev/scorel 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/CHANGELOG.md CHANGED
@@ -2,6 +2,47 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.0.5 - 2026-06-19
6
+
7
+ ### Highlights
8
+
9
+ - New CLI commands `scorel version`, `scorel update`, and `scorel upgrade` for software lifecycle management.
10
+ - Oversized Bash tool output is now archived to session artifacts, returning compact head/tail projections to the model.
11
+ - GUI auto-update support with macOS DMG/ZIP packaging and incremental updates.
12
+
13
+ ### Changes
14
+
15
+ - GUI and daemon now honor the selected chat model when sending messages.
16
+ - GUI settings are more resilient: ignore stale device responses, error boundaries on settings sections, and fixed state reset when switching devices.
17
+ - `scorel host serve` and `scorel host start` no longer idle-timeout by default; only convenience daemons (GUI auto-start, `scorel up`) enforce a 15-minute idle timeout.
18
+ - GUI auto-start uses an ephemeral port to avoid conflicts with user-started daemons.
19
+
20
+ ### Fixes
21
+
22
+ - GUI provider model selection now persists correctly across profile refreshes and session creation.
23
+ - Daemon lifecycle hardened: foreground daemon stays alive until Ctrl+C/SIGTERM.
24
+
25
+ ### Verification
26
+
27
+ - Unit tests for update helpers (semver comparison, npm check/install, auto-update gate).
28
+ - Unit tests for GUI main process (electron-updater import, manual update item, tray setup).
29
+ - Integration test for release asset collection and version lockstep.
30
+ - Tests for oversized Bash archive and projection logic.
31
+ - Tests for daemon idle timeout behavior.
32
+ - Tests for GUI settings resilience (stale data, error boundary, state reset).
33
+ - Tests for model selection fallback and normalization.
34
+
35
+ ### Internal
36
+
37
+ - Update SHIP.md to clarify that small bug fixes may skip spec requirement; only changes affecting stable contracts or user-visible direction need a spec.
38
+ - Oversized Bash results are written to session-scoped artifacts, excluded from diagnostics and Relay.
39
+
40
+ - Add `scorel version`, `scorel update`, and `scorel upgrade`.
41
+ - Add hourly Host auto-update checks gated by active work state.
42
+ - Add GUI macOS release packaging and Electron updater metadata to the release path.
43
+ - Add GUI application menu and macOS status bar menu entries for manual update checks and common app actions.
44
+ - Document unsigned macOS GUI quarantine bypass command.
45
+
5
46
  ## 0.0.4 - 2026-06-14
6
47
 
7
48
  ### Highlights
package/docs/ROADMAP.md CHANGED
@@ -598,6 +598,8 @@ M5 WebUI 的正式产品方向记录在 [`S0030`](spec/ship/S0030-webui-product-
598
598
  | M9.F1.22 | [`S0100`](spec/ship/S0100-gui-provider-danger-zone.md) | GUI Provider 删除按钮位置初版 | Done |
599
599
  | M9.F1.23 | [`S0101`](spec/ship/S0101-gui-device-settings-polish.md) | GUI Settings 改为设备级配置,修正 Provider 删除位置、Token 文案、设备展开/重命名交互 | Done |
600
600
  | M9.F1.24 | [`S0102`](spec/ship/S0102-device-only-config.md) | Config 彻底收敛为设备级唯一配置,移除 Project config 运行时语义 | Done |
601
+ | M9.F1.25 | [`S0103`](spec/ship/S0103-daemon-lifecycle-and-settings-resilience.md) | Daemon 生命周期按入口区分,并修复 GUI Settings remote 切换黑屏风险 | Done |
602
+ | M9.F1.26 | [`S0105`](spec/ship/S0105-cli-update-and-gui-release.md) | CLI 命令面统一补齐、NPM 手动/自动更新、GUI release 打包和增量更新框架 | Done |
601
603
 
602
604
  **Not in M9 Follow-up**:
603
605
 
@@ -774,6 +776,9 @@ HTTP adapter 必须映射已有 Host use cases,不复制领域逻辑。
774
776
  | [`S0100`](spec/ship/S0100-gui-provider-danger-zone.md) | GUI Provider danger-zone placement | Done |
775
777
  | [`S0101`](spec/ship/S0101-gui-device-settings-polish.md) | GUI device-scoped Settings polish | Done |
776
778
  | [`S0102`](spec/ship/S0102-device-only-config.md) | Device-only config | Done |
779
+ | [`S0103`](spec/ship/S0103-daemon-lifecycle-and-settings-resilience.md) | Daemon lifecycle and Settings resilience | Done |
780
+ | [`S0104`](spec/ship/S0104-tool-result-artifacts.md) | Tool result artifacts for oversized Bash output | Done |
781
+ | [`S0105`](spec/ship/S0105-cli-update-and-gui-release.md) | CLI update and GUI release | Done |
777
782
 
778
783
  ---
779
784
 
package/docs/SHIP.md CHANGED
@@ -25,6 +25,8 @@
25
25
  ```bash
26
26
  pnpm install
27
27
  pnpm scorel # 在当前目录进入交互式项目会话
28
+ pnpm scorel --version
29
+ pnpm scorel update
28
30
  ```
29
31
 
30
32
  Hosted WebUI 路径:
@@ -35,7 +37,7 @@ open https://scorel.chanler.dev
35
37
  pnpm scorel pair <pair-code>
36
38
  ```
37
39
 
38
- `scorel host serve` 会以前台调试模式启动本机 Host、注册当前目录为初始 Project,并默认连接官方 Relay。`scorel host start` 会启动或复用后台 singleton Host,并返回到 shell;`scorel host stop` 显式关闭它。`scorel up` / `pnpm dev` 只作为本地开发便利入口:确保后台 Host 可用,然后启动本地 WebUI,但不拥有 Host 生命周期。后台 Host 无 client、无 active work、无 active IM 时会按 idle timeout 自动退出;active IM 会保持 Host 存活。
40
+ `scorel host serve` 会以前台调试模式启动本机 Host、注册当前目录为初始 Project,并默认连接官方 Relay;前台 Host 默认一直存活,直到 Ctrl+C / SIGTERM,除非显式传入 `--idle-timeout-ms`。`scorel host start` 会启动或复用后台 singleton Host,并返回到 shell;直接后台启动的 CLI Host 默认一直存活,直到 `scorel host stop` 或进程退出。`scorel up` / `pnpm dev` 只作为本地开发便利入口:确保后台 Host 可用,然后启动本地 WebUI,但不拥有 Host 生命周期。GUI / CUI 自动拉起的后台 Host 无 client、无 active work、无 active IM 时会按 15 分钟 idle timeout 自动退出;active IM 会保持 Host 存活。
39
41
 
40
42
  ---
41
43
 
@@ -102,7 +104,7 @@ docs/spec/ship/S####-slug.md
102
104
  - 影响文件 / 包
103
105
  - 风险与边界
104
106
 
105
- 没有 S spec,不开始实现。Bug fix 也需要 S spec,可以很短。
107
+ 没有 S spec,不开始实现。局部 bug fix 可以不创建 S spec;如果修复会改变稳定契约、配置/协议/数据边界或用户可见产品方向,就先补 S spec。
106
108
 
107
109
  ### 3. Ship
108
110
 
@@ -140,7 +142,7 @@ S####: <type>: <description>
140
142
 
141
143
  规则:
142
144
 
143
- - 一个 PR 对应一个 S spec。
145
+ - 一个 PR 对应一个 S spec;局部 bug fix 可以不对应 S spec
144
146
  - Commit message 使用 title-only semantic commit:只写标题,不写正文。
145
147
  - 按业务含义拆 commit,不把无关实现混在一起。
146
148
  - 文档、实现、测试可以拆 commit,但 PR title 必须带 S 编号。
@@ -205,9 +207,11 @@ pnpm release patch --no-generate-notes
205
207
  - 检查 working tree
206
208
  - 执行 check
207
209
  - 执行 WebUI production build
210
+ - 执行 GUI production build
208
211
  - 构建 public `scorel` npm package
209
212
  - 执行 `npm pack` 安装烟雾测试
210
213
  - bump 所有 package version
214
+ - 构建 GUI macOS dmg / zip release assets,并生成 `latest-mac.yml` 与 blockmap 增量更新 metadata
211
215
  - 默认用 DeepSeek V4 Flash 从上一个 `v*` tag 之后的 commits 生成 changelog notes
212
216
  - 更新 changelog;只有显式 `--no-generate-notes` 时才写入最小版本标题
213
217
  - commit `release: vX.Y.Z`
@@ -215,11 +219,11 @@ pnpm release patch --no-generate-notes
215
219
  - publish root `scorel` package to npm
216
220
  - push branch + tag
217
221
  - create GitHub Release from the same generated changelog notes
218
- - upload the same-version `npm pack` tarball as the only GitHub Release asset
222
+ - upload the same-version `npm pack` tarball and GUI macOS release assets to the GitHub Release
219
223
 
220
224
  Release notes 使用 `DEEPSEEK_API_KEY` 调用 DeepSeek 官方 API,默认 endpoint 为 `https://api.deepseek.com/v1`,默认模型为 `deepseek-v4-flash`。Dry-run 在缺少 key 或 API 失败时可打印 deterministic fallback preview;正式 release 默认要求 AI notes 成功,除非显式传入 `--no-generate-notes`。
221
225
 
222
- GitHub Actions 提供手动触发入口,默认执行 `patch` dry-run。正式 release 使用 `GITHUB_TOKEN` 创建 GitHub Release;正式 publish 需要仓库 secret `NPM_TOKEN`,对应 npm 账号当前为 `chanlerdev`。AI release notes 需要仓库 secret `DEEPSEEK_API_KEY`。
226
+ GitHub Actions 提供手动触发入口,默认执行 `patch` dry-run。正式 release 使用 `GITHUB_TOKEN` 创建 GitHub Release;正式 publish 需要仓库 secret `NPM_TOKEN`,对应 npm 账号当前为 `chanlerdev`。AI release notes 需要仓库 secret `DEEPSEEK_API_KEY`。GUI macOS 产物当前以 unsigned build 发布,workflow 设置 `CSC_IDENTITY_AUTO_DISCOVERY=false`;有 Apple Developer 账号后再补 signing/notarization。
223
227
 
224
228
  ---
225
229
 
@@ -29,7 +29,7 @@ Lock M9 GUI as a Project-first desktop app before implementation. The GUI should
29
29
 
30
30
  - Do not scaffold Electron in S0064.
31
31
  - Do not implement GUI screens.
32
- - Do not add SSH, direct WS + token, OAuth, account systems, or GUI auto-update.
32
+ - Do not add SSH, direct WS + token, OAuth, account systems, or GUI auto-update in S0064. GUI auto-update is introduced later by S0105 as release infrastructure.
33
33
  - Do not publish or package desktop installers.
34
34
  - Do not change the public npm CLI package surface.
35
35
 
@@ -76,10 +76,17 @@ Host runtime must use the selected model for each session/turn:
76
76
  available model or role;
77
77
  - CLI can continue using the default role without exposing a new command flag in this
78
78
  spec;
79
- - GUI composer can choose an available model for new prompts/sessions;
79
+ - GUI composer can choose an available model for the next main chat prompt, including
80
+ prompts sent into an existing session;
81
+ - background model tasks such as session title generation, session memory, foreground
82
+ compact, and memory dream use the configured `auxiliary` role unless a later spec
83
+ defines a more specific routing contract;
80
84
  - session metadata records the selected model id and role when known;
81
85
  - session header persists enough selected-model metadata to keep resume auditable if
82
86
  config later changes;
87
+ - if a restored session references a selected model that no longer exists in the
88
+ current device config, Host falls back through the persisted role or current
89
+ `standard` role instead of failing attach/resume;
83
90
  - assistant events keep recording actual provider/model metadata from pi-ai.
84
91
 
85
92
  Tool creation must use the actual selected model's context window, not a global model
@@ -0,0 +1,61 @@
1
+ # S0103: Daemon Lifecycle And Settings Resilience
2
+
3
+ ## Goal
4
+
5
+ Clarify daemon lifetime by entrypoint and make GUI Settings resilient when switching devices and sections, especially after selecting a Relay device.
6
+
7
+ Business value: a VPS demo host should stay online when the user explicitly starts it, while GUI/CUI convenience daemons still clean themselves up after local use. Settings failures must surface as recoverable errors, not a black renderer.
8
+
9
+ ## Scope
10
+
11
+ - `scorel host start` launches a background host that stays alive until explicit stop, process signal, crash, or machine shutdown.
12
+ - `scorel host serve` is foreground: it stays alive until Ctrl+C / SIGTERM unless the user explicitly provides `--idle-timeout-ms`.
13
+ - GUI auto-start and `scorel up` auto-start keep the existing 15 minute idle shutdown policy.
14
+ - GUI auto-start binds an ephemeral local port so a user-owned daemon on the default port cannot make GUI startup fail.
15
+ - `--idle-timeout-ms 0` remains the explicit "no idle shutdown" value.
16
+ - GUI Settings must ignore stale settings responses from a previously selected device.
17
+ - GUI Settings must render a local error fallback instead of blacking out the whole app when a Settings section throws.
18
+ - CDP verification covers Settings remote-device switching without renderer errors.
19
+
20
+ ## Not In Scope
21
+
22
+ - Changing active IM keepalive semantics. Active IM still prevents idle shutdown.
23
+ - Adding a new public `--keep-alive` flag; this spec keeps the existing `--idle-timeout-ms 0` primitive and fixes defaults.
24
+ - Remote SSH device installation or management.
25
+
26
+ ## Acceptance Criteria
27
+
28
+ - Direct `scorel host start` spawns `host serve` with idle shutdown disabled by default.
29
+ - Direct `scorel host serve` does not idle-exit by default; Ctrl+C/SIGTERM still stops it.
30
+ - `scorel up` spawns the daemon with a 15 minute idle timeout.
31
+ - GUI auto-start spawns the daemon with a 15 minute idle timeout.
32
+ - GUI auto-start uses the persisted `daemon.json` actual port instead of assuming the default daemon port is free.
33
+ - Settings device changes reset device-scoped settings state and ignore stale async responses.
34
+ - Settings section render errors show an in-app fallback and do not remove the app shell.
35
+ - CDP GUI verification seeds a device config, switches to a remote device in Settings, flips across Settings sections, and fails on renderer errors.
36
+
37
+ ## Tests
38
+
39
+ - CLI daemon tests cover background start idle disable, foreground serve default no-idle, explicit idle timeout, and active IM keepalive.
40
+ - `scorel up` tests assert the internal daemon spawn passes the 15 minute idle timeout.
41
+ - GUI renderer tests cover stale local settings data not overwriting remote settings data.
42
+ - CDP GUI verification covers remote Settings section switching and device-level config persistence.
43
+
44
+ ## Files
45
+
46
+ - `apps/cli/src/daemon-cli.ts`
47
+ - `apps/cli/src/up-cli.ts`
48
+ - `apps/gui/src/main.ts`
49
+ - `apps/gui/src/renderer/App.tsx`
50
+ - `apps/gui/src/renderer/settings/SettingsShell.tsx`
51
+ - `apps/gui/src/renderer/settings/sections/ModelSection.tsx`
52
+ - `apps/gui/src/renderer/settings/sections/ProviderSection.tsx`
53
+ - `scripts/verify-m9-gui-cdp-e2e.ts`
54
+ - `docs/SHIP.md`
55
+ - `docs/ROADMAP.md`
56
+ - `docs/CHANGELOG.md`
57
+
58
+ ## Risks
59
+
60
+ - A foreground host without idle shutdown can run forever. That is intended because terminal ownership and Ctrl+C are visible to the user.
61
+ - GUI/CUI auto-start must remain explicit about its 15 minute idle timeout; otherwise changing host defaults would make local helper daemons permanent.
@@ -0,0 +1,64 @@
1
+ # S0104: Tool Result Artifacts
2
+
3
+ ## Goal
4
+
5
+ Keep long tool results useful without letting them dominate model context.
6
+
7
+ When a tool result is too large, Scorel should preserve the full result as a session-owned artifact and put only a compact, actionable projection in the model-facing tool result.
8
+
9
+ ## Scope
10
+
11
+ - Add a session-owned artifact path for oversized tool results:
12
+
13
+ ```text
14
+ ~/.scorel/sessions/{sessionId}.artifacts/{toolCallId}/result.txt
15
+ ```
16
+
17
+ - Start with `Bash` stdout/stderr because it is the highest-risk long-output source.
18
+ - Preserve the full command result in `result.txt`, including exit code, cwd, stdout, and stderr.
19
+ - Return a compact tool result containing:
20
+ - exit code;
21
+ - cwd;
22
+ - full artifact path;
23
+ - complete result byte count;
24
+ - stdout/stderr byte counts;
25
+ - a budgeted head/tail projection of the oversized streams.
26
+ - Treat `maxOutputBytes` as the total projection snippet budget across stdout/stderr, not as a per-stream head/tail allowance. For example, a 16,000-byte projection budget should not turn into 16,000 bytes of stdout head plus 16,000 bytes of stdout tail plus the same again for stderr.
27
+ - Keep session JSONL append-only. Do not rewrite or delete old tool result events.
28
+ - Keep diagnostics free of full prompt text and full tool results.
29
+ - Keep Relay and attach-cache out of this storage path.
30
+
31
+ ## Not In Scope
32
+
33
+ - Background Bash, task id, poll, stop, or monitor semantics.
34
+ - Artifact retention policy, compression, upload, or remote retrieval.
35
+ - Rewriting existing session JSONL files.
36
+ - Applying artifact projection to `Read`, `Grep`, `Glob`, or MCP tools.
37
+ - Provider-specific token accounting.
38
+
39
+ ## Acceptance Criteria
40
+
41
+ - `Bash` output at or below the existing output limit behaves as before.
42
+ - `Bash` output above the limit writes the complete result to `result.txt`.
43
+ - Oversized `Bash` model-facing content includes the artifact path, `resultBytes`, and budgeted head/tail snippets instead of only the leading bytes.
44
+ - The artifact file contains the complete stdout/stderr text, not only the projected snippets.
45
+ - The tool result details expose artifact metadata for UI/diagnostics without requiring it to enter rebuilt model context.
46
+ - Existing `buildContext()` behavior still strips tool execution details from replayed model context.
47
+ - `pnpm --filter @scorel/core test -- src/tools/coding-tools.test.ts`
48
+ - `pnpm --filter @scorel/daemon test -- src/embedded/embedded.test.ts`
49
+ - `pnpm typecheck && pnpm test`
50
+
51
+ ## Impacted Files
52
+
53
+ - `packages/core/src/tools/coding-tools.ts`
54
+ - `packages/core/src/tools/coding-tools.test.ts`
55
+ - `packages/core/src/session/index.ts`
56
+ - `packages/daemon/src/index.ts`
57
+ - CLI / GUI runtime creation paths that call `createRealRuntime`
58
+ - `docs/ROADMAP.md`
59
+
60
+ ## Risks And Boundaries
61
+
62
+ - Full command output can contain secrets. The artifact path is local session data and must not be copied into diagnostics, attach-cache, or Relay.
63
+ - Head/tail snippets can still expose sensitive text. This is no worse than the current truncated result, but future permission policy should handle sensitive commands explicitly.
64
+ - Artifact paths are local to the daemon-owning machine. Remote clients can see the path as evidence, but remote file retrieval is a separate future protocol.
@@ -0,0 +1,128 @@
1
+ # S0105: CLI Update And GUI Release
2
+
3
+ ## Goal
4
+
5
+ Make Scorel's user-facing command surface complete enough for release users, and make CLI / GUI updates part of the same release story.
6
+
7
+ ## Scope
8
+
9
+ - Add top-level `scorel version` / `scorel --version`.
10
+ - Add manual `scorel update` and `scorel upgrade` commands for the public npm package.
11
+ - Add Host-side automatic npm update checks:
12
+ - check npm latest once per hour
13
+ - install only when no active work is running, or active work has been stale for at least three hours
14
+ - after a successful background update, stop the Host with an `auto-update` reason so the next entry start uses the new binary
15
+ - Keep `scorel` as the default interactive project command, and keep lifecycle/diagnostic commands grouped under product nouns: `host`, `pair`, `relay`, `webui`, `up`, `project`, `logs`.
16
+ - Add GUI release packaging to the same GitHub Release:
17
+ - Electron macOS dmg + zip targets
18
+ - `latest-mac.yml`
19
+ - `.blockmap` metadata for incremental updates
20
+ - `electron-updater` bootstrap in packaged GUI builds
21
+ - Add normal desktop update affordances:
22
+ - application menu `Check for Updates...`
23
+ - macOS status bar menu with show, settings, check updates, Host status, and quit
24
+ - Document unsigned macOS build handling for users without an Apple Developer account.
25
+
26
+ ## Non-Goals
27
+
28
+ - Do not add auth/account commands before Scorel has a real account system.
29
+ - Do not add deprecated aliases for old command shapes.
30
+ - Do not publish GUI through npm.
31
+ - Do not claim notarization or Gatekeeper trust without Apple Developer signing credentials.
32
+ - Do not make Relay or hosted WebUI own update state.
33
+
34
+ ## Contract
35
+
36
+ ### CLI Surface
37
+
38
+ The stable user command groups are:
39
+
40
+ ```text
41
+ scorel [--session <id>] [--cwd <dir>]
42
+ scorel chat [--session <id>] [--cwd <dir>]
43
+ scorel attach --session <id> --remote <ws-url> --token <token>
44
+ scorel host start|serve|status|stop|reset
45
+ scorel pair <pair-code>
46
+ scorel relay serve
47
+ scorel webui
48
+ scorel up
49
+ scorel project list|add|remove
50
+ scorel logs
51
+ scorel version
52
+ scorel update
53
+ scorel upgrade
54
+ ```
55
+
56
+ This mirrors the broad shape used by mature agent CLIs: one default interactive command, explicit session/control commands, and a direct update command.
57
+
58
+ ### CLI Update
59
+
60
+ `scorel update` and `scorel upgrade` both:
61
+
62
+ - query `npm view @chanlerdev/scorel version`
63
+ - compare against the installed package version with semver ordering
64
+ - run `npm install -g @chanlerdev/scorel@<latest>` only when latest is newer
65
+ - print a clear no-op message when already current
66
+
67
+ Host auto-update uses the same updater helper. The active-work gate is generic: it reads Host runtime/queue activity, not filenames, paths, screenshots, or one failure sample.
68
+
69
+ ### GUI Release
70
+
71
+ `apps/gui` remains private and separate from the npm CLI package. Release packaging uses Electron Builder with GitHub provider metadata so `electron-updater` can check the same GitHub Release.
72
+
73
+ The release asset set is:
74
+
75
+ ```text
76
+ <npm pack tarball>
77
+ apps/gui/release/latest-mac.yml
78
+ apps/gui/release/*.dmg
79
+ apps/gui/release/*.dmg.blockmap
80
+ apps/gui/release/*.zip
81
+ apps/gui/release/*.zip.blockmap
82
+ ```
83
+
84
+ The macOS Action runs with `CSC_IDENTITY_AUTO_DISCOVERY=false` until signing/notarization credentials exist.
85
+
86
+ ## Acceptance Criteria
87
+
88
+ - `scorel --help` lists update/version commands.
89
+ - `scorel --version` and `scorel version` print the installed version.
90
+ - `scorel update` / `scorel upgrade` have tested npm check/install behavior.
91
+ - Host auto-update gate is covered by tests.
92
+ - GUI packaged app initializes `electron-updater` only when packaged.
93
+ - GUI exposes manual update checks from both the application menu and the macOS status bar menu.
94
+ - GUI registers a macOS status bar menu with Host status and common app actions.
95
+ - Release script version lockstep includes `apps/gui/package.json`.
96
+ - Release script uploads GUI installer/update metadata assets to GitHub Release.
97
+ - README documents manual update, automatic update, GUI packaging, and unsigned macOS `xattr` workaround.
98
+
99
+ ## Test Requirements
100
+
101
+ ```bash
102
+ pnpm --filter @scorel/app-cli test -- update-cli.test.ts
103
+ pnpm --filter @scorel/app-gui test -- main-menu.test.ts
104
+ node --test scripts/release-gui.test.mjs
105
+ pnpm typecheck
106
+ pnpm test
107
+ git diff --check
108
+ ```
109
+
110
+ ## Affected Paths
111
+
112
+ - `apps/cli/src/index.ts`
113
+ - `apps/cli/src/update-cli.ts`
114
+ - `apps/cli/src/daemon-cli.ts`
115
+ - `packages/daemon/src/index.ts`
116
+ - `apps/gui/package.json`
117
+ - `apps/gui/src/main.ts`
118
+ - `scripts/release.mjs`
119
+ - `.github/workflows/release.yml`
120
+ - `README.md`
121
+ - `docs/SHIP.md`
122
+ - `docs/ROADMAP.md`
123
+
124
+ ## Risks
125
+
126
+ - `npm install -g` can fail on machines where the user lacks permission for the global prefix. The command reports the npm error instead of silently mutating local state.
127
+ - Auto-updating a running Host cannot replace the current Node process in-place. The short-stop mechanism exits after successful installation; GUI/WebUI/CLI entrypoints can then start the new binary.
128
+ - Unsigned macOS apps are viable for local distribution but not trustworthy public distribution. Notarization should be added once an Apple Developer account is available.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chanlerdev/scorel",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Replayable, recoverable, remotely controllable AI Agent workspace.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.1.2",