Commit Graph

69 Commits

Author SHA1 Message Date
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
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
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
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
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
muraa-p 315ed8d441 Check Simple-mode text sizes with a test (R2.9) (#354)
A test keeps Simple-mode text at 12 pt or more outside the workbench; eight smaller monospace labels now use the caption size. R2.9.
2026-11-02 23:49:21 +07:00
Afloat e80df1da4e Build usage includes context-summary calls (R2.1) (#442)
Build usage and cost include the model calls that summarise earlier work to make room, and each is journaled. Fixes #272.
2026-11-02 23:48:58 +07:00
muraa-p 694b41929e List slash commands and complete them with Tab (#228)
Typing / in the prompt box lists the slash commands, and Tab completes a partial command name when only one matches.
2026-11-02 23:48:55 +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
Afloat 66ffd738ed App comparisons keep every unassigned window (R3.10) (#440)
App version comparisons keep each unassigned window's preference changes instead of folding them into one. Fixes #237.
2026-11-02 23:48:06 +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
Afloat 89bcd06190 Minified esbuild modules keep their dependencies (R0.5) (#438)
Minified esbuild bundles keep the dependencies between their modules: wrapper calls are matched by binding, not by a require_/init_ name. Fixes #270.
2026-11-02 23:42:49 +07:00
Afloat ffe15c9165 Find class usage in multidimensional object arrays (R0.5) (#437)
Class usage search finds a class in multidimensional object-array allocations (multianewarray). Fixes #325.
2026-11-02 23:42:23 +07:00
Afloat 858037dc3d Use ARM32 registers in value-flow graphs (R0.5) (#436)
ARM32 and Thumb value-flow graphs use r0–r3 and r12 for calls and r0 for returns instead of x86 registers. Fixes #239.
2026-11-02 23:41:56 +07:00
Afloat 0ce375bcba Bun text assets report their stored UTF-16LE encoding (R3.11) (#435)
Bun's stored-text encoding 2 is labelled utf16le, as Bun writes it, and member bytes are kept as stored. Fixes #257.
2026-11-02 23:41:30 +07:00
Afloat d8314238ae Files inside extended SquashFS directories are recovered (R0.5) (#434)
Extended SquashFS directory inodes read their listing offset from the right field, so files inside them are recovered. Fixes #338.
2026-11-02 23:37:59 +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
BFlat 3357daf48e Claude Code gets its message on stdin, so a long brief starts on Windows (#430)
Claude Code's message goes to its stdin instead of argv, so a builder brief over Windows' 32,767-character command-line limit no longer stops the build with os error 206. Fixes #402.
2026-11-02 23:34:47 +07:00
Agapenor 3861132c04 A remote OpenAI-compatible service gets the cloud context budget and its price, not a local model's (R2.1) (#379)
Only an OpenAI-compatible server on this computer or its network (loopback, private and link-local addresses, bare and .local/.lan/.home.arpa/.internal names) or reached over ssh counts as a local model; a remote gateway gets the cloud context budget and its price. Fixes #374.
2026-11-02 23:22:40 +07:00
phatloi0010 0748ef1be7 Start DX12 only by default on Windows to avoid Intel Vulkan driver crashes (#414)
On Windows the app starts only DX12 by default, since starting Vulkan crashed on some Intel drivers before any window opened; WGPU_BACKEND still picks others. Fixes #394.
2026-11-02 23:13:10 +07:00
Alex Joaquim Pereira 80cf0b8a50 A GraphQL document that begins with a comment is still read (#386)
js_app_map keeps a literal GraphQL document that begins with a # comment, and a lone CR ends a comment. Fixes #260.
2026-11-02 23:09:36 +07:00
zeller-lorenz ea8f4b82b8 Claude's effort goes up to xhigh and max, chosen in Settings → AI and the CLI (R2.9) (#395)
Claude's effort goes up to xhigh and max. A model without a level gets the nearest one below it. The level is chosen in Settings → AI or with craft-anything-cli ai effort, and over SSH it reaches the other computer. R2.9.
2026-11-02 23:08:12 +07:00
zeller-lorenz 2b2e8f5287 Maki works as a coding agent, over ACP or one message at a time (R2.2) (#393)
Maki can be added as a coding agent: over ACP (maki acp, with the backend's model after it) or one message at a time with its own adapter (maki -p), which switches its writing tools off outside a build. R2.2.
2026-11-02 23:07:45 +07:00
GGWA 489f2976b4 SQLite rowid alias columns show the rowid instead of NULL (#409)
db_sqlite_show shows an INTEGER PRIMARY KEY column's value from the rowid instead of NULL. Fixes #405.
2026-11-02 22:29:10 +07:00
Oliver Mee 8b5826f9bd Selected macOS app folders and nested XPC services are recognised (#297)
Selecting a macOS app folder is recognised as an app bundle (its root-relative Contents/Info.plist), and nested XPC services appear as services and xpc-service graph nodes.

Fixes #282
2026-11-02 15:04:00 +07:00
BFlat 09fdc72e8d Saves from two threads at once never collide or mix a project file (#311)
The engine had its own `write_atomic` (used for `craft.json`, the inbox, reports and session files). Its temp file was named by process only, so two threads saving the same file at once wrote into one temp file. One rename then found it gone ("craft.json: No such file or directory"), and the file could end up with two versions mixed ("trailing characters").

The engine now uses the platform crate's `write_atomic`, which already gave each write its own temp file and kept the file's permissions. It also gains the engine's short retry when Windows briefly can't replace a file another program holds open. There is one atomic writer now; docs/pitfalls.md says so.

**Verified:**
- A new engine test: four threads each save one file 50 times and read it back. Every save succeeds, every read is one whole version, and no temp files are left. It fails against the old engine writer (checked) and passes now.
- The existing "file held open for a moment" test still passes.
- `cargo test -p craft-anything-engine` (397), the platform fs tests, clippy on both crates and fmt.

**Not covered:** two saves that overlap can still each start from what was on disk, so the later one wins for fields that aren't the person's (the person's fields are kept, as before). That's separate from the write itself.

Fixes #273
2026-11-02 14:45:46 +07:00
GGWA 434c0ca7c9 Add a Korean README (#310)
Adds a Korean README, linked from the language switcher in the English, Japanese and Chinese READMEs.
2026-11-02 14:45:04 +07:00
Oliver Mee 2a9bfe628e Objective-C chained offsets past PAGEZERO resolve to the image (#298)
Objective-C pointers whose chained offset lands in file-empty __PAGEZERO now reach the image-base fallback, so the classes are found again.

Fixes #296
2026-11-02 14:44:02 +07:00
Brandon Thomas ede9d7fa48 The README says what to do when macOS blocks the command-line zip (#265)
The README says what to do when macOS blocks the browser-downloaded command-line zip: download it from the terminal, or clear the quarantine on a blocked copy. The roadmap records the Gatekeeper question (#94) and a decision on a stapled package.
2026-11-02 13:45:29 +07:00
Brandon Thomas e935ba5758 The roadmap and status say how approvals differ between agents (#244)
Docs only. The roadmap and status now say how approvals differ between agents (Hermes's one-shot mode turns its own approvals off), and record a decision on one approval behaviour across agents.
2026-11-02 13:34:50 +07:00
GGWA 35d76945ca ELF files with no section headers show their dynamic symbols and functions (#233)
ELF files whose section headers were removed (common in NAS and router firmware) now show their functions, imports and exports. The dynamic symbol table is found through PT_DYNAMIC (DT_SYMTAB/DT_STRTAB, counted from DT_HASH, then DT_GNU_HASH, then an estimate with a warning), shared with the Flutter reader. The prologue scan walks executable segments when there are no sections.

Fixes #223
2026-11-02 13:26:37 +07:00
Brandon Thomas da83b81be2 A build stops with a plain message when craft-anything-cli is missing (#226)
A local build by Claude Code, Codex or an ACP agent now checks that craft-anything-cli starts before studying or starting the agent. When it is missing or won't start, the build stops with a plain message and what to do, instead of Claude Code's "MCP tool not found" error. A check that times out lets the build go ahead, and stopping the build ends the check.

Refs #91, #64, #113.
2026-11-02 13:16:39 +07:00
BFlat 4419c674cf "It's done" keeps a build as it is and stops offering to carry on (#221)
A paused, stopped or failed build only offered Continue or Try again; there was no way to say "enough now". project_build_finish marks the project Ready and adds a Done step to its conversation, keeping everything; the project screen shows It's done beside Continue and Try again when nothing is running.

Fixes #210
2026-11-02 11:51:58 +07:00
BFlat fe6a8ad98c From the CLI, a capture with no open site says each command starts its own browser (#213)
web_site_open keeps its browser for one session, and each CLI command is a session of its own that closes its browser when it ends. From the CLI, a capture with no open site now says so, and to run the steps together in an MCP client, the app or rebuild. Documented in tool-status.

Fixes #153
2026-11-02 11:31:28 +07:00
GGWA fff225d319 The Windows pipe gap in project_play is noted in its tool help and kept as an ignored test (#212)
project_play's help says that on Windows a started program inherits the caller's output pipe (#207), and the reproducing test is kept in platform as an ignored test.
2026-11-02 11:28:57 +07:00
GGWA 648fbd7bde A Mach-O method list at the end of the address space is read without overflowing (#205)
Each method entry's address and its fields' addresses are computed with checked arithmetic, so a method list near the end of the address space ends the list instead of panicking (debug) or reading a wrapped address (release).
2026-11-02 10:09:52 +07:00
GGWA fa7f1a114e An A32 doubleword load or store into r15 decodes as invalid instead of stopping the ARM analysis (#204)
An A32 LDRD/STRD with Rt=15 (e.g. 0xc0c7fef3) made the decoder library panic on the nonexistent r16; such a word now decodes as no instruction, before the library sees it.
2026-11-02 10:07:46 +07:00
BFlat 3f15887891 The Windows app no longer starts OpenGL, which crashed some Intel drivers before the window opened (#198)
eframe starts every wgpu backend before an adapter is picked, and starting GL loads the system's OpenGL driver; Intel's ig9icd64.dll crashed in it (0xc0000005), so the app vanished with no window or error box. Windows now starts the primary backends only (DX12 with WARP, Vulkan); WGPU_BACKEND still decides when set.

Fixes #196
2026-11-02 08:10:17 +07:00
one-bit 1dcb46b2f8 Unreal Engine installations and their bundled Clang are found on Linux (#191)
Reads Linux registrations from ~/.config/Epic/UnrealEngine/Install.ini, honours a valid UE_ROOT, takes the version from Build.version, and counts the selected engine's own bundled Clang as its C++ tools.
2026-11-02 07:11:30 +07:00
maple 6d91b20b75 A Simplified Chinese README (#188)
Adds README.zh.md, translated from README.md with the same links and commands, and links it from the language switcher in README.md and README.ja.md.
2026-11-02 07:09:48 +07:00
BFlat 39ca993b20 Pitfall: never type python - with a heredoc (#181)
Strengthens the pitfall about python - heredocs waiting for input.
2026-11-02 05:35:42 +07:00
BFlat 6355654498 The README and STATUS give today's tool counts (#172)
The README, its Japanese copy and STATUS say 314 tools, 298 of them in the engine and the rest from the AI and setup layers, matching docs/tools.md and craft-anything-cli commands. Fixes #159.
2026-11-02 04:56:04 +07:00
BFlat 09bb4f3757 Pitfall: merge the commit CI tested, not a head read later (#150)
Adds a pitfall: merge with --match-head-commit set to the commit the green run tested.
2026-11-02 03:52:08 +07:00
Agapenor 481361563b A Flutter library with a header table at the very end of the address range is read safely (#131)
Elf::parse in formats/src/dart.rs skips a program or section header entry that starts past the end of the file, so its field offsets can't overflow.
2026-11-02 01:46:48 +07:00
BFlat 9d3ea967fb Translate the agent program setting into Chinese (#122)
Both Chinese catalogs get the five strings #117 added, so cargo xtask i18n-coverage passes again on main; pitfalls.md notes the case.
2026-11-02 00:51:01 +07:00
才倾梦华V d55523e6cd Add Simplified and Traditional Chinese UI translations (R2.9) (#115)
Adds Simplified and Traditional Chinese UI catalogs, picks the UI language from the system when Language is System, makes prices and a few labels translatable, recognises Chinese words for games and websites in requests, and adds cargo xtask i18n-coverage and docs/localization.md.
2026-11-02 00:34:31 +07:00
Agapenor 6787ae4852 The Agent console keeps its size instead of growing until its tabs are cut off (#81)
The conversation's history counts the item spacing and the prompt row is top-aligned, so the Agent console's panel no longer grows 17 points a frame until its tabs are cut off.
2026-11-01 23:32:19 +07:00
VakzOs 5d794bfefb Add a French UI translation (#70)
Adds a French UI catalog (Settings > General > Language), a test that every translation keeps its placeholders, and --lang on the snapshot example.
2026-11-01 23:05:25 +07:00
valère didon 26bf3635f1 Frida lists devices and processes on Windows instead of hanging or finding none (#59)
frida_devices_find runs frida-ls-devices in a pseudo console on Windows, where it crashed on pipes and hung; frida_targets_list falls back to plain processes; device columns split on two spaces. Fixes #58.
2026-11-01 23:05:18 +07:00