Skip to content

Releases: tofunori/atelier-studio

Atelier Studio v1.7.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 15:33

Atelier Studio 1.7.0

A quieter interface, redesigned Settings, and a more connected research workspace.
This release brings together the changes since 1.6.0, including reusable response
instructions, project folders, richer figure annotations, and more reliable agent
and widget interactions.

A refined interface

  • Lighter typography, restrained borders, compact menus, and more consistent
    spacing across the shell, sidebar, composer, gallery, and document viewers.
  • Redesigned Settings with five clear sections, icon navigation, and progressive
    disclosure for advanced options and diagnostics.
  • Search Settings and jump directly to the matching control, including controls
    inside collapsed sections. Press Command/Ctrl K within Settings to search.
  • Preview appearance settings with the actual text sizes, reading width, density,
    and theme. Native light, dark, and system modes now resolve consistently for the
    app and terminal.
  • Six additional dark palettes: Graphite, Obsidienne, Encre, Pierre, Sous-bois,
    and Monokai
    , each with coordinated terminal colors.
  • Clearer selection states and compact dropdowns, with improved keyboard focus
    and accessible labels for appearance controls.

Reusable response instructions

  • Create and edit reusable instructions in Settings, with four built-in choices:
    Concise, Educational, Scientific rigor, and Quebec French.
  • Combine instructions from the composer and see the active choices in the thread
    header. Instructions survive reconnects and thread updates.
  • Rewrite an instruction using a selected Codex or Claude model. Failures are
    reported in the interface instead of leaving the connection waiting.
  • Response instructions are applied to Codex and Claude requests, with regression
    coverage against unintended carry-over between requests.

Project folders and gallery

  • Manage additional folders per project and use the folder menu to navigate the
    workspace and its gallery.
  • Configure associated-folder write access for Codex in protected mode.
  • Switch between grids and detailed lists, adjust thumbnail and row density,
    resize columns, and save views with filters and sorting.
  • Improved project gallery integration, presentation controls, file labels, and
    synchronization with the active project.
  • Gallery commands use consistent icons, filters, sorting, favorites, and display
    controls. Favorites retain their complete target URL.
  • Large file trees report their limits instead of silently presenting a truncated
    tree as complete.
  • More consistent typography and controls in PDF, Markdown, LaTeX, CSV, SVG,
    annotation, and code views.

Figures, annotations, and widgets

  • Annotated figures arrive in chat with their thumbnail and notes, with an
    acknowledgement before the annotation is considered delivered.
  • Larger annotated image saves are supported, and empty annotation bubbles are
    avoided.
  • Widgets gain presentation controls and more reliable frame sizing, with
    additional regression coverage for their lifecycle and interaction behavior.
  • A Rust static JavaScript analysis gate catches invalid widget scripts before
    publication. The widget guide includes updated presentation and scale guidance.
  • Improved handling of structured insight blocks and streaming text in chat.

Agent context and reliability

  • Project folders and turn context are carried through provider requests, with
    clearer context receipts and knowledge-base handling.
  • Claude CLI parsing, inactivity timeouts, prompt boundaries, and live input
    handling are improved. The catalog includes Fable 5.1.
  • Quick Ask follows the active project, supports captures, and makes project
    exploration an explicit choice.
  • MCP diagnostics are more informative, and native commands no longer poison a
    Codex session. Repeated capability refusals are guarded against.
  • Reduced idle memory growth through event eviction, screenshot-blob cleanup,
    abort-listener cleanup, and fewer redundant history updates.
  • More reliable composer layout, stable tabs, and cleaner fork titles.

Compatibility

The app targets macOS on Apple Silicon and packages its Rust backend and gallery
runtime. Provider CLIs remain external prerequisites. Existing settings and
projects are retained; choosing one of the new palettes is optional.


Platform: macOS on Apple Silicon.

The packaged app includes the Rust backend and gallery runtime. No
separate Node.js or Python installation is required for the app.
Claude Code CLI (2.1.139 or newer) and Codex CLI remain external
prerequisites for their respective providers.

If macOS Gatekeeper blocks an unsigned download, run:
xattr -cr "/Applications/Atelier.app"

Atelier Studio v1.6.0

Choose a tag to compare

@github-actions github-actions released this 30 Aug 17:55

Atelier Studio 1.6.0

Atelier Studio 1.6.0 gives the chat a new kind of answer. An agent can now put a living panel into the conversation — a slider you drag, a simulation you run, a curve you scrub — instead of a static image or a wall of numbers. Around that headline, this release is mostly about making the app quieter and faster: a long session no longer grows without bound, the shell stops re-rendering on every streamed token, and a first gallery scan no longer blocks a rebuild. It also closes the distance between Atelier and the CLIs it drives — steering a Codex turn now behaves exactly as Codex allows, and figures produced by an agent are checked for geometry before you ever see them.

Highlights

  • Ask for a widget and get one inside the thread: an interactive HTML panel rendered in a closed iframe, themed with your own tokens, whose state survives scrolling and whose file survives a session reload.
  • Let any CLI provider produce those panels — the instruction rides the message, so even a small routed model reaches for the tool instead of writing an HTML file to disk.
  • Keep a long session bounded: inactive threads release their events and reload from the journal when you come back.
  • Feel a shorter startup and a calmer stream — settings load on demand, the top bar and rail no longer re-render on every delta, and the streaming fade is capped at the last forty words.
  • Steer a running Codex turn with the same semantics as the CLI: a stale turn id is retried, a review or compaction turn is queued instead of doubled, and no fallback silently loses your MCP servers.
  • Have every agent-made matplotlib figure checked for overlapping labels, text crossing a spine, and text falling off the canvas — the agent fixes it before handing the figure over.
  • Know where a figure came from: script, command, environment, and conversation, captured as a side effect of the turn that produced it.

Living widgets in the thread

