github craft-ai-agents/craft-agents-oss v0.10.2

8 hours ago

v0.10.2 — Link labels, Anthropic account visibility, and prompt-cache fixes

Features

  • Link label value type — Labels can now carry a link value alongside the existing string/number/date types. A link value renders as a clickable chip (the URL scheme is stripped for display) that opens in your external browser, with a keyboard-accessible "Open link" action in the value popover. The type is threaded through the zod schema, CLI, and agent-prompt layers, and the clickable value appears consistently in the session list, chat display, and chat-input badges. Documented in labels.md with validate/format/resolve tests. (8aae50ad)

  • Resolved Anthropic account & org shown per OAuth connection — Settings → LLM Connections now displays the real Anthropic identity ("email · org") each Claude OAuth grant resolves to, captured from the token-exchange response and persisted on the connection. When two connections in the same workspace resolve to the same Anthropic account (shared quota — a previously invisible mis-route), an amber warning is surfaced. This also fixes a load-bearing bug where updateLlmConnection rebuilt connections from a hardcoded field allowlist and silently dropped any unlisted field on every save; the identity fields are now preserved with a round-trip test. Fixes #838. (a4b8868e)

  • Last sent message restored to the input on Stop — Clicking Stop (an explicit cancel, not a redirect or new send) now copies your last sent message back into the chat input so you can tweak and resend it. It is append-safe: a draft typed while the agent was running is preserved, and the restored text is appended below it. Queued, never-sent messages continue to be handled by the existing restore path. (cfbe802b)

Improvements

  • None.

Bug Fixes

  • Pi prompt-cache no longer busts every turn — The Pi adapter folded volatile context (minute-precision date/time, session_state, source state) into the system prompt, which pi-ai caches as the prefix ahead of all history — so re-stamping it each turn dropped cacheRead to 0 every turn (notably with non-Claude models such as DeepSeek V4). PromptBuilder.buildContextParts is now split into buildVolatileContextParts + buildStableContextParts; the Pi path keeps only stable blocks (workspace capabilities, working directory) in the cached prefix and routes volatile blocks to the user-message tail, mirroring what the Claude path already did. The Claude path stays byte-identical. Fixes #862. (80b478e3)

  • Accept-Plan chevron rotates when the dropdown opens — Both Accept-Plan triggers render via Radix asChild, so data-state="open" landed on the host <button>, never on the nested chevron <svg> — the self-scoped data-[state=open]:rotate-180 never fired. The rotation is now scoped to a named group on the button (group/accept + group-data-[state=open]/accept:rotate-180). Fixes #840. (f97f483b)

Breaking Changes

  • None.

Don't miss a new craft-agents-oss release

NewReleases is sending notifications on new releases.