Skip to content

Releases: Dragonk/halny-vibe-deck

1.0.36

Choose a tag to compare

@github-actions github-actions released this 28 Oct 16:31

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

Choose a tag to compare

@github-actions github-actions released this 28 Oct 15:24

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

Choose a tag to compare

@github-actions github-actions released this 28 Oct 14:11

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

Choose a tag to compare

@github-actions github-actions released this 28 Oct 12:43

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

Choose a tag to compare

@github-actions github-actions released this 28 Oct 12:27

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

Choose a tag to compare

@github-actions github-actions released this 28 Oct 11:57

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

Choose a tag to compare

@github-actions github-actions released this 28 Oct 11:41

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

Choose a tag to compare

@github-actions github-actions released this 28 Oct 11:23

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

Choose a tag to compare

@github-actions github-actions released this 28 Oct 10:57

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

Choose a tag to compare

@github-actions github-actions released this 28 Oct 09:53

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 cwd for 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