A new MCP tool, atelier_widget, lets an agent display an interactive panel directly in the conversation.

  • The HTML travels over the local capability bridge rather than the tool's output, so it escapes the 64 KiB truncation and never re-enters the model's context — the CLI receives an identifier.
  • The panel is written to the app directory under a hashed thread id and served over an authenticated loopback route. A thread you delete takes its widgets with it; beyond 200 files per thread the oldest are purged.
  • The runtime wraps the agent's fragment in a shell it controls: sandbox="allow-scripts" alone (opaque origin — no storage, no cookies, no parent navigation) and a CSP of default-src 'none', with form-action and base-uri declared explicitly because default-src is not a fallback for either.
  • Three bridge functions are defined for the panel's script: sendPrompt(text) proposes a message in the composer and lets you approve it — a widget never spends a turn on its own; saveState(object) and window.onRestore(state) keep controls where you left them across scrolling.
  • The card reuses the existing code-block chassis, reserves its declared height before the frame exists so the thread never jumps, replays the theme without remounting, and degrades to a sober line — never a red error — when a widget fails to start or its file is gone.
  • A capability guide, atelier_widget_guide, carries a full manual the agent reads once per session: complexity budgets, the design system with real tokens, dataviz legibility rules, ten panel forms with skeletons, eight advanced interaction patterns drawn from the explorable-explanations tradition, accessibility, and named anti-patterns.
  • Eight widgets per turn maximum, 128 KiB per panel, height clamped to 120–900 px. A malformed call no longer burns one of the turn's slots.

Performance

  • Inactive threads are evicted from memory and restored from the journal on return, so a long session stops growing without bound. An agent thread open in the Atelier pane is exempt — it was being evicted with no path to reload it.
  • Settings load their JavaScript and CSS on demand; the startup bundle shrinks by that much.
  • The top bar and the rail are memoised, and the callbacks they receive are stable, so a streamed delta no longer re-renders the shell.
  • The streaming fade is bounded to the last forty words instead of animating hundreds of elements, and the 300 ms follow net runs only during an active turn.
  • The active turn's margin is set by a class rather than a :has() selector, which a browser re-evaluated on every mutation of a virtualised list.
  • Streaming code blocks no longer insert an LRU entry per frame, splitCodeSegments works in slices, and ToolOutputLine parses each output once instead of once per frame.
  • Gallery thumbnails are generated in a bounded pool, so the first scan of a large project no longer blocks a rebuild; the LaTeX studio renders PDF pages on demand with eviction instead of keeping a canvas for every page.
  • A hidden terminal stops blinking its cursor.

Codex parity

  • turn/steer refusals are now distinguished. A stale expectedTurnId carries the real one in the server's message, so the steer is retried against it instead of starting a second turn. A review or compaction turn — which can never be steered — has the message queued through thread/queue/add rather than doubled or dropped.
  • A steer that falls back to a normal turn keeps its MCP capability; previously the thread resumed with no Atelier servers declared, and the agent silently lost its tools mid-session.
  • The capability token is stable per thread while its grant lives, which restores the ACP fast paths for Grok, Kimi, and Opencode — a resumed thread no longer replays its whole history on every turn. Its TTL now slides with activity, under an absolute lifetime cap.
  • Strict MCP configuration follows whether a thread is linked, not whether Atelier declares a server, so an ordinary Claude thread keeps your personal MCP servers.
  • /compact no longer announces completion at the moment it starts: thread/compact/start begins a turn, and both providers already report the real compaction through their own stream.
  • Model switching happens the way Codex expects — thread/settings/update before the turn — which is what triggers auto-compaction when history exceeds the new model's window.

Figures

  • Every agent turn that produces a .png, .svg, or .pdf writes a provenance sidecar next to it: the scripts touched, the commands run, the prompt, the thread, the provider and model, the snapshot and HEAD, and a best-effort environment. The gallery viewer shows it.
  • A geometric quality control ships with the app and is required by prompt: after each savefig, the agent verifies that no visible text overlaps another, crosses a spine, or falls off the canvas, and that the written image has the dimensions the script asked for — then fixes and re-saves until it passes.
  • The check compares text per axes rather than across the whole figure, excludes legend entries from each other, ignores tick labels sitting on their own spine, and filters the phantom ticks matplotlib creates outside the axis limits and never draws. ATELIER_FIGURE_QC=off disables it for batch pipelines.
  • The LaTeX studio gained a table view for CSV files.

Correctness and robustness

  • Sequence allocation is shared across all seven writers; three concurrent writers could previously collide, and next_sequence now reads the journal outside the global lock.
  • Spawned gallery servers die with the app on exit, interrupted atomic writes are swept at boot, the thumbnail GC keeps SVG thumbnails alive, and temporary directory nonces are atomic so pool workers cannot collide.
  • Widget state is measured in UTF-8 bytes rather than UTF-16 units, a floating-point height is clamped instead of refused, and only one widget iframe is ever mounted at a time.
  • A Quick Ask turn that fails now says so instead of falling silent.

Platform: macOS on Apple Silicon.

The packaged app includes Node.js 22 and the gallery runtime. No
separate Node.js or Python installation is required for the app.
Claude Code CLI (2.1.139 or newer) and Codex CLI remain external
prerequisites for their respective providers.

If macOS Gatekeeper blocks an unsigned download, run:
xattr -cr "/Applications/Atelier.app"

Atelier Studio 1.5.5

Choose a tag to compare

@tofunori tofunori released this 27 Aug 23:30

Atelier Studio 1.5.5 — 270 commits since v1.5.0, 209 files changed.

This release focuses on the chat transcript: it now narrates what the agent is doing while it works, shows where its answers come from, and keeps the thread visually stable while text streams in. It also lands a settings surface rebuild, deeper Codex sub-agent support, and the continued Node-to-Rust backend port.

Turn narration

  • Reasoning steps. Bold headings in a model's reasoning summary are extracted as they close and posted as activity rows, so a turn reads as a sequence of steps ("Comparing provider latency…") instead of a wall of raw thought.
  • Live reasoning. Reasoning summaries now stream token by token (item/reasoning/summaryTextDelta) instead of appearing as one block at the end. Flash-tier models that declare no reasoning summaries stay silent by design, and no longer get a dead reasoning effort sent to them.
  • Shadow sweep on the active label. The running activity line is crossed by a moving shadow, borrowing ChatGPT's readable-text approach and Codex's constant character-based speed — the pass takes the same time on a short label as on a long one.
  • Edge fade. Overflowing tool lines fade out over their last 1rem instead of being cut with an ellipsis.

Web search and sources

  • Queries are visible. A multi-query web search previously showed an empty detail; Atelier now reads action.queries and lists each query as a chip under the search line.
  • Sources card. Links in an answer are harvested from the message markdown — no network, no invented data — deduplicated by normalized URL and shown as domain chips under the reply, but only when the turn actually searched the web.
  • Sources open in Atelier. Clicking a source chip opens it in Atelier's own browser pane; ⌘-click still uses the system browser.

