v1.0.37
@veyyon/coding-agent
Added
- Added an eval-only per-section system-prompt override, reachable only through the
VEYYON_EVAL_SYSTEM_PROMPT_SECTIONSenvironment 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 noconfig.ymlcan reach it and it cannot contaminate a normal run; when the variable is set,veylogs 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 updatenow updates source installs for real: it fast-forwards the checkout, reinstalls dependencies, and regenerates build artifacts, instead of refusing with advice to rungit pullyourself.- 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.exeexit 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.transparentdefault, and a theme can still declare an explicitcomposerBg. - Every built-in theme is presented again. The temporary alabaster-only picker is reverted along with its
tui.paintGround: alwaysdefault, which repainted the terminal's background color on launch;tui.paintGroundis back toauto(paint only when it cannot produce a visible seam) and the dark/light defaults are back totitanium/light.
@veyyon/hashline
Fixed
REMno 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 DESTno 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