Repository navigation
Releases: Dragonk/halny-vibe-deck
Releases · Dragonk/halny-vibe-deck
Release list
1.0.36
1.0.36 — 2026-10-28
Fixed
- Model, mode and thinking can now be changed on a session that has not been
resumed yet (sidebar preview). A lazy session has no ACP session in the
CLI worker, so session/set_config_option always failed with
"Session not found" — v1.0.35 made that failure loud, which surfaced the
gap. Selecting a value on a lazy session now records it on the session and
applies it inside session/new|load (main process, before any prompt can
race it); the chip self-corrects to the CLI-confirmed value once the load
settles. - The answer of the first prompt after a resume is no longer swallowed.
The recorded-model apply inside session/load makes the CLI emit a
checkpoint tool call that seeded the streaming state before the replayed
SessionHistory replaced the message array — every later ThinkingChunk and
MessageChunk then appended to a deleted message id and the UI looked
frozen. The streaming state is now cleared when a replay replaces a
session, and chunk handlers verify their target bubble still exists
before appending. - The user's own prompt bubble survives a resume replay. The optimistic
echo could be wiped by the SessionHistory replace when the session/load
result was processed before the replay event: the re-add check saw the
echo still present, skipped, and the replace then deleted it.
applySessionHistory now preserves trailing local user messages the
replay does not know about, whichever side of the race wins. - Renderer event-handler exceptions are no longer swallowed silently.
The web bridge catches listener errors with an empty catch; the App's
ACP event handler is now wrapped so a throwing case logs to the console
instead of invisibly eating a stream of events.
1.0.35
1.0.35 — 2026-10-28
Fixed
- A model/mode change the CLI silently refuses is now visible instead of
silently ignored. When session/set_config_option fails (for example the
CLI process does not know the requested model, so it answers with a
JSON-RPC error), the chip no longer keeps the optimistic value: the previous
setting is restored, a red banner explains what failed and why, and the
main process logs the refused set_config_option with its error code. Before,
the failure was swallowed: the chip showed the new model while the session
kept running on the old one. - Main-side verification that a model change actually applied. The parsed
set_config_option confirmation is now checked for model changes: if the CLI
acknowledges the request but the running model is still the old one, an
error is thrown so the UI can revert and inform.
Full Changelog: v1.0.34...v1.0.35
1.0.34
1.0.34 — 2026-10-28
Fixed
- Long-running agent turns no longer hit a false ACP request timeout on
session/prompt. In ACP, session/prompt only responds when the agent
finishes its whole turn. A 1-hour cap wrongly fired while an agent was
legitimately still working (SSH agents can run for many hours), and the
error cascaded: busy-tracking was cleared mid-turn, a stop+restart could
kill the worker in the middle of a turn, and resuming afterwards could
leave the chat empty. The prompt request now waits without a timeout,
which is safe because the worker exit handler rejects all pending requests. - No probing of a running agent mid-turn. acp:start no longer sends a
test prompt to a running worker whose turn is in flight (the same guard
ensure-worker already used). - Empty resume history no longer wipes the chat. If a resume returns an
empty history while messages are already on screen, the visible messages
are kept and a notice is shown instead of replacing the chat with nothing.
Full Changelog: v1.0.33...v1.0.34
1.0.33
What's new
Fixed
- Theme and logout stay where they belong: at the bottom of the sessions
list, under Settings. v1.0.32 wrongly duplicated them in the top brand
row - that duplicate is gone and the original bottom rows are unchanged. - The logout icon now renders on phones. The ⏻ power-symbol glyph is
missing from phone system fonts (it showed as an empty box); the button
now uses an inline SVG, identical on every platform and looking exactly
like in the desktop browser.
Full Changelog: v1.0.32...v1.0.33
1.0.32
What's new
Fixed
- Web client: connection lost while resuming a big session. The whole
session history is broadcast as one WebSocket frame; on a slow mobile
link (through a reverse proxy) the flush could outlast the heartbeat
rounds and the server terminated the client mid-resume („Connection to
the app server was lost”). Frames are now compressed
(permessage-deflate), the heartbeat tolerates clients that are still
flushing a pending payload, and RPC calls made during the 3 s reconnect
window are parked and replayed instead of failing instantly. - SSH sessions: the blue NEW emoji button is gone - remote connection
groups now use the same compact „New project…” pill as the sessions
header (mobile row included). - Web client: the logout button renders again (phones included). It
only existed in the desktop Header, which is never rendered in web
mode; the sidebar brand row now owns the theme toggle and logout.
Full Changelog: v1.0.31...v1.0.32
1.0.31
Fixes
- Headless serve: the watchdog restart loop, properly this time.
Chromium migrates the browser process into a transient app-*.scope a
few seconds after startup; sd_notify messages sent from the scope are
ignored by the service unit, so even with the v1.0.30 systemd-notify
fix the watchdog never saw a single ping and restarted the healthy
service every WatchdogSec (90 s). The app now remembers the service
cgroup it was born in and moves itself back before every notify call,
so READY and WATCHDOG pings always arrive attributed to the unit. - Web client (mobile): no more empty gaps beside open panels. The
sessions header and the preview-dock tabs no longer reserve space for
the floating buttons, which stay hidden while a panel is open.
Full Changelog: v1.0.30...v1.0.31
1.0.30
Fixes
- Headless serve: the systemd watchdog restart loop. The v1.0.28/1.0.29
sd_notify implementation never sent a single byte - Node's dgram has no
unix_dgram support, createSocket("unix_dgram") throws, and the silent
try/catch hid it. A perfectly healthy service was restarted every
WatchdogSec (90 s) while serving fine in between. Notifications now go
through the systemd-notify helper (--no-block; abstract and filesystem
NOTIFY_SOCKET paths handled natively). - Web client (mobile): the floating buttons are mutually exclusive. An
open sessions panel hides the preview-dock FAB and an open preview dock
hides the sessions FAB; each panel closes with its own X button.
Full Changelog: v1.0.29...v1.0.30
1.0.29
Fixes
- Headless serve: the event loop can no longer be wedged by CLI version
checks. setup/update checks ran execSync (which,vibe --version)
in the main process - when the spawned shell died but its grandchildren
kept the stdio pipes open, the whole loop froze forever: port open,
zero responses - the silent 521 behind the reverse proxy. All of
these now run asynchronously with process-group kills on timeout;
nothing in the serve path blocks the loop anymore. - Self-update on a systemd deployment no longer kills the service.
The Linux self-update used app.relaunch() + exit(0): under a user unit
the relaunched child dies with the cgroup and exit(0) reads as success,
so Restart=on-failure never fired. The updater now asks systemd to
restart the unit (NOTIFY_SOCKET detection, v1.0.28+ deployments) and
exits non-zero as a failsafe.
Added
- Event-loop lag monitor: stalls over 2 s are logged to the journal as
postmortem evidence for watchdog restarts. - Windows: the failed-update notice dialog is skipped in headless mode.
Full Changelog: v1.0.28...v1.0.29
1.0.28
Fixes
- Mobile web: no more covered elements. With the preview dock open, the
sessions button stays reachable and the dock closes with its own X button;
with the sessions list open, the dock button stays reachable. Tab strips
and the sidebar header reserve space for the floating buttons. Edge swipe
gestures are unchanged; picking a session or tab still hides the list. - Headless serve: systemd watchdog. The app now sends sd_notify pings
from the main loop; when the loop wedges (port open, no HTTP responses),
systemd restarts the service instead of leaving a dead endpoint behind
the reverse proxy.
Changed
- Sessions sidebar: the NEW icon is now a translated 'New project…' text
button (en/de/es/fr/it/pl). - Release workflow uploads only latest.yml / latest-linux.yml (no more
builder-debug.yml leak in release assets).
Full Changelog: v1.0.27...v1.0.28
v1.0.27
What's new
- Web client: no title bar chrome. The sessions list and the preview
dock are opened with floating buttons and edge swipe gestures - the
browser/PWA surface is pure content. - Sessions sidebar on the web: theme and logout are available
directly from the sessions sidebar.
Fixes
- ACP worker
cwdfor all-users (Program Files) installs - workers now
resolve the correct working directory when the app is installed for all
users.
Full Changelog: v1.0.26...v1.0.27