Codex sub-agents

  • Tooled transcript. A sub-agent's panel now shows what it does — shell commands, MCP calls, patches, reasoning — parsed from its rollout, instead of only its prose.
  • Agent chips survive reloads. Collab calls (spawn_agent, wait, …) are replayed from the native rollout, so sub-agent chips repopulate when a thread is reopened.

Streaming stability

A series of fixes to the transcript while text arrives: no more line re-flowing on every token, no answer flash at finalization, table columns stay frozen, the thread reaches the actual bottom (LegendList 3.3.2 → 3.3.7 plus a declared padding), composer measurement no longer oscillates the transcript, and bottom-follow applies only to the current turn. Streaming word fade now runs at 150 ms on a dedicated easing curve, driven by design tokens rather than two hardcoded values that could drift apart.

Reading margin

Folded margin with chapters derived from pauses, embossed marks, precise jump on click, pins that survive a native replay, and a position bar that genuinely tracks reading.

Browser pane

  • Selection to chat. Selecting text in a page lights up the existing "add to chat" button (accent, filled bubble) and sends the selection; with no selection it sends the page. Selection inside same-origin iframes is picked up too.
  • Dark band fixed. The toolbar height was counted twice when positioning the native webview, leaving a strip of background above every page.
  • Paste preview fixed. The attachment preview overflowed off-screen; it is now sized relative to the chat pane, which is the only region guaranteed to render above the native webview.

Settings

Rebuilt as a surface that no longer replaces the interface: modal sheet layout, dynamic Codex model catalog, opencode route grouping, an Advanced section, and a "Saved" pill.

Knowledge base

Zotero and YouTube ingestion ported to Rust — the Node engine leaves production, kept only as a parity oracle in tests. Undoable deferred trash for KB entries.

Under the hood

The Node sidecar continues to shrink in favour of the Rust backend. Gallery figures are indexed automatically. Codex stderr is no longer discarded, so provider configuration errors surface instead of failing silently.

Atelier Studio 1.5.0

Choose a tag to compare

@tofunori tofunori released this 22 Aug 15:37

Atelier Studio 1.5.0

The conversation and evidence release. The chat surface is rebuilt around an
annotated margin that replaces the old pill rail and shows where you are in
the thread; reasoning now reads as prose instead of a raw block, every
touched file opens its own diff beneath its line, and every second of a turn
is accounted for with named targets, a live ticker, durations and timed
waits. A project now reopens exactly where you left it.

New Evidence surface: gbrain passages pinned per project and grouped by the
claim they support, with /ref as a deterministic trigger for reference
lookup. The PDF viewer gains four Zotero 7-style annotation tools and a
Library scope that gathers annotations across every article. The LaTeX
Reading view becomes full-frame, annotatable and editable in place, with
three backgrounds, a text-size control, and diff marks shown on demand —
deletions expand inline at their exact position.

Under the hood, the Rust port of the knowledge base (plan 065) becomes the
default engine.

Breaking change: the Node and Python gallery backends and the
ATELIER_GALLERY_BACKEND variable are gone — the gallery server is Rust only.

Atelier Studio 1.4.0

Choose a tag to compare

@tofunori tofunori released this 14 Aug 03:34

Atelier Studio 1.4.0

Atelier Studio 1.4.0 is a calm-and-consistency release. It closes the gap between the design contract and the code that was supposed to implement it: the chat reading column is bounded again, a running turn shows one living indicator instead of seven, the file explorer is fully keyboard-operable, and App.css finally speaks a single colour vocabulary. It also makes provider effort levels honest — the composer slider no longer trusts the order a provider happens to announce — and gives changed defaults a way to reach profiles that already exist.

Highlights

  • Read the chat in a bounded column again: the width setting is a real ceiling instead of a floor, so a full-screen window no longer produces 170-character lines.
  • Watch a running turn through a single living indicator; the thinking label, its icon, the step dots, and the label shimmer are no longer six competing loops at four different periods.
  • Operate the file explorer entirely from the keyboard — ARIA tree, roving tabindex, arrows, Home/End, Enter/Space, and type-ahead — where it was previously mouse-only.
  • Pick an effort level that matches its position on the slider: levels are ordered from faster to smarter regardless of the order the provider announces.
  • Keep xhigh available on Grok from the moment the app starts, instead of only after the first message.
  • Get a changed default without wiping your own choices, through one-shot default promotions.
  • Feel the Density setting actually do something: it now drives the dense list surfaces rather than three orphaned rules.
  • Import a PDF article straight into a gbrain page, with metadata resolution and duplicate detection.

Article import

  • Convert a PDF through MinerU, falling back to local extraction, then resolve metadata from Zotero and Crossref, detect duplicates by DOI, and write a gbrain page.
  • Automatic mode writes the page without confirmation and can be turned off in the dialog.
  • Fixed a build-breaking defect found alongside it: stage-rust-server.sh passed the path of kb_cli.mjs as argv[1], which the CLI read as a command-line invocation — it printed its usage and exited 1, failing every build.

Chat reading and motion

  • --chat-col is computed with min() instead of max(), so --chat-w caps the reading column instead of being overridden by the pane width. The comment above it had described this behaviour for some time without implementing it.
  • .messages padding is symmetric, which stops the capped column from sitting off-centre against the composer.
  • The Quiet Instrument budget of one continuous animation per surface is enforced in the chat: the running indicator is the Working ring, and the thinking label, thinking icon, activity step dots, activity label shimmer, streaming caret, and reviewer running badge are now differentiated by colour and text alone.
  • The JavaScript-driven shimmer sweep on the thinking block, including its timers and mask DOM, is gone.
  • Dead CSS left behind by the move from ActivityCard to ActivityDisclosure was removed.
  • A CSS contract test locks the result: those indicators carry no animation, and the chat perimeter declares exactly one infinite animation.

Accessibility

  • The file explorer implements the ARIA tree pattern: treeitem children of tree, aria-level, aria-posinset/aria-setsize computed over siblings, aria-expanded, and a roving tabindex that puts the tree one tab away from the search field. Search results follow the same contract as a flat level-1 list.
  • Explorer rows became RowButton, keeping the project rule that no bare <button> exists outside the primitive layers.
  • Image thumbnails have a visible focus ring again. The rule referenced --focus-ring, which is not defined anywhere in src/, so the declaration was invalid and silently dropped.

