<feed xmlns='http://www.w3.org/2005/Atom'>
<title>newos4/downloads, branch v4.6.168</title>
<subtitle>newOS4 - the browser terminal that runs WebX11 user spaces</subtitle>
<id>https://newos.webx11.duckdns.org/newos4/atom?h=v4.6.168</id>
<link rel='self' href='https://newos.webx11.duckdns.org/newos4/atom?h=v4.6.168'/>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/'/>
<updated>2026-11-14T15:12:20+00:00</updated>
<entry>
<title>chore: cron artefacts — feedback snapshot, health/anomaly reports, regenerated admin pages</title>
<updated>2026-11-14T15:12:20+00:00</updated>
<author>
<name>Hermes SysOp</name>
<email>sysop@webx11.duckdns.org</email>
</author>
<published>2026-11-14T15:12:20+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=46b2d9862fa22ab18c2746aa2b28878972098fd8'/>
<id>urn:sha1:46b2d9862fa22ab18c2746aa2b28878972098fd8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(newos4): stop reporting network and VFS size as facts we do not have (v4.6.161)</title>
<updated>2026-11-12T16:02:47+00:00</updated>
<author>
<name>Hermes SysOp</name>
<email>sysop@webx11.duckdns.org</email>
</author>
<published>2026-11-12T16:02:47+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=e452ce7785e5e47ec01a409d6da1f59564f8f365'/>
<id>urn:sha1:e452ce7785e5e47ec01a409d6da1f59564f8f365</id>
<content type='text'>
1. The last two `navigator.onLine`-as-fact payloads
   - module-aiassist.js: the debug/health payload carried
     `online: navigator.onLine`, consumed by downloads/dashboard.html, which rendered
     "🔴 Offline" — on an Android WebView (reports false while fully connected) that
     told working users they were offline. The key is gone; the payload carries
     `network:'unknown'`, `networkKnown:false` and `networkHint`.
   - module-world-model.js: the snapshot had the same field, and it is also handed to the
     LLM through `_modelDigest()`/`ask()`, so the model was told the user was offline.
     Now `network:'unknown'` + `networkKnown:false`.
   - `_loadFromVFS()` scrubs `system.online` from a model persisted by an older build —
     otherwise the stale boolean would survive inside the digest for the life of the VFS.
   - downloads/dashboard.html: `networkText()` renders reachable/unreachable/http-* only
     when doctor produced them ("(doctor)"), `unprobed` as "— not probed", and everything
     else as "— unknown (run doctor for a live probe)". A legacy payload's `online:false`
     lands in "unknown", never "Offline". The row label is "Network", not "Online".
   - Neither payload invents a probe: SystemModule stores no last-doctor verdict, so
     'unknown' is the honest value until one exists.

2. `vfsSize` in both payloads was a different unit again
   - aiassist: `JSON.stringify(fs.root).length / 1024`; world-model:
     `JSON.stringify(fs.root).length`. Same lie v4.6.160 fixed in `vfs-size` — UTF-16 code
     units plus serialisation structure. Both now sum UTF-8 bytes of file content
     (`_utf8Len`/`_measureVfs`, Blob → TextEncoder → code-point fallback, depth/node
     capped) and carry `sizeBytes` beside the human string so the rows reconcile.
   - world-model's `_gatherFileInfo().size` used a THIRD unit on an adjacent line
     (`JSON.stringify(fs.root).length/1024`); now the same measurement, plus `sizeBytes`.
   - `showModel()` renders exact bytes and tolerates a pre-fix persisted string.

3. Predictor made a guaranteed-401 request on every boot (UI-plan finding F6)
   - `_wdConfig()` returns `user:''`/`pass:''` when the saved WebDAV config has a URL but
     no credentials, and `_pullFromServer`/`_pushToServer` fetched the auth-gated
     `/spaces/&lt;user&gt;/_data/predictor.json` anyway — 107 × 401 in one day, logged by the
     browser as console errors. Both now refuse without credentials
     (`cache-only (no credentials)`).

