<feed xmlns='http://www.w3.org/2005/Atom'>
<title>newos4/course, branch main</title>
<subtitle>newOS4 - the browser terminal that runs WebX11 user spaces</subtitle>
<id>https://newos.webx11.duckdns.org/newos4/atom?h=main</id>
<link rel='self' href='https://newos.webx11.duckdns.org/newos4/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/'/>
<updated>2026-10-30T13:03:57+00:00</updated>
<entry>
<title>chore(git): untrack cron/API runtime state, keep it on disk</title>
<updated>2026-10-30T13:03:57+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-30T13:03:30+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=351d17c01e3e5a67e1bbd9c75671adfaaa820742'/>
<id>urn:sha1:351d17c01e3e5a67e1bbd9c75671adfaaa820742</id>
<content type='text'>
These files are rewritten in place every few minutes by cron jobs and the
APIs (visits.json, agent-items.json, subscribers.json, newOS4 debug/report/
maintenance state, changelog feed, course atlas...). Tracking them made
`git status` useless and put runtime noise into every commit. The daily
backup (admin/scripts/backup-spaces.sh) already owns this state; nothing is
deleted from disk here — files stay in place, only removed from the index.

No source files touched: api/*.py, admin/scripts/*, modules/, *.html pages
staged nowhere; the two ambiguous data files (data/income-tracker.json,
admin/dead-jobs.html) are deliberately left tracked.
</content>
</entry>
<entry>
<title>feat(newos4): register `test` / `[` so chains decide locally instead of asking a model (v4.6.135)</title>
<updated>2026-10-29T11:53:41+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-29T11:53:41+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=d32c25c60daa0376c0d9d7c7b6ccf84628469b06'/>
<id>urn:sha1:d32c25c60daa0376c0d9d7c7b6ccf84628469b06</id>
<content type='text'>
`[ -f "/qt.txt" ] &amp;&amp; echo exists` — the probe that closed the v4.6.132 batch — was not a shell test
at all: both commands were unregistered, so the line fell through to the AI fallback and a model was
asked whether a file exists. `_evalTest()` has implemented `-f -d -e -z -n ! = !=` for the if/while
parser since the script runner was written; only the command was missing.

  * `test` and `[` registered in ShellModule. Success resolves silently; false rejects with a
    `silent` error so `&amp;&amp;`/`||` skip it — POSIX prints nothing on exit 1.
  * `[` requires the closing bracket (`[ : missing ']'`), and that message is NOT silent.
  * `test` already names the on-demand regression-suite runner ("test auto" / "test list" in
    help.html). A argv that does not look like a test expression (`-f`/`-d`/`-e`/`-z`/`-n`/`!`,
    or `a = b` / `a != b`) is delegated to the handler registered before us, so `test auto`
    still runs the suite and the two meanings cannot collide.
  * terminal.dispatchCommand() now honours `err.silent` — without it a top-level `test -f /nope`
    printed `Error in ShellModule.test:` (measured on v4.6.134, fixed in v4.6.135).
  * help.html documents the bracket form next to the existing `test` row.

Three tags were minted minutes apart — v4.6.133 (commands), v4.6.134 (suite delegation),
v4.6.135 (silent top-level) — each a real cache-bust for a fix that superseded the previous build;
the net change is this commit.

Verification
  node modules/test/test-shell-test-cmd.js -&gt; 24/24 pass (RED against HEAD: "test command
      registered" fails, "m.commands.test is not a function")
  node modules/test/test-pipe-guard.js     -&gt; all seven flags true
  node modules/test/test-parse-args.js     -&gt; 28/28 · daily job -&gt; node tests 22/22 pass
  newos4-maintain.py -&gt; atlas 355 commands (was 354), modules-index 349, help 364/364
  live v4.6.135, read from the terminal DOM:
    [ -f /qt.txt ] &amp;&amp; echo F135          -&gt; F135
    test -f /nope || echo M135           -&gt; M135
    [ -d /nope ] &amp;&amp; echo BAD || echo N134-&gt; N134   (false branch skipped, nothing printed)
    test                                 -&gt; no output (suite not loaded; POSIX false)
    test -f /nope                        -&gt; no output
    js "a b".length | wc -c              -&gt; 1       (v4.6.132 pipe fix still intact)
  The AI fallback is no longer reachable for a bracketed file test.
</content>
</entry>
<entry>
<title>docs(newos4): clear the help.html command backlog, and make it detectable</title>
<updated>2026-10-21T23:46:42+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-21T23:46:42+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=3bbaa9df177fcab2ee9dd04857d16d92c4812780'/>
<id>urn:sha1:3bbaa9df177fcab2ee9dd04857d16d92c4812780</id>
<content type='text'>
help.html had not been touched since 2026-08-02. Auditing the page against the
code found 74 commands the runtime registers but the docs never mentioned, and
4 rows documenting commands that no longer exist.

Documented (by section): terminal 11 (dashboard --watch/--stop, usage, ps, top,
df, free, history, run, sysmsg, view_module), a2a 6, AI 14 (webxai/webx/wx,
context*/smart-ask, commit-*, ai-model/ai-ignore), vaultmind 4, debug 2, filesystem 2,
sessions 1, memory-graph 3, modules 4, neural-vfs 1, agents 3, web 1, voice 3,
config 3, extras 8 (kanban, three, course, gzip, wget, gui-*), vault 2 (encrypt/decrypt),
skills 5, webdav 1, plus an alias row for h/s/ll.