Design system

  • App.css consumes --text-primary/--text-secondary/--text-muted/--text-disabled for all 596 text colours, making tokens.css the single public interface rather than a layer with 8% adoption.
  • Borders moved to the --border-* family where the role matches.
  • Non-text marks — status dots, switch knobs, scrollbar thumbs, slider rails — use two new tokens, --mark-neutral and --mark-neutral-strong, instead of being painted with text tokens.
  • The Density setting drives --pad-y across the real dense surfaces (navigator rows, explorer, settings, Git files, bibliography, ledger) instead of three rules, and interactive targets keep their minimum height in every density.
  • A .sidebar button selector whose specificity beat the product classes was removed; navigator rows were carrying an unintended 6px of padding.

Providers

  • Effort levels are ordered from faster to smarter in the composer slider, independently of provider order. Grok announces its levels strongest-first, which placed Extra High second out of five while the label correctly read Extra High.
  • Grok's effort fallback advertises low/medium/high/xhigh, matching what Grok actually announces. The catalogue only carries efforts after an ACP session/new, so the fallback is what the UI shows at every startup — a three-level fallback made xhigh disappear on each launch.
  • The Grok default effort is a named value instead of efforts.last(), which resolved differently depending on whether the list came from the provider (descending) or from the fallback (ascending).
  • Grok gained an ACP-driven model catalogue, and pending replies now resolve instead of accumulating.
  • Claude gained a live catalogue and CLI controls.
  • Grok auto-compaction is mapped to a visible boundary in the timeline, and ACP -32603 failures now carry the underlying cause instead of the bare protocol code. Both paths are covered by tests; neither has been exercised against a live Grok turn, since they only run on auto-compaction and on a failing turn respectively.
  • Thinking split by a provider is stitched back together, and the active turn renders its in-progress reasoning correctly.

Settings

  • A changed default now reaches an existing profile through one-shot promotions. loadSettings merges {...DEFAULT_SETTINGS, ...stored} with stored winning — deliberately, so updates never overwrite explicit choices — which also meant a new default only ever reached fresh installs. A promotion applies only when the stored value equals the previous default exactly, so it replaces an inherited value and never a deliberate one, and it runs once.
  • The first promotion moves the chat font size from the previous default of 15 to 13.5.

Editors

  • LaTeX selection is handled by a single layer on the correct editor engine, at full depth, with the native selection neutralised.
  • Automatic rewrap survives a restart, and compilation results are no longer duplicated in the top bar.

Performance

  • The Git snapshot index is persisted per repository and warmed when a project opens.

Continuous integration

  • Gallery browsers are installed under test, AppSnap is staged before the Tauri tests, and mobile dependencies are installed before staging.

Atelier Studio 1.3.6

Choose a tag to compare

@github-actions github-actions released this 21 Jul 04:52

Atelier Studio 1.3.6

Atelier Studio 1.3.6 is a continuity, workspace, provider, and editor-architecture release. It lets conversations continue across Claude, Codex, Kimi, Grok, and other supported agents through linked sessions; introduces a secure local MCP bridge and durable agent mailbox; adds native Grok ACP support; turns the Atelier area into a modular drag-and-drop workspace; redesigns the Git surface; and moves the LaTeX, Markdown, and code editors toward a shared TypeScript runtime with substantially broader regression coverage.

Highlights

  • Link conversations across providers while preserving an understandable parent/child continuity graph in the sidebar.
  • Start a new provider session with a sanitized projection of the source conversation instead of pretending that the target provider owns the source provider's private runtime state.
  • Exchange messages between linked agents through a loopback-only MCP bridge with ephemeral capabilities, hop limits, delivery budgets, durable mailboxes, and explicit unlinking.
  • Use Grok through the native Rust ACP path, including setup/model integration and actionable protocol errors.
  • Open, move, and split Gallery, Knowledge, Zotero Library, Narval, Generator, Git, Browser, Terminal, and editor surfaces in a modular pane workspace.
  • Click draggable rail surfaces to open them normally, or drag them after the movement threshold to place them in another pane.
  • Use the redesigned Git surface with clearer activity, changes, branches, history, commit graph, and repository-oriented controls.
  • Run LaTeX, Markdown, and code surfaces on a modular TypeScript editor architecture with shared document sessions, commands, wrapping, selection bridges, file picking, viewport management, and surface-specific features.

Linked cross-provider sessions

  • Added persisted agentLink parent/child relationships and WebSocket operations to create, inspect, and unlink linked conversations.
  • Added a secure loopback MCP endpoint and the atelier-agent-mcp binary with the atelier_sessions tool.
  • Capabilities are ephemeral and stored as hashes; access is constrained to the parent and its direct children, without sibling traversal.
  • Added a sanitized conversation projection and first-turn continuity envelope so a target agent receives the useful transcript context without receiving hidden provider state, credentials, or unrestricted access to unrelated conversations.
  • Added a durable mailbox and delivery worker with explicit turn budgets and hop limits. Each delivered message may start a billable provider turn, which is surfaced in the product copy.
  • Added provider injection for Claude, Codex, and ACP-based providers, including Kimi, Grok, and OpenCode.
  • Added monochrome continuity markers, an expandable family tree, recent-activity ordering, unlink actions, French/English copy, and linked-agent message cards.
  • Replaced the original configuration-heavy linked-agent dialog with a natural continuation workflow centered on conversation identity and continuity.

Modular workspace

  • Added a persistent workspace model with panes, tabs, horizontal/vertical splits, focused-pane state, placement zones, and tab movement.
  • Added unified pane chrome and native surface headers so Gallery, documents, Git, Knowledge, Zotero Library, Narval, Generator, Browser, and Terminal can participate in one layout.
  • Added rail and TopBar drag sources with a 6 px activation threshold, click suppression only after a real drag, and visual drop previews.
  • Fixed the compact rail so Chats, Highlights, and Automations expand their panel, while surface destinations leave chat-only mode and open the requested workspace.
  • Fixed WebKit pointer capture so Bibliothèque, Connaissances, Narval, and Générateur remain clickable while retaining drag-and-drop placement.