Verified: 42/42 node tests, 2 new files (38 payload/honesty assertions, 8 predictor-store
assertions); the predictor suite is 4/8 against the pre-fix source, and the payload suite
fails 14 assertions against HEAD (`online:false` present, vfsSize === JSON.stringify
length). Live Chromium on v4.6.161, on the served dashboard: a legacy payload with
`online:false` renders "Network — unknown (run doctor for a live probe)", the current
payload renders "85.8 KB (87880 B)" and the same unknown, and a doctor-produced
`unreachable` renders "⚠️ unreachable (doctor)". Served bytes identical for
core-bundle.js, main.html and downloads/dashboard.html. `maintain.py --fix` all PASS.
</content>
</entry>
<entry>
<title>chore: snapshot the generated content that the served site is actually running</title>
<updated>2026-11-09T18:35:44+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-11-09T18:35:44+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=543d85a37fe26cc401a109c021d3ffb9b04af37d'/>
<id>urn:sha1:543d85a37fe26cc401a109c021d3ffb9b04af37d</id>
<content type='text'>
103 admin pages (nav block + feedback dashboard), 40 newos4 maintenance files, 39 gunesuygarligi pages
(cookie banner, legal, pazar, haberler), and the handful of root pages that changed with them. These are
regenerated by builders and cron, but they are what nginx serves right now, so the repository should
match the deployment - and the public newos4 mirror refuses to publish a dirty subtree.

No behaviour changes in this commit: it makes git agree with what is already live.
</content>
</entry>
<entry>
<title>chore(newos4): commit accumulated maintenance output</title>
<updated>2026-11-09T14:36:23+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-11-09T14:36:23+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=a065a4c30be748b0c8fc6dd0b5ee1dc4d3de4b1c'/>
<id>urn:sha1:a065a4c30be748b0c8fc6dd0b5ee1dc4d3de4b1c</id>
<content type='text'>
The daily collector and the feedback pipeline had left 57 modified files uncommitted (skills,
modules-index, CHANGELOG, feedback decisions, debug counters). The public mirror publishes git
HEAD, so without this the published repo stayed behind the tree - and it blocked the publisher
outright once uncommitted subtrees started failing loudly.
</content>
</entry>
<entry>
<title>fix(newos4): measure predictor accuracy over paired predictions (v4.6.56)</title>
<updated>2026-10-23T15:38:10+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-23T15:38:10+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=895d8f5ed57c76f25770f88f290e6ab93949b6f8'/>
<id>urn:sha1:895d8f5ed57c76f25770f88f290e6ab93949b6f8</id>
<content type='text'>
The accuracy readout was structurally 0%: module-predictor.js:187 incremented the
denominator on every observed run while the numerator only moved when a stored
prediction existed, and predictions were stored only by the manual `predict`
command (the AI tool predict_task computed one and discarded it). Replaying the
AI loop's own call path with 6 tasks printed "Predictions made: 0, Accuracy: 0/6".

- pending predictions with a 15m TTL, consumed by threaded id -&gt; task hash -&gt;
  cli-only similarity &gt;= 0.5; unpaired runs never enter the denominator
- duration scored within 30% or 3s (integer predictions vs fractional observations)
- errorPct capped at 500% so one miss cannot poison the mean error
- schema v2: v1 correct/total counters dropped on load, observed runs and the
  prediction counter kept; task text stored as an FNV-1a hash only
- tuning (confidence-threshold, min-data-points, pair-ttl) persists
- min-data-points now scales confidence (was declared, printed, settable, unread)
- AI loop registers a prediction per turn and threads its id; predict_task
  returns predictionId; durations exclude chat-lock queue wait
- status/dashboard say "n/a" instead of "N/A%", and carry paired count, mean
  error, turns error, pending and unpaired counts
- test: modules/test/test-predictor-accuracy.js (26 assertions)

