Repository navigation
v0.52.0
Follow-ups from the trial, measured
v0.51.0 closed the trial issues (#18); this release lands the pieces that were still owed on them (#1, #4, #9, #16), fixes two things found while measuring, and adds a provider. One commit per item.
Skill pack is a signed release asset (#9)
- First-party skills no longer ship inside the binary.
skills/bundled.jsonlists every pack nur ships itself (60 packs, 98 files);scripts/build_skill_pack.pyturns it intonur-skills.zip, which CI signs and publishes beside the binaries (nur-skills.zip,.minisig,.sha256). nur ecosystem refresh-skills(and the automatic ensure) downloads the pack for the running version, verifies it against the minisign key pinned in the source, and writes~/.nur/skills/<name>/<file>with a.bundled-pack.jsonstamp. A matching stamp is the fast path.NUR_SKILL_PACK=<dir|zip>and debug builds read a checkout instead. CI validates the manifest; the regressionskill-packdrives the zip path.
Credentials encrypted at rest on Windows (#4)
~/.nur/auth.json,provider_keys.jsonandprovider_sessions.jsonare sealed with DPAPI (this account on this machine) on top of the owner-only ACL from v0.51.0. Existing plaintext files are migrated on first read;[auth] encrypt_at_rest = falseopts out.nur auth statussays which protection applies. Regressioncredential-encryption.
macOS in the validate matrix (#16)
- The CI harness (unit suite, E2E, startup, regressions) now runs on macOS as well as Linux and Windows.
Prompt-cache numbers, measured on real routes (#1)
- Four sequential
nur runsessions of five requests each against OpenCodedeepseek-v4.1-flash: 94.3% of prompt tokens served from cache over all 20 requests, 99.2% on turns after the first (the first turn of a cold session is the only miss). The Codex route could not be measured: the account's ChatGPT subscription rejects every Codex model today, from the Codex CLI itself as well as from nur, so that number is still owed. - Measuring exposed that
NUR_PROVIDERwas read only by a hint string whilenur --helpadvertised it. It now selects the provider for one process (nur runand the TUI), resolving aliases and applying the route's defaults; an inherited value from a parent nur session is ignored with a notice. E2E 49.
Paper Instruments (Ultramarine 1 Flash)
- New route
paperinstruments(70 in the catalog): Chat Completions atapi.paperinstruments.com/v1,PAPERINSTRUMENTS_API_KEY, defaultultramarine-1-flash; aliasespaper-instruments,paper,ultramarine. Reasoning is mandatory on that gateway and the ladder islow/high/max, so the effort goes on the top-levelreasoning_effortfield and/effort mediumlands onhigh; assistant turns replayreasoning_content; every request carries the stickyx-session-idso a conversation stays on one deployment. E2E 50.
Smaller fixes
- Factory Droid: nur picks the newest
droidbuild on the machine instead of the first directory onPATHthat has one, which was routing to a stale binary and 404ing. - TUI over web terminals: on Unix the TUI no longer enables any-motion mouse tracking (
?1003), which made every pointer movement a redraw over a browser terminal or SSH.theme_setup.motion = "reduced"(orNUR_REDUCED_MOTION=1) holds ambient animation on one still frame and stops idle repaints;autopicks it inside Orca panes and SSH sessions./theme motiontoggles and saves. - sgrep is enforced rather than suggested: a
grepwhose pattern reads as a description is answered by sgrep, a grep past its default cap comes back reranked, andbashrefuses workspace searches while filters of another command's output still run. A missing sgrep binary degrades to lexical grep with an install hint. - The Linux pty driver in
tests/e2e/run_startup.pygives the child its own controlling terminal, so TUI regressions run under WSL and other harnesses that already hold a tty.
Tests
Unit suite 1246 passing; E2E 50 scenarios, startup 11, regressions 13 on Windows and WSL (Linux). The macOS job is new in this release.
Install
Prebuilt binaries below are signed; nur update verifies the signature before swapping. The skill pack is fetched on first run. Or:
irm https://raw.githubusercontent.com/nuroctane/nur-cli/main/install.ps1 | iex
curl -fsSL https://raw.githubusercontent.com/nuroctane/nur-cli/main/install.sh | bash