Skip to content

Clio Coder 0.4.7

Choose a tag to compare

@github-actions github-actions released this 11 Sep 01:25
· 528 commits to main since this release

This release brings a unified Library for reusable workflows, operator extensions, safer keyboard and draft handling, and a compact welcome header. Native workers retain configured output limits and interrupted reasoning, and the guides describe the shipped behavior and its verification limits.

Added

  • Add optional operator extension runtimes with declared namespaced slash commands, bounded session/turn observations, additive footer status, host-rendered panels and an explicit headless extensions run path. Verified private package copies run in disposable Node processes with readiness, cancellation, scope/digest revocation and idle reload; existing tools, hooks and frozen model schemas retain their admission contracts.
  • Ship local experiment-status and measurement-summary extension examples with explicitly synthetic demonstration evidence, narrow author types, real process lifecycle contracts and installed-package verification.
  • Add context(scope="library"), a read-only projection of the shared recipe inventory with bounded kind, query and ref selection and limit/offset pages. Rows are tagged: a loaded resource carries its actual runtime name, owning package or source class, scope, origin evidence and working invocation; a catalog hint names its installable owner and that member's honest state and is never invocable; a package row is the install target with its installed copies and bounded provides hints. The model audience hides internal and shadow agents, untrusted and unavailable resources, instruction bodies and recipe paths; a native worker registry gets a clear unavailable read instead of the global library. The scope activates, installs, registers and pins nothing, reserves its observation budget before any discovery, and fits each page to the remaining budget rather than returning a stub (tests/contracts/library-context.test.ts).
  • Unify installable plugins, skills, agents, prompts and fleets as library packages with one manifest, exact version, full-tree pin, structured origin and scoped lifecycle. Add registration, a five-kind Library overlay and named package eval suites; Materio declares an offline Python contract suite.
  • Discover the big five coding agents' user and project resources with inventory-derived counts, restore /interop, and add approved data-only library adoption with foreign origin, trust, digest rechecks, duplicate detection, and WTF-P Claude portable bundle support.
  • Prompt templates can declare display-only: true in their frontmatter. Submitting such a command renders the template body locally as an operator card in the transcript, headed by the command name and its source package, and sends nothing to the model: no turn, no session entry, no tokens. The card shows the first fenced block when there is one, wraps to the terminal width without truncation, and headless clio-coder run prints it to stdout and exits 0 before boot. Autocomplete and /library prompts mark these templates reference (tests/contracts/prompt-display-only.test.ts).
  • Prompt templates from user, project, and installed plugin roots now appear in the composer's slash autocomplete as namespaced commands such as /materio:help and /wtfp:new-paper, with their description and argument-hint, listed after the built-in commands so no template can shadow one. The list is read live, so /library reload or a new installation shows up without restarting (tests/contracts/slash-autocomplete.test.ts).
  • Add a distinct agent plugin engine using the portable Agent Plugins 1.0.0 manifest, explicit component references, native Clio resource projections, isolated install state, full-tree integrity, staged replacement and recovery of changed files.
  • Add plugin catalog listing, installation previews, pinned local and GitHub bundle installation, updates, removal, enable/disable, drift inspection and pin verification through the CLI and terminal library.
  • Ship the Materio (materio) materials research plugin with researcher interviews, supplied-paper literature review, lab feasibility, task planning, execution and verification artifacts, archive checkpoints, conservative scientific checks, and a text handoff into WTF-P's public actions. Include peer package export for Codex, Claude Code and Gemini.
  • Add harness extensions for contained Node.js and Python command tools with JSON contracts, mediated execution, collision protection, provenance and lifecycle revocation.