Live on main.html v4.6.56: fresh session -&gt; "Accuracy: n/a (0/0 paired)";
one paired run -&gt; "100% (1/1 paired) - mean error 5% - turns +-0.0".
</content>
</entry>
<entry>
<title>chore(newos4): archive the delta-sync probe report (test artifact)</title>
<updated>2026-10-23T13:29:04+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-23T13:29:04+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=0a21751ad27193cfd265c68360fd1bae116533d6'/>
<id>urn:sha1:0a21751ad27193cfd265c68360fd1bae116533d6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(newos4): define VirtualFS.emptyTrash() — empty-trash threw since 2026-10-18</title>
<updated>2026-10-23T13:28:57+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-23T13:28:57+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=3cfb5ededbf482732b2337d82b5e05f96fc898de'/>
<id>urn:sha1:3cfb5ededbf482732b2337d82b5e05f96fc898de</id>
<content type='text'>
Report RPT-20261018-164646-89352963 ("this.fs.emptyTrash is not a function") was filed by the auto-filer and never fixed: terminal.js:1777 called a method VirtualFS never defined, so 'empty-trash --confirm' threw instead of emptying. Added emptyTrash() returning true only when it removed something.

Verified live on v4.6.54: put -&gt; rm -&gt; empty-trash --confirm =&gt; 'Trash emptied.'; second run =&gt; 'Trash is already empty.'; .trash entries 0.
</content>
</entry>
<entry>
<title>fix(newos4): dashboard shows the real world model and stops dying after 10 s (v4.6.51)</title>
<updated>2026-10-21T23:23:47+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-21T23:23:47+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=bc5834d70992224ef6809229d25efeb23470c024'/>
<id>urn:sha1:bc5834d70992224ef6809229d25efeb23470c024</id>
<content type='text'>
Two defects, both verified live before/after:

1. The World Model panel always said "Not synthesized yet". The page had a
   renderer for data.worldModel and _collectDashboardData() never set it -- the
   model was right there in WorldModelModule._model. Now collected and mapped to
   the renderer's exact keys (model has modules.loaded/skills.count/memory.nodes,
   the page reads modules/skills/memoryNodes), plus changesSinceLastSnapshot and
   the recent-error sample, with an honest "not synthesized" fallback.

2. The page discarded any payload older than 10 s and its own 5 s auto-refresh
   then showed "Cannot connect to newOS4". Stale payloads are now rendered with
   their age ("Data as of 1:20:14 AM - 3m ago"), labelled amber past 5 min.

Also: the Refresh button wrote a localStorage key nobody read -&gt; the terminal now
listens for it and re-collects (page says "No terminal tab answered" when no
terminal tab is open); storage events repaint instantly; the dead /api/dashboard
fetch (404 on all three paths, 5 s stall) is gone; `dashboard --watch` / `--stop`
re-collects every 5 s; header says the data is this browser's instance.

Verified v4.6.51: panel rows "Synthesized 34s ago / v4.6.51 / 46-22 / 136-3 /
1 nodes 0 edges / OK / none recorded"; 130 s-old payload still renders with
"- 3m ago" and no banner (previously "Cannot connect"); storage event moves the
footer 13s -&gt; 0s; watch timer advances the payload, --stop clears it; mobile
360/390 px all OK; 0 console errors.
</content>
</entry>
<entry>
<title>newOS4 v4.6.37: bug-report pipeline (report.php, bug command, HTML generator, telemetry-loop fix)</title>
<updated>2026-10-18T15:01:52+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-18T15:01:52+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=d7a1198aa7ac77cbe9d3f0c844245dd08a8ccd12'/>
<id>urn:sha1:d7a1198aa7ac77cbe9d3f0c844245dd08a8ccd12</id>
<content type='text'>
</content>
</entry>
<entry>
<title>newos4: floating-ui-designer v3 — repair 12 escape-mangled JS sites, rebuild 344-cmd registry (124-&gt;344), quoting/import/preset UX fixes; add Node harness + registry generator; floating-ui skill JSON de-piped</title>
<updated>2026-10-17T18:17:28+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-17T18:17:28+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=005a1ad651383cca9793f24213de3a22c2474967'/>
<id>urn:sha1:005a1ad651383cca9793f24213de3a22c2474967</id>
<content type='text'>
</content>
</entry>
</feed>