Grok and provider reliability

  • Added native Grok CLI integration through the Rust ACP client and provider runtime.
  • Added Grok setup, model selection, event parsing, interruption, permissions, session handling, and provider-specific error coverage.
  • Fixed invalid ACP payloads that previously surfaced as Invalid params (-32602) after continuity linking.
  • Kimi native-history replay now removes injected context blocks and system reminders from the visible transcript.
  • Empty Kimi end_turn responses now produce an actionable error tied to the CLI result instead of a misleading generic context explanation.
  • Gallery, Zotero, and Knowledge blocks are injected once per provider session rather than repeated on every user message.
  • Native-history citations are reconstructed as clickable citation pills.

Git and repository workflow

  • Redesigned the Git surface around a dedicated controller and clearer changes, activity, branches, history, and recovery flows.
  • Added a repository commit view with graph lanes, commit metadata, selection, and syntax-highlighted file diffs.
  • Added targeted code-highlighting support for the diff viewer.
  • Scoped turn reverts to files actually touched by that turn, so unrelated sessions and pre-existing untracked files no longer block recovery.
  • The project home now derives “Recently modified” from real filesystem modification times.

Editors, PDF, and gallery

  • Added a TypeScript studio runtime with shared commands, document sessions, editor contracts, editor creation, wrap control, file picking, selection bridging, viewport state, and host lifecycle.
  • Added modular LaTeX features for compilation, preflight, outline, reading mode, annotations, ghost text, rewrap, status reporting, SyncTeX/PDF coordination, and selection actions.
  • Added modular Markdown preview/annotation behavior and code/CSV features.
  • Added generated runtime bundles and extracted CSS for the packaged gallery.
  • Added regression suites for commands, document sessions, wrapping, file picking, viewport state, selection bridging, PDF selection, Markdown, code, LaTeX, runtime behavior, and CodeMirror scrolling.
  • Fixed duplicated “Add to chat” bubbles in comparison mode and repaired stale IPC nonces that previously required a reload.
  • Added an always-visible compilation status chip and made the compilation console report every terminal state.
  • Improved annotation-card clipping, compacted the diff toolbar, and increased the readability of anchored LaTeX comments.

Build and release engineering

  • Restored DMG bundling for tag-triggered builds.
  • Hardened the local relaunch protocol so release validation cannot build under a still-running application or reuse zombie gallery/sidecar processes.
  • Refreshed the bundled Rust server artifacts, including the linked-session MCP binary.
  • Updated the tag workflow release description and documentation pointer for 1.3.6.
  • Applied an explicit ad hoc signature to public macOS bundles and made strict deep code-signature verification a required release gate.

Compatibility and upgrade notes

  • Existing projects, conversations, Knowledge Base sources, gallery state, and provider settings remain compatible.
  • Linked sessions share a sanitized transcript projection and explicit agent messages; they do not transfer the source provider's hidden chain of thought, private runtime memory, or authentication state.
  • Removing a link stops future continuity delivery but does not delete either conversation.
  • Claude Code, Codex, Kimi, Grok, and OpenCode CLIs remain external prerequisites for their respective providers. Node.js 22 and the gallery runtime are bundled with the application.
  • Workspace pane layouts are stored locally and can be rearranged without changing project files.

Platform

  • macOS on Apple Silicon.

If macOS Gatekeeper blocks the downloaded build, run:

xattr -cr "/Applications/Atelier.app"

Validation coverage

The 1.3.6 release candidate passed:

  • TypeScript type checking, the production Vite build, and the 950 KB entry-budget gate.
  • 637 frontend unit/integration tests across 81 files.
  • 556 Node sidecar tests across 37 files.
  • 37 Python gallery tests, 17 direct Node gallery tests, route parity, and 183 gallery diff-suite tests.
  • 49 shared protocol tests.
  • 31 Tauri application tests.
  • The complete Rust workspace, including 120 provider tests (plus one network/auth test intentionally ignored), 67 runtime tests, 27 workspace tests, 17 store tests, 16 remote security tests, and all remaining crate/doc tests.
  • 70 Playwright end-to-end tests, including Chromium and WebKit editor-scroll coverage.
  • A canonical local Apple Silicon DMG build from main, validated with hdiutil verify; the mounted application reports version 1.3.6, passes strict deep code-signature verification, and contains the arm64 Node.js 22.22.3 runtime.
  • A live packaged-app relaunch from the canonical checkout with Rust sidecar health verification.

The tag-triggered GitHub Actions release workflow repeats verification, builds the public DMG, verifies the embedded Node.js runtime, and publishes the release only after all gates pass.

Complete product and engineering commit ledger

The following 69 product and engineering commits are included after v1.3.5. Descriptions are normalized into English; hashes link the ledger to the immutable Git history.

  1. ed0bcbb6 — Restored DMG bundling in tag-triggered release builds.
  2. ad4d31ea — Regenerated the gallery index on 2026-07-18.
  3. fb8f9326 — Hardened the relaunch protocol to prevent builds beneath a running app and stale TCC-affected processes.
  4. 7884f472 — Reloaded the generated figure index.
  5. 13f2428e — Refreshed figures_data.json.
  6. e16560ef — Replaced the boxed diff-document glyph with a full-width plus/minus editor icon.
  7. 3f8fa2ce — Added the indexed figure catalog data.
  8. 290088c9 — Ensured comparison mode renders a single “Add to chat” bubble.
  9. 470ff895 — Refreshed gallery metadata after a rebuild.
  10. 439d0221 — Updated synchronized gallery catalog data and integrity metadata.
  11. fd4141e4 ...
Read more

Atelier Studio v1.3.5

Choose a tag to compare

@github-actions github-actions released this 18 Jul 20:40

Atelier Studio 1.3.5 adds a complete Knowledge Base surface with
source capture and citation-aware answers, Kimi as a native ACP
provider (including Kimi K3 with a 1M context ring), OpenCode over a
shared Rust ACP client, a fully annotatable SyncTeX-linked PDF tab in
the LaTeX studio, faster packaged startup, a reorganized rail, and
sccache-backed build tooling.

See docs/releases/v1.3.5.md in the repository for the complete
release notes, upgrade guidance, validation coverage, and known limits.

Platform: macOS on Apple Silicon.

The packaged app includes Node.js 22 and the gallery runtime. No
separate Node.js or Python installation is required for the app.
Claude Code CLI (2.1.139 or newer) and Codex CLI remain external
prerequisites for their respective providers.

