Commit Graph

118 Commits

Author SHA1 Message Date
Aek 12b0c1e0ba Offer "Work on my project" on New project: pick your project's folder and edit its files in place (#686)
New project offers a third choice, "Work on my project": pick your project's folder, say what you want, and its files are edited in place (R2.9).
2026-11-04 00:51:02 +07:00
BFlat 636b3ff3d7 Bound CPIO checksum work across firmware probes (#683)
CRC cpio checksum work shares one byte allowance across a firmware scan and stops when the scan is cancelled; checksum fields must be eight hex digits, and skipped verification is reported (R3.12). Replays #676.

Co-authored-by: Afloat <132809511+Afloat16@users.noreply.github.com>
2026-11-04 00:33:08 +07:00
Ryan Missel 87174476d9 Add Copilot CLI support and shared agent investigations (#455)
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.
2026-11-04 00:29:11 +07:00
Firefly c7caf7de15 Offer OpenCode Go as a backend, with its session header (#672)
OpenCode Go can be added as a backend: offered when OPENCODEGO_API_KEY (or OPENCODE_GO_API_KEY) is set, on its documented base URL, with a stable per-installation x-opencode-session header kept in the AI settings. Not run against the service.
2026-11-03 23:57:07 +07:00
BFlat b79fc506e2 Auto mode deletes inside projects whose path has capitals, and reads quoted paths with spaces whole (#682)
Auto mode's delete check compares paths as written and reads quoted or escaped paths with spaces as one argument, so it neither refuses deletes inside a project with capitals in its path nor lets a delete of the folder beside the project through. Replays #357.

Co-authored-by: samurai <samuraideng@gmail.com>
2026-11-03 23:24:57 +07:00
Afloat 5ac0e2b68d Preserve empty query pairs in older stand-in recordings (#673)
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).
2026-11-03 23:16:53 +07:00
Afloat 75bf5a3f0d Handle generic GGUF paths and numeric task versions in chat discovery (#675)
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).
2026-11-03 23:14:26 +07:00
Afloat 2122a619e9 Verify stand-in session cleanup by answerer lifetime (#677)
The stand-in session cleanup test checks that the answerer is released instead of reconnecting to a port another listener may reuse.
2026-11-03 23:14:18 +07:00
Shaikh Fardin 4759d37ad2 Offer a Google AI Studio (Gemini) key in Settings and first run (#670)
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).
2026-11-03 22:38:43 +07:00
BFlat f05f019691 Draw on the GPU that drives the screen on Linux, so laptops with two GPUs open fast and don't lag (#659)
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>
2026-11-03 21:57:08 +07:00
BFlat 0ea700d1e1 Add Korean, Czech and German UI catalogs (#662)
Replays #590, #647 and #482: Korean, Czech and German UI catalogs, each with the strings added since it was written.

Co-authored-by: 아야진 <ayajin@Mac-Studio.local>
Co-authored-by: Losminek <301412321+Losminek@users.noreply.github.com>
Co-authored-by: Ilor29 <hello@einzelstein-software.de>
2026-11-03 21:40:15 +07:00
BFlat 9fd46b818b Builder limits, OpenRouter tools, a software-renderer fallback, calmer spinners, lean local builders, lldb calls and LM Studio ports (#657)
Replays #576, #577, #581, #589, #624, #625 and #628. Builder steps stop after 25 failed builds in a row, OpenRouter tool requests ask for a provider that supports tools, a start that never opened a window draws in software next time, spinners stop redrawing every frame, local builders get a lean tool list, lldb call observation works and reports failures, and LM Studio is found on other ports.

Co-authored-by: Fábio Soares <fabiodev1123@gmail.com>
2026-11-03 21:16:34 +07:00
Firefly 2d06e6642e Offer Kimi K3.1 Pro instead of the older Kimi K3 (#655)
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).
2026-11-03 21:15:18 +07:00
BFlat ba00f86f30 The command palette stays where it's scrolled (#658)
The command palette follows its selection only when the arrow keys or typing move it, so the wheel's scroll isn't pulled back to the top on the next frame (fixes #584).
2026-11-03 21:05:27 +07:00
YoSiem ad5cd81b6a Paste pictures into the prompt box with Ctrl+V and show attachments as picture tiles (#631)
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.
2026-11-03 20:50:05 +07:00
BFlat ebed13d0fc Keep ARM32 conditional call values, esbuild dependencies and window labels right (#656)
Replays #640–#642. Conditional A32 calls keep the skipped path's value, esbuild dependencies survive unrelated calls, and window comparison labels stay distinct without renumbering occurrences.

Co-authored-by: Afloat <132809511+Afloat16@users.noreply.github.com>
2026-11-03 20:49:11 +07:00
BFlat aeb86a69a3 Agent setup and streaming fixes: Aider, Antigravity on Windows, chat-only models, SSE limits and retries (#653)
Replays #616, #617, #619, #620 and #621. Aider isn't offered until it has an adapter, Antigravity is found under a redirected LOCALAPPDATA, servers with only specialised models aren't set up for chat, an SSE event's data is capped, and a retry keeps the original request when the agent's session can't be restored. Program lookup adds lower-case extensions on Windows.

Co-authored-by: Afloat <132809511+Afloat16@users.noreply.github.com>
2026-11-03 20:41:06 +07:00
BFlat 0e79ffaaa5 Remember "Always for this project" on a tool's consent card (#654)
"Always for this project" on a consent card is remembered in the project, and a tool allowed that way isn't asked about again (fixes #563). Replays #575.

Co-authored-by: Fábio Soares <fabiodev1123@gmail.com>
2026-11-03 20:40:55 +07:00
Fábio Soares e9852f8c58 Name every place the website check accepts a site, and where the app really is (#627)
When the website check finds no built site, it names every place a site is accepted (dist/, build/, out/, or a plain index.html without package.json) and where the app really is (fixes #494).
2026-11-03 20:35:03 +07:00
Fábio Soares 3be1d0b871 Refuse an agent's own file tools outright in Clean room chats and questions (#574)
In Clean room, a chat or question refuses the agent's own file, shell and web tools outright, so it works only through our tool server; this no longer rests on the agent's defaults (fixes #564).
2026-11-03 20:34:57 +07:00
BFlat 15de36614b Format parsers refuse or flag input they used to half-read (#652)
Replays #606–#615. Binary plists, base64, OIDs, string offsets, tar, cpio and source maps refuse or flag input they used to half-read.

Co-authored-by: Afloat <132809511+Afloat16@users.noreply.github.com>
2026-11-03 20:29:18 +07:00
BFlat 82856a30b2 Redact HAR reports more thoroughly and count their bodies correctly (#648)
Replays #602–#605. HAR reports redact percent-encoded credential names and declared secrets in every kept field, count decoded body bytes, and template only real dates in API paths; the stand-in backend matches older recordings with the current query rules.

Co-authored-by: Afloat <132809511+Afloat16@users.noreply.github.com>
2026-11-03 20:25:48 +07:00
Fábio Soares 78e1f7dce0 Say where a program is when it is there but can't start, instead of "isn't installed" (#583)
A program that is on disk but can't start (an npm script whose node is missing) says where it is and what to check, instead of "isn't installed"; on Windows an .exe is started by the path it was found at (refs #152, #95).
2026-11-03 20:15:01 +07:00
Fábio Soares b9c4c53099 Find Hermes Agent's native Windows install when the app's PATH is older than it (#585)
Hermes Agent's native Windows install (%LOCALAPPDATA%\hermes\bin) is found even when the app's PATH predates it (refs #116).
2026-11-03 20:14:49 +07:00
BFlat 3ee1642770 Serve previews only to this computer, stream their files and bound their connections (#649)
Replays #597, #598, #600 and #601. The preview server answers only requests addressed to this computer, streams files, sends no body for HEAD on a missing file, caps open connections and gives a request head one deadline.

Co-authored-by: Afloat <132809511+Afloat16@users.noreply.github.com>
2026-11-03 20:07:33 +07:00
BFlat 0eea78d7aa Read HTML pages' scripts and preloads correctly in more cases (#645)
Replays #591–#596. The HTML scanner reads rel token lists, decodes asset URLs once, keeps script and title text through lookalike closing tags, and skips raw-text elements, markup inside attribute values and custom tag names.

Co-authored-by: Afloat <132809511+Afloat16@users.noreply.github.com>
2026-11-03 19:58:08 +07:00
Matthias Bodsch 1d66a6ba4b Choose OpenCode models and thinking depth locally or over SSH (#413)
OpenCode can be chosen as a coding agent locally or over SSH, with the chat models its installation offers and the thinking depths each supports.
2026-11-03 19:53:16 +07:00
Afloat 48759fb5fc Stop unchanged rebuilds after two turns across runs (#557)
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.
2026-11-03 19:31:22 +07:00
Afloat f307d39480 Retry builder turns from typed failures, including stateless backends (#552)
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.
2026-11-03 15:51:05 +07:00
Afloat 888f75b3f1 Help models correct rejected tool argument types (#546)
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.
2026-11-03 15:48:57 +07:00
BFlat e1d1974468 Keep a prompt's pictures when Up brings it back (#570)
Supersedes #216. A prompt brought back with Up keeps the pictures it was sent with. feed.json moves to version 3: a User item with pictures is saved as {text, pictures}, one without stays a plain string, so older files read as before. Picture paths are absolute, so they don't come back after the project is moved.

Co-authored-by: muraa-p <muraa-p@users.noreply.github.com>
2026-11-03 15:41:21 +07:00
Afloat 0a0fa2a43a Recover JSON tool calls emitted as text (#554)
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.
2026-11-03 15:39:39 +07:00
BFlat 47e429ca15 Translate Pausing… in the Russian catalog (#567)
#555 added "Pausing…" to every UI catalog and #486 added the Russian one without it, so the catalog parity test failed on main; this adds the Russian translation.
2026-11-03 15:22:55 +07:00
BFlat 7c20db27cc Let the Flatpak create and write its default projects folder (#565)
Fixes #505. The Flatpak grants home read-only, so new projects in the default folder (~/Documents/Craft Anything) failed with "Read-only file system". Both manifests now also grant xdg-documents/Craft Anything:create; the rest of home stays read-only.
2026-11-03 15:12:57 +07:00
Fábio Soares 086ef3ba63 Approve Craft Anything's tools for Codex and explain a refused call instead of showing null (#553)
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.
2026-11-03 15:04:55 +07:00
DjMigen 09849084df Add a Russian UI catalog (#486)
Adds a Russian UI catalog (ru), selectable in Settings → General → Language, with key parity to the Chinese catalogs checked in tests.
2026-11-03 15:03:38 +07:00
NetterSilver 33d243674e List the current manifest and feed versions in the file formats table (#502)
Fixes #497. docs/file-formats.md lists the current craft.json and feed.json versions, and a test checks the table against the constants.
2026-11-03 15:01:41 +07:00
Fábio Soares 6d90c65624 Draw with Windows' own shader compiler, and say how to start without the graphics card when the device is lost (#558)
Fixes #522. On Windows the app draws with the DX12 shader compiler that ships with Windows (FXC) unless WGPU_DX12_COMPILER says otherwise, and a lost graphics device says how to draw without the graphics card (CRAFT_ANYTHING_RENDERER=software).
2026-11-03 15:01:38 +07:00
Afloat 303de0a438 Keep ACP history replay out of new turns (#550)
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.
2026-11-03 15:01:32 +07:00
Fábio Soares 199a71e08f Give Claude Code a writable conversation folder under Flatpak, and say how to sign in there (#561)
Fixes #506. Under a Flatpak, where ~/.claude is read-only, Claude Code is started with a writable CLAUDE_CONFIG_DIR in the app's data folder so its conversations are saved and --resume works; the sign-in message says how to sign in inside the sandbox. A CLAUDE_CONFIG_DIR the person sets wins, and SSH builds are unchanged.
2026-11-03 15:01:26 +07:00
Afloat c4e3d79dda Honor per-backend conversation context budgets (#559)
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.
2026-11-03 14:53:55 +07:00
Afloat 6615caa7e4 Respect stop reasons before running native tool calls (#544)
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.
2026-11-03 14:50:10 +07:00
Afloat d5e07a8262 Report unavailable cached bodies in stand-in replay (#543)
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.
2026-11-03 14:50:01 +07:00
Afloat 925d4737d1 Wait for keep-awake cleanup before a rebuild reports it finished (#541)
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.
2026-11-03 14:49:55 +07:00
Afloat 2546042d4c Show upstream provider reasons in API errors (#542)
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.
2026-11-03 14:49:50 +07:00
Tanish Manku 5a45b3cd78 Record that #490 is settled on Windows and move its macOS run to the live checks (#524)
* Record that #490 is settled on Windows and move its macOS run to the live checks

* Name R5.1's two failures, and say which checks read another worktree
2026-11-02 20:27:16 -07:00
Tanish Manku 8638d6b72b Rebuild the roadmap around what people hit now, and keep finished work in its own file (#512) 2026-11-02 17:38:37 -07:00
Tanish Manku 2e4afc535c A plain HTML site passes the build check as it is, with nothing to build (#500)
* 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
2026-11-02 16:44:21 -07:00
BFlat 1e8f661673 A builder never continues a session another builder saved (#471)
Fixes #469. craft.json records which coding agent saved the session (agent_session_by). A build or a question continues the session only with that agent; after the builder changes, the new one starts from the brief. A follow-up to an agent with no saved session also gets the brief.
2026-11-03 02:38:46 +07:00
Jesse Houston f5ed134bdd Keep building with Claude Code after moving a project to another computer (#458)
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).
2026-11-03 02:20:28 +07:00