Commit Graph

89 Commits

Author SHA1 Message Date
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
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
Max Mittelstädt 99bfba88bf Restore originals from long inline source maps (#368)
JavaScript analysis reads a source map comment from the last eight lines of the whole script and keeps its full URL, so originals are restored from large inline source maps.
2026-11-03 20:41:02 +07:00
Ole Bohmbach 472d061921 Keep build tools and approvals from following links out of the project (#623)
Builder file tools and the approval policy follow links the way the file system does, so a symlink or junction inside a project can't lead a builder's read or write outside it (CWE-59); build_files_list shows links without walking into them.
2026-11-03 20:19:16 +07:00
Ole Bohmbach 521947899d Copy only the scripts a web script export can write (#587)
web_scripts_save copies only the scripts that fit its max_scripts and max_bytes; scripts past them are listed by URL only, so a large or hostile capture costs no more than the export's own limits.
2026-11-03 20:19:03 +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 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 6bbcb0d1bd Skip ZIP symlink and special members when extracting (#568)
Fixes #520. Supersedes #521. core_archive_extract skips ZIP symlink, device, FIFO and socket members and names each in skipped, instead of writing a symlink as a file holding its target.

Co-authored-by: NetterSilver <133535268+Silvertree2010@users.noreply.github.com>
2026-11-03 15:41:50 +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
frankyef 549ae5e29a Give runtime_captures_compare object schemas so Claude Code keeps every MCP tool (#490)
runtime_captures_compare's left and right parameters are declared as a string or an object instead of a boolean schema, which made Claude Code drop every tool from the MCP server; on the command line a JSON object passed to them stays an object.
2026-11-03 15:09:00 +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
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
Bently f6055a5ba2 native_function_find gives an offset beyond 64-bit JSON numbers as signed hex text instead of panicking (#477)
native_function_find gives an offset that does not fit a 64-bit JSON number as signed hex text instead of panicking while serialising it.
2026-11-03 15:01:33 +07:00
NetterSilver d3bbf99b4a Write CRC-mismatched ZIP members when if_tampered=continue (#525)
Fixes #518. With if_tampered=continue, core_archive_extract writes a ZIP member whose CRC does not match (the mismatch stays in contradictions), as its remediation says.
2026-11-03 14:59:03 +07:00
GGWA 5cdcbb7503 The archive inventory says when nested archives were left unopened (#534)
Fixes #519. core_archive_show counts nested archives that a depth or size limit left unopened, reports a nested_not_opened limitation and marks coverage partial.
2026-11-03 14:58:51 +07:00
GGWA 60c3a97a66 Archive extraction refuses names Windows would change: a trailing dot or space, or a colon (#533)
Fixes #516 and #517. Archive extraction refuses member names with a colon or a trailing dot or space, which Windows would change (merging two members, or hiding bytes in an alternate data stream).
2026-11-03 14:58:45 +07:00
NetterSilver d0c5feefa7 List DNS answers the same way on both packet engines (#514)
Fixes #510. The built-in engine lists DNS answers like tshark does: each A/AAAA address keyed by the response's first question, so CNAME chains end at the name asked. Both engines report the dns_answer_attribution limitation.
2026-11-03 14:58:38 +07:00
Bently c9c263832e Ghidra's pseudo-C uses the names you set, in the code and in its summary (#488)
In Deep mode, Ghidra's pseudo-C uses the names set with native_name_set in the function field, the summary and the code (whole identifiers only, never inside comments, literals or fields); names that can't stand in C or would clash are listed in a limitation.
2026-11-03 14:50:54 +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
BFlat c2ad022f50 Page states select the original tab again after photographing another (#475)
Fixes #335. Before a tab is clicked, web_page_states_capture marks the tab its list has selected and clicks it again after the picture, so later states and the next capture see the page as it was.
2026-11-03 02:47:05 +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
Bently 09401b6458 Changing a setting keeps a test session to its configured engines, and the live browser tests find the installed browser (#479)
settings_set keeps a test session's engines.only_configured across its settings round trip, so a test that changes a setting still doesn't find this computer's engines. New testing::live_session() finds installed engines for the --ignored live tests; the live website tests use it.
2026-11-03 02:29:14 +07:00
BFlat 843099abca Page states at a second width open that width's own controls (#474)
Fixes #339. web_page_states_capture drops the data-craft-state marks an earlier call left before marking, so a capture at a second width opens that width's own controls instead of a hidden one from the first width.
2026-11-03 02:24:26 +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
BFlat 5b09ab03ab A website capture says when its HTML was cut at the size limit (#472)
Fixes #336. web_site_capture keeps the first 4 MiB of the page's HTML; when the page has more, the evidence carries an html_cut limitation with both sizes and the README says page.html is the first part, cut at the size limit.
2026-11-03 02:12:11 +07:00
Bently 7bf8220006 Test sessions find only the engines their settings name (#466)
Test sessions set engines.only_configured (never saved), so Settings::ghidra_launcher and engine_path look only where the settings and the managed store say, not on PATH or in the usual install folders. Tests now pass the same on a machine with Ghidra installed. New locate_configured and ghidra::get::headless_configured are the first half of locate and headless, which return the same as before.
2026-11-03 01:53:53 +07:00
Bently 826efdbcb8 native_function_find gives a negative offset for an address below the function's entry (#465)
native_function_find works out the offset as a signed value, so an address in a block below the function's entry gives a negative offset ("-0x70") instead of wrapping to a huge number or panicking with overflow checks.
2026-11-03 01:53:48 +07:00
GGWA ecbd519c6a Read SQLite WITHOUT ROWID tables, rows older than added columns and capped records correctly (#412)
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.
2026-11-03 01:43:19 +07:00
NetterSilver 28df99e066 Report folders that couldn't be listed in archive and JS app evidence (#459)
Fixes #294. walk_dir returns an error when the root folder can't be listed and keeps each unlistable folder below it; core_archive_show and js_app_map mark those folders, add an unlisted_folders limitation and report partial coverage.
2026-11-03 01:43:12 +07:00
NetterSilver b11554d7cc Check folder inventory evidence with the scope it was recorded with (#461)
core_archive_show records max_entries and max_total_bytes, and a shared recorded_inventory helper checks a folder's freshness at the scope it was recorded with, so core_archives_compare and the Android, Apple and Harmony graph tools no longer refuse unchanged folders as file_changed.
2026-11-03 01:43:05 +07:00
NetterSilver f94cbe72db Disclose the serialized-file read limit in Unity bundle listings (#454)
game_unity_bundle_list adds a files_unread limitation when a bundle has more serialized files than it reads (16) and says "at least N object(s)" in its summary.
2026-11-03 01:42:51 +07:00
NetterSilver 5bc54ce64a Keep every tensor in a model summary's saved evidence (#457)
In summary mode formats_ai_weights_show saves every tensor in its evidence record with complete coverage, so core_evidence_browse can page through all of them instead of stopping after the first page.
2026-11-03 01:42:44 +07:00
NetterSilver 977ee5c6b5 Fetch source maps served from the script's own loopback origin (#464)
Declared source maps on the script's own loopback origin (http://127.0.0.1 or [::1] with a port) are now resolved against the script URL and fetched with the bounded HTTP client, reporting fetched, bytes or the reason. Other hosts, ports, schemes and remote https maps are still never requested.
2026-11-03 01:42:37 +07:00
BFlat bbb28b3aa6 An app folder survey says when a file couldn't be opened, and its coverage is partial (#453)
app_folder_explain counts files it couldn't open to look inside (unopened_files) and reports partial coverage then, and when its walk couldn't read something, instead of a complete 'nothing points to a runtime'. Fixes #292.
2026-11-03 00:24:10 +07:00
Afloat fed67edd38 Pinned builds keep runtime models in obj folders (R2.10) (#439)
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.
2026-11-03 00:16:57 +07:00
muraa-p c6c8f35612 List a remote Frida device without frida-ls-devices -H (#227)
Listing Frida devices with a remote address returns that remote as one device, marked not contacted, instead of running frida-ls-devices with a -H flag it doesn't have.
2026-11-03 00:12:33 +07:00
BFlat d6780ff30e build_file_read shows a line longer than a page, cut, instead of nothing (#447)
build_file_read always shows the first line of a page, cut to 256 KiB with a note when it is longer, so a long minified line no longer reads as an empty page that no offset gets past. Fixes #280.
2026-11-03 00:00:38 +07:00
bently-bot 11166b3589 Deep mode decompiles position-independent programs by name: addresses move between our image base and Ghidra's (#426)
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.
2026-11-02 23:50:33 +07:00
Afloat fa4aae2e79 Compare WebAssembly exported tag parameter types (R0.5) (#441)
WebAssembly comparison reports changes to exported tags' parameter types. Fixes #309.
2026-11-02 23:48:32 +07:00
muraa-p a7a04333c0 Show a pin's folder from its right-click menu (#215)
A pin's right-click menu has Show folder, which opens the pinned build's folder (project_open_folder takes pin).
2026-11-02 23:47:24 +07:00
GGWA 004e1c1dfc Firmware extraction reports a region-scan cap as partial (#366)
firmware_image_extract reports a region scan stopped at its cap as truncated, partial coverage. Fixes #302.
2026-11-02 23:40:07 +07:00
GGWA f58c3a66ba Triage says a damaged ELF, PE or Mach-O header can't be read (#365)
Triage says a file that starts like an ELF, PE or Mach-O but can't be read is damaged, with the parse error, instead of calling it an unknown format. Fixes #319.
2026-11-02 23:39:40 +07:00
Max Mittelstädt df18c969b2 Allow packaged programs with crash in their names (#376)
Play's packaged-program choice skips crash reporters by name (crashreport, crashhandler, crashpad), not every name containing crash. Fixes #275.
2026-11-02 23:38:48 +07:00
Max Mittelstädt 54bef1e6e2 Trace universal helper executables (#375)
Library resolution also follows universal (fat) helper executables found in app bundles. Fixes #276.
2026-11-02 23:38:22 +07:00
GGWA 6e9fc1a3d2 External tools' stderr survives a cap inside a multibyte character (#364)
objdump's and rtl_433's stderr keep the text before a cap that falls inside a multibyte character instead of losing it all. Fixes #287.
2026-11-02 23:35:13 +07:00
phatloi0010 53586bb9cf Call resolution retains the known memory slot of an indirect import (#424)
native_call_site_resolve keeps the memory slot of a call through an import. Fixes #349.
2026-11-02 23:34:56 +07:00
phatloi0010 0c0a776ed6 Return header metadata for unencrypted IoStore containers without a directory index (#396)
Unencrypted IoStore containers without a directory index return their header facts and a not_indexed limitation, with unknown file totals. Fixes #303.
2026-11-02 23:34:29 +07:00
phatloi0010 766234ba40 Record folder truncation notices in js_sources_restore (#392)
js_sources_restore notes when a folder listing was cut short by its file-count or depth limit. Fixes #332.
2026-11-02 23:34:02 +07:00
BFlat 8f81b8edf2 Reopening raw bytes with a new architecture or address uses them (#432)
Reopening the same raw bytes with another architecture or entry point replaces the open target instead of silently keeping the first settings and caches. Fixes #305.
2026-11-02 23:32:25 +07:00