If macOS Gatekeeper blocks an unsigned download, run:
xattr -cr "/Applications/Atelier.app"

Atelier Studio v1.3.1

Choose a tag to compare

@tofunori tofunori released this 16 Jul 14:32

Atelier Studio 1.3.1

Atelier Studio 1.3.1 is a substantial workflow, agent-runtime, and interface release. It builds on the Rust-first foundation introduced in 1.3.0 with scheduled agent automations, a read-only Narval and Slurm monitoring surface, deeper Codex and Claude workflow parity, richer scientific-gallery actions, unified CodeMirror review surfaces, native screenshot context, and a broad shadcn/Base UI refinement across desktop and mobile.

Highlights

  • Added persistent scheduled tasks and heartbeat automations with pause, resume, run history, target validation, and Rust-backed execution.
  • Added a read-only Narval and Slurm workspace for active jobs, recent runs, remote directories, logs, outputs, and terminal handoff.
  • Expanded Codex activity rendering, native command handling, follow-up queues, steering, handoffs, drafts, history recovery, and subagent visibility.
  • Added fullscreen Mermaid diagrams with native dialog behavior and an unobtrusive transparent close control.
  • Added AppSnap for native window capture and local-image context inside conversations.
  • Unified editor and review workflows around CodeMirror 6, including clearer diffs, intervention history, and safer restore behavior.
  • Completed a large shadcn/Base UI migration while preserving Atelier's Precision Native tokens, compact geometry, and accessibility contracts.
  • Expanded the scientific gallery and mobile companion with stronger file, viewer, pairing, and context-transfer workflows.

Scheduled tasks and automations

  • Added a dedicated Scheduled Tasks surface in the desktop rail.
  • Added persistent automation records in the Rust store and compatibility support in the Node sidecar.
  • Added minute-based heartbeat scheduling, due-run detection, target validation, and active-target protection.
  • Added creation, editing, pause, resume, manual-run, and deletion flows with localized states and accessible controls.
  • Added execution history and clear status reporting for scheduled agent work.
  • Kept automation state project-aware and integrated with the existing thread/runtime model.

Narval and Slurm monitoring

  • Added a dedicated Narval surface for research-compute monitoring.
  • Added configurable SSH host and gateway aliases, including the supported nas to narval-vpn two-hop route.
  • Added read-only Slurm snapshots using active squeue jobs and recent sacct history.
  • Added job inspection with state, elapsed time, partition, CPU and memory requests, working directory, command, and pending reason.
  • Added bounded log previews and output-file discovery for a selected job.
  • Added lazy remote-directory browsing restricted to configured roots.
  • Added stale-response protection so older network replies cannot replace a newer selection.
  • Added manual refresh, visible-surface polling, disconnected, empty, loading, stale, authentication, and timeout states.
  • Added a terminal handoff that opens the matching SSH route in Atelier.
  • The Narval integration is intentionally read-only: it does not submit, cancel, edit, move, or delete remote jobs or files.

Agent chat and runtime

  • Aligned the chat activity stream with Codex event semantics, including stable running/completed lifecycles for commands, searches, image operations, dynamic tools, and subagents.
  • Added richer agent and subagent activity groups with inspectable details without overwhelming the primary transcript.
  • Improved queued follow-up turns, steering, interruption, retry, rewind, provider handoff, and fork behavior.
  • Added durable per-thread drafts and safer restoration when switching conversations.
  • Ported more native Codex commands into the Rust runtime, including permission, model, plan, usage, diff, status, review, compaction, and goal-related paths where supported.
  • Improved Codex and Claude model defaults and per-thread selection persistence.
  • Added semantic automatic chat titles while protecting explicit manual renames.
  • Added richer native-history recovery for Codex and Grok sessions.
  • Improved provider status reporting and normalized event handling across the Rust and Node runtimes.
  • Added direct terminal-output publication without requiring a follow-up WebSocket poll.
  • Improved tool presentation, completed-turn anatomy, result capsules, and file-change summaries.

Rich responses and visual context

  • Added fullscreen Mermaid diagrams that reuse the already-rendered SVG, close with Escape, and preserve the inline diagram.
  • Added AppSnap, a native macOS helper for capturing application windows as conversation context.
  • Added local-image previews and structured image-view activity.
  • Improved Markdown typography, syntax highlighting, tables, task lists, math, and long-response layout.
  • Added clearer image-generation, web-search, and attachment activity states.
  • Refined message editing so the editor preserves the original bubble typography and expands without scaling the text.

Scientific gallery and project actions

  • Added a stronger gallery command bridge between agent actions, the desktop shell, and project-scoped gallery servers.
  • Added explicit gallery actions for opening, selecting, inspecting, annotating, and returning artifacts to chat.
  • Added gallery-aware agent tool instructions and bundled helper CLIs.
  • Added CSV table viewing and expanded file-type handling.
  • Improved favorites, filters, collections, status state, live rescans, and recent-artifact behavior.
  • Improved gallery server identity and stale-instance handling across rebuilds.
  • Refined image, PDF, SVG, Markdown, LaTeX, and code-viewer integration.
  • Expanded Zotero passage extraction and context transfer with bounded, explicit tool contracts.

Editors, diffs, and review

  • Unified review and intervention surfaces around CodeMirror 6.
  • Improved side-by-side and inline diff rendering, change navigation, background computation, and large-file behavior.
  • Added clearer intervention history, restoration, reconciliation, and review-state presentation.
  • Improved Git status, staging, diff, commit-context, and project-subdirectory handling.
  • Refined LaTeX, Markdown, code, PDF, and SVG workflows while preserving source-to-output context.
  • Improved SVG text editing, zoom, pan, typography, shape styling, and durable edit replay.
  • Added safer path and revision validation across gallery and workspace operations.

Interface and design system

  • Migrated the authored interface to a comprehensive shadcn/Base UI component layer.
  • Added or standardized dialogs, alerts, fields, menus, tabs, tables, scroll areas, inputs, toggles, tooltips, badges, empty states, skeletons, messages, bubbles, attachments, and activity primitives.
  • Preserved Atelier's compact Precision Native geometry, semantic colors, motion budget, focus behavior, and Tailwind prefix.
  • Refined the command palette, sidebar, project headers, composer, settings, Git surface, terminal, and embedded atelier layouts.
  • Improved responsive behavior, keyboard navigation, accessible names, focus management, and reduced-motion behavior.
  • Added stronger UI contracts and visual fixtures to prevent legacy primitives from reappearing.

