Repository navigation
v0.46.0
v0.46.0 - post-switch review: lean tool results, Factory Droid OAuth, grep/glob/bg/jev fixes
A review pass over everything shipped in v0.45.x, plus the token-saving conventions from unreal-agent that nur did not have yet.
Tool results cost less
bashreturns the stdout alone.Stderr:andExit code: Nsections appear only when they carry information,(no output)when nothing was printed. No per-call header.- One bound per result:
max_output_lengthis honoured once (defaultmin(80000, tool_result_max_chars), max 400000) and headroom no longer re-spills it. The marker is...N bytes truncated; complete output in <path>.... - Timeout handoff only when the command produced output in the last 15 s; a silent command is killed and reported as timed out (new E2E scenario 29). The placeholder tells the model the result arrives on its own.
- New "Turn economics" prompt guidance: go wide with independent tool calls, never poll background work.
Background jobs
- Failed jobs keep their full output (previously only a 400-char preview). Cancelled jobs report as cancelled. Only model-launched jobs post completion notes. Bytes past the 2 MB capture cap are counted and reported.
Factory Droid
/login -> Factory Droid -> Sign in with browserimports an existingdroidsign-in (keyring presence only; nothing secret is copied).FACTORY_API_KEYstill works.- Launcher discovery:
NUR_DROID_BIN,~/.factory/bin,~/.local/bin,~/bin,%LOCALAPPDATA%\Programs\factory,/usr/local/bin,/opt/factory/bin, thenPATH. The error now distinguishes "signed in, launcher missing" from "not installed". - Whole process tree is terminated on cancel/timeout;
.cmdshims never receive the prompt on argv; idle timeout defaults to the turn budget.
grep / glob
- ripgrep:
--with-filename, NUL separators (timestamps in text no longer split a line), globs anchored atpath,**/dir/pruning, streamed and cancellable output with an 8 MiB budget, exit-2 handling. - Fallback walker: ancestor false positive in
is_hard_excludedremoved, 500-byte line clip, deterministic order, output identical to the rg path. glob: directory patterns expand todir/**; the size cap applies only to grep.
Jev engine slots
- Removing a key clears the in-memory copy too; the residence panel mirrors the client's key resolution exactly; forgetting a key clears the sessions-store copy but keeps OAuth; shared-slot deletion arms then confirms; accurate "fallback vs replaces" hint; hit-rect, compact error row and PageUp/Down fixes; one probe per refresh.
Vision
- Loop-level retry without images on any transport's media-unsupported error; media-aware compaction estimate;
image/jpgnormalised for Anthropic and Gemini; Gemini only sends accepted types;ftypbrand sniff rejects QuickTime/HEIF as mp4.
Docs updated: providers, authentication, tools, troubleshooting, README.