-
v10.0.0
Stablereleased this
2026-10-13 06:20:55 +00:00 | 30 commits to main since this release10.0.0 - 2026-10-13 - Einstellungen in drei Stufen, Eingangskanäle, raw fetch mit Site-Handlern und Login, Backup und Exporte
Author: Torben Nehmer
Breaking Change:
- Die vier Dateien .wikitool-remotes.json, .wikitool-telemetry.json, .wikitool-upload.json und .wikitool-tasks.json werden nicht mehr gelesen; ein Kommando, das die Einstellung braucht, endet mit Exit 42, bis 'tools/wikitool config migrate' sie in wikitool.json, .wikitool-local.json und die Secrets-Referenzen übernommen hat
- Die Quarantäne heißt quarantine/ statt mcp-upload/. Eine Instanz mit wartenden Einreichungen verschiebt das Verzeichnis einmal von Hand (Migrationsschritt); bis dahin enden die upload-Kommandos mit Exit 1.
Migration: required - instructions/migrations/10.0.0-settings-tiers.md
High impact
- Die Einzeldateien .wikitool-remotes/-telemetry/-upload/-tasks.json sind in den drei Einstellungsstufen aufgegangen; neues Kommando config migrate
- Eingangskanäle: der intake-Abschnitt kennt mehrere Kanäle (mcp, folder, command), alle enden in quarantine/; neues Kommando upload collect zieht Sync-Ordner und Programme in die Quarantäne
Medium impact
- Einstellungen in drei Stufen: wikitool.json (Instanz), .wikitool-local.json (Checkout), Secrets nur per Verweis - auch über die 1Password-CLI; neues Kommando config set
- Site-Handler für raw fetch: Standardform der URL, Bereinigung und Hinweise pro Website als Code-Registry (learn.microsoft.com zuerst); Abschnitt sites in den Einstellungen
- Site-Handler der Instanz als JSON-Dateien in sites/, nach denselben Bausteinen wie die des Stacks - die nun ebenfalls Datendateien sind
- raw fetch --scope: eine Seite und die Unterseiten, die ihr Site-Handler anbietet, als ein Bündel in incoming/
- raw fetch hinter einem Login: raw login speichert die Session des Nutzers als Secret, raw fetch holt damit; gerenderte Seiten über die optionale Browser-Komponente, externe Abrufer pro Host
- Gesprächssprache: AGENTS.md § Conversation language legt fest, dass der Agent im Chat die KB-Sprache spricht; instructions sync schreibt den Sprachwert als generierte Zeile in jedes veröffentlichte SKILL.md, instructions verify und doctor melden eine geänderte Sprache als Drift
- Backup in einen Sync-Ordner (OneDrive): backup init legt ein Bare-Repo unter /git als origin an, backup run und publish spiegeln die Maschinendaten nach //, doctor warnt vor .git im Sync-Ordner
- Exporte als konfigurierte Ziele: export run schreibt eine abgeleitete, schreibgeschützte Lesefassung von kb/ je Zielordner (Markdown oder über ein Konvertierprogramm), auf Wunsch nach jedem publish; raw accept lehnt auch Dateien ab, die in einem Export-Manifest stehen
Low impact
- Ketten von Paketen: stack-dev schreibt ## Kette, stack-close nennt das nächste Glied
- raw_cmd.py in ein Paket zerlegt: ein Modul je Unterkommando, Ausgabe unverändert
- Testkorrektur: die Live-Tracker-Suite importiert, was ihr CalDAV-Anleger braucht
- doctor: die Beschreibung der Strukturprüfung nennt sites/CONTRACT.md, die doctor seit den Site-Handlern der Instanz verlangt
- raw fetch --scope ist die Entscheidung des Nutzers: raw/CONTRACT.md und wiki-ingest sagen, wer es anstößt und warum es kein Folgen von Links ist
- AGENTS.md § Gates and mcp-read-server name every intake channel behind the Upload Review Gate, not only submit (#213 close)
- publish-cycle: what a WARN or ERROR from the page export after publish means; architecture names the page export as the way out for a reader that cannot ask (#214 close)
Dieses Release ordnet die Konfiguration neu und öffnet die Instanz nach außen. Einstellungen liegen in drei Stufen -
wikitool.jsonfür die Instanz,.wikitool-local.jsonfür den Checkout, Secrets nur als Verweis, auch über 1Password -, und die vier alten.wikitool-*.json-Dateien sind darin aufgegangen; der Pflicht-Migrationsschritt führtconfig migrateaus und verschiebtmcp-upload/nachquarantine/.raw fetchkennt Site-Handler je Website, auch als Dateien der Instanz insites/, holt mit--scopeeine Seite samt Unterseiten als Bündel und arbeitet hinter einem Login. Neue Wege hinein und hinaus: mehrere Eingangskanäle (MCP, Sync-Ordner, Programm) enden alle in der Quarantäne vor dem Upload Review Gate,backupsichert eine Instanz ohne Git-Server in einen Sync-Ordner, undexport runschreibt eine schreibgeschützte Lesefassung vonkb/in konfigurierte Zielordner. Dazu spricht der Agent im Chat die KB-Sprache.Einstellungen in drei Stufen, Secrets nur per Verweis (#207)
Neue Einstellungen liegen in
wikitool.json(eingecheckt, gleich in jedem Klon) oder.wikitool-local.json(gitignoriert, nur dieser Checkout); jedes Feld deklariert seine Stufe, ein Wert in der falschen Datei ist ein Fehler, keine Überschreibung. Ein Feld, das ein Programm benennt oder ein Gate betrifft, ist nieinstance. Secrets stehen nur als Verweis in den Dateien:{"ref": "<name>"}überWIKITOOL_SECRET_<NAME>oder eine Secret-Datei im Nutzerverzeichnis,{"ref": "op://..."}über die 1Password-CLI, die der Preflight als optionales Werkzeug erfasst; gesperrtes 1Password ergibt exit 42.config setschreibt dorthin, wo die Stufe es verlangt, und verweigert Secret-Werte;doctorzeigt eine Zeile pro Stufe,docs verifyprüftwikitool.jsonauf Klartext-Secrets. Noch liest kein Feature seine Einstellungen so.Site-Handler für
raw fetch(#200, #210)Für URLs einer bekannten Website holt
raw fetchdie Seite in Standardform, leitet den Text ohne Seitenbedienung ab und gibt Hinweise alsCHECK-Zeilen aus, nur wenn sie zutreffen. Handler sind JSON-Dateien nachtools/chemenu/sites/site.schema.json: die des Stacks untertools/chemenu/sites/handlers/(zuerstlearn-microsoftundlearn-microsoft-powershell-module), die der Instanz untersites/; ein Handler der Instanz mit demselben Host und Pfad ersetzt den des Stacks.doctormeldet eine unbrauchbare Datei als FAIL, undraw fetchbricht für deren Host mit Exit 1 ab, bevor etwas geholt wird. Der Header nenntsite:(<name> (instance)bei der Instanz) undrequested_url; das.htmlbleibt byte-genau. Der Abschnittsitesder Einstellungen schaltet Handler ab, wählt das Gebietsschema und nimmt Hinweiszeilen je Host-Muster auf. Regeln:sites/CONTRACT.md.raw fetch --scope: ein Bündel aus Index und UnterseitenBietet der Site-Handler einer Seite Unterseiten an (Baustein
subpagesin der Handler-Datei; der Modulindex von learn.microsoft.com bietet seine Cmdlet-Seiten an), nenntraw fetchdas als eineCHECK-Zeile, undraw fetch <url> --scopeholt Index und Unterseiten als einen Ordnerincoming/<name>/mit einem Paar je Seite und dem Manifest_scope.json;raw accept incoming/<name>nimmt ihn unverändert an. Geholt wird nur, was der Handler benennt, nie von einem anderen Host. Vorher prüft der Befehlrobots.txtund die Obergrenzesites.max_pages(Standard 200); jeder Fehler bricht ab, bevor etwas inincoming/liegt. Zwischen den Unterseiten wartet ersites.pause_seconds(Standard 1). Ob--scopeläuft, entscheidet der Nutzer:wiki-ingestfragt ihn, wenn dieCHECK-Zeile es anbietet.raw fetchhinter einem Login (#169)Der Abschnitt
fetchder Einstellungen ordnet einem Host einen Abrufweg zu. Beisessionholtraw fetchmit der Session, die der Nutzer einmal mitraw login <host>im Browserfenster hinterlassen hat. Sie liegt als Secret außerhalb des Baums, ein Passwort wird nie gespeichert. Der Site-Handler nennt die Login-Seite und das Zeichen einer eingeloggten Seite. Fehlt die Session oder ist sie abgelaufen, endet der Abruf mit Exit 42 ohne Teaser.render: trueholt über einen Browser (rendered: true). Ein anderer Weg nennt einen externen Abrufer aus.wikitool-local.json. Playwright ist optional (preflight --with browser), unddoctormeldet es in der Zeilebrowser.Altlasten der Konfiguration bereinigt (#208)
Die vier Einzeldateien
.wikitool-remotes.json,.wikitool-telemetry.json,.wikitool-upload.jsonund.wikitool-tasks.jsongibt es nicht mehr; ihre Felder sind die Abschnitteremotes,telemetry,upload,tasks,superproductivityundcaldavder drei Stufen. Zugangsdaten sind dort nur noch Verweise. Der Code liest die alten Dateien nicht mehr: ein Kommando, das die Einstellung braucht, endet mit Exit 42 und nennttools/wikitool config migrate,doctormeldet FAIL, der Telemetrie-Hook bleibt still.config migrateläuft einmal je Checkout, ist wiederholbar und lässt bei jedem Abbruch die alten Dateien unverändert.WIKITOOL_TASKS_CONFIGzeigt auf ein Profil im Format von.wikitool-local.json. Nur.wikitool-tools.jsonbleibt eine eigene Datei.Eingangskanäle: mehrere Wege in dieselbe Quarantäne (#213)
Der Abschnitt
intakein.wikitool-local.jsonersetztuploadund führt benannte Kanäle mit einem Handler:mcp(dassubmit-Werkzeug, höchstens einer),folder(ein Ordner außerhalb der Instanz, den ein Sync-Client füllt) undcommand(ein Programm auscommands). Alle enden inquarantine/(vorhermcp-upload/), jede Einreichung trägtchannel,handlerundorigin, undupload acceptbleibt das Gate. Neu istupload collect [<kanal>...]: es zieht Ordner und Programme in die Quarantäne, entfernt eine Quelle erst, wenn die Kopie fertig ist und die Quelle noch Größe und sha256 hat, und lässt alles andere liegen.config migratemacht aus.wikitool-upload.jsonden Kanalmcp; wartende Einreichungen inmcp-upload/verschiebt der Migrationsschritt von Hand, bis dahin enden die upload-Kommandos mit Exit 1.Backup in einen Sync-Ordner (#186)
Ohne Git-Server bleibt der Arbeitsbaum außerhalb des Sync-Ordners; gesichert wird in das Ziel, das die Sektion
backupvon.wikitool-local.jsonnennt.backup initlegt<ziel>/gitals Bare-Repo an und macht es zuorigin, wenn keins existiert. Mitmachine_data: truespiegelt jedespublishnach dem Push.wikitool-local.json,ENVIRONMENT.md,incoming/und dieextra-Pfade nach<ziel>/<maschine>/samt Manifest;backup runtut dasselbe von Hand. Geschrieben wird nur dort und atomar, gelesen nur innerhalb der Instanz, Secrets nie. Eine gescheiterte Sicherung nach dem Push ist eineWARN-Zeile mit Exit 0, eine fehlerhafte Sektion stopptpublishvor dem Commit.doctormeldetsync-folderundbackup. Ablauf und Wiederherstellung:docs/how-to/back-up-to-a-synced-folder.md.
This note is a snapshot of the
CHANGES.mdentry as it stood when the tag was cut, and
is never edited afterwards. The maintained version of this text - including any later
correction - is the entry for this version inCHANGES.mdin the repository.Downloads