Desktop, mobile, and remote access

  • Expanded the mobile companion gallery, file viewers, syntax highlighting, settings, diagnostics, and pairing experience.
  • Improved remote gateway file routes, scoped authorization, replay handling, and security tests.
  • Improved desktop/mobile protocol parity and shared fixtures.
  • Added stronger local-image, attachment, and file-transfer boundaries.
  • Refined mobile build staging and packaged desktop resources.

Reliability, security, and release engineering

  • Strengthened Rust and Node parity for chat, automations, gallery actions, Narval requests, and provider events.
  • Improved process lifecycle, stale-lock recovery, gallery-server cleanup, and backend health reporting.
  • Preserved the no-runtime-write rule inside the signed application bundle.
  • Added stricter path validation, bounded outputs, numeric Slurm job IDs, fixed remote-command shapes, and typed error handling.
  • Expanded CI and release verification across frontend, sidecar, gallery, Rust, protocol, mobile, and browser tests.
  • Kept the Apple Silicon release runner requirement and embedded Node.js 22 verification.
  • Updated release staging for AppSnap, gallery helpers, Zotero passages, mobile assets, and Rust server artifacts.

Validation coverage

The merged 1.3.1 checkout was validated locally with:

  • TypeScript type checking and a production Vite build.
  • 504 frontend unit and integration tests.
  • 384 Node sidecar tests.
  • 169 gallery diff-suite tests plus gallery route parity.
  • 60 gallery Playwright end-to-end tests.
  • The complete Rust workspace test suite, including Narval, automations, providers, remote security, storage, workspace, and runtime coverage.
  • A native Tauri release build and live packaged-app verification.
  • Live confirmation that the Scheduled Tasks and Narval surfaces are present in the rebuilt application.

The tag-driven GitHub workflow repeats the full verification surface, runs gallery Playwright end-to-end coverage, builds the Apple Silicon DMG, and verifies the embedded Node.js runtime before publishing artifacts.

Upgrade notes

  • Existing projects, conversations, gallery state, highlights, and provider settings remain compatible.
  • Scheduled tasks are stored locally and should be reviewed after upgrade before enabling recurring execution.
  • Narval access uses the existing SSH configuration and does not store passwords, tokens, or private keys in Atelier.
  • The Rust backend remains the default. ATELIER_BACKEND=node is available only for explicit compatibility testing.
  • Restart project-scoped gallery servers after changing gallery assets; the packaged app handles this during a normal upgrade.

Platform and prerequisites

  • macOS on Apple Silicon.
  • Claude Code CLI for Claude sessions.
  • Codex CLI for Codex sessions.
  • E...
Read more

Atelier Studio v1.3.0

Choose a tag to compare

@tofunori tofunori released this 13 Jul 01:30

Atelier Studio 1.3.0

Atelier Studio 1.3 is a substantial platform and reliability release. It moves the desktop app to a Rust-first local agent runtime, establishes a shared protocol for desktop and companion clients, adds the first complete mobile and remote-access foundations, and delivers a broad refinement pass across chat, the scientific gallery, editors, project navigation, accessibility, and release engineering.

Highlights

  • The Rust sidecar is now the default desktop backend, with the Node backend retained as a compatibility and soak fallback.
  • Claude, Codex, Grok, OpenCode, OpenAI-compatible APIs, and image-generation providers are represented by the unified runtime and protocol layer.
  • A shared atelier-protocol package and deterministic fixtures now cover desktop, Rust, and mobile event semantics.
  • The new remote gateway provides authenticated device pairing, scoped access, replay protection, and a foundation for secure companion connections.
  • The iOS companion foundation includes project and thread browsing, streaming chat state, composer flows, reconnect handling, protocol tests, and native Tauri packaging.
  • The desktop workspace received a full “Precision Native” refinement pass with clearer hierarchy, calmer motion, improved accessibility, and responsive layouts.

Rust-first agent runtime

  • Added the Rust protocol, health endpoint, WebSocket transport, persistent stores, and provider registry.
  • Added durable thread, history, highlight, settings, workspace, terminal, Git, Zotero, and local-file operations.
  • Added a common provider harness with deterministic fake-provider coverage for send, queue, steer, interrupt, permission, and completion flows.
  • Added Claude CLI stream-json support and Codex app-server JSON-RPC support.
  • Added Grok, OpenCode, OpenAI-compatible API, and Seedream image-provider paths.
  • Added provider health reporting based on the live Rust runtime rather than static configuration.
  • Added release-only soak tooling, PID isolation, orphan detection, backend-policy checks, and restart guardrails.
  • Kept the Node runtime available while the Rust backend completes its production soak period.

Remote access and mobile companion

  • Added the atelier-remote Rust crate and desktop remote-gateway lifecycle integration.
  • Added authenticated pairing, device records, token handling, replay protection, rate limits, and security tests.
  • Added remote project, thread, event, attachment, and command routes.
  • Added a shared TypeScript protocol package with fixtures and parity tests against the Rust implementation.
  • Added the Atelier Companion application foundation for iOS, including navigation, chat state, streaming updates, reconnection, and mobile-focused UI tokens.
  • Added mobile build staging, secret scanning, type checks, tests, and static assets to the desktop bundle pipeline.
  • Added documentation for mobile architecture, threat modeling, protocol contracts, and release readiness.

Chat and workspace experience

  • Added a structured activity timeline, clearer request/result anatomy, and compact result capsules.
  • Improved completed-turn folding, tool summaries, streaming recovery, sticky auto-scroll, and interrupted-response cleanup.
  • Added a hierarchical composer with effort controls, keyboard-friendly menus, attachment handling, and one clear primary action.
  • Added persistent per-project provider, model, and effort selection.
  • Added goal controls in the composer, including edit, pause, resume, stop, and blocked-goal recovery.
  • Added durable highlights and a notebook-style highlight view.
  • Added project-aware thread movement and provider handoff with full-context replay.
  • Added Mermaid rendering, improved Markdown typography, task lists, and clickable file references.
  • Added the Research Home, active-project Research Navigator, workspace-local headers, inspectors, and improved project switching.
  • Added browser, terminal, Git, bibliography, generator, settings, and Atelier surface lazy loading with retry protection.

