The builder's plan above the prompt box scrolls past 240 px instead of pushing the conversation away, and the divider above it sets that height: drag it, or Tab to it and press Up and Down; a double-click resets it. The height is kept across restarts. Fixes#826.
Each message and answer in the conversation has a copy button that copies all of it, since selecting text there is unreliable: beside the person's message, and in its own column at an answer's top right so it never covers the text. It shows on hover or keyboard focus. Fixes#825.
A website stand-in charges its per-body and total byte limits on the text it actually keeps after redaction, and drops repeated samples before charging them, so polling no longer uses up the budget. A cached 304 whose body was left out stays unavailable (R3.11).
A browser or Electron app we launch gets its private profile folder removed when it closes or fails to start, after its process is stopped; a removal that fails is logged. Refs #810.
`ai test` for a coding agent names the program it ran and, when that was not the saved one, the saved path it replaced; `doctor` says a saved path has no program there instead of blaming PATH. Refs #721.
Codex chats and builds start the Craft Anything MCP server with `--all-tools`, because Codex does not refresh its callable tools after `enable_toolset`; the server still applies Clean room restrictions. Fixes#538.
Docs only: records a live run of `java_vineflower_decompile` on Linux (OpenJDK 21, Apache Commons IO 2.16.1: 253 source files, exit 0) and marks the Java tools verified. Windows, macOS and `.class` inputs are still unchecked.
On macOS the system menu bar has the app's actions with the usual Mac shortcuts (Settings ⌘, · New project ⌘N · Open ⌘O · Command palette ⌘K · Quit ⌘Q, the Simple/Advanced and Clean room/Deep choices, and Help links to this repository), through muda. Other systems are unchanged.
Supersedes #791.
Co-authored-by: sanketdofe <46375884+sanketdofe@users.noreply.github.com>
The builder's plan card can be folded away, and the fold is kept in the project's feed until the builder makes a new plan (refs #504).
Supersedes #779.
Co-authored-by: Fábio Soares <fabiodev1123@gmail.com>
When the Claude desktop app is installed but Claude Code isn't, the setup card and ai detect say so and how to install Claude Code (refs #259).
Supersedes #781.
Co-authored-by: FuryNocturn <28540819+FuryNocturn@users.noreply.github.com>
Parser follow-ups to #722: Java reference searches keep earlier hits and report partial coverage, DEX signed LEB128 takes at most five bytes, legacy AAPT long strings recover within a shared budget, and ext indirect metadata is read within bounds.
A program started by a relative path in another folder is looked up where it starts before it's reported as a path with no file (on Unix, a script there whose interpreter is missing).
A person's own project, edited in place with nothing to recreate, is checked by its own build and then its own tests, in any language a toolchain table knows (Rust, Node.js, Python, Go, .NET, Maven, Gradle, Make), instead of the checks made for a recreation (no --screenshot option, self-test or MECHANICS.md added to their code). A project with no tests, or one Craft Anything doesn't know how to build, isn't a failure and the note says so.
A project edited in place (Work on my project, or rebuild --existing edit) keeps the stack its own files use (an engine's project file, then Cargo.toml or package.json dependencies, then other project files), unless the request names another; a Godot folder no longer gets Unity from a request that reads as a game.
Tool calls a local model writes as fenced JSON after a sentence, or several in one reply, are run when every one names an offered tool; words after the last call, other code or an unclosed fence keep the reply as text.
A program started by its path (a saved agent program, say) with no file there says so and names the path, as possibly moved by an update, instead of "isn't installed or isn't on your PATH"; it stays a missing program, so builder turns aren't retried (refs #721).
Unreal's readiness check finds Visual Studio's C++ tools installed outside Program Files, from the Visual Studio Installer's instance records and a developer shell's VSINSTALLDIR, VCINSTALLDIR or VCToolsInstallDir (fixes#669).
* A builder on a local model isn't told to call memory tools it isn't offered
* Record the first live local builds and what stops them
* Keep R5.3's API-key live check open: the stop was seen on a local build
Each Claude Code AI can have its own folder (CLAUDE_CONFIG_DIR) in Settings → AI or with craft-anything-cli ai folder, so each can use a different account; the sign-in check, runs and sessions use that folder.
Each paragraph of an agent's answer is laid out as one width-limited text block, keeping bold, inline code and glossary underlines, so a long file link after a glossary term no longer pushes messages under the sidebar (fixes#523).
GitHub Copilot CLI can be a coding agent over ACP, with its models chosen through the shared agent model catalogue; options that could bypass the app's tool restrictions are refused, and agents share investigation findings safely.
Older stand-in recordings keep their empty query pairs when current credential rules are reapplied, so replay matches the right page (follow-up to #648).
Local chat discovery reads a generic GGUF file name by its model folder and treats task names with version numbers as specialised, so an embedding or reranking model isn't picked for chat (follow-up to #653).
A Google AI Studio (Gemini API) key is its own choice in Settings → AI and first run, through Gemini's OpenAI-compatible endpoint, read from GEMINI_API_KEY like the other providers (fixes#646).
On Linux the window is drawn on the GPU that drives the screen (the built-in panel's, or the only one with displays), so laptops with two GPUs open fast and don't lag; WGPU_ADAPTER_NAME and WGPU_POWER_PREF still decide (fixes#571). Replays #578.
Co-authored-by: Thân Minh Nghĩa <thanminhnghia3@gmail.com>
Detect offers Kimi K3.1 Pro (moonshotai/kimi-k3.1-pro) on OpenRouter instead of the older Kimi K3, with OpenRouter's list price ($2 / $10 per Mtok, $0.20 cached).
Pictures can be pasted into the prompt box with Ctrl+V (Cmd+V, Shift+Insert): a copied image is saved as a PNG in the person's own cache folder and attached, copied picture files are attached as they are, and attachments show as picture tiles.
Refs #44, #110 and #481. A build stops after two builder turns in a row change no app files, counted across runs in a versioned inbox/build-progress.json; a new request or a real edit starts another attempt. File digests are cached by size and modification time, so unchanged files aren't read again.
Refs #377 and #142. Builder retries are decided by typed failures instead of English text: sign-in, billing, missing programs, configuration and failed required tools stop at once, while dropped connections, rate limits and plain crashes are retried up to three times with bounded waits. OpenCode's JSON output is read for errors, text, tools and usage.
Refs #498. A tool argument of the wrong type is answered with its JSON Pointer, the type error and how to correct the call, so a model can fix it; schema types stay strict.
Refs #417. A complete JSON tool call a model writes as its whole reply (bare or fenced, with name and arguments or parameters, or a function wrapper) runs as that tool when it was offered, including when native tool calling was offered; examples in prose, malformed or partial JSON stay text, and Action:/Action Input: steps still work.
Fixes#540. Codex's codex exec can't ask for approval, so setup and the builder approve rebuild_start (which asks the person itself) on Codex's side, keeping the person's other settings in the entry; a refused call explains the fix instead of showing null.
Over ACP, session/update notifications that session/load replays before it answers are kept out of the new turn, so a continued session no longer shows the earlier conversation again.
Refs #374. A backend can set its own conversation budget (context_tokens in [[ai.backends]]); the conversation is fitted to it before each model attempt, including a fallback with a smaller window, counting history added since the last measured request.
Native tool calls keep a reported output-limit or refusal stop instead of being run as tool use, and calls left unrun after a pause or other stop get matching non-execution results so the next request stays valid.
A stand-in backend no longer replays a recorded 304 without its cached body: such samples are kept for diagnosis, skipped in replay, and a request with no usable answer gets cached_body_unavailable. Builds count them.
The rebuild releases its keep-awake helper before reporting Finished, and dropping the guard waits up to five seconds for the helper to stop (logging if it doesn't), so a CLI that exits right away no longer leaves it running.
Refs #369. API errors show the provider's own reason from error.metadata.raw (with the provider's name) instead of only "Provider returned error"; unknown or malformed payloads are not dumped, and the message is bounded.
* Claim: count a plain HTML site as built (R2.7)
* A plain HTML site passes the build check as it is, with nothing to build
* Note the keep-awake helper seen outliving a CLI run, and a search that found itself
* A blank page, or a game engine's project beside it, doesn't pass as a static site
* A static site with an assets folder isn't sent to Unity
Fixes#451, fixes#452, closes#446. Claude Code's result for a --resume session it doesn't have is recognised (StreamParser::session_missing); the build forgets the stale id and starts a new session from the brief, what is in app/ and what the project kept of the old conversation, and questions answer from the project's files. After every builder turn the project keeps a private copy of the session, which is put back under Claude Code's folder on another computer when it isn't there (never over an existing one).
Merges the whole SQLite stack in one commit (#410, #411 and #412): WITHOUT ROWID tables are read in primary-key order, rows older than ALTER TABLE ADD COLUMN show the added columns, and records over the payload cap say which values were cut.
Fixes#406, fixes#407, fixes#408.
Frozen and light pins keep a project's runtime models in assets/obj; only obj folders beside a .NET project file are left out as build output. Fixes#274.
In Deep mode, a position-independent program is decompiled by name: addresses move between our image base and the one Ghidra loaded it at (the bridge now reports it), with engine_entry and an engine_rebased limitation when they differ.