dodo-mcp 1.4.1 → 1.4.3

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.
@@ -0,0 +1,66 @@
1
+ # DODO MCP 1.4.2 — Recovery best effort across restart
2
+
3
+ Automatic source backups no longer make ordinary editing or
4
+ commands depend on Recovery availability. A project with an old strict policy,
5
+ a missing backup volume, or a credential-like example file can continue normal
6
+ work while Recovery reports its failure.
7
+
8
+ ## Changes
9
+
10
+ - Automatic activation, before-write and before-exec captures are best effort,
11
+ including stored `strictEnforcement`, `gitRequired` and `gitDirectory` settings.
12
+ Backup failure no longer turns a permitted `echo ok` or source edit into
13
+ `RECOVERY_REQUIRED`.
14
+ - The per-project `skipSecretContentFiles` preference persists across restart.
15
+ Capture reports credential-like files it skips without storing their contents
16
+ as a completed backup. The Recovery quick action changes this project preference
17
+ rather than disabling global file permissions or secret screening.
18
+ - `project_overview` includes `blockedPath`, `skippedSecretFiles`, `lastWarning`
19
+ and `operationsBlocked:false`. `blockedPath` is a relative source path when
20
+ known, or `null` for a failure without a specific source file. A later global
21
+ failure clears a previous path instead of pointing at an unrelated file.
22
+ - Recovery storage initializes on first disk access. A broken Recovery directory
23
+ can no longer prevent the server from booting, while canonical directory
24
+ identity and private-path checks still reject replacement storage.
25
+ - History, drift and agent bookkeeping failures report diagnostics without
26
+ hiding a completed operation or repeating its effects. Corrupt Recovery
27
+ metadata remains visible from the overview.
28
+ - The Recovery dashboard replaces the Strict Blocking switch with the best-effort
29
+ behavior and describes `BLOCKED` as backup unavailable, not a lock on normal work.
30
+
31
+ Explicit owner/verified checkpoints and reviewed restores still require their
32
+ backup and integrity checks to succeed. Authorization, secret/path policy,
33
+ expected hashes, and recovery guards for an actual partial file journal remain
34
+ authoritative. A warning means the operation may have no new Recovery checkpoint.
35
+
36
+ ## Upgrade
37
+
38
+ ```sh
39
+ npm install -g dodo-mcp@1.4.2
40
+ dodo --version
41
+ ```
42
+
43
+ Restart the DODO process using the service or launcher that normally runs it.
44
+ Installing the package does not replace code already loaded by a running process.
45
+ Refresh the MCP connection and call `project_overview` again for its current
46
+ workspace epoch. The updated overview exposes `operationsBlocked:false` alongside
47
+ the backup diagnostics. For Docker installations, update the package in the DODO
48
+ image and recreate that service with its existing persistent state.
49
+
50
+ No live production instance was updated during the patch validation. Installation
51
+ and a real server restart are separate from the fixture restart tests.
52
+
53
+ ## Validation
54
+
55
+ Windows / Node 24.22.1 patch checks: build, typecheck and lint passed; the main
56
+ Recovery regression group passed 69 tests with 2 platform/dependency skips.
57
+ Storage boot/identity checks passed 2 tests, the owner UI passed 1 test in system
58
+ Chrome, and fresh-install packaging passed 17 tests: 89 passed in total across
59
+ these focused checks. See [the test report](TEST_REPORT.md).
60
+
61
+ This is focused patch evidence, not a completed full native release gate.
62
+ Native Linux/macOS and live production acceptance were not run for this patch.
63
+ The existing production dependency advisories are not remediated by this change.
64
+
65
+ See [Recovery usage and limits](RECOVERY.md) for checkpoint, restore and storage
66
+ behavior.
@@ -0,0 +1,22 @@
1
+ # DODO MCP 1.4.3 — Dependency security updates & raster image signature hardening
2
+
3
+ ## Summary
4
+
5
+ - **Direct & Runtime Dependency Security Updates:**
6
+ - `@modelcontextprotocol/server` `2.0.0` → `2.4.0` (`GHSA-jm63-cq47-j5jp`, `GHSA-46jr-4wx8-v453`, `GHSA-rvq5-wwqv-78pq`, `GHSA-f897-62hf-6gxq`)
7
+ - `@modelcontextprotocol/node` `2.0.0` → `2.1.2` (`GHSA-f897-62hf-6gxq`, plus transitive `hono` / `@hono/node-server` updates)
8
+ - `@modelcontextprotocol/express` `2.0.0` → `2.0.2` (`GHSA-rvq5-wwqv-78pq`)
9
+ - `express` `5.2.1` → `5.3.0` (resolving transitive `proxy-addr` `GHSA-jqcg-44mw-7w3h`, `body-parser` `GHSA-27r3-jxmh-p828`, and `qs` `GHSA-6pq8-jhm2-2vcw`)
10
+ - `sharp` & `@img/sharp-wasm32` `0.35.4` → `0.35.5` (`GHSA-wq5f-xc86-pv6w` / `CVE-2026-96889`)
11
+ - `zod` `^4.2.0` → `^4.6.7` (`GHSA-mrhx-c7xc-m3w5`)
12
+ - **Defense-in-Depth Raster Image Header Verification:**
13
+ - `imageView`, `inspectResourceFile`, and `imagePreview` now verify PNG/JPEG/GIF/WebP magic-byte signatures before invoking `sharp` / `libvips`, preventing disguised SVG/XML payloads from reaching native vector decoders.
14
+ - **Development Toolchain Audit Hygiene:**
15
+ - Updated `@modelcontextprotocol/client` (`2.4.0`), `vitest` (`5.1.0`), `typescript-eslint` (`^8.72.2`), and transitive `minimatch` / `brace-expansion` resolutions (`npm audit` reports `0 vulnerabilities` across both production and development trees).
16
+
17
+ ## Upgrade
18
+
19
+ ```sh
20
+ npm install -g dodo-mcp@1.4.3
21
+ dodo --version
22
+ ```
@@ -1,5 +1,28 @@
1
1
  # DODO MCP — Release Notes
