Commit Graph

15 Commits

Author SHA1 Message Date
bflatastic 12a750e706 Another program on a model server's port is no longer offered as an AI
Local model servers were found by an open port alone, so any program listening on 8080 (a common
port for local web servers) was offered as "llama.cpp server (local)" with no model, and chatting
with it failed with "answered 404: 404 page not found". A local server is now offered only when
its model list answers; one that answers with an error or a page that isn't JSON is something
else. A server that doesn't answer in time is still offered, as before, since it may be loading.

Fixes #30
2026-11-01 15:01:18 +07:00
BFlat 81c17813c9 Korean, Chinese, Japanese and other scripts are tested to show in release builds, which ship their font licences (#29)
Release builds embed craft-fonts since the switch to the shared workflows, which turns the empty
boxes for Korean, Chinese, Japanese, Thai, Arabic, Hebrew, Hindi and arrows into text. A test now
checks every one of those in each of the app's font styles whenever craft-fonts is built in (as in
CI), so a font change can't bring the boxes back unnoticed. Packages now also ship craft-fonts'
OFL licences (OFL-<font>.txt), which the fonts require, and the release docs, ATTRIBUTION.md and
build.rs say how fonts are built in now (build.rs named the wrong app font).

Fixes #19
2026-11-01 14:37:57 +07:00
BFlat 70b11ba6e2 A program that crashes is named by its error, not the last line of its stack trace (#26)
When a coding agent or tool crashed with a stack trace, the error's headline was the trace's last
frame ("OpenCode stopped with exit code 1: at <anonymous> (/$bunfs/root/chunk-….js:96:6417)"),
which says nothing about what went wrong. The headline is now the line above the trace (searched
in all of stderr, since a trace can outrun the excerpt), with Java's "Caused by" and Node's
version footer handled; output without a trace keeps its last line.

Refs #15
2026-11-01 14:36:52 +07:00
BFlat a70843145c LM Studio and other local servers accept our tools: boolean sub-schemas are sent as objects (#25)
schemars writes `"items": true` for a list of any JSON (app_call_path_find's `functions`), which
JSON Schema allows but LM Studio refuses ("JSON schema error at #/properties/functions/items:
schema must be an object"), so every chat with it stopped. Tool schemas sent to a model now write
`true` as `{}` and `false` as `{"not": {}}` wherever a schema sits (to a bounded depth, since
run-time tools bring their own); `additionalProperties` keeps its boolean.

Fixes #17
2026-11-01 14:36:45 +07:00
BFlat b43d1e8d14 Coding agents installed with npm on Windows start instead of "isn't on your PATH" (#23)
npm installs Gemini CLI, Codex and often Claude Code on Windows as .cmd shims. They were found,
but Rust starts only .exe files by bare name, so every build stopped with "gemini isn't installed
or isn't on your PATH". An npm (or pnpm) shim's script now runs with Node directly, so a prompt
with line breaks or over cmd.exe's 8191 characters arrives whole; any other batch file starts by
its full path. The usual Windows install folders (~\.local\bin, npm, bun, cargo) are searched
after PATH.

Fixes #18
2026-11-01 14:34:51 +07:00
Brandon Thomas 4756633f89 Show what a build is on now, and open up into its activity as it arrives (#10)
The status row names the command or file under way instead of only counting
actions. "More detail" opens the latest lines: stages, every command and file
with how it ended, what the builder said, and what programs printed outside the
conversation. Everything is kept in build-activity.log, with secrets hidden, and
the rebuild_activity_show tool and the CLI read the same.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 21:12:56 -04:00
Brandon Thomas e244159c17 Call a coding agent's cost an estimate, not the bill (#9)
Claude Code's figure is its own guess at API prices, which a subscription
isn't charged. The project page now says "AI cost (estimate)" with a note
saying so, and the title bar says "(estimate)". What an API key was charged
is kept apart in usage.json; older files count as estimates.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 21:04:01 -04:00
Brandon Thomas 7ecce402f9 Try again picks up where a build stopped instead of starting over (#8)
A run with no message was read as a first build, so Try again studied the
original again and gave the builder the first brief, even with its session
saved. A run now carries on when the builder has already worked, and only
runs the check when the builder had finished (awaiting_check in craft.json).

A check that returns an error couldn't look at the build at all, so it gets a
second go, and then the run says the build is finished but couldn't be checked.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 21:01:22 -04:00
Brandon Thomas 8c0d7b0a38 Point links and release metadata at the renamed storytold/craft-anything repository (#7)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 20:30:51 -04:00
Brandon Thomas 6fe3d7f158 Show what a build is doing now and how long it has been quiet (#6)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 20:28:49 -04:00
Brandon Thomas 292d5af06e Stop deadlocks as they form and watch every lock for one that never lets go (#5)
* Stop deadlocks as they form and watch every lock for one that never lets go

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Give the stuck-lock banner's test a program of its own

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 20:28:16 -04:00
Brandon Thomas 6a120011a1 Explain failed agent runs, keep a log to open, and stop offering git servers as computers (#3)
* Explain failed agent runs, keep a log to open, and stop offering git servers as computers

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Fix a lock-up: the build's agent setup took the session lock twice in one statement

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 20:27:44 -04:00
BFlat 62700f5c69 Built by no longer offers a GitHub SSH key as a computer, and finds Claude Code on a Mac opened from the Dock (#4)
SSH hosts that point at a git server (named after one, or with its HostName or User git) are left out of the AIs found on the computer and the remote-machine picker. Programs are looked up and started with PATH plus the usual install folders (~/.local/bin, Homebrew, npm, bun, volta, cargo), which a Mac app opened from the Dock doesn't get.
2026-10-31 23:48:53 +07:00
Brandon Thomas c316051c9e Point links and release metadata at the storytold/craftanything repository (#1)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:01:25 -04:00
Brandon Thomas f64ae3bf3c Craft Anything
A native, pure-Rust app that shows anyone how a piece of software works, with
evidence-backed answers, then helps them rebuild it. It ships a desktop app, a
CLI and an MCP server, all driven by one engine.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 10:52:14 -04:00