diff options
| author | Hermes SysOp <sysop@webx11.duckdns.org> | 2026-11-12 16:24:39 +0100 |
|---|---|---|
| committer | Hermes SysOp <sysop@webx11.duckdns.org> | 2026-11-12 16:24:39 +0100 |
| commit | cbaa678ae624860ce4f918428a7b09d5f0e0ae2f (patch) | |
| tree | de867d3660592866cb14b2d479567d8c3258670f | |
| parent | c08a795ae822e905639caf563e36cf7953d530f1 (diff) | |
chore(newos4): commit maintenance output after v4.6.159
| -rw-r--r-- | CHANGELOG.md | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 9739ebf..8f1c05b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,15 +4,32 @@ Generated from git history by `scripts/build-changelog.py` — do not edit by ha <!-- generated:start --> +## v4.6.159 — 2026-11-12 + +_Touches modules (8), main.html (1) · fix 1_ + +- **One arg-coercion boundary + binary-safe gunzip + clean boot log (v4.6.159)** `47b8aff` + - 1. Tool arguments are coerced once, at the dispatch boundary (module-aiassist.js) + - _coerceToolArgs(name, a) at :1584 reads the tool's own JSON schema and, for every + - declared string prop, converts number/boolean with String() and object/array with JSON.stringify (never "[object Object]"); declared integer/number props accept unambiguous numeric strings. null/undefined stay absent so the handlers' defaults and _pathArg still own "no value given". + - Called at both dispatch boundaries: runTool (:2650) and runModuleTool (:3565 — + - reachable from view_module and from ship_module -> test_module/health_check, which have their own parse+switch). + - A JSON body of "null" or "[1,2]" parses to a non-object; both sites normalise to {} + - before any handler reads a.field. + - The 26 handlers keep their `a.x || ''` reads: `|| ''` catches only FALSY, which is + - … run `git show <sha>` for the rest + ## v4.6.158 — 2026-11-09 -_Touches modules (12), main.html (1), packages.json (1) · fix 1_ +_Touches modules (12), data (4), main.html (1), packages.json (1) · fix 1, project 1_ - **Six crash classes from the feedback queue (v4.6.158)** `a38f5dc` - Each item is symptom -> cause -> fix, re-verified against the served bytes. - 1. debug-ai panel threw "Cannot read properties of undefined (reading 'substring')" (RPT-20261108-231622). _updateDebugPanel and two sibling previews called JSON.stringify(entry.args).substring(); JSON.stringify(undefined) returns undefined, and _toolCallLog entries carry args: undefined for any tool call with no arguments. All three previews now go through _formatToolArgs(), which renders "null" and never throws. - 2. test_module threw "Cannot convert undefined or null to object" (RPT-20261108-232127). Object.keys(instance.commands) assumed every module initialises a command map. The throw landed after loadModuleFromCode had already succeeded, so the rolledBack:true branches were skipped and an unverified module stayed loaded. Both sites now require instance.commands. - … run `git show <sha>` for the rest +- **Commit feedback ledger after the v4.6.158 triage** `d86364e` + - decisions.jsonl gains 10 rows: 4 stale 2026-10-23 probes rejected, m.pull resolved as a usage error, and the four 2026-11-08/09 crashes resolved against a38f5dc. Queue after: awaiting 0, steering 0, plans_review 0. ## v4.6.157 — 2026-11-09 |