Scientific gallery and editors

  • Added the scientific gallery command bar, grouped filters, active-filter chips, selection, inspector, workflow states, recent items, and health tools.
  • Added durable favorites, ratings, tags, collections, hidden rules, and workflow state through project-owned .fig_state.json files.
  • Fixed favorites appearing to disappear after restart when their file format was hidden; Favorite view now overrides the general format mask without changing normal filters.
  • Added live gallery refresh and stale-server identity checks to prevent old gallery bundles from surviving app rebuilds.
  • Migrated editor surfaces toward CodeMirror 6 while preserving the shared compatibility facade and diff contracts.
  • Added asynchronous large-diff rendering, background gutter computation, explicit intervention history, durable restore, and safer reconciliation.
  • Added LaTeX comments with colors, batch actions, chat transfer, source/PDF synchronization, editor-only mode, and improved error states.
  • Reduced the line-number gutter width in both CodeMirror 6 and fallback editor modes.
  • Fixed the Wrap menu so it chooses the visible side of the status bar and remains clamped inside the editor viewport.
  • Refined the SVG editor with zoom, pan, inline text editing, typography controls, shape styling, durable anchored edits, and Matplotlib-friendly replay.

Command palette and interface polish

  • Redesigned the command palette as a smaller, denser navigation surface with a restrained active-item indicator.
  • Removed the oversized orange input outline and replaced it with a contained focus treatment.
  • Prevented the top-bar Search control from retaining mouse focus after opening the palette while preserving keyboard accessibility.
  • Added graphite theme tokens, bundled Inter and Monaspace typography, quieter depth, and a reduced motion budget.
  • Simplified project and chat headers, moved workspace actions to their owning surfaces, and removed redundant controls and status badges.
  • Added accessible settings navigation, responsive settings layouts, destructive-action confirmations, keyboard focus states, and deterministic visual fixtures.

Reliability, security, and distribution

  • Embedded a pinned Node.js 22.22.3 runtime for packaged gallery and compatibility services.
  • Added strict local-origin controls, gallery tokens, nonce propagation, safe path handling, and protocol boundary tests.
  • Added sidecar startup backoff, single-instance protection, stale-lock recovery, and health convergence checks.
  • Prevented runtime writes inside the signed .app bundle, avoiding macOS TCC startup stalls.
  • Added a stable development signing identity path and documented first-launch TCC behavior.
  • Added CI coverage for frontend, sidecar, gallery, Rust, shared protocol, mobile, and gallery browser tests.
  • Added a tag-driven Apple Silicon release workflow that creates a draft GitHub release and verifies the embedded Node artifact.

Validation coverage

The repository now exposes a unified verification surface covering:

  • TypeScript type checking and production Vite builds.
  • Frontend and sidecar unit/integration suites.
  • Python gallery regression tests, Node/Python route parity, and diff-suite contracts.
  • Rust desktop and workspace tests.
  • Shared protocol fixtures and desktop/mobile parity tests.
  • Mobile type checking, tests, production build, and secret scanning.
  • Gallery Playwright end-to-end tests in the release workflow.
  • Release bundle construction and embedded Node architecture/version checks.

Upgrade notes

  • Existing project-owned gallery state remains compatible. Favorites, ratings, tags, collections, hidden rules, and workflow state continue to load from .fig_state.json.
  • The Rust sidecar is the default backend. Set ATELIER_BACKEND=node only when explicitly testing the compatibility fallback.
  • Gallery servers are project-scoped and must be restarted when changing bundled gallery code. Follow the repository relaunch protocol to avoid stale processes.
  • The remote gateway and mobile companion are foundations for controlled local/remote use; review the mobile threat model and deployment documentation before exposing any service beyond the trusted configuration.

Platform and prerequisites

  • macOS on Apple Silicon.
  • Claude Code CLI 2.1.139 or newer for Claude sessions.
  • Codex CLI for Codex sessions.
  • Node.js and the gallery runtime are bundled in the packaged desktop app.

If Gatekeeper blocks an unsigned downloaded build, run:

xattr -cr "/Applications/Atelier.app"

Atelier Studio v1.1.0

Choose a tag to compare

@github-actions github-actions released this 06 Jul 17:55

Éditeur LaTeX, refondu

  • Mode Lecture : rendu prose (KaTeX) façon Claude Science, lecture seule.
  • Mode Visuel : éditeur CM6 embarqué (façon Overleaf/Obsidian) — la source LaTeX reste la vérité, mais math/gras/titres/todos sont rendus en place ; la ligne sous le curseur révèle sa source.
  • Console de compilation : log complet de pdflatex, erreurs cliquables (l.42 → saute à la ligne).
  • Historique de versions : chaque sauvegarde (tienne ou celle de l'agent) crée une version comparable/restaurable ; vue diff avec repli des blocs identiques.
  • Thème "atelier" appliqué aux 3 éditeurs de code (mots-clés en accent, chaînes en teal).
  • Fix : le rewrap ne casse plus les en-têtes de commentaires (Missing \begin{document}).

Rail compact (sidebar réduite)

  • Flyout des chats au survol (façon Discord) : voir les conversations d'un projet sans agrandir la sidebar. Punaise pour figer, Échap pour fermer.
  • Menu de projet unifié (icônes + lettres) — identique en mode compact et étendu.

Galerie & PDF

  • Annotations de figure réparées : la route /save (envoi vers le chat) manquait au portage Node — trouvée et corrigée après audit complet des 36 routes.
  • Zoom PDF fluide (−/100%/+, ⌘+/⌘−/⌘0) et le PDF remplit enfin le panneau.
  • Chips de citation académiques (Auteur Année ×N au lieu du nom de fichier brut).
  • Tableaux Markdown enfin rendus dans le chat (remark-gfm).

Panneau Git

  • Groupes Indexés/Modifications/Non suivis repliables.
  • Push/pull directement dans l'en-tête.
  • Diff côte à côte en plus du diff unifié.
  • "Ignorer ce fichier/dossier" dans le menu contextuel.

Harnais Claude

  • Mode Ask interactif : les demandes de permission apparaissent dans le chat (Autoriser/Refuser) au lieu d'échouer silencieusement.
  • Raisonnement visible (thinking) affiché en direct, repliable.
  • Détail des outils (Bash(git status) au lieu de Bash seul).