357 Commits

Author SHA1 Message Date
Agapenor fc93bd091e Wait for browser shutdown before cleaning private profiles (#827)
Thanks @Agapenordev! Supervised browser hand-off now waits for process-group/Job Object shutdown, and private-profile removal retries transient locks for up to five seconds. Missing profiles count as already cleaned.

Reviewed source head 6e3398d28b. Hosted Ubuntu CI is green. On AnayPC, the applicable engine/platform tests, clippy, layers, locks, secrets and wasm checks pass. Two Windows UI-automation tests also fail on pristine main because the SSH session cannot create interactive WinForms windows; their baseline and candidate failures are preserved.

Related #810 remains open: this follow-up does not establish that the broader live macOS/Brave issue is fully resolved.
2026-11-05 18:46:31 +01:00
Dylan M. Taylor 869eb8548a Pass the Linux signing key to the release workflow (#866) 2026-11-04 17:45:57 -05:00
Dylan M. Taylor 078cf0c484 ci: add SonarCloud analysis 2026-11-04 09:47:49 -05:00
BFlat 12214281a2 Let people resize the plan above the prompt box, and keep the size (#829)
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.
2026-11-04 21:18:06 +07:00
BFlat cd6dbdf41c Add a copy button to each message and answer in the conversation (#828)
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.
2026-11-04 21:04:22 +07:00
Afloat cf414ff4b9 Apply replay body limits after redaction (R3.11) (#717)
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).
2026-11-04 20:32:58 +07:00
Agapenor f3efc1eb61 Delete private browser profiles when the browser closes (#822)
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.
2026-11-04 20:32:06 +07:00
Firefly 58e645614d Say the English README wins in the Korean one too (#823)
The Korean README ends with the same note as the Japanese and Chinese ones: it is a translation, and the English README wins where they differ.
2026-11-04 20:13:49 +07:00
Alex Joaquim Pereira e59b1ef4d8 Register an installed agent named with --backend (R5.5) (#821)
`rebuild --backend <name>` uses a configured backend of that name as it is, and registers an installed agent whose name matches when it is not added yet; an unknown name adds nothing. Follow-up to #819 (R5.5).
2026-11-04 20:03:19 +07:00
Alex Joaquim Pereira f8d6e3585a Build with an API backend without adding an agent (R5.5) (#819)
`rebuild` looks for and saves a coding agent only when no enabled AI can build, so a run with an API backend no longer adds Claude Code to the settings; a refused command changes nothing (R5.5).
2026-11-04 19:29:42 +07:00
Justin John 03265d442d Name the program an agent test ran, and say when a saved agent path is gone (#809)
`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.
2026-11-04 19:29:35 +07:00
Agapenor 98d12f23a0 Make all permitted tools available to Codex from startup (#805)
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.
2026-11-04 19:29:30 +07:00
Rares Cristea 1eb4d0afe0 Read a plugin's whole tools/list line, however long (#797)
An MCP plugin whose `tools/list` answer is one JSON-RPC line over 1 MiB never loaded: the process reader cut long lines into fragments that never parsed, so the plugin timed out. The partial-line cap is now the 16 MiB the MCP client already allows, with a regression test for a multi-megabyte line.
2026-11-04 19:29:24 +07:00
smittie2000 a067ac6981 Test both start-panic decisions, and don't blame the graphics for every early panic (#811)
Tests for both start-panic decisions (passed through, turned into a start error before the window showed, resumed after), now in a module CI runs on every platform. An early panic is reported as an internal error rather than a graphics failure, since it can be any bug in the first moments. Follow-up to #786.
2026-11-04 19:23:58 +07:00
Hasnain 9d4908bd92 Record a live Vineflower run on a real JAR (R5.7) (#802)
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.
2026-11-04 19:23:51 +07:00
BFlat b2d7e89ee8 Give the macOS app a menu bar with its actions (#804)
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>
2026-11-04 17:03:01 +07:00
BFlat cb395ee2c6 Let people fold the builder's plan card away, and keep the fold (#790)
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>
2026-11-04 16:01:37 +07:00
BFlat b6f61d15ff Say when the Claude desktop app is installed but Claude Code isn't (#789)
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>
2026-11-04 12:58:46 +07:00
BFlat 458dc4638c Refuse a folder or app bundle as an agent's program (#788)
A folder or app bundle can't be saved as an agent's program (on a Mac the file picker returns the .app), and one saved before is never started: the usual program is used (fixes #467).

Supersedes #778.

Co-authored-by: Fábio Soares <fabiodev1123@gmail.com>
2026-11-04 12:24:10 +07:00
Alex Joaquim Pereira 8a6af4155c Point Unreal's C++ guidance at the right toolchain per platform (#777)
Unreal's C++ guidance names the right toolchain on each system: the bundled Clang on Linux, Xcode on macOS and Visual Studio on Windows.
2026-11-04 12:04:10 +07:00
Fábio Soares 0e4a1cfb98 Offer a switched-off agent in the setup card, and turn it on (#784)
An agent that is saved but switched off is offered again when it's found on the computer, and choosing it turns it on, keeping its program and folder, instead of No coding agent was found staying on screen (refs #423).
2026-11-04 11:33:43 +07:00
Fábio Soares 42f44257ae Keep long lines in the feed's tool work inside the window (#785)
Long lines in the feed's tool work stay inside the window: a tool-work row with no tool shows its note's first line, cut to fit, as its title, and the notes below wrap (refs #666).
2026-11-04 11:33:38 +07:00
smittie2000 08df7caa1a A window that can't start says why instead of the app crashing (#786)
When the graphics can't start the window, the app shows why in the start-failure dialog instead of crashing: a panic before the first frames were shown is reported like any other start failure.
2026-11-04 11:33:32 +07:00
BFlat 282a4bca5c Start a program that was just written, instead of failing with Text file busy (#787)
A program whose file is busy (just written, still open for writing in a child another thread is starting, so Linux says Text file busy) is tried again for about 0.3 s before its start fails. Fixes flaky test failures and a start just after an agent's CLI updates.
2026-11-04 11:32:54 +07:00
BFlat 1fbff715b5 Stop a build whose checks never find a working build, across Try again (#782)
A build whose checks keep finding no working build stops after 10 in a row, across Try again presses, until a new request starts the count again (kept in craft.json as not_working_checks), and with app/ empty the builder is asked to write the project and show its build's output instead of fixing a build that doesn't exist (refs #736).

Supersedes #776.

Co-authored-by: Fábio Soares <fabiodev1123@gmail.com>
2026-11-04 10:58:49 +07:00
BFlat 10fc638e24 The Node.js tests check uses its stand-in program on Windows too (#783)
The Node.js tests check's test clears the toolchain's Windows program name, so on Windows it runs its stand-in instead of the real npm. Test only.
2026-11-04 10:57:42 +07:00
BFlat 0356c4bc88 Find Flatpak browsers on Linux and give sandboxed browsers a profile they can reach (#759)
Chrome, Brave, Chromium and Edge installed as Flatpaks on Linux are found, and a Flatpak or Snap browser keeps its private profile in the home folder its sandbox shares, so it can start and its port can be read (fixes #747).
2026-11-04 10:31:11 +07:00
Fábio Soares b11ec91a7b Say what Clean room is not, what dependency installs run, and how to check a Mac download (#765)
The README says Clean room isn't an operating-system sandbox, that installing dependencies runs code (and how to avoid npm's install scripts), and how to check that a Mac download is signed and notarized (refs #728).
2026-11-04 10:31:04 +07:00
Afloat eab6a0f01b Address the parser review findings from #722 (#766)
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.
2026-11-04 10:30:57 +07:00
Fábio Soares 41d2175e25 Say when app/ is empty in the build check and the stop message (#771)
When app/ is empty, a failed build check and the stop after two unchanged turns say the builder hasn't written the project (refs #736).
2026-11-04 10:06:23 +07:00
Tanish Manku 8cf29dfa08 The keep-awake helper ends by itself once the app it serves is gone (#762)
The keep-awake helper ends by itself once the app it serves is gone (Windows checks the process every 30 s, macOS uses caffeinate -w), so closing the window during a build no longer keeps the computer awake.
2026-11-04 10:06:18 +07:00
Tanish Manku c258f0f22c The text protocol's markers count only in a reply's words, not inside a call's arguments (#764)
The text protocol's Final Answer: and Action: markers keep a reply as text only when they're in its words, not inside a fenced call's arguments.
2026-11-04 10:06:12 +07:00
FuryNocturnTV (Tare Fernandez) 4d6e3b01bf Look up a relative program where it starts before calling its path empty (#772)
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).
2026-11-04 10:06:07 +07:00
FuryNocturnTV (Tare Fernandez) 0fc381c206 Count Antigravity's second folder in the Windows search path test (#770)
The Windows search-path test counts Antigravity's second folder, added by #748.
2026-11-04 10:06:02 +07:00
Afloat 686f3429e1 Keep builder availability fixtures independent of live discovery (#773)
The missing-builder UI test marks discovery as already running, so a late real discovery can't replace the test's own results before it checks Start.
2026-11-04 10:05:52 +07:00
Aek 42f459ccf9 Check a person's own project by its own build and tests, in any language (#760)
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.
2026-11-04 09:55:48 +07:00
Aek 7a0d7de0e4 Keep what a project edited in place is built with, read from its own files (#755)
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.
2026-11-04 08:46:52 +07:00
BFlat 7eee1fd13f The pasted-picture test passes when its pastes share a millisecond (#761)
The pasted-picture test accepts a third paste that lands in the same millisecond as the first and takes its freed name, and checks the first paste's content is gone. Test only.
2026-11-04 08:46:46 +07:00
Fábio Soares bbc06cb9c1 Start the window on Macs whose Metal compiler rejects the OS's shader version (#744)
The window opens on Macs whose Metal compiler rejects the shader language version wgpu takes from the macOS version: a patched wgpu-hal 30.0.1 (identical to the released crate except for this probe) compiles a tiny kernel with each version up to the OS's and keeps the first one accepted. A lost device on a Mac no longer points at the Windows-only software renderer setting (fixes #742).
2026-11-04 08:22:28 +07:00
Tanish Manku 87f09c4d16 Run JSON tool calls a model writes after a sentence, or several in one reply (#753)
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.
2026-11-04 08:22:21 +07:00
Alex Joaquim Pereira bae2cde305 Wait for picture checks before Send and Make Start (#724)
Send and Make's Start wait for the picture-size checks still running for their own destination, then go with the pictures, instead of leaving them for the next message or starting without them. A refused picture clears the wait, and editing Make meanwhile cancels the waiting Start.
2026-11-04 08:08:40 +07:00
FuryNocturnTV (Tare Fernandez) c26e6ba525 Say when a saved program path has no file there, instead of blaming PATH (#739)
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).
2026-11-04 08:08:33 +07:00
Fábio Soares 7b5ce085a3 Find Ghidra in the folders people unzip it to, and don't download it again (#745)
Ghidra is found where people unzip it (Program Files, the home folder, Downloads, Desktop, /Applications, Homebrew's cask and the usual Linux folders), by folder name a set number of levels down, and the guided install uses a copy already on the computer instead of downloading it again (fixes #740).
2026-11-04 08:08:26 +07:00
Fábio Soares 8384c0cf7a Count the system prompt and tool schemas when a server reports no usage (#752)
When a server reports no input-token count, as local servers often don't, the system prompt and the tool schemas are counted from their text, so a conversation past its budget is trimmed (refs #731).
2026-11-04 08:08:19 +07:00
Fábio Soares 900ff0dfd4 Say when the app folder is empty in the website build check (#749)
When a website build leaves app/ empty, the build check says the builder hasn't written the project, instead of only that no built site was found (refs #736).
2026-11-04 08:08:13 +07:00
Fábio Soares eb6babd593 Find Antigravity's CLI next to its own folder on Windows (#748)
On Windows, Antigravity's CLI (agy.exe) is also looked for straight in its Antigravity folder, where newer installers put it; the desktop app's own Antigravity.exe is never taken for it (fixes #737).
2026-11-04 08:08:07 +07:00
Aek 66bda5607d Keep Make off the folder picked on Work on my project, and don't read an address in its request as an original (#750)
Leaving "Work on my project" forgets a folder it would edit in place, and a folder dialog that ends after leaving that door is dropped, so a version made on Make can't edit the person's own project. An address in that door's request stays part of the request instead of becoming an original to recreate. Follow-up to #686's review.
2026-11-04 08:05:51 +07:00
BFlat 59a030ac7e A long prompt shows more of itself in a tall window (#734)
The prompt box can grow to two-fifths of the window's height, never less than its own limit, so a long prompt shows more of itself in a tall window (fixes #473).
2026-11-04 08:05:46 +07:00
BFlat 085b7029a5 Type in a model the list doesn't offer in Settings → AI (#730)
Settings → AI has an "Another model" field beside the model list, so a newer model, a variant such as opusplan, or one another harness serves can be chosen without the CLI (fixes #470).
2026-11-04 08:05:40 +07:00
BFlat 0c79f957fa Find an agent's chosen program again after an update moves it (#729)
An agent's chosen program path that an update moved (Codex's bin/<build>/codex.exe) is found again in the newest build folder, else by its usual name on PATH, instead of failing every turn (refs #721).
2026-11-04 08:05:35 +07:00