Skip to content

chore: release version - #24

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main
Open

chore: release version#24
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

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 2b71c78 Thanks @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 918c64c Thanks @oscarlehuu! - Added a Review changes panel so you can see, commit, and push an agent's work directly from a session.

  • #43 c66e20b Thanks @oscarlehuu! - Added a desktop-only interactive browser dock with a real embedded browser and a persistent Nuncio browser profile.

  • #40 fae12d3 Thanks @oscarlehuu! - Added backend support for importing local Pi CLI sessions so they can be continued from Nuncio.

  • #21 066a29b Thanks @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 066a29b Thanks @oscarlehuu! - Added Codex as a local app-server provider so sessions can run with your existing Codex login.

  • #43 67e6f61 Thanks @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 9bb2f10 Thanks @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 918c64c Thanks @oscarlehuu! - Added GitHub account settings (token + API URL) so Nuncio can connect to your GitHub account.

  • #35 918c64c Thanks @oscarlehuu! - Added GitHub webhooks so a new issue labeled nuncio can automatically start a session.

  • #35 918c64c Thanks @oscarlehuu! - Added GitLab support: open merge requests and trigger sessions from GitLab issues, including self-hosted instances.

  • #43 b9bb3cc Thanks @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 daa2cd8 Thanks @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 c66e20b Thanks @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 918c64c Thanks @oscarlehuu! - Added one-tap Open Pull Request from a session, with live PR status and CI checks in the UI.

  • #32 5200f85 Thanks @oscarlehuu! - Added server API support for provider capabilities, Pi interrupts, live model switching, and image attachments.

  • #43 c66e20b Thanks @oscarlehuu! - Added Tailscale integration: devices signed into the same Tailscale account connect without the access token (identity verified per connection via tailscale whois), plus a Settings → Remote access section showing the access token, tailnet devices with per-device trust, and a live auto-trust toggle.

  • #18 c363bbe Thanks @oscarlehuu! - Added URL routes so sessions and pages survive a browser refresh.

  • #47 871522f Thanks @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, a runtime_restarted marker (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 b3a8e8a Thanks @oscarlehuu! - Nuncio now ships as an installable macOS app that keeps itself up to date. Alongside bun run dev for live development, there are two packaged builds you install once and keep: Nuncio (stable) follows tagged releases, and Nuncio Dev rides the latest dev merges — 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 42b8fc6 Thanks @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/core design tokens.

  • #35 918c64c Thanks @oscarlehuu! - GitHub/GitLab now also authenticate via the gh and glab CLIs, and Settings shows which method (token or CLI) is in use.

  • #43 253c463 Thanks @oscarlehuu! - Grouped Recent sessions in the sidebar by project into collapsible sections, with project-less sessions gathered under a dedicated Chat section.

  • #45 e1b2379 Thanks @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..9 focuses a slot, Cmd/Ctrl+Enter maximizes or restores the focused tile, and Esc returns from a maximized session to the grid.

  • #52 d33184b Thanks @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 37a47c3 Thanks @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 918c64c Thanks @oscarlehuu! - Redesigned Settings into Providers and Source Control sections with per-provider connect/manage rows and brand icons.

  • #49 b615960 Thanks @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 d952ca1 Thanks @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 3e8977c Thanks @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 a719e32 Thanks @oscarlehuu! - Session WebSocket relay: live transcripts and steering now ride one duplex ws(s)://…/api/sessions/ws channel with the event-log seq cursor 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/core relay client with identical behavior; the SSE endpoint remains for API consumers. Contract frozen in docs/ws-relay-contract.md.

  • #48 65d9641 Thanks @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 44ffc47 Thanks @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 the NUNCIO_TASK_CONCURRENCY setting, 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 158cee6 Thanks @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 ded0419 Thanks @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 3e8977c Thanks @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 871522f Thanks @oscarlehuu! - Added a verifier gate: after each agent turn ends, nuncio runs your project's check command (a .nuncio/verify script in the repo, or the NUNCIO_VERIFY_COMMAND setting) 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 066a29b Thanks @oscarlehuu! - Added Codex reasoning and Priority controls to the model picker.

  • #18 c363bbe Thanks @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 c363bbe Thanks @oscarlehuu! - CLI handoff sessions now update in realtime when Cursor IDE adds new turns — no hard reload needed.

  • #46 c19bee7 Thanks @oscarlehuu! - Extract packages/core — the portable client layer (session/model/handoff API modules, transcript block builder, tool summaries, design tokens) now lives in @nuncio/core with an injectable base URL + auth-header seam, shared by the web app today and the upcoming Expo mobile client. Web behavior is unchanged.

  • #54 1236a3a Thanks @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 c363bbe Thanks @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 dca1741 Thanks @oscarlehuu! - Fixed Pi sessions so they resume from the same persisted thread after the server restarts.

  • #43 556a653 Thanks @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 066a29b Thanks @oscarlehuu! - Fixed the session composer unlocking late after an agent finishes replying.

  • #25 69c7675 Thanks @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 69c7675 Thanks @oscarlehuu! - Imported AskQuestion prompts now render as structured questionnaire blocks in the transcript instead of generic tool rows.

  • #21 066a29b Thanks @oscarlehuu! - Kept generated Nuncio session branches out of the base branch picker.

  • #21 066a29b Thanks @oscarlehuu! - Made per-session worktrees opt-in with a Work locally/New worktree picker that forks worktrees from the selected branch.

  • #53 77b2cf6 Thanks @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 52fee64 Thanks @oscarlehuu! - Remember selected projects server-side so recents follow you across devices, including selections made in the handoff picker.

  • #18 c363bbe Thanks @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", "Ran pnpm 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 99d5bd6 Thanks @oscarlehuu! - Serve the built web app from the Nest/Bun daemon when apps/web/dist is present, with SPA fallback for non-API routes while keeping /api/* JSON routes authoritative.

  • #43 c66e20b Thanks @oscarlehuu! - Stream external Pi and Cursor CLI transcript updates live.

  • #21 066a29b Thanks @oscarlehuu! - Updated Codex in the model picker to use a branded icon instead of the fallback letter.

@github-actions
github-actions Bot force-pushed the changeset-release/main branch 9 times, most recently from 4b4dba6 to 2e0b173 Compare July 5, 2026 06:30
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 2e0b173 to 6e1f244 Compare July 5, 2026 07:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants