chore: release version - #24
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
9 times, most recently
from
July 5, 2026 06:30
4b4dba6 to
2e0b173
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
July 5, 2026 07:10
2e0b173 to
6e1f244
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
nuncio@0.3.0
Minor Changes
#45
2b71c78Thanks @oscarlehuu! - Added a desktop session grid at/grid— a multi-session workbench that tiles several agents in a 1x1/2x1/2x2/3x2 layout. Each live tile streams its transcript tail with a status-coded border (running, idle, error, or an amber pulse when the agent is waiting on you), empty slots offer a compact composer to start a new agent or attach an existing session, the focused tile gets an inline steer input, and any tile can maximize into the full session view. Preset and slot bindings persist in your browser.#35
918c64cThanks @oscarlehuu! - Added a Review changes panel so you can see, commit, and push an agent's work directly from a session.#43
c66e20bThanks @oscarlehuu! - Added a desktop-only interactive browser dock with a real embedded browser and a persistent Nuncio browser profile.#40
fae12d3Thanks @oscarlehuu! - Added backend support for importing local Pi CLI sessions so they can be continued from Nuncio.#21
066a29bThanks @oscarlehuu! - Added Codex approval controls in the chat composer and transcript so pending local actions can be approved or denied, with pending approval state tracked in SQLite.#21
066a29bThanks @oscarlehuu! - Added Codex as a local app-server provider so sessions can run with your existing Codex login.#43
67e6f61Thanks @oscarlehuu! - Added one-click config sync between your own nuncio servers: from Settings → Remote access, "Sync config" pushes this server's Pi credentials (auth/models/settings.json, never sessions) and DB-configured settings to a same-account tailnet peer running nuncio. The target backs up existing files before overwriting (0600), only accepts known Pi filenames and registered non-path settings, and the whole exchange is authorized by tailnet identity — no token to copy.#43
9bb2f10Thanks @oscarlehuu! - The desktop app can now connect to remote nuncio servers: a native Server menu with saved profiles, one-click Connect from the Remote access settings for tailnet devices running nuncio, automatic fallback to the local daemon when a remote stops responding, and the in-session terminal now opens the remote machine's shell (not the local one) when connected to a remote server.#35
918c64cThanks @oscarlehuu! - Added GitHub account settings (token + API URL) so Nuncio can connect to your GitHub account.#35
918c64cThanks @oscarlehuu! - Added GitHub webhooks so a new issue labeled nuncio can automatically start a session.#35
918c64cThanks @oscarlehuu! - Added GitLab support: open merge requests and trigger sessions from GitLab issues, including self-hosted instances.#43
b9bb3ccThanks @oscarlehuu! - Added the hub client: when served through a hub at/m/<machine>/, the web app routes every API, SSE, and terminal-WebSocket call to that machine (single fetch chokepoint + react-router basename), and a Machines switcher in the sidebar lists every tailnet machine the hub can reach. Cmd/ctrl-click a machine to open it in a new tab and work on several machines in parallel. Served directly (not via a hub), nothing changes.#43
daa2cd8Thanks @oscarlehuu! - Added hub mode (server side): a nuncio server can reach your other tailnet machines running nuncio through one URL at/m/<machine>/. The hub auto-discovers same-account machines (health-probed), proxies their HTTP, SSE, and terminal WebSocket traffic, and authorizes hub→machine calls by tailnet identity. The<machine>segment resolves only against the discovered registry — never an arbitrary target (SSRF-guarded). Off by default; toggle via the Hub mode setting.#43
c66e20bThanks @oscarlehuu! - Added loopback-exempt token auth so the server can be reached safely from other machines: local (loopback) clients need no setup, while remote clients present an auto-generated access token once and get an HttpOnly cookie that also authenticates the SSE stream and the in-browser terminal. Forge webhooks keep their own HMAC verification and stay exempt.#35
918c64cThanks @oscarlehuu! - Added one-tap Open Pull Request from a session, with live PR status and CI checks in the UI.#32
5200f85Thanks @oscarlehuu! - Added server API support for provider capabilities, Pi interrupts, live model switching, and image attachments.#43
c66e20bThanks @oscarlehuu! - Added Tailscale integration: devices signed into the same Tailscale account connect without the access token (identity verified per connection viatailscale whois), plus a Settings → Remote access section showing the access token, tailnet devices with per-device trust, and a live auto-trust toggle.#18
c363bbeThanks @oscarlehuu! - Added URL routes so sessions and pages survive a browser refresh.#47
871522fThanks @oscarlehuu! - Made the daemon restart-safe and long transcripts cheap. Sessions left RUNNING by a dead daemon are reconciled on boot — the active turn is cleared, aruntime_restartedmarker (with whether the thread is resumable) lands in the transcript, and the session settles on IDLE so you can steer it again; Pi sessions resume the same conversation through their on-disk session file. The event log now serves bounded windows (tail,before,limit): the session view opens with the last 1000 events and pages older history in via a "Load earlier history" button, grid tiles subscribe to a 300-event tail, live events fan out without re-reading the whole log, and a 128 KB payload ceiling stops any single tool output from bloating a session forever.#59
b3a8e8aThanks @oscarlehuu! - Nuncio now ships as an installable macOS app that keeps itself up to date. Alongsidebun run devfor live development, there are two packaged builds you install once and keep: Nuncio (stable) follows tagged releases, and Nuncio Dev rides the latestdevmerges — each checks GitHub on launch and updates in place. Both are signed and notarized, so they open without Gatekeeper warnings, and each carries a self-contained server bundle, so the full local daemon runs with no separate Bun install. Dev and stable install side by side with independent data.#46
42b8fc6Thanks @oscarlehuu! - Native mobile app (apps/mobile, Expo + Expo Router + NativeWind): pair the phone with your machine by Tailscale address + access token (kept in the iOS/Android secure store; hub base paths like/m/<machine>pair too), browse active/archived sessions, create a session with the provider/model catalog, watch the live transcript over the session WS relay (markdown, tool and thinking rows, gap-free resume when the app returns to the foreground), steer over the same socket, and pause/archive/restore/delete with a delete confirm. The palette derives from the shared@nuncio/coredesign tokens.#35
918c64cThanks @oscarlehuu! - GitHub/GitLab now also authenticate via the gh and glab CLIs, and Settings shows which method (token or CLI) is in use.#43
253c463Thanks @oscarlehuu! - Grouped Recent sessions in the sidebar by project into collapsible sections, with project-less sessions gathered under a dedicated Chat section.#45
e1b2379Thanks @oscarlehuu! - The session inspector dock now remembers whether it was open and which tab you last used, per device, and its source-control tab gained the pull request panel — open a PR and watch its checks without leaving the session. The session grid became keyboard-first:Cmd/Ctrl+1..9focuses a slot,Cmd/Ctrl+Entermaximizes or restores the focused tile, andEscreturns from a maximized session to the grid.#52
d33184bThanks @oscarlehuu! - Pi sessions can now answer interactive AskQuestion-style tool prompts from the app: a pi run that calls an interactive tool surfaces the questions in the pending-input banner, and submitted answers are steered back into the live run.#46
37a47c3Thanks @oscarlehuu! - Push notifications for the mobile app: devices register their Expo push token (POST /api/push/register, auth-gated, stored in SQLite) and the server sends a push through Expo's service whenever a session finishes, errors, or asks for input — even with the app backgrounded. Tapping the notification opens that session's transcript, caught up gap-free via the event-log cursor. Requires a dev/production Expo build with an EAS project id (Expo Go cannot receive remote pushes); without one the app silently skips registration.#35
918c64cThanks @oscarlehuu! - Redesigned Settings into Providers and Source Control sections with per-provider connect/manage rows and brand icons.#49
b615960Thanks @oscarlehuu! - Review, merge, and triage without leaving Nuncio: the session's SCM tab now browses repo PRs/MRs and issues, shows review threads with reply and resolve, approves or requests changes, merges with a method picker behind a confirm dialog, and turns any issue into an agent session in one click. An Actions segment shows GitHub Actions runs and GitLab pipelines with per-job steps and log tails, plus re-run and cancel. Forge data is cached with background revalidation, so switching between SCM segments is instant.#44
d952ca1Thanks @oscarlehuu! - Reworked the web UI toward a Cursor-like design language: luminance-based elevation with hairline borders on new dark and light palettes, a named UI type scale, a minimal home (context pickers above the composer, no hero), a flat sidebar with two-line session rows, settings grouped into cards with proper toggle switches, and theme-aware terminal, status, and PR-check colors.#57
3e8977cThanks @oscarlehuu! - You can now attach images to a chat. The composer — both when steering a running agent and when starting a new one — gains an image button, and you can also paste from the clipboard or drag-and-drop a screenshot straight in. Pasting an image also drops a numbered[image 1]reference into the prompt, so you can write around it ("fix the bug in [image 1]") and the agent knows which image you mean. Attached images show as labelled thumbnails before you send and render inline in the transcript afterwards (click to enlarge), alongside any images the agent itself returns. Images are stored on disk and served on demand, so transcripts stay light. The attach control only appears for agents that accept images, so it lights up automatically as each provider gains support — Pi first today.#46
a719e32Thanks @oscarlehuu! - Session WebSocket relay: live transcripts and steering now ride one duplexws(s)://…/api/sessions/wschannel with the event-logseqcursor on top — subscriptions replay from the client's cursor and reconnects are gap-free, bounded outbound buffers drop slow consumers to cursor recovery instead of buffering unboundedly, and upgrades are gated by the same loopback/token/tailnet rule as the REST API. The hub now relays the session WS path (/m/<machine>/api/sessions/ws) and — security fix — authorizes every proxied request and WS upgrade at the hub edge instead of forwarding unauthenticated traffic to whois-trusting targets. The web transcript stream migrated from EventSource/SSE to the shared@nuncio/corerelay client with identical behavior; the SSE endpoint remains for API consumers. Contract frozen in docs/ws-relay-contract.md.#48
65d9641Thanks @oscarlehuu! - Made chat usable for real work: steer a running session (Pi injects the message into the live run before its next model call; other providers queue and auto-send on idle), a true Stop that interrupts the run in place, and much smoother streaming — adaptive text reveal instead of the fixed 40 chars/sec crawl, coalesced token persistence, memoized streaming markdown (mermaid waits for its fence to close), and IME-safe inputs for Vietnamese typing.#47
44ffc47Thanks @oscarlehuu! - Added a task queue — the delegate-and-forget layer above sessions. Queue a task from the new Tasks page (sidebar → Tasks): prompt, project, an optional fresh worktree per task, and a model. A FIFO runner (concurrency via theNUNCIO_TASK_CONCURRENCYsetting, default 1) starts the session, waits for the run and its post-turn checks, and records the outcome on the task. The inbox shows Needs you / Running / Queued / Done lanes with verify-outcome chips, cancel for queued tasks, retry for finished ones, and a one-tap jump into the session. Tasks interrupted by a daemon restart are marked failed with an explicit reason; queued work simply resumes on boot.#56
158cee6Thanks @oscarlehuu! - The Board's session list now groups agents by what they need from you: a Needs you lane for anything the agent finished or is asking about that you haven't opened yet, Seen for ones you've looked at, plus Running, Paused, and Queued. Unread agents show a dot that clears once you open them, so it's obvious at a glance where your attention should go — including agents that paused mid-run to ask you a question.#45
ded0419Thanks @oscarlehuu! - In hub mode, the session grid now spans machines: every empty slot gained a machine picker, so you can start a new agent on any tailnet machine (with that machine's projects and model catalog) or attach one of its running sessions, and watch tiles from several machines stream side by side. Remote tiles steer directly against their machine, degrade to a reconnect state while it is unreachable, and maximize into the full session on that machine's own page. Also fixed the maximized view's Grid button overlapping the side panel.#57
3e8977cThanks @oscarlehuu! - The multi-session workbench is now one surface. The separate Board view is gone — the grid, renamed Workbench, is the single place to run agents side by side, and the app opens straight into it once you have sessions. Empty slots are "new agent" composers so the layout is never empty, every bound tile gets an × to free its slot for a new task, and a session only ever occupies one slot. Your Workbench layout (which sessions, which preset) now persists on the server, so it survives app updates instead of living only in the browser. The session sidebar gains a Group by control — Repository by default, or Status. Throughout, surfaces pick up a subtle, consistent depth (soft layered shadows + a top highlight) so the UI reads less flat.#47
871522fThanks @oscarlehuu! - Added a verifier gate: after each agent turn ends, nuncio runs your project's check command (a.nuncio/verifyscript in the repo, or theNUNCIO_VERIFY_COMMANDsetting) in the session's workspace and annotates the outcome on the transcript. A chip next to the session title — and on grid tiles — shows checks running, passed, or failed, so you can tell "done and green" from "done but broken" without opening the session. Verification never blocks the session itself.Patch Changes
#21
066a29bThanks @oscarlehuu! - Added Codex reasoning and Priority controls to the model picker.#18
c363bbeThanks @oscarlehuu! - CLI handoff sessions now show when Cursor is running on your Mac, surface steer conflicts with a toast and force-steer option, and auto-refresh the transcript when the IDE run finishes.#18
c363bbeThanks @oscarlehuu! - CLI handoff sessions now update in realtime when Cursor IDE adds new turns — no hard reload needed.#46
c19bee7Thanks @oscarlehuu! - Extractpackages/core— the portable client layer (session/model/handoff API modules, transcript block builder, tool summaries, design tokens) now lives in@nuncio/corewith an injectable base URL + auth-header seam, shared by the web app today and the upcoming Expo mobile client. Web behavior is unchanged.#54
1236a3aThanks @oscarlehuu! - Fixed three integrated terminal bugs: the terminal now fills the full panel height instead of a fixed 288px, closing a terminal tab no longer auto-spawns replacements with climbing numbers, and closing the right panel keeps the terminal (and its backend shell) alive instead of terminating it.#18
c363bbeThanks @oscarlehuu! - Fixed CLI handoff transcript sync — removed the 500-turn cap that prevented new Cursor IDE messages from appearing after refresh, and fixed the dedup so repeated tool calls are no longer duplicated. Split the AI's internal thinking that Cursor concatenates onto assistant messages into a separate collapsible "Thought for Xs" block (matching Cursor's UI). Moved repo/branch/Local into the composer footer row and auto-scroll to the latest message on session enter.#32
dca1741Thanks @oscarlehuu! - Fixed Pi sessions so they resume from the same persisted thread after the server restarts.#43
556a653Thanks @oscarlehuu! - Fixed the server daemon shutdown path so SIGTERM and SIGINT cleanly dispose CLI agents, close the Nest HTTP listener, and exit promptly instead of hanging until force-killed.#21
066a29bThanks @oscarlehuu! - Fixed the session composer unlocking late after an agent finishes replying.#25
69c7675Thanks @oscarlehuu! - Handoff sessions now show a live AskQuestion form on your phone and accept answers from Nuncio instead of closing the prompt in milliseconds.#25
69c7675Thanks @oscarlehuu! - Imported AskQuestion prompts now render as structured questionnaire blocks in the transcript instead of generic tool rows.#21
066a29bThanks @oscarlehuu! - Kept generated Nuncio session branches out of the base branch picker.#21
066a29bThanks @oscarlehuu! - Made per-session worktrees opt-in with a Work locally/New worktree picker that forks worktrees from the selected branch.#53
77b2cf6Thanks @oscarlehuu! - Messages queued while the agent is busy now survive a server restart — they are delivered as soon as the agent is next ready, instead of leaving a stuck "Queued" bubble that never sends.#43
52fee64Thanks @oscarlehuu! - Remember selected projects server-side so recents follow you across devices, including selections made in the handoff picker.#18
c363bbeThanks @oscarlehuu! - Redesigned the session transcript to match the Cursor IDE style: tool calls render as compact one-line rows (e.g. "Read foo.ts L10-20", "Ranpnpm test"), consecutive tool calls collapse into a single "Ran N files, M commands…" summary header that expands to reveal individual rows, and thinking blocks collapse to a single "Thought" row. File paths and commands use inline monospace pills, the "Done" status label is hidden by default (only "Failed" and "Running…" appear), and the overall spacing is tighter so long agent runs no longer fill the screen with full-width tool boxes.#43
99d5bd6Thanks @oscarlehuu! - Serve the built web app from the Nest/Bun daemon whenapps/web/distis present, with SPA fallback for non-API routes while keeping/api/*JSON routes authoritative.#43
c66e20bThanks @oscarlehuu! - Stream external Pi and Cursor CLI transcript updates live.#21
066a29bThanks @oscarlehuu! - Updated Codex in the model picker to use a branded icon instead of the fallback letter.