Skip to content

v1.0.37

Choose a tag to compare

@github-actions github-actions released this 24 Jul 08:29
· 4209 commits to main since this release

@veyyon/coding-agent

Added

  • Added an eval-only per-section system-prompt override, reachable only through the VEYYON_EVAL_SYSTEM_PROMPT_SECTIONS environment variable (a JSON object of section name to replacement text). It swaps individual banner sections of the default prompt (conventions, role, runtime, toolPolicy, executionWorkflow, deliveryContract) for a benchmark while leaving every other section, and every settings-gated block in it, byte-for-byte untouched. It is deliberately NOT a config key or CLI flag, so no config.yml can reach it and it cannot contaminate a normal run; when the variable is set, vey logs a loud warning that the prompt is not the production one. Unlike a whole-prompt override it cannot freeze a snapshot that stops responding to settings or silently drop a settings-gated section (for example the delegation block that renders only when delegation is on). Malformed JSON, an unknown section name, a non-string value, a replacement that drops its section banner, and combining the override with a custom whole-prompt template each fail loudly rather than silently.

Fixed

  • veyyon update now updates source installs for real: it fast-forwards the checkout, reinstalls dependencies, and regenerates build artifacts, instead of refusing with advice to run git pull yourself.
  • A source checkout missing its generated tool-views bundle (any freshly pulled or cloned checkout) no longer dies at launch with a raw module-resolution error: the launcher regenerates the bundle before starting, and fails with the exact fix command if it cannot.
  • The setup wizard now paints its own pure-black ground across the full frame (splash, scene transitions, and outro), so the launch sequence looks the same on every terminal background instead of inheriting the terminal's color.
  • The Windows binary is now built as a modern (AVX2) Bun target instead of baseline. Baseline Windows standalone builds crash in the Bun runtime at startup before any Veyyon code runs (oven-sh/bun#32684), which made every published veyyon-windows-x64.exe exit with a segmentation fault on launch. The modern target requires a CPU with AVX2 (Intel Haswell 2013 / AMD Excavator 2015 or newer).
  • The inline TUI no longer paints backgrounds by default, so nothing renders as a colored slab on a terminal whose background differs from the theme: the user-message bubble, custom/skill/hook message cards, tool-state tints, the composer band, and the status line all inherit the terminal's own background. The status line's painted bar is still available by turning off the new statusLine.transparent default, and a theme can still declare an explicit composerBg.
  • Every built-in theme is presented again. The temporary alabaster-only picker is reverted along with its tui.paintGround: always default, which repainted the terminal's background color on launch; tui.paintGround is back to auto (paint only when it cannot produce a visible seam) and the dark/light defaults are back to titanium/light.

@veyyon/hashline

Fixed

  • REM no longer deletes a file whose content drifted from the section tag. A whole-file delete is now the strictest op about the content tag (it was the most lenient: empty edits took the position-stable path and deleted through drift with only a soft warning), so a stale or fabricated tag can no longer discard edits the model never saw. The delete is refused with a mismatch error that forces a re-read, matching how an anchored edit on a drifted file behaves.
  • MV DEST no longer silently overwrites an existing destination file. A move onto a different existing file is refused during prepare (aborting the whole batch before any write), so a wrong or hallucinated destination can no longer destroy the user's work. A rename that only respells one file (case-only on a case-insensitive volume, or through a symlink) is still allowed, matched by device+inode identity rather than by path string.

What changed

41 commits since v1.0.36.

Fixes

  • fix(release): unwedge re-cuts after a dead tag; self-heal the release-train label
  • fix(install): generate build artifacts in the source install flow
  • fix(update): make veyyon update work for source installs, self-heal the source launcher
  • fix(tui): revert ScrollView same-ref fast path — streaming rows mutate arrays in place
  • fix(setup-wizard): paint the full-frame black canvas ground per the design Canvas rule
  • fix(prompt): use the shared isRecord guard in the eval-sections parser
  • fix(release): ship the Windows binary as a modern (AVX2) Bun target
  • fix(lint): drop the unused theme import left by the hook-message bg removal
  • fix(tui): paint no backgrounds by default; revert the alabaster-only stopgap
  • fix(changelog): merge duplicate version sections in the changelog fixer

Performance

  • perf(tui): skip ScrollView setLines copy on identical array reference

Tests

  • test(tui): recover ghostty-web OOM traps via compacted-state replay
  • test(tui): engine-mirrored shadow commit ledger, saturation-aware oracles, pinned regression replays
  • test(tui): mirror the cursor-tail re-anchor in the render-stress shadow window
  • test(update): e2e suite for the installRelease self-update pipeline
  • test(edit): fix withTempDir race that deleted the temp dir before the async read

Build & CI

  • ci: smoke the real source launcher under a PTY with the generated artifact removed
  • ci: alert on a failed release cut, not only a failed publish
  • ci: gate release tagging on green CI, alert on red release runs, un-cancel release gates

Chores

  • chore: bump version to 1.0.37
  • chore(changelog): dedup released bullets and reslot 1.0.37 after the merge

Other changes

  • deepswe-bench: count each tool call once, not once per call and once per result
  • evals skill: document treatment-applied proof, efficiency section, refusal asymmetry
  • deepswe-bench: label an unreported efficiency metric "not measured", not "equal"
  • deepswe-bench: detect encode in tool calls, surface error reasons per arm
  • deepswe-bench: measure argot's real claim — paired efficiency + treatment-applied
  • deepswe-bench: stamp per-arm input fingerprints into results.json
  • deepswe-bench: document the paired arm comparison in README + evals skill
  • deepswe-bench: add a paired arm-vs-arm comparison with an exact sign test
  • deepswe-bench: pin + stamp the sampling temperature for every arm
  • deepswe-bench: report Wilson 95% CI instead of degenerate binomial SE
  • deepswe-bench: make --limit a representative even-stride sample, not the biased alphabetical head
  • hashline: refuse REM when the file drifted from its tag instead of deleting unseen content
  • hashline: refuse MV onto an existing different file instead of silently destroying it
  • argot: surface unreadable dict-corpus files instead of dropping them silently
  • argot: surface the non-git tree walk's silent truncations (Law 10)
  • deepswe-bench: make the job-name round-trip testable and test it
  • deepswe-bench: track the argot-setting-only and candidate-argot-nudge arms
  • deepswe-bench: scientifically sound eval set (repeats, treatment guard, single-IV docs)
  • argot: make the preamble invite adoption, not just describe the notation
  • deepswe-bench: make per-section prompt override eval-only and uncontaminatable

Full Changelog: v1.0.36...v1.0.37