2
2
 
3
+ ## 1.4.3 — Dependency security updates & raster image signature hardening
4
+
5
+ - Upgraded runtime dependencies `@modelcontextprotocol/server` (`2.4.0`), `@modelcontextprotocol/node` (`2.1.2`), `@modelcontextprotocol/express` (`2.0.2`), `express` (`5.3.0`), `sharp` / `@img/sharp-wasm32` (`0.35.5`), and `zod` (`^4.6.7`), clearing all advisories reported on `npm.io` and `npm audit --omit=dev`.
6
+ - Added strict PNG/JPEG/GIF/WebP magic-byte header validation before passing image buffers or files to `sharp`, ensuring disguised SVG/XML payloads are rejected before native decoding.
7
+ - Updated development test/lint dependencies (`@modelcontextprotocol/client@2.4.0`, `vitest@5.1.0`, `typescript-eslint@^8.72.2`, and transitive glob dependencies) to `0 vulnerabilities` across the full `npm audit` tree.
8
+ - See [upgrade details](RELEASE_1.4.3.md).
9
+
10
+ ## 1.4.2 — Recovery best effort across restart
11
+
12
+ - Automatic source backup failures no longer block normal commands or edits,
13
+ including after restart with legacy strict or Git-required settings.
14
+ - Persist the per-project secret-skip preference; show relative `blockedPath`,
15
+ `skippedSecretFiles`, warnings and `operationsBlocked:false` in the overview.
16
+ - Initialize Recovery disk storage lazily, and keep optional history/drift/agent
17
+ bookkeeping failures from masking successful work. Explicit checkpoints,
18
+ reviewed restores, authorization, path/hash and actual journal guards remain.
19
+ - Replace Recovery's Strict Blocking and global permission quick actions with
20
+ project-scoped backup controls and truthful unavailable-backup diagnostics.
21
+ - Focused Windows patch validation: 89 passed / 2 skipped across Recovery,
22
+ storage, Chrome UI and fresh-install packaging checks. Full native platform
23
+ gates and live production acceptance remain separate; see [validation](TEST_REPORT.md).
24
+ - See [upgrade details](RELEASE_1.4.2.md) and [Recovery usage](RECOVERY.md).
25
+
3
26
  ## 1.4.1 — Immediate Upgrade Unblock, Full Edit Defaults & Concurrent Multi-Project UI
4
27
 
5
28
  - Automatically clears pre-existing write blocks (`recovery_required` changesets, `PREPARING` snapshots, `recovery_drift`, strict `recovery_policies`, `read`/`inspect` defaults, and read-only OAuth grants/tokens) immediately upon upgrading and opening `state.db`.
@@ -1,5 +1,50 @@
1
1
  # DODO MCP — Test Report
2
2
 
