pi-aftc-toolset - Change Log ============================ Updates v1.18.x --------------- - aftc-codex: the rules-only session mode is now invoked with a single command, /codex-inject-rules. The old /aftc-codex-rules-only and /codex-rules-only names were removed; behaviour is unchanged (injects ONLY the Critical Global Rules for this session, works with codex disabled, cleared by a fresh session). - Updated the footer widget screenshot in the README to match the reworked bar. - README brought in line with the current release: footer line-4 documentation rewritten for the new averages format and the /aftc-footer menu, the removed /aftc-set-costs-timeframe row dropped from the command tables, codex stage labels made consistent (BETA everywhere), the shipped codex topic count corrected to 59, and a handful of typos fixed. - aftc-codex seed updated with what your live codex learned: 5 new entries ported into the aftc-framework, css, html and puppeteer resources (they reach users via a fresh install / Start Fresh). - aftc-codex: the /codex-learn instruction prompt has been rewritten to be shorter and plainer for weaker models. It now spells out that loading an existing topic IS the duplicate check (amend or skip a lesson that exists in any wording — never add a near-duplicate), that new topics need no prior load, and that a refused write means load-and-retry, never drop the lesson. Implementation details the entry tools enforce themselves (IDs, formatting, section placement, live-vs-seed target, date stamps) were removed from the prompt. - Footer dashboard: /aftc-footer now opens a settings menu instead of toggling directly — Enable footer (ON/OFF), Show recorded averages (ON/OFF, hides or shows the line-4 averages), and Set averages timeframe (current choice shown in the menu; Enter opens a picker). The old /aftc-set-costs-timeframe and /aftc-footer-report-timeframe commands were removed. The timeframe picker offers 19 windows: ten rolling "Last ..." windows (1, 2, 3, 4, 5, 6, 12, 24, 48 and 72 hours — always measured back from your current time) and nine calendar-anchored windows (1 Day = since midnight, 2/3/5/7 Days = calendar days including today, Month / 3 Months / 6 Months = since the 1st of the month, 1 Year = since January 1st). Old timeframe choices are migrated automatically (Today -> 1 Day, Last 28 Days -> Month). - Footer dashboard: the 4th line (long-term averages) has been reworked. It is now prefixed with the chosen time window (eg "3 Hour Averages:", "Today Averages:", "7 Day Averages:") and shows: total cost (proper money formatting — $0.00 / 4 decimals under $1 / 2 decimals / thousands separators at $1,000+), the window's prompt SUMS (User and AI, where AI counts tool-call continuation turns), average cache hit %, and the new Avg Task Time — the average wall-clock of completed tasks in the window (failed/aborted tasks excluded, matching the usage report). The old average think/response time segments were removed from this line (they remain on line 3 for the current session). - aftc-codex seed updated with what your live codex learned: new resource topics for xterm.js and uv, plus 20 new entries across the design-common, css, javascript, pytorch, nodejs, electron and git resources (they reach users via a fresh install / Start Fresh). Also removed two old miscategorised entries from codex-rules.md (visual-acceptance process guidance belongs in thought-and-action-guidance.md, where it already lives). - Audio notifications: new context-window usage alerts. Three new sound categories warn you as the context window fills up: usage crossing 25%, 50% or 75% (checked after every assistant message via pi's own context estimate, so mid-task crossings are caught when they happen). Each threshold has its own picker in /aftc-notifications (NONE by default; the shipped warning MP3s now live in context-window/25, /50 and /75 subfolders so each picker lists only its own set), fires once on the upward crossing, and re-arms when usage drops back below the threshold (e.g. after compaction) so it can warn you again. One message jumping several thresholds plays only the highest one. Updates v1.17.x --------------- - aftc-codex: new codex entry tools — codex_add_entry, codex_edit_entry and codex_remove_entry make every knowledge-base write deterministic. Entry [ID]s are now generated by the tool (no more model-invented or missing IDs), the three entry-kind formats are validated on every write, entries land under the correct section automatically, new topic files (three-section skeleton) and new category folders are created on demand, and the resource list regenerates internally when a topic is created — the model no longer hand-edits resource files or runs the sync script via bash. Safety guards: a topic must be codex_load-ed in the session before the tools will modify it (stale-content guard), exact duplicates are rejected, the fixed top-level docs (rules/guidance/markdown) are refused, and all writes are atomic. /aftc-codex-learn and the codex rules now teach this tool-based flow; codex_add_entry accepts a batch of entries in one call. - aftc-codex: much wider project auto-detection — C++ (cpp), C#/.NET (cs, .sln, .csproj), Blazor (.razor + .csproj content), MAUI (.csproj content), Rust (rs), Java, Twig, bash, batch, WiX, JUCE (CMakeLists content), CMake, Deno, nginx, Apache, MySQL (compose images), Electron, Shoelace and Node.js are now detected alongside the existing maps. Detected topics with no resource file yet are named separately in the marker as "no codex resource yet" bootstrap hints instead of being silently dropped. Design domains now imply design-common (and mysql implies database-common) so the shared resources load too. - aftc-codex: projects can now pin their stack for detection with an `` block in AGENTS.md / CLAUDE.md / .github/copilot-instructions.md / GEMINI.md / .cursorrules / .windsurfrules — the only detection path for design domains (web-app, desktop-app, ...) and target OS, and it doubles as manual pinning. The codex rules teach the model to create and maintain the block; a strict whole-word keyword scan of those files (with an ambiguity stoplist) picks up unpinned mentions. - aftc-codex: new os/ resource category — os/windows.md (moved from tools/), plus new os/linux.md and os/osx.md; os entries must name their scope (distro family, mac arch, Windows version) per the updated rules. - aftc-codex: new /codex-rules-only command — a per-session rules-only mode: just the Critical Global Rules section rides the system prompt, with no docs, resource list, guidance, marker, learn or /codex-init ceremony, for when you want the common do-nots without the full knowledge base. It lives in session state only (no config setting, works even with codex disabled, survives /reload); /codex-init, /codex-refresh and /codex-learn refuse while it is active, and starting a new session clears it — /new + /codex-init is the way back to the full codex. - aftc-codex: codex_load on an empty resource (headings, no entries) now returns a one-line "no entries yet" answer instead of the file content. Updates v1.16.x --------------- - aftc-codex seed updated with what your live codex learned: new resource topics for electron and shoelace, plus 20 new entries across the css, html, javascript, php, pinescript, scss, bash, docker, mysql, powershell and vite resources (they reach users via a fresh install / Start Fresh). - aftc-codex seed updated with what your live codex learned: new resource topics for git, nginx and vsftpd, plus 8 new entries across the aftc-framework, css, php, pytorch, docker, headless-chrome and puppeteer resources (they reach users via a fresh install / Start Fresh). pi 0.83 compatibility verified (the TypeBox 1.3.7 breaking changes do not affect this extension). - aftc-codex auto-detection fixes: `.scss` files now suggest the scss resource (they were mapped to css, so scss.md was never auto-loaded); EVERY package.json in the project tree is now parsed (not just the root), including a word-boundary scan of scripts keys/values so tools that only appear in run scripts ("dev": "vite", "build": "webpack ...", "start": "bun run ...") are detected; bun is found via the modern bun.lock lockfile (only bun.lockb/bunfig.toml were covered); and a project containing an aftc-framework/ folder now suggests the aftc-framework resource. - /codex-install no longer asks for confirmation when your live codex version differs from the shipped one — the mismatch guard sent you there, so typing the command is the confirmation and the wipe + fresh re-install just runs (headless included). The confirmation modal still appears when the versions match (a destructive re-install you don't need). - bulk-read skill fixed for large projects: the helper (now `scripts/bulk-read.mjs`) reports the output's exact line count and size, and prints a loud WARNING when the result exceeds a single read (pi's read tool truncates at 2000 lines / 50 KB) with chunked offset/limit read instructions — previously a big run produced a 1 MB+ file that the agent could only ever see a small truncated slice of, silently analysing a fraction of the files. SKILL.md now documents the chunk-reading protocol. - Config files are now read fresh from disk on every access — no in-memory cache. Hand-editing config.json while pi runs takes effect immediately (previously a stale cache survived /new, so your edits were invisible until a full restart and the next settings change could silently revert them; this is what hid a manually reset aftcCodexVersion from the codex version-mismatch guard). setPreference is now a fresh read-modify-write, so edits made outside pi are never clobbered. The package-shipped config was renamed data/config.json -> data/extension-config.json to end the mix-up with your live config.json; the full contract lives in the new docs/working-with-config.md. - aftc-codex: /codex-sync removed (the seed→live merge didn't handle the current structure) along with the Re-Seed Resources and Sync Codex Resources menu options — the /codex → Resources & Updates menu is now just Start Fresh + Open Codex Resource Dir. Start Fresh (new description: "Wipe users codex files and start fresh") now truly deletes the WHOLE live codex dir and installs a full fresh copy of the shipped seed — previously it wiped resources/ but re-seeded rules+guidance only, leaving resources empty. Format-mismatch recovery (central guard, codex_load, fresh-session NOTICE) now points at /codex-install, and codex-merge.ts was slimmed to codex-compat.ts (version guard only). - aftc-codex: new scss seed resource — modularisation rules for non-trivial SCSS projects (manifest-only index.scss with @use, includes → template → components → pages folder split, one file per page, co-located media queries, CSS custom property theming) plus @use/cascade gotchas; the cascade-comparison entry moved from css.md into it. Load with codex_load("scss"); run /codex-sync to pull it into your live copy. - aftc-codex: resource entries now live under three typed sections — ## Rules (single-line conventions we enforce), ## Gotchyas (single-line technology traps that must state the trap AND the countermeasure) and ## Issues & Solutions (the existing symptom/Cause/Fix format, the only dated kind). codex-rules.md and the /aftc-codex-learn prompt teach a strict three-question classification so weaker models file entries correctly; /codex-sync now inserts new shipped entries into the matching section of your files; every seed resource doc was restructured. Also fixed: runtimes/ was missing from the category list (counts, read tracking, ensure-entry-ids). - aftc-codex: format versioning with wipe-on-mismatch. The shipped codex carries a codexVersion in the new package config (data/config.json); your live copy's version is recorded in config.json (aftcCodexVersion). A central guard (ctx.checkCompat()) pauses injection, codex_load and the codex commands when they differ; /codex-sync then wipes the live codex and installs a full fresh copy of the seed (no backup), unblocking everything. An unseeded/first-time install is never blocked, and an unknown seed version fails soft (never wipes). - New: /qd quick dir access menu ("AFTC Quick Dir Access") — open the users data dir, the .pi dir, or the pi-aftc-toolset dir in your OS file manager, cross-platform. Replaces /aftc-open-data-dir and /aftc-odd, which are removed — menu option 1 is the same action. - New: cut the whole input editor to the clipboard with Alt+X (or /aftc-cut-input). Uses pi's own cross-platform clipboard writer (native, clip/pbcopy/wl-copy/xclip/xsel, OSC 52 for remote sessions); the editor is only cleared after the copy succeeds, so a failed copy never loses your text. Updates v1.15.x --------------- - Removed aftc-deep-thought entirely (module, docs, tests, preferences). - Footer allowance line fix: the 5-hour segment no longer flickers off. When a provider response omits the 5-hour window (seen with Kimi), the last good window is kept until its reset time passes instead of the segment vanishing for a refresh cycle. - New: help registry. /aftc-help is now generated from a live registry that each module feeds next to its command registration, so the help screen always matches the real commands (drift fails the test suite). Also added the previously missing /aftc-footer-report-timeframe alias entry. - Housekeeping: module companion docs renamed from *.readme.md to *-readme.md, stale internal doc references cleaned up. Updates v1.14.x --------------- - aftc-codex redesign: codex-rules.md, markdown-guidance.md, AND thought-and-action-guidance.md are all FIXED maintainer docs — /codex-sync now force-overwrites all three from the shipped seed so updates always reach you, and /aftc-codex-learn no longer writes to them (it records TECH gotchas into resources/ only). The out-of-sync notice is generalised: any content drift in the fixed docs (not just missing files) triggers the "run /codex-sync" warning. Also fixed codex-rules.md typos, split a run-on rule, and clarified (in three places) that thought-and-action-guidance.md uses prose leads with NO [ID]s. - New feature: aftc-console — one centralised console-output module (ui/aftc-console.ts). Every feature now writes transcript messages through aftcConsole.emphasis (accent/emphasis colour for status, success, and state changes — the colour ctx.ui.notify could not produce), aftcConsole.warn (yellow), aftcConsole.error (red), and aftcConsole.info (dim); load/diagnostic stdout goes through aftcConsole.log ("[aftc-toolset]" prefix). Wired once via aftcConsole.init(pi) in the orchestrator. The old ad-hoc / per-feature notify calls and the throwaway ssh/info-entry.ts are gone. See docs/aftc-console-documentation.md. - Renamed ui/aftcUi.ts -> ui/aftc-ui.ts and docs/aftc-ui-dialogs.md -> docs/aftc-ui-documentation.md (kebab-case file names); all importers and references updated. Exported identifiers (AftcUi, AftcPalette, etc.) are unchanged. - SSH command output now uses the theme accent (emphasis) colour. Status, success, and state-change messages from /ssh-* commands (e.g. /ssh-status, /ssh-connect, transfers, shell/interrupt confirmations, and the connection manager's saved/updated/deleted notices) render in the accent colour instead of the warning yellow or dim info they used before. Genuine warnings (no session connected, missing args, not a file) and failures stay yellow/red. This needed a new accent-coloured transcript entry because ctx.ui.notify only supports info/warning/error, none of which is the accent colour. Updates v1.13.x --------------- - aftc-codex: out-of-sync notice on the fresh-session prep box. When your live knowledge base is behind the shipped package resources (a new file or new [ID] entries you don't have yet), the "AFTC CODEX" notice shown on /new gains a white line: "NOTICE: Your AFTC codex resources are out of sync with the latest resource, run /codex-sync". Your own entries and edits never trigger it. - aftc-codex: new /aftc-codex-sync command (alias /codex-sync). Merges package updates into your live knowledge base without losing your own additions: missing top-level files and seed-only resource files are copied over, and any shipped entry whose [ID] is missing from one of your resource docs is appended to it. Your entries always win - an [ID] you already have (even if you edited its text) is never touched, and your own files/folders are left alone. The resource list is always regenerated afterwards. Run it after updating pi-aftc-toolset to pick up new shipped gotchas. Also available from the config menu: /aftc-codex > Resources & Updates > Sync Codex Resources. - Audio notifications: master on/off + sensible shipped defaults. /aftc-notifications gains an "Enabled" toggle row and the feature is OFF by default for fresh installs - nothing plays until you switch it on. When enabled, the pre-configured sounds are sensible shipped picks (question: voc_question_07, task complete: voc_task_complete_07 with a 1s threshold, error: voc_we_got_a_problem_01, startup: xp, aborted: none) instead of all-none. Your existing settings are never touched: the config migration only ADDS missing keys - if you already had sounds configured the feature stays ON and your choices (and your saved /replay prompt) are preserved exactly; the saved replay prompt remains empty by default and is only ever written by an explicit /save-replay-prompt. - aftc-codex seed fix: real Deno and Node.js resource docs. The shipped seed's runtimes/deno.md and runtimes/nodejs.md were placeholders containing only "# Bun"; they now carry the real curated entries (identical to the live data-dir copies), so a re-seed, Start Fresh or re-install restores the real docs instead of clobbering them with stubs. - aftc-codex sync / update / root removed; codex is now a strict one-way copy. The /aftc-codex-sync, /aftc-codex-update and /aftc-codex-root commands (and their /codex-* aliases) are gone, together with all the 3-way drift / .sync.json / backup / merge-by-ID machinery behind them and the aftcCodexRoot preference (the codex root is now always the data-dir copy). The codex is a strict one-way copy from the shipped seed to your live data-dir folder: your live edits (e.g. via /aftc-codex-learn) are never auto-overwritten and there is no merge step. The Resources menu keeps Re-Seed and Start Fresh (now 'Clear and restore default codex resources' - it wipes the live copy and re-copies the seed with no backup, so it is irreversible) and gains Open Codex Resource Dir (opens the live resources/ folder in your file manager). /aftc-codex-learn, codex_load, the rules + guidance injection, auto-detect and ensure-IDs are unchanged - learning issues and solutions into the resource docs with unique IDs is still the whole point. - aftc-codex Resources menu simplified. The /aftc-codex Resources & updates menu no longer shows Sync / Merge Updates, View Resource List or View a Resource - those were maintainer/dev affordances, not user ones, and the sync/merge feature has been removed entirely. In their place is Open Codex Resource Dir, which opens your live resources/ folder in the OS file manager (explorer.exe on Windows, open on macOS, xdg-open on Linux). Start Fresh now reads "Clear and restore default codex resources" and simply wipes your resources and re-copies the shipped defaults (then regenerates codex-resource-list.md) - it no longer takes a backup, so it is irreversible. - aftc-codex thought harvest removed. The optional thought-harvest feature (recording the model's reasoning to a private thought-log/) has been removed from aftc-codex: the Thought Harvest menu toggle and the aftcCodexThoughtLog preference are gone, and codex-learn.ts now owns only the /aftc-codex-learn self-education loop. Nothing else changes - codex enable/disable, guidance injection, auto-load, sync/merge and -learn all work as before. Any existing thought-log/ folder in your data dir is left untouched; delete it manually if you want it gone. - Usage report - Task Time everywhere + new Timings tab. The usage report now analyses Task Time (the wall-clock time from when you press enter to when the AI fully returns control, across all of a prompt's tool-call turns). Each period card (24h / 7d / 28d) gains an Avg task time scoreboard row and excludes $0 (subscription) models from the COST rows only (Cheapest / Most costly) - usage, cache and timing rows keep them, so a subscription-only day still shows its real response / think / cache figures; every row is always present, and any row that cannot be computed stays visible as N/A with a tooltip explaining why; the Models and Thinking levels tables gain a Task Time column (info icon explains the metric); and Projections drops zero-cost models entirely. The new Timings tab (before Projections) is built around the tasks table: avg / longest task, turns per task, error and abort counts, task-time-by-model and daily task-time charts, a thinking / responding / tools-and-overhead breakdown of where the time goes, user-prompt vs AI turn timings, and the top-10 longest tasks. To make the error counts real, failed tasks (error / abort) are now recorded to the tasks table too, with their time-to-failure - they are counted but never averaged into Task Time (averages stay completed-only, superseding the earlier "isn't recorded" note above). /usage-clear now clears both tables. Money formatting tiers were also simplified: $1 to $1,000 now always shows two decimals ($4.10, $310.40 - $100-$999 no longer rounds to whole dollars), $1,000+ stays whole with thousands separators. - Footer "Task Time" metric. Line 2 of the footer now shows Task Time - the wall-clock time from when you press enter to when the AI fully returns control (one prompt's complete agent run, across all its tool-call turns), formatted like Session Time. It ticks live while the AI works, then holds the last task's duration. An error/abort stops the timer and shows the time to that point but is not recorded (a failed duration is not a useful metric); completed tasks are recorded to a new tasks table in the usage database (duration, stop reason, model, thinking level, turn count) ready for the usage report. It keeps running through questions, steering, retries and compaction. Distinct from the existing per-turn Turn Time and the whole-session Session Time. - New run_script tool - reliable large-script execution. Works around a pi bash-tool bug that silently truncates large inline commands (the first part runs, the rest is dropped, with no error). The model now hands the whole script to run_script, which writes it to a temp file and runs it with bash - no inline-size limit, so multi-line / large scripts run to completion every time. The model uses it automatically for any multi-line or large script (short one-liners still go to the bash tool). Bash only (git-bash on Windows). Because it is a workaround for an upstream bug, it disables cleanly: /run-script-off then /reload (and /run-script-on to re-enable). Updates v1.12.x --------------- - aftc-codex self-education hardened against runaway deliberation. /aftc-codex-learn (and spontaneous lesson recording) now spends far less effort second-guessing itself: the entry format is canonicalised (every new entry carries a short [ID], ending the old ID-vs-no-ID ambiguity), the rules and the learn prompt now state plainly that you write to the live copy in your OS data dir (the package seed is read-only), routing is "pick the best-fit file and move on", and new thinking-guidance rules tell the model to commit to a decision once, match the nearest example for ambiguous style, switch approach instead of theorising when a tool fails, and report an empty result honestly rather than pad. Adds a tools/bash.md resource (the stdin/heredoc partial-execution gotcha). - Usage-report money formatting + pie legend clean-up. Every money value in the report now goes through the tiered formatter (4 decimal places below $1, whole dollars at $100+, thousands separators at every magnitude - $1,179, $18,021, $1,000,000) including the chart axis ticks, which previously showed raw values like $1179. The cost-share pie chart legend no longer lists models with a 0.0% share (invisible slices, pure clutter). - Usage-report period scoreboard fixed. The per-model scoreboard rows in the 24h / 7d / 28d period cards on the Overview tab now always show a value after the model name: Cheapest / Most costly model show the average cost per turn (formatted with the money tiers - 4 decimal places below $1, whole dollars at $100+, thousands separators like $1,000), and Most / Least used model show their prompt counts. - Startup intro simplified. The AFTC text intro now runs on its own, wired directly (as it was originally - rock solid). The experimental WarGames intro and the intro factory have been disconnected (files kept in the package, dormant). /aftc-intro-on / /aftc-intro-off work exactly as before. - New aftc-codex knowledge base (opt-in). A new off-by-default feature injects a curated knowledge base - unified coding rules, thinking-and-action guidance, and a generated resource list - into the model's system prompt, and gives the model a codex_load tool to fetch topic docs (TypeScript, Python, Docker, Three.js, Godot, and ~27 more) on demand. Enable with /codex-enable, initialise with /codex-init, configure everything through the /aftc-codex menu. It auto-detects your project's technologies, can record durable lessons back into the knowledge base (/aftc-codex-learn), and updates safely with a backed-up, model-assisted merge (/aftc-codex-sync) that never overwrites your edits. Your knowledge base lives in your OS user profile, so it survives pi update. See the README section "aftc-codex (knowledge base)". - New /aftc-open-data-dir command (alias /aftc-odd). Opens the pi-aftc-toolset data directory (where your usage history, config, SSH connections, and codex knowledge base live) in your OS file manager. Works on Windows (explorer.exe), Linux (xdg-open), and macOS (open). Updates v1.11.x --------------- - Period summary scoreboard + smarter money formatting. Each period card (24h / 7d / 28d) now shows a per-model scoreboard: cheapest/most costly model, most/least used model, best/worst cache hit, best/worst response time, best/worst think time. Money values now use intelligent decimal tiers (4dp below $1, 3dp below $5, 2dp below $100, whole numbers at $100+) with thousands separators. The old "Top model" line is gone - the pie chart legend carries share % instead. - Usage-report pie chart improvements. The "Cost share by model" legend now shows each model's percentage (for example gpt-5 (42.3%)), slice colours are now clearly distinct from each other, the chart is slightly wider to fit the extra legend text, and it no longer overflows the page (forcing a horizontal scrollbar) after you shrink and re-expand the browser window. - Your data now survives updates. Usage history (turns.db), preferences, saved SSH connections and the replay prompt are now stored in your OS user profile (for example %APPDATA%\pi-aftc-toolset\data on Windows, ~/.local/share/pi-aftc-toolset/data on Linux, ~/Library/Application Support/pi-aftc-toolset/data on macOS) instead of inside the install folder, so pi update --extensions no longer wipes them. Upgrading from an older version moves any data still present in the old install-folder location over automatically on first run. (Data already lost to a previous update cannot be recovered.) Updates v1.10.x --------------- - New keyboard shortcut hub. All shortcuts now live in one place. New Alt+N inserts a newline at the cursor for better multi-line prompt formatting, and Alt+C still clears the editor. The QwenCloud provider module is temporarily disabled because pi now registers providers natively - it stays in the package and can be re-enabled if needed. Updates v1.9.x -------------- - Usage Report rebuilt and now in BETA. The report is now a clean tabbed page (Overview / Models / Thinking levels / Projections). Just use slash command /usage-report and your browser should open showing your usage report. See the README Usage report section for further information. Updates v1.8.x -------------- - Usage Report rebuilt and now in BETA. The HTML report is now a clean tabbed page (Overview / Models / Thinking levels / Projections). - Footer line 5 now supports Kimi for Coding. With Kimi as the active model, the footer shows your 5-hour and weekly Kimi subscription usage with live reset countdowns (the same numbers kimi.com shows), refreshed after each prompt and every few minutes during long-running ones. - AFTC UI suite - replacement for user input screens. Now ships the full interactive layer. The old pi dialogues appeared in the middle of the terminal and were hard to read and distinguish from TUI output. - New bundled ssh skill. Load it with /skill:ssh for full model-facing guidance on driving the SSH feature from inside pi: routing non-interactive commands to ssh_run, interactive programs (Nano, Vi, htop, tmux) to the PTY shell tools, file work to the SFTP tools, and the privacy model that keeps credentials and endpoints out of the model context. - New fully featured SSH capabilities (with sftp). A packaged Paramiko carrier talks JSON-RPC over local stdio with no socket, HTTP service, or GUI bridge. Capabilities: - Multiple simultaneous in-memory connections; password and private-key (including encrypted-key) authentication; session-only host-key approval. - Non-interactive commands with bounded standard input; interactive PTY shells (Nano, Vi, htop, tmux) through a local terminal overlay and model tools. - Recursive SFTP upload and download with optional --preserve, chunked and cancellable transfers with live progress; remote list, stat, read, write, mkdir, rename, and remove. - Local (-L), remote (-R), and dynamic SOCKS5 (-D) port forwarding, local-command-only so endpoints stay out of the model context. - Credential isolation: the model only ever sees opaque session and shell ids; credentials are memory-only and cleared after each attempt; all output is bounded and redacted; saved records hold non-secret metadata only. - Built and tested on Windows and Linux against a Docker OpenSSH fixture, and integrated. - Deleted all SSH features. Yep, they are gone, in the bin. But there is another jedi, see above. - Restored the subscription-allowance footer line. A Pi compatibility regression in optional credential metadata handling broke some things; it should now work again for zai, minimax and gpt subscriptions.