Changed

  • Replace the welcome panel with a compact three-row header that shows the configured route and the next useful action. Keep early input available during startup, read project-context state outside rendering, and use a live collapsed header when resuming, forking or handing off a session.
  • Refresh the guides and visual references for the shipped Library, extensions, keyboard controls, welcome header, context retention and layered worker output settings.
  • Adopt a smaller keyboard map with a persistent contextual Ctrl+G menu, Ctrl+Q follow-up, Alt+Q recovery, Ctrl+R fullscreen search and restored Alt+B/D and Home/End editing. Preserve explicit overrides and make [] disabling and live reload effective. Isolate release/repeat, search, review and permission input; keep pasted commands literal and newer drafts safe through asynchronous sends and external editing. Add /background, /interrupt, /editor and /notifications dismiss command bridges. Bundle the pinned Pi compatibility patch for ordinary npm consumers.
  • Rebuild the Library as one coherent operator browser over the shared recipe inventory. Five categories (Skills, Agents, Prompts, Fleets, Plugins), a Browse or Installed mode and a selected user or project scope stay on a visible status row at every width, including on an empty category. Browse lists install targets and finds a bundle through its catalog hints; Installed lists the recipes the loaders actually see plus any copy that failed to provide one. Origin (Bundled with Clio-Coder, Remote, Local, Imported from <agent>, Core), vendor format, trust, scope, integrity and availability are separate columns rather than one opaque code. A package opens its members instead of routing back to its own tab, and a member's install or removal identifies its whole owner in the selected scope. Core and loose recipes carry no package lifecycle and say why; an unavailable recipe offers no use action. Capped inventory results are reported as incomplete rather than drawn as an absent package. Every managed change goes through a reviewed plan that states the operation, scope, identity, dependencies, reverse dependencies, resulting fallback and recovery; cancelling releases the staged source and writes nothing, and the outcome reports committed, failed and unattempted work with disk state, resource admission and session refresh as separate facts. Retrying the refresh never repeats a write (tests/contracts/library-browser.test.ts).
  • /library gains reviewed inspect, install, remove and import forms that open the same browser on the named reference or source; nothing is written before that review. /library import <path-or-url> reviews the exact source given, with its projected resources, unsupported host features and omitted files, while the Library's o key remains the separate local-agent discovery route. The separate /agents and /prompts list overlays are removed now that the Library covers both.
  • Reorganize shareable packages into canonical library/ kind directories (library/skills/, library/plugins/) with a single source entry point, preserving five package kinds, the portable package engine, and the bundled npm index while keeping built-in core agent recipes and baseline fleets product-owned.
  • Use clio-coder library and /library for package management; remove top-level plugins, top-level skills and /resources. Keep /skill activation and move experimental skill scenarios to clio-coder eval skill. Recognized model shell package mutations remain operator-only.
  • Preserve committed interview answers when a draft edit is discarded, keep oversized option details scrollable, retain compact template presentation when queued, and display complete install paths, digests and fleet arguments during approval.
  • Redraw the ask_user interview as one box above the composer that sizes itself to the round: the question renders first with bold spans and hanging numbered lists, every option shows its whole description, the round strip names every question, earlier answers fold to one row (a opens them), and the tier, effect, and reversibility copy sits behind ?. An option whose label says the operator will type ("Provided details", "I'll describe", "Other") opens a multi-line answer field on Enter instead of recording the bare label. Nothing in the box is ellipsized; a question longer than the box scrolls with PgUp/PgDn while its options stay on screen (tests/contracts/ask-user-layout.test.ts at 80, 120, and 160 columns).
  • Fold the permission card's standing approval terms (approval, consequence, reversibility, deny, stop, hard-block) behind ?, so the card leads with the call: tool and action, the target folded in full under its label instead of ellipsized, the mutation size and digest, and who asked, followed by one row that says what allow, deny, and stop do (tests/contracts/permission-card-layout.test.ts).
  • Paint a submitted prompt template as the line the operator typed, with a dim note naming the template and its length, instead of the expanded body; the model still receives the body unchanged (tests/contracts/prompt-template-turn.test.ts).
  • Record each answered ask_user round in the transcript as the question headers and the answers, so the interview reads back after the overlay closes instead of leaving ▸ tool action {"action":"ask",… rows alone (tests/contracts/interview-record.test.ts).
  • Mark a settled worker whose answer starts needs_input:, task_blocked, or ## CHECKPOINT REACHED as needs input on its folded transcript row and keep its questions on that row (up to 16) whatever the transcript preset folds of an ordinary answer (tests/contracts/worker-checkpoint.test.ts).
  • Collapse the harness extension manifest to one shape: id, name, version, description, optional capabilities.tools[] and compatibility.clio. There is no version discriminator. A manifest declaring resources, prompts, skills, agents, fleets or themes is refused with a diagnostic naming clio-coder library install. A package whose only contribution is a root hooks.yaml stays valid.
  • Resolve contained package paths and explicit component references consistently in prompts, skills and agent recipes. Reload plugin resources independently from harness tool schemas.
  • Allow declared arguments on registered fleet code steps and retain them in previews, plans and execution.
  • Protect installed plugin and harness-extension trees and lifecycle commands as operator-owned resources. Include complete plugin pins in lint and shipped package verification.

Fixed

  • Allow the hosted Ubuntu release gate 15 minutes, matching the tag-release workflow, so the expanded contract, smoke and package checks can finish before the job deadline.
  • Preserve trusted project and local output-token settings in native workers, with safe fallback when workspace settings are untrusted or changed. Retain private reasoning-only length responses for bounded same-model continuation without moving private reasoning into visible message content.
  • Record native Materio verification limits explicitly: synthetic examples, offline contracts and advisory reviews do not establish completion of the full scientific writing pipeline.
  • Keep trusted Library skills visible when an untrusted compatibility copy has the same name, and explain trust or manual-activation restrictions on named skill loads.
  • Align plugin and harness guides with the canonical Library and /extensions routes, and verify independent recipe/runtime lifecycles with bundled Materio, scientific extensions and foreign imports.
  • Finish the Clio Coder filesystem namespace cleanup: generated scratch paths and temporary directories use clio-coder, trace examples and fleet documentation use canonical paths and branch names, and lint guards against stale project-state paths.
  • Verify every bundled library package and subagent skill binding from the installed npm package, document the in-repository marketplace sources, and correct agent-list help to name plugin recipes.
  • Handle /skill off before skill expansion on direct interactive chat admission, so it clears the active tool surface without looking up or installing a skill named off.

Removed

  • Remove extension-owned prompt, skill, agent, fleet and theme roots. Library packages are the only source of packaged resources, and /library reload is the only resource reload path. Extensions keep command tools, hooks.yaml, install integrity, enable/disable, compatibility ranges and worker attestation.
  • Remove the 2026-09-01-extension-install-digests lifecycle migration and the clio-coder upgrade blessing of pre-digest extension install records. An install record without a content digest now fails closed with reinstall guidance.