Skip to content

v0.52.0

Choose a tag to compare

@nuroctane nuroctane released this 15 Oct 16:55
· 5 commits to main since this release

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.json lists every pack nur ships itself (60 packs, 98 files); scripts/build_skill_pack.py turns it into nur-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.json stamp. A matching stamp is the fast path. NUR_SKILL_PACK=<dir|zip> and debug builds read a checkout instead. CI validates the manifest; the regression skill-pack drives the zip path.

Credentials encrypted at rest on Windows (#4)

  • ~/.nur/auth.json, provider_keys.json and provider_sessions.json are 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 = false opts out. nur auth status says which protection applies. Regression credential-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 run sessions of five requests each against OpenCode deepseek-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_PROVIDER was read only by a hint string while nur --help advertised it. It now selects the provider for one process (nur run and 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 at api.paperinstruments.com/v1, PAPERINSTRUMENTS_API_KEY, default ultramarine-1-flash; aliases paper-instruments, paper, ultramarine. Reasoning is mandatory on that gateway and the ladder is low/high/max, so the effort goes on the top-level reasoning_effort field and /effort medium lands on high; assistant turns replay reasoning_content; every request carries the sticky x-session-id so a conversation stays on one deployment. E2E 50.

Smaller fixes

  • Factory Droid: nur picks the newest droid build on the machine instead of the first directory on PATH that 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" (or NUR_REDUCED_MOTION=1) holds ambient animation on one still frame and stops idle repaints; auto picks it inside Orca panes and SSH sessions. /theme motion toggles and saves.
  • sgrep is enforced rather than suggested: a grep whose pattern reads as a description is answered by sgrep, a grep past its default cap comes back reranked, and bash refuses 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.py gives 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