@twinsearth/w2m-dsh-plugin 0.4.8 → 0.4.9

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/CHANGELOG.md CHANGED
@@ -4,6 +4,25 @@ All notable changes to this project are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
5
5
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.4.9] — 2026-10-10
8
+
9
+ ### Fixed
10
+
11
+ * **The Windows supervisor silently dropped every `-AgentArgs` value.** `install-service.ps1` writes
12
+ `agentArgs` into `agent.json`, and `ConvertTo-Json` collapses a single-element array to a string —
13
+ while the supervisor's passthrough only handled an array. So `-AgentArgs '--p2p-mode auto'` was
14
+ accepted, written, and then ignored, and the agent ran on its defaults. Nothing failed; the field
15
+ simply had no effect. It now accepts both shapes (a string is split on whitespace) — the same class
16
+ of bug as the camelCase key mismatch fixed in v0.4.4: **a config field that is read but not
17
+ understood is indistinguishable from one that was never set.**
18
+ * Found while pinning this machine's punch port (`--p2p-port 51820`), which was the first agent
19
+ argument whose absence would have been visible — that is what exposed the dropped-arguments path.
20
+
21
+ ### Notes
22
+
23
+ * No protocol change, and no behavioural change for an `agentArgs` that was already an array (what
24
+ the installer writes for two or more arguments). This makes the documented `-AgentArgs` real.
25
+
7
26
  ## [0.4.8] — 2026-10-09
8
27
 
9
28
  ### Added
@@ -128,7 +128,12 @@ const consumed = new Set([
128
128
  ]);
129
129
  const passthrough = [];
130
130
  const fileAgentArgs = file.agentArgs ?? file['agent-args'];
131
+ // BOTH SHAPES, because both happen. The installer writes an array, but `ConvertTo-Json` collapses a
132
+ // single-element array to a string -- and this only handled the array, so `--p2p-mode auto` was
133
+ // silently dropped and the agent ran on its defaults. Silent, because an ignored field is not an
134
+ // error. A string is split on whitespace instead.
131
135
  if (Array.isArray(fileAgentArgs)) passthrough.push(...fileAgentArgs.map(String));
136
+ else if (typeof fileAgentArgs === 'string') passthrough.push(...fileAgentArgs.split(/\s+/).filter(Boolean));
132
137
  if (typeof args['agent-args'] === 'string') passthrough.push(...args['agent-args'].split(/\s+/).filter(Boolean));
133
138
  for (const [key, value] of Object.entries(args)) {
134
139
  if (consumed.has(key)) continue;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twinsearth/w2m-dsh-plugin",
3
- "version": "0.4.8",
3
+ "version": "0.4.9",
4
4
  "description": "DSH: Windows2MacOS — drive the same project on online Windows and macOS machines from one DeepSeek account, across networks and regions. P2P hole punching is the default path (relay + shared server as rendezvous, ledger and fallback), with a bundled STUN responder, Tailscale/public-VPS/tunnel shapes, Rabbit relay + per-machine Localside + eight DSH tools (replicate / split), nine aggregate verdicts and signed requests.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -110,7 +110,7 @@ const MAX_STAGES = 16;
110
110
  * `package.json` during `scripts/pack.mjs` rather than hand-maintained, and `W2M_PLUGIN_VERSION`
111
111
  * overrides it at runtime for tests and packagers.
112
112
  */
113
- const PLUGIN_VERSION = '0.4.8';
113
+ const PLUGIN_VERSION = '0.4.9';
114
114
 
115
115
  /** How long any single HTTP call may take before it is aborted, in milliseconds. */
116
116
  const DEFAULT_REQUEST_TIMEOUT_MS = 15_000;