Repository navigation
Bake 0.4.5
Bake 0.4.5 gives each tool its own card with previews that Ctrl+O expands, shows subagents and background shells as one tasks list, puts what a turn is doing under its latest output and the status line on the screen's last row, and takes Pi 1.5.2's fixes to the file tools, bash timeouts, images, branch summaries, and provider requests. Linux remains its only released platform.
- One place for work beside the conversation. Subagents and background shells show together as tasks under the composer. One quiet row says how many run, how many failed or finished, and names the newest running one, a shell with its command and time; once everything has finished it stays, dim, while the session keeps them. Ctrl+G, or ↓ past the draft, opens one list of both, subagents then shells, with one selection across them and the selected task's last line of output or last words under it. Enter opens a shell's output or a subagent's details,
xstops it, and Esc steps back one level. Marks match the conversation's: a running task shows a running call's mark, held steady, and done, failed, and stopped look alike in both places.bake previewshows sample tasks. - Cards for more tools. A write shows the first lines it writes, numbered and coloured, a search its matches under their files, a listing its first entries, and a web search its results by title and site. A read or a fetch says what came back, such as
40 linesorHTTP 200 · 12.4 KB, without repeating it, and an MCP tool's card names its server and tool,github · create_issue, with its arguments as quietkey valuepairs. - Previews that keep what matters. A failed call keeps the last lines of its output, where the error is. A run of blank lines reads as one, and a reply that is one JSON value, as many MCP tools send, is laid out a member a line and coloured. A card counts its lines only when its preview leaves some out, a long line in an edit's diff is cut to a few rows, and a call whose whole output was saved to a file names that file under its card.
- Ctrl+O shows every call whole. Every line, the whole diff, every match and entry, a read's content numbered from the line it started at and coloured by its language, and a fetch's text, up to 400 rows a card; Ctrl+O again returns to the previews. It works while a turn runs and while reading back, and keeps your place. Until it is first used, the count of the newest card that has one names it:
⋯ 26 more lines · Ctrl+O. Counts of one read1 line, as in↓ 1 line belowwhile reading back. - What a turn is doing sits under its latest output, and names the work. While a turn or a compaction runs, one row under the conversation's newest line shows its word, what the latest call is doing, such as
reading transcript.rs,running cargo test, orsearching ctx.effect, with+2when two more run beside it, in place ofrunning bash, and its time; the row moves down as the output grows, and scrolled up to read, it stays on the last line above the composer. How the turn ended stays under the newest output until the next prompt, and scrolls out of sight with it. The status line, with the model, its thinking level, the context, and the working directory, is now the screen's last row, under the tasks, and the row above the composer appears only while the tasks list or one task is open, to name it and its keys. - Prompt-template arguments keep apostrophes.
/review why doesn't the user's cache workno longer drops its apostrophes or shifts$1and$2: as in Pi 1.5.2, a quote starts quoting only at the beginning of an argument, a quote with no closing match is kept as text,\"inside"..."(or\'inside'...') is a literal quote, and""or''is an empty argument. - The thinking level survives
/tree. After/treereturns to a point recorded with another thinking level, the next prompt records the level in use there, so resuming the session restores it rather than the old one. - Image-only messages leave the queue. A steering or follow-up message with images and no text no longer stays listed as queued after the model has received it.
- Sessions whose project is gone are refused in scripts.
bake -p,--output-format,--mode json, and--mode rpcrefuse a session whose saved working directory no longer exists, say which directory, and exit 1 before anything is sent or written.--forkcopies it into the current directory. - Fewer wasted retries. A Z.ai usage limit (error code 1308) is no longer retried, a gateway stream cut short after the reply began is retried, and LiteLLM's "Context Window exceeded" starts compaction, as in Pi 1.5.2.
- Exported pages from Pi 1.5.2.
/shareandbake --exportpages show the session's system prompt and tools where the session recorded them, open sessions too deep for the old page, and count each reply's recorded cost. grepglobs are relative to the searched path. As in Pi 1.5.2,grepwithpath: "src"andglob: "sub/*.rs"searchessrc/sub, a leading./is ignored, and a glob without/still matches file names at any depth.findandlslimits from Pi 1.5.2. A limit below 1 means 1 and a fractional limit is rounded down, andfindsays its result limit was reached only when more files exist.- Resized photos are sent as JPEG. When
readshrinks an image, it sends the smaller of PNG and JPEG, so a large photo no longer reaches the model as a bigger PNG; screenshots and other flat images stay PNG. - Cut lines keep whole characters.
grep's long lines and the tool results quoted in compaction and branch summaries are cut before a character such as an emoji rather than through it. - Clearer bash timeouts. Outside the sandbox, when a command's shell has exited but a background process it started keeps writing until the timeout,
bashsays so, with the shell's exit code and when it exited. In the Linux sandbox, such processes end with the shell. - Branch summaries think. The summary
/treewrites of the branch it leaves asks a reasoning model at the session's thinking level, and summarizes the branch as the model's context last showed it, with context edits such ascontextMasking's placeholders applied. - Room for the answer near the context limit. The output allowance keeps 15% of the estimated input, at least 4,096 tokens, free below the model's context window, so providers that count tokens more generously, such as OpenRouter, no longer refuse a long conversation; when that would leave less than 32,768 tokens for the answer, only the 4,096 are kept and the answer may use up to 32,768.
- Anthropic models get MCP tools' shared definitions. A tool schema's
$defsordefinitionsis no longer dropped when Bake sends it to an Anthropic model, so its references resolve. - Codemode prints
NaNandInfinity.console.log,text(), and thrown values showNaN,Infinity, and-Infinityinstead ofnull; inside objects and arrays they are still JSON'snull.