aboutsummaryrefslogtreecommitdiff
path: root/modules/ext
Commit message (Collapse)AuthorAgeFilesLines
* docs(newos4): merge the two shell-composition skills into one seeded skill ↵Agando2026-10-231-0/+52
| | | | | | | | | | | | | | | | | | | | | (v4.6.65) Packet 9. `terminal-commands-silently-failing` and `command-composition-rules` described the same bug family from two angles, and since v4.6.58 both were describing behaviour that is now refused outright. - new seeded skill `command-composition-rules` in skill-pack-core's _buildSkills(): the rule, why the refusal exists (with the 42-42 / 34k-a measurement), what works (one command per call, wc multi-path, interactive-only pipes, quoted operators), how to verify a plausible-looking result, and the pitfalls - its History section names both retired skills so a reader arriving from either search finds the surviving one - mirrored onto disk as skills/command-composition-rules.md + .json and added to skills/index.json (18 entries) so the repo copy matches what sessions receive Verified live on v4.6.65: seeding reported 15 skills (was 14), the file and index entry exist in the fresh VFS, and the natural-language query "does the terminal have a shell and what is refused" returns command-composition-rules first (13.78, 3/4).
* fix(newos4): unmeasured skills are untracked, world-model writes verified, ↵Agando2026-10-231-0/+5
| | | | | | | | | | | | | | | | | | | | | | | skill audit External review packet (os4-external-review-v4.6.51.html) triaged against the code: 2 findings confirmed and fixed, 4 could not be reproduced and were recorded as such. - module-memory-graph.js: getStaleSkills() treated a missing lastUsed as 999 days unused, so skill-audit recommended archiving every skill (22 of 22). Skills with no usage telemetry are now collected by getUntrackedSkills() and never counted stale. Live: "Stale: 0" + "Untracked: 22 (no usage telemetry — NOT stale)". - module-world-model.js: _saveToVFS() ignored fsWriteJSON()'s return value and promoted whatever a truthy read returned. Now write -> read-back -> byte compare -> promote, with every return checked. Regression test modules/test/test-world-model-save.js (red on the old code: promoted=true with errs=[]; green now). - scripts/newos4-skill-audit.py: 5 mechanical probes (version x3, read_file paging + context budget, selection symbols, required scripts, extKeys) + skill presence; exits non-zero on drift. 7/7 pass today. Weekly job cb6bc2a16216 runs it Mondays. Not reproduced (recorded in admin/docs/newos4-external-review-verification-2026-10-23.md): world_model_query empty-payload throw (live call returns JSON), pipes-as-command-names, ls skills empty (23 entries via fs.readDir), ~66 agent dirs (4 live).
* fix(newos4): download link uses the user's space; WebDAV share copies ↵Agando2026-10-213-27/+209
| | | | | | | | | | | | verified file links; preview fullscreen+share; files->WebDAV upload button (v4.6.45) - download: URL built from _resolveSpaceName() (config url = logged-in user), not the page space - WebDAV browser 🔗: shares selected FILES only, URL-encoded, HEAD-verified (200) before claiming success; folders offer a tar fallback instead of a guaranteed-403 link - file manager preview: ⛶ fullscreen + 🔗 copy-link toolbar (was none) - file manager toolbar: ☁ WebDAV publishes selected/current file via webdav-push - modules/test/test-download-url.js: 4 PASS - rebuild bundles, bump v4.6.44 -> v4.6.45 (loader + 3 script tags)
* newOS4 v4.6.40: review fixes (bug diagnostics, trash tree, dir paste, stale ↵Agando2026-10-183-9/+22
| | | | capture, preview)
* newOS4 v4.6.36: fix CourseModule print-capture swallowing all command outputAgando2026-10-181-2/+16
|
* newOS4 v4.6.35: file manager multi-select + safe paste/rename/delete (Part B)Agando2026-10-182-162/+320
|
* newOS4 course: post-exec review fixes (telemetry detail sanitize, skill-sync ↵Agando2026-10-181-0/+1
| | | | retry, atlas check)
* newOS4: interactive AI course (terminal module, portal, atlas, telemetry, ↵Agando2026-10-181-0/+323
| | | | daily maintenance+cron) + free store card
* auto: 2026-07-29_20:45 changesAgando2026-10-151-1/+7
|
* auto: 2026-07-29_20:45 changesAgando2026-10-081-6/+424
|
* newOS4 v4.6.18: nginx dav trailing-slash semanticsAgando2026-10-021-4/+20
| | | | | | | | | | | Discovered by dav-health-check.sh E2E (10/10 pass now): - nginx dav module REQUIRES trailing slash on MKCOL (no-slash → 409) and on directory DELETE (no-slash → 409/404); existing dir + slash MKCOL → 405 (the real 'already exists' signal) - _normalizeRemotePath now PRESERVES trailing slashes (collection ops) - _ensureDir MKCOLs with trailing slash - _deleteFile retries with slash on 409/404 (collection delete) - health-check expectations corrected (405 = existing, slash required)
* newOS4 webdav path fix + WebX11 resilience package (2026-10-02)Agando2026-10-021-26/+85
| | | | | | | | | | | | | | | | | | | | Root cause fixes (mindtech incident): - webdav.js: _normalizeRemotePath strips full URLs/space prefixes, applied to all request entry points + _absoluteUrl for MOVE/COPY Destinations - _ensureDir: __list__ existence fast-path (kills MKCOL 409 storms) - dashboard-files.js: updateFilesJson parses __list__ autoindex (no more '#' entries), ensureSpaceExists only re-inits on genuine 404 - 20-test regression suite: scripts/test-webdav-paths.mjs Resilience: - dav-auth-check.py: server-side WebDAV write auth microservice (nginx auth_request on 8904) — anonymous/wrong-token writes now 401 - fail2ban-telegram.py: ban alerts + auto-unban for known space users - backup-spaces.sh: daily hardlink snapshots, 14-day retention - space-health-check.py: junk dirs / myfiles.json / version drift / session sanity → Telegram alerts - dashboard-files.js: visible 503 error panel with Retry + auto-retry - v4.6.16: main.html + module-loader LATEST_VER aligned (was drifted)
* newOS4 v4.6.15: reentrant print-capture stack, AI tail -f block, read-only ↵Agando2026-09-292-18/+22
| | | | sed in safeRead, security test harness (21 checks)
* auto: 2026-07-29_20:45 changesAgando2026-08-061-310/+718
|
* feat: add kanban module to newOS4 — todo/doing/done board with prioritiesAgando2026-07-291-0/+190
|
* auto: 2026-07-09_06:00 changesAgando2026-07-096-347/+2089
|
* auto: 2026-07-02_06:00 changesAgando2026-07-022-1/+1240
|
* auto: 2026-06-23_06:00 changesAgando2026-06-231-3/+6
|
* auto: 2026-06-22_18:00 changesAgando2026-06-225-10/+923
|
* auto: 2026-06-19_18:01 changesAgando2026-06-191-6/+37
|
* auto: 2026-06-18_18:00 changesAgando2026-06-181-1/+11
|
* auto: 2026-06-18_06:00 changesAgando2026-06-185-13/+62
|
* auto: 2026-06-17_06:01 changesAgando2026-06-172-2/+16
|
* auto: 2026-06-16_06:00 changesAgando2026-06-161-0/+167
|
* auto: 2026-06-15_06:00 changesAgando2026-06-151-44/+156
|
* auto: 2026-06-13_18:00 changesAgando2026-06-131-0/+2363
|
* auto: 2026-06-11_18:00 changesAgando2026-06-111-190/+996
|
* auto: 2026-06-10_18:00 changesAgando2026-06-101-11/+39
|
* auto: 2026-06-10_06:00 changesAgando2026-06-101-0/+76
|
* auto: 2026-06-09_18:00 changesAgando2026-06-091-6/+84
|
* auto: 2026-06-09_06:00 changesAgando2026-06-096-18/+379
|
* auto: 2026-06-08_18:00 changesAgando2026-06-084-9/+386
|
* auto: 2026-06-06_18:01 changesAgando2026-06-061-0/+42
|
* auto: 2026-06-06_06:00 changesAgando2026-06-065-14/+288
|
* auto: 2026-06-04_06:00 changesAgando2026-06-041-2/+75
|
* auto: 2026-06-03_06:00 changesAgando2026-06-031-43/+106
|
* auto: 2026-06-02_18:00 changesAgando2026-06-022-133/+666
|
* auto: 2026-06-01_18:00 changesAgando2026-06-011-4/+23
|
* auto: 2026-06-01_06:00 changesAgando2026-06-011-2/+6
|
* auto: 2026-05-30_18:00 changesAgando2026-05-301-2/+12
|
* auto: 2026-05-30_06:00 changesAgando2026-05-302-0/+281
|
* auto: 2026-05-28_18:00 changesAgando2026-05-2815-57/+179
|
* auto: 2026-05-27_06:00 changesAgando2026-05-276-11/+1427
|
* auto: 2026-05-26_06:00 changesAgando2026-05-261-2/+298
|
* auto: 2026-05-25_18:02 changesAgando2026-05-2513-0/+2911