3
+ ## 1.4.2 Recovery best-effort patch — Windows, 2026-11-11
4
+
5
+ Focused checks on Windows / Node 24.22.1: **build, typecheck and lint passed**.
6
+ These results cover the Recovery patch and are not a full native release gate.
7
+
8
+ | Check | Passed | Failed | Skipped |
9
+ |---|---:|---:|---:|
10
+ | Main Recovery regressions (7 files) | 69 | 0 | 2 |
11
+ | Recovery-only storage failure at boot and pinned directory identity | 2 | 0 | 0 |
12
+ | Owner UI in installed system Chrome | 1 | 0 | 0 |
13
+ | Fresh tarball install and packaging | 17 | 0 | 0 |
14
+ | Total focused checks | 89 | 0 | 2 |
15
+
16
+ The main group's skips were the Windows directory-fsync case and the existing
17
+ owner UI case whose bundled Chromium was unavailable. A separate UI regression
18
+ used installed system Chrome and exercised the actual Recovery dashboard code.
19
+
20
+ Real isolated SQLite/workspace/process fixtures verify persisted secret skipping
21
+ with an AWS-like test key after restart; actual `echo ok` and edits despite
22
+ legacy strict/Git settings or unavailable storage; corrupt prior snapshots and
23
+ policy/drift metadata; relative failure paths and stale-path clearing; live
24
+ authority revocation; and failed required backups before a reviewed restore.
25
+ Bookkeeping trigger failures preserve the operation's result and do not repeat
26
+ effects. Existing regressions retain stale-hash, secret/path, backup integrity
27
+ and actual partial-journal recovery checks.
28
+
29
+ The storage restart test replaces only a disposable Recovery directory with a
30
+ plain file, confirms the server boots and performs normal work, and verifies that
31
+ the occupied file and old backup bytes stay intact. A separate identity test
32
+ rejects a replacement directory after successful lazy initialization.
33
+
34
+ The Chrome case checks legacy `BLOCKED` diagnostics, secret-skip settings in both
35
+ states, project-only skip actions and an unsuccessful retry notice. Packaging
36
+ checks install a fresh tarball and verify its Compact MCP backup/restore flow and
37
+ the new overview fields.
38
+
39
+ **Not completed:** the full Windows suite/native gate (the host lacks enabled
40
+ Administrator and symlink prerequisites), native Linux/macOS validation, and live
41
+ gufile/production acceptance. The earlier production-only npm audit reported
42
+ 10 affected packages (1 critical, 5 high, 4 moderate); this Recovery patch does not
43
+ remediate those advisories or claim a clean dependency audit. Publication is
44
+ verified separately from these tests.
45
+
46
+ See [release scope and upgrade steps](RELEASE_1.4.2.md).
47
+
3
48
  ## 1.3.2 Recovery maintenance — macOS release gate, 2026-09-25
4
49
 
5
50
  `AUTOMATED_PASS` on macOS: build, typecheck and lint; full core suite **926 passed,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dodo-mcp",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
4
4
  "author": "Arthittakun",
5
5
  "description": "DODO — local-first MCP server with multi-project coding, AI providers, sub-agents, context, memory, media and workflow tools; embedded OAuth and workspace permissions.",
6
6
  "type": "module",
@@ -56,6 +56,8 @@
56
56
  "docs/RELEASE_1.3.2.md",
57
57
  "docs/RELEASE_1.4.0.md",
58
58
  "docs/RELEASE_1.4.1.md",
59
+ "docs/RELEASE_1.4.2.md",
60
+ "docs/RELEASE_1.4.3.md",
59
61
  "docs/RELEASE_NOTES.md",
60
62
  "docs/SCHEDULES.md",
61
63
  "docs/SECURITY.md",
@@ -96,26 +98,26 @@
96
98
  "test:desktop:native": "npm run build && node scripts/test-desktop-native.mjs"
97
99
  },
98
100
  "dependencies": {
99
- "@modelcontextprotocol/express": "2.0.0",
100
- "@modelcontextprotocol/node": "2.0.0",
101
- "@modelcontextprotocol/server": "2.0.0",
101
+ "@modelcontextprotocol/express": "2.0.2",
102
+ "@modelcontextprotocol/node": "2.1.2",
103
+ "@modelcontextprotocol/server": "2.4.0",
102
104
  "better-sqlite3": "13.0.3",
103
105
  "commander": "15.0.0",
104
106
  "cron-parser": "5.10.0",
105
107
  "diff": "^9.0.0",
106
- "express": "5.2.1",
108
+ "express": "5.3.0",
107
109
  "ignore": "^7.0.9",
108
110
  "jose": "6.2.12",
109
111
  "oidc-provider": "9.12.2",
110
112
  "picomatch": "^4.0.7",
111
113
  "playwright": "1.63.0",
112
- "sharp": "0.35.4",
114
+ "sharp": "0.35.5",
113
115
  "tar-stream": "3.2.1",
114
116
  "typescript": "5.9.3",
115
- "zod": "^4.2.0"
117
+ "zod": "^4.6.7"
116
118
  },
117
119
  "devDependencies": {
118
- "@modelcontextprotocol/client": "2.0.0",
120
+ "@modelcontextprotocol/client": "2.4.0",
119
121
  "@types/better-sqlite3": "^7.6.13",
120
122
  "@types/diff": "^7.0.2",
121
123
  "@types/express": "^5.0.0",
@@ -125,8 +127,8 @@
125
127
  "eslint": "^9.39.0",
126
128
  "pyright": "^1.1.413",
127
129
  "sweetalert2": "11.26.25",
128
- "typescript-eslint": "^8.70.0",
129
- "vitest": "5.0.0"
130
+ "typescript-eslint": "^8.72.2",
131
+ "vitest": "5.1.0"
130
132
  },
131
133
  "keywords": [
132
134
  "dodo",
@@ -166,6 +168,16 @@
166
168
  "url": "https://github.com/arthittakun/dodo-mcp/issues"
167
169
  },
168
170
  "optionalDependencies": {
169
- "@img/sharp-wasm32": "0.35.4"
171
+ "@img/sharp-wasm32": "0.35.5"
172
+ },
173
+ "overrides": {
174
+ "@typescript-eslint/typescript-estree": {
175
+ "minimatch": "^11.0.7"
176
+ },
177
+ "eslint": {
178
+ "minimatch": {
179
+ "brace-expansion": "^1.1.21"
180
+ }
181
+ }
170
182
  }
171
183
  }