Releases: tnfssc/die
Release list
v0.11.2
Clearer code ownership and repeatable CI
- Live prompt text lives with the other prompts under
src/prompts/. Provider-specific instructions stay separate. - Shared output buffers, job-delivery contracts, child-process environment rules, and session identity have clear homes outside individual consumers.
- Session input, transcript history, and configured-agent authority use shared session boundaries.
- Web bootstrap and packaging code live with their owning system. Release notes are selected from the release version instead of a hardcoded filename.
bun run ciruns the same Linux checks locally and in GitHub Actions, with isolated temporary files. The macOS Live test setup and unstable scheduler heap assertion are fixed.
This is an internal cleanup and CI reliability release. It does not intentionally change voice instructions, saved settings, delegation permissions, job cancellation, or packaged asset layout. Checks use offline/fake providers; no new live audio or paid API acceptance is claimed.
Update
Run die update, restart die, then check die --version reports 0.11.2.
Full Changelog: v0.11.1...v0.11.2
v0.11.1
Realtime setup PCM rate fix
- The shared OpenAI Realtime session config now explicitly sends output PCM rate 24000. An authorized production-transport setup with gpt-realtime-2.1-mini rejected the omitted rate with missing_required_parameter / invalid_request_error at session.audio.output.format.rate; one same-model followup accepted session.updated after this fix.
- This proves mini setup acceptance only. Neither audio nor full-model acceptance was tested. Both Realtime models use the same corrected config. No further provider, key or device calls were made for this release.
- Safe allowlisted provider code/type/field diagnostics and strict offline setup-contract mutation tests accompany the fix. The setup-only probe is disabled by default before auth-file reads and requires explicit opt-in; it is not run by release gates.
- Existing voice controls and transcript behavior are preserved.
Update and retry
Run die update, restart die, then confirm die --version reports 0.11.1. Use /live provider openai, /live model gpt-realtime-2.1-mini, /live status, then /live start. The full model gpt-realtime-2.1 uses the same fix but was not live-tested. Keep the saved key private and unchanged. Voice retries may incur normal API charges; share only sanitized errors, not keys or raw logs.
Full Changelog: v0.11.0...v0.11.1
v0.11.0
Voice controls, transcript grouping, and Realtime terminal diagnostics
- Voice self-stop closes voice resources while leaving agent jobs running. Explicit work-stop uses current-session scoped execute controls, reports pending cancellation honestly, and handles supported asynchronous descendants. Busy-agent steering is processed at the next available steering boundary; blocking tools can delay it. Detached descendant termination is not guaranteed.
- GPT-Live transcript grouping keeps adjacent speech together with bounded speaker/time/size grouping and preserves corrections and handoff authority.
- Fixed the proven terminal UI bug that discarded safe detailed OpenAI Realtime errors. Classified handshake/status and startup-stage diagnostics now reach the UI without exposing keys or raw provider bodies.
The actual cause of the user’s OpenAI rejection remains unknown. Exact compiled production transports passed offline loopback tests on Linux and macOS; that is not proof of authenticated OpenAI connectivity. No real jobs were cancelled, no keys accessed, no paid provider calls or physical-device tests were performed.
Update and retry
Run die update, exit and restart die, then confirm die --version reports 0.11.0. Select /live provider openai and the same /live model gpt-realtime-2.1, confirm with /live status, then run /live start. Keep the same saved key; do not paste it into chat. Starting voice may incur normal API charges. If it fails, share only the new sanitized error and selected model, not keys or raw logs.
Full Changelog: v0.10.2...v0.11.0
v0.10.2
Realtime now reports actionable handshake diagnostics from the original authenticated WebSocket Upgrade: HTTP status and a small allowlist of provider error codes, without exposing response bodies, headers, URLs or credentials. Session-setup failures remain distinct. The ws transport is pinned to current stable 8.21.3 after checking the official npm registry and advisories.
This is not a proven fix for the reported connect_failed: the actual remote cause is still unknown. The same key working with GPT-Live does not prove Realtime endpoint/model access. No extra provider probe, automatic retry or fallback model was added. GPT-Live, Gemini and Mac audio behavior are unchanged.
Retry: run die update, restart die, select /live provider openai and the same /live model gpt-realtime-2.1, confirm with /live status, then run /live start. Keep the same saved key; do not paste it into chat. If it fails, share only the new sanitized error and selected model, not keys or raw logs. Starting voice may incur normal API charges; no paid API call or physical-device test was performed for this release.
Full Changelog: v0.10.1...v0.10.2
v0.10.1
OpenAI voice is now available alongside the unchanged Google Gemini default. Choose exactly gpt-realtime-2.1, gpt-realtime-2.1-mini, or gpt-live-1; provider/model selection is persisted independently of the coding-agent model. GPT-Live uses its own continuous WebSocket transport, not the Realtime protocol.
Update with die update, then restart die. Inside die:
- Run
/login→Sign in with an API key→ OpenAI to save the canonical OpenAI API key. Never paste keys into chat. - Run
/live provider openai, then/live model gpt-realtime-2.1(orgpt-realtime-2.1-mini/gpt-live-1). - Run
/live setupand follow the setup/start prompts. Use/live statusto check selection,/live startto start explicitly, and/live stopto stop voice without cancelling agent jobs.
This uses separately billed OpenAI API access, not a ChatGPT subscription or Codex OAuth. Starting voice may incur API charges. Native Live audio requires macOS arm64; Linux and Android CLI releases remain available. The Mac executable includes its native helper and the normal updater remains supported.
GPT-Live local interruption/automatic recovery uses a PCM RMS heuristic, not a trained speech detector or server cancellation acknowledgment. After qualified quiet, output resumes on the same connection; stale output tails remain possible. Received transcripts are not proof that all audio was played. Offline protocol and device-free release checks do not establish paid API/model entitlement, real microphone/speaker behavior, acoustic quality, or double-talk performance; no paid API or physical-device validation was performed for this release.
Full Changelog: v0.10.0...v0.10.1
v0.9.2
Native Live is now the single voice experience on Apple Silicon Mac. Run /live to start or stop; action autocomplete and focused credential setup are included. /live-lab is replaced by /live. Stopping voice does not cancel agent work.
Playback keeps a bounded native cushion to avoid scheduler starvation, preserves reply tails and interruption behavior, and uses the Mac-tested full-duplex audio path. The compact footer waveform follows microphone and scheduled output PCM, not measured speaker output.
Agent handoffs use captured speech and branch-scoped transcript context, with explicit gaps and bounded private snapshots for longer conversations. The voice prompt supports general-purpose requests without claiming queued work is complete.
The Mac executable includes its native audio helper and remains compatible with the existing single-binary updater. Linux/Android CLI assets remain available; native Live audio is currently supported on macOS arm64, not Linux.
Update with die update, then restart die. Prior user Mac playback feedback and installation checks informed this release; automated release checks are device-free. This is not a claim of exhaustive acoustic, route, double-talk, or real-agent/provider validation. The parallel OpenAI Live provider feature is not included.
Full Changelog: v0.9.1...v0.9.2
v0.9.1
Local speaker diagnostic — not a proven echo fix
Run /live-lab speaker-check in a local interactive session. After explicit consent, it plays a short low-level test sound through the system-selected output and listens briefly through the same native processing path used by voice lab. Stay quiet and start with a comfortable low output volume. No Gemini key, provider connection, or paid API is used.
The bounded in-memory test reports render-reference correlation and capture energy, processing configuration, and honest no-signal/clipping/inconclusive outcomes. PCM is not saved or logged. This is diagnostic evidence for investigating speaker self-interruption, not an absolute AEC score, a proven echo fix, or proof of speech double-talk/barge-in. Native echo processing, microphone forwarding, provider VAD, and the agent job bridge remain unchanged.
Update with die update, restart die, then run /live-lab speaker-check. Only the user's explicit command opens audio devices.
What's Changed
- chore: audit dependencies and update pinned CI actions and tools by @tnfssc in #4
- ci: reuse built smoke binary and verified exact-SHA release assets by @tnfssc in #5
Full Changelog: v0.9.0...v0.9.1
v0.9.0
v0.9.0
Live Lab can now work with the current session’s coding agent and jobs: scoped list/inspect, send/steer to the current agent, and explicitly confirmed cancellation. Normal speech needs no extra terminal confirmation. Agent handoffs require the exact trimmed text of a completed input transcript; paraphrases, missing completion markers, and expired speech are rejected. This is provider-derived transcription, not speaker authentication or proof from a real conversation.
Host context bursts are coalesced and duplicate tool calls replay their result without repeating work. Native job completion is observed through bounded scoped polling, not an exhaustive event stream: short-lived or undiscovered jobs can be missed.
On macOS, native capture explicitly disables voice-processing bypass and verifies it again after startup. Ready diagnostics report processing state and route sample rates without device identity or audio. The v0.8.2 audio graph and startup diagnostics are retained. MacBook speaker echo cancellation and double-talk remain acoustically unverified. Capture is not muted during playback.
Run die update, start a fresh die session, then /live-lab. Live Lab remains experimental and uses its existing consent flow. The Apple Silicon helper is embedded in the Mac stable executable. Publication is gated by the normal native Mac, embedded-helper, updater, deterministic test, build, web, and PTY checks. No real devices, paid APIs, real job cancellation, or live-provider conversation were used for verification. Ordinary /live and stable updater asset names are unchanged.
Full Changelog: v0.8.2...v0.9.0
v0.8.2
v0.8.2
Narrow macOS Live Lab mic-check patch for the reported audio_start failure. The mixer is now explicitly connected to the voice-processing output and uses the route format, following Apple’s voice-processing sample. This is a plausible graph/format fix, not a proven root cause or verified fix on the reported Mac.
Startup failures now identify the output connection, source attachment/connection, tap installation, or engine-start stage. Caught NSError details are restricted to a bounded, allowlisted system/synthetic domain and numeric code; descriptions, userInfo, device names and raw logs are not forwarded. Objective-C exceptions from graph operations cannot be caught by Swift’s error handler.
Run die update, then start a fresh die session. Optional die --live-lab-self-test uses no devices. To retry startup, run /live-lab mic-check and accept its explicit consent prompt: it briefly starts native audio, discards capture, saves no recording and makes no provider or credential-service calls. Report the bounded stage/domain/code, not keys or raw logs. A ready result is not proof of signal or acoustic quality.
The Apple Silicon helper is embedded in the Mac stable binary. Publication is gated on native Mac compilation, device-free tests, deterministic release/build/web/PTY checks, and actual Mac embedded-helper/updater checks. Real microphone/speaker devices, TCC prompts, acoustic behavior, and end-to-end provider sessions remain unverified. Linux virtual signal tests pass but do not establish real-provider or physical-device end-to-end support. Live Lab remains experimental; ordinary /live and stable update asset names are unchanged.
Full Changelog: v0.8.1...v0.8.2
v0.8.1
v0.8.1
Diagnostic patch for the generic macOS Live Lab “Audio helper error”; the reported root cause is not yet known or verified fixed. The report came from Ghostty with no microphone prompt and previously working SoX capture. That does not establish a permission, device, or terminal cause.
Run die update, start a fresh die session, then run /live-lab mic-check and accept its explicit consent prompt if you want to test device startup. The check starts native input/output briefly, discards captured buffers, saves no recording, and makes no provider or credential-service calls. Report its bounded diagnostic code/stage, not keys or raw logs. A ready result is not proof of microphone signal or sound quality. Optional die --live-lab-self-test uses no devices.
Known startup stages now surface safe allowlisted codes instead of losing them behind a generic message. Native startup validates output format before construction and removes the input tap only if installed. Neither change is a proven fix for this report.
Publication is gated on Mac compilation/device-free native tests, relevant deterministic tests, all stable raw assets, and actual Mac release executable embedded-helper/updater checks. Real devices, microphone prompts, acoustic quality, provider sessions, signing and notarization are not validated. /live-lab remains experimental; paid voice sessions remain separately consented. Existing /live and ordinary stable updater asset names are unchanged.
Full Changelog: v0.8.0...v0.8.1