Removed ghost rows: commands, check, sandbox-kill, webdav-explorer -- none are
registered anywhere in modules/; the sandbox prose no longer promises sandbox-kill.

New check: scripts/newos4-maintain.py check_help_coverage() derives the command
list from terminal.js (_baseWhitelist, internals, cmd === dispatch) plus every
commands['...'] registration in modules/ and compares it with help.html, so the
next gap shows up in the daily maintenance run instead of rotting for 11 weeks.

Verified: html.parser 0 errors (before the fix my own insertion broke the page --
a signature containing &lt;script&gt; opened a script element), 355/355 commands
documented, maintenance OK, 449 command rows in the DOM, 360/390 px 4/4 OK,
perms fixed (atlas.json, course.js were 664).
</content>
</entry>
<entry>
<title>newOS4: regenerate course atlas (adds bug command)</title>
<updated>2026-10-18T15:01:57+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-18T15:01:57+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=04b7b6791a84995526a622aa2817481599746432'/>
<id>urn:sha1:04b7b6791a84995526a622aa2817481599746432</id>
<content type='text'>
</content>
</entry>
<entry>
<title>course: fix P0 content errors + completion/mobile/keyboard UX (review A)</title>
<updated>2026-10-18T13:00:25+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-18T13:00:25+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=bc199e350ea4ab000df03c9e732bf3478c9c43b6'/>
<id>urn:sha1:bc199e350ea4ab000df03c9e732bf3478c9c43b6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>newOS4 course: first daily lesson generated, atlas 345 commands, modules-index refreshed</title>
<updated>2026-10-18T12:05:58+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-18T12:05:58+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=7150d6fa9538b808c647423a629f31a5a138eaca'/>
<id>urn:sha1:7150d6fa9538b808c647423a629f31a5a138eaca</id>
<content type='text'>
</content>
</entry>
<entry>
<title>newOS4: interactive AI course (terminal module, portal, atlas, telemetry, daily maintenance+cron) + free store card</title>
<updated>2026-10-18T12:05:18+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-18T12:05:18+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=88ad8ed2fbbda61920b11a79df29acb58928b5af'/>
<id>urn:sha1:88ad8ed2fbbda61920b11a79df29acb58928b5af</id>
<content type='text'>
</content>
</entry>
</feed>
