Skip to content

v0.234.0

Choose a tag to compare

@github-actions github-actions released this 09 Nov 02:52
· 134 commits to main since this release
df81709

This release lets an agent build a design mockup and hand you a browser link to it, adds collection-level controls to knowledge, and fixes a memory regression from v0.232.0.

Design mockups you can open in a browser

  • open_artifact now works for rendered artifacts (HTML, React, Markdown, Mermaid, SVG and Vega-Lite), not just saved files. It gives you a short-lived, signed link that opens the artifact as its own page in a browser tab, themed from ?theme=light|dark or your OS setting. The page keeps the artifact's sandbox and never calls the agent's API. Links last 30 minutes.
  • A new design-mockups skill teaches the agent to build a reviewable screen preview: real data, design-system components only, a toolbar to switch theme, desktop/phone width and every UI state, and a layout check that fails the render if anything spills past 1440 or 390 px.

Knowledge by collection

  • New API routes list knowledge by collection (GET /api/knowledge/collections), scope search to one collection (?collection=), and delete or restore a whole collection within the existing 24-hour grace window. The console view for this comes in a later release.

Memory and standing instructions

  • Asking "what did I do today, from the log" reaches your memories again (#4918). v0.232.0's tool rename had dropped that wording from memory_list, so the agent answered from activity totals instead.
  • Withdrawing a standing instruction from the console or the API now leaves a "You withdrew: …" note in the chat, recorded as your own message. Compaction therefore keeps the withdrawal next to the original approval (#4861).

For plugin authors and operators

  • protoagent plugin check <dir> [--json] statically lints a plugin: event names against the manifest, unserved public paths, view publish topics, tools without a skill, and known registration mistakes (#4809).
  • Per-role generation profiles, foundation slices (ADR 0128). You can define named profiles under model.profiles in config, and subagents.<name> can now set a model, profile, tools and turn limits for any built-in or plugin subagent. No profiles ship by default, so behaviour is unchanged until you add one. Subagent usage now records the finish reason, visible-text length, tool use and reasoning tokens, plus an llm_empty_completions_total metric.
  • The nightly memory evals match the memory policy: a status note ("standup just ended") is expected NOT to become a memory, and a durable fact still is (#4919). New on-demand memory-retrieval eval tooling is included (#4897); it is not part of the nightly gate.
  • The desktop "Install Command-Line Tool" dialog uses plain wording (#4903).

Upgrading

  • No config changes are required. If you define generation profiles, the key is model.profiles in your config file.
  • open_artifact links for rendered artifacts are new public routes under /plugins/artifact/media/…. They are protected by a signed ticket and expire after 30 minutes.

What's Changed

  • docs(design): approved spec for the directive-ledger console view (#4861) by @mabry1985 in #4896
  • docs(adr): 0128 generation profiles: per-role output, reasoning and context budgets (#4875) by @mabry1985 in #4899
  • feat: Directive ledger (2-pre, console): move formatTimestamp from app/tasks.ts to lib/format.ts and add the "7 Nov at 17:14" older-date form (#4861) by @mabry1985 in #4901
  • feat: Directive ledger (1/2, server): an operator withdraw via DELETE …/directives/{id} appends an operator-originated "You withdrew: …" note to the chat transcript, so compaction carries it next to the original approval (#4861) by @mabry1985 in #4900
  • docs(memory): search_scoped docstring in graph/projection.py names memory_search, not the removed memory_recall (#4630 close-out) by @mabry1985 in #4904
  • feat: Memory eval (1/3): PersonalizationV4 fixture builder — extract PV4 chats into frozen memory stores by @mabry1985 in #4902
  • fix(desktop): Install Command-Line Tool dialog reads as plain copy by @mabry1985 in #4903
  • feat: Directive ledger (2a/2c, console data): useDirectives(sessionId) hook + list/revoke API helpers + uiStore openDirectives request; refreshes on directive.changed and reconnect, no polling; nothing rendered yet (#4861) by @mabry1985 in #4905
  • feat: ADR 0128 S0 (measure): subagent usage rows gain finish_reason / text_chars / has_tool_calls / reasoning_tokens; llm_empty_completions_total counter; host-free scripts/measure_output_budget.py (#4875) by @mabry1985 in #4907
  • feat: Directive ledger (2b/2c, console components): DirectiveStrip, DirectiveDrawer and DirectiveEntry with every spec state and the inline withdraw confirm; built, unit-tested, not yet mounted (#4861) by @mabry1985 in #4913
  • feat: ADR 0128 S1a (config): model.profiles → LangGraphConfig.model_profiles: dict[str, GenerationProfile], validated, settings-schema field, commented example; config_roundtrip golden gains "model_profiles": {} (#4875) by @mabry1985 in #4908
  • feat: Plugins: protoagent plugin check <dir> static lint. It checks manifest emits/subscribes against the code, unserved public_paths, page publish topics, skills present, and the known register footguns (#4809 part 1) by @mabry1985 in #4910
  • feat: Memory eval (2/3): on-demand memory retrieval runner with mixed scoring + 20 changed-fact cases by @mabry1985 in #4911
  • feat: Knowledge (ADR 0125 slice 6, server): GET /api/knowledge/collections lists collections with chunk counts, and /api/knowledge/search takes ?collection= (#4630) by @mabry1985 in #4906
  • docs(design): approved spec for the Knowledge browser by collection (#4630 slice 6) by @mabry1985 in #4915
  • docs(design): draft spec for the Decision needed console item (#4725) by @mabry1985 in #4909
  • fix(memory): memory_list's description says 'logged' again, so log questions reach it by @mabry1985 in #4918
  • test(evals): memory note intent uses a durable fact; status notes must not reach memory_save by @mabry1985 in #4919
  • feat: ADR 0128 S1b (config): subagents. overlay generalised to ANY registered subagent (built-in or plugin) with profile / final_profile / model; SubagentConfig gains profile + final_profile; applied at init and reload (#4875) by @mabry1985 in #4916
  • feat: Knowledge (ADR 0125 slice 6, server): POST /api/knowledge/delete-by-collection and restore-by-collection, a reversible soft delete with the same grace window as delete-by-source (#4630) by @mabry1985 in #4920
  • feat(artifact): design-mockups skill + open_artifact browser link for rendered artifacts by @mabry1985 in #4926

Full Changelog: v0.233.1...v0.234.0