v0.13.0
Open Science v0.13.0
Persistent side conversations, a conversational skill creator, project pinning, a unified plan-approval composer, branch-aware context-window run trends, session keyboard shortcuts, and notebook host capability introspection — while restored upload bytes, preserved continuation provenance, hardened compute job transitions, and the settings and skills ownership refactor continue underneath.
Open Science is an open-source, model-agnostic AI workbench for scientific discovery — a self-hosted desktop app pairing a plan-and-execute agent with persistent compute, durable project/session storage, and inspectable research artifacts.
v0.13.0 is a feature release. It introduces persistent side conversations that run alongside a session's main thread without occupying the transcript; adds a conversational skill creator so an agent can draft, refine, and install a new skill from natural-language instructions inside the session; lets researchers pin important projects to the top of Home; unifies plan-approval, permission-approval, and ask-user interactions into a single composer lane so blocking prompts no longer scatter across the workspace; brings branch-aware context-window run trends so each message branch carries its own usage trajectory; adds keyboard shortcuts for session navigation and management; and surfaces notebook host capability introspection so the agent can discover what the runtime environment actually supports before issuing commands. On the fix side it restores missing immutable upload bytes lost from cross-branch artifact claims, preserves restored continuation provenance when a session resumes after a compaction or reconnect, routes Codex reviewer approvals through the elicitation flow, hardens compute job-transition guards across poller, dispatcher, and queued-promotion paths, persists authorization waits across application restarts, keeps unsupported binary files out of provider prompts, and keeps notebook prompts within the configured context budget. Under the hood it continues the ownership refactor — extracting the settings backend selection, provider auth lifecycle, responses request/response adapters, document codec, provider runtime projection, record codec, atomic document store, backend route planner, provider transport owner, and provider loopback lifecycle owners, as well as the personal skill store, bundle import, agent home, and Skill package transaction owners — alongside a workspace-runtime recovery-policy extraction and expanded certification and boundary test coverage.
✨ Highlights
- Persistent side conversations. A lightweight side conversation can now be opened alongside a session's main thread — same project, same agent, independent history — so a researcher can ask a quick clarifying question, run an exploratory check, or iterate on a sub-problem without interrupting the primary transcript or switching sessions. Each side conversation persists across restarts and is scoped to its parent session. (#1028)
- Conversational skill creator. The agent can now draft, refine, and install a new skill from a natural-language description inside the session. The skill body, metadata, and reference list are generated conversationally, previewed before write, and materialized into the managed skill directory — turning "I keep doing X, make it a skill" into a one-turn operation. (#1001)
- Unified plan-approval composer. Plan approvals, permission requests, and ask-user questions are now consolidated into a single composer lane with consistent layout, status chrome, and keyboard interaction. Blocking prompts no longer scatter across the workspace surface; question progress, custom-answer capture, and auto-review divider placement are aligned across all three interaction types. (#1065, #1052, #1069, #1062, #1061, #1063, #1055, #1050)
- Branch-aware context-window run trends. The context-usage indicator now carries a per-branch run-trend visualization, so switching between message branches shows the correct usage trajectory instead of a single global line. Trends update live as runs complete and persist across restarts. (#1057)
🚀 New Features
- Persistent side conversations — each session can host zero or more side conversations that share the project, agent runtime, and compute kernel but maintain an independent message history and activity log; side conversations are listed, selectable, and persisted alongside the parent session across restarts. (#1028)
- Conversational skill creator — the agent generates a candidate skill (body, metadata, file references) from a natural-language request inside the session, previews it for the user, and materializes it into the managed skill directory on confirmation. (#1001)
- Project pinning — important projects can be pinned to the top of the Home dashboard; pinned projects are excluded from default alphabetical or recency ordering and persist across restarts. (#1021)
- Unified plan-approval composer — plan-approval requests, permission approvals, and ask-user questions are routed through one shared composer lane with consistent layout, keyboard navigation, and status chrome; blocking composers hide surrounding workspace status indicators, question progress remains visible while pending, custom-answer values are captured before the state updater runs, and the auto-review divider and session-grant order are positioned relative to the active composer. (#1065, #1052, #1069, #1062, #1061, #1063, #1055, #1050)
- Branch-aware context-window run trends — per-branch usage trends are projected alongside the existing category-level estimates, so each message branch carries its own trajectory; trends update live and persist across restarts. (#1057)
- Session keyboard shortcuts — keyboard shortcuts for common session actions (switch, pin, archive, new session) are now available from the workspace sidebar. (#1059)
- Notebook host capability introspection — the agent can discover what the notebook runtime environment actually supports (available kernels, installed packages, display capabilities) before issuing commands, reducing failed runs from unsupported operations. (#1064)
- Customize sidebar entry — a direct Customize entry in the workspace sidebar opens the personalization flow without requiring a
/customizecommand, making specialist, skill, and connector customization discoverable. (#1012) - User-waiting message indicators — message rows in the transcript now show a visible indicator when the agent is blocked waiting for user input, so it is clear at a glance which turn needs attention. (#1014)
- Refined session update cards — Home dashboard session-update cards have been refined with aligned status colors, motion, and project-name attribution for running, needs-you, and unread completed sessions. (#1015)
🔧 Improvements
- The settings ownership refactor continues, extracting backend selection owner, provider auth lifecycle owner, responses request adapter, responses response adapter, document codec, provider runtime projection, record codec, atomic document store, backend route planner, provider transport owner, and provider loopback lifecycle so each settings responsibility is isolated behind independently testable contracts. (#1027, #1024, #1018, #1022, #1019, #1020, #1016, #1025, #1030, #1032, #1041)
- The user-skills ownership refactor continues, extracting personal skill store, bundle import owner, agent home owner, and Skill package transaction owner. (#1037, #1038, #1039, #1036)
- The workspace-runtime recovery policy is now hidden from the send interface, narrowing the public surface to session-safe operations. (#1042)
- Expanded certification and impact-boundary test coverage across settings backend boundaries, skill repository contracts, side-chat platform assertions, project-files workflow hooks, and notebook context budgets. (#1011, #1033, #1035, #1040, #1044, #1031, #1068)
- Compute job-transition guards are hardened across poller, dispatcher, and queued-promotion paths with atomic state transitions and certified lifecycle ownership. (#1058, #1056, #1051, #1049)
- Authorization waits now persist across application restarts, so a pending permission approval survives an unexpected quit and resume. (#1023)
- Notebook offline package cache is now seeded from the selected runtime environment, reducing cold-start provisioning time. (#1045)
🐛 Bug Fixes
- Restored missing immutable upload bytes — cross-branch artifact claims could lose their immutable upload bytes when the producing branch was compacted or the session was restored from a durable snapshot. The upload authority now retains the original bytes independently of branch lifecycle, so restored artifacts resolve correctly. (#1048)
- Preserved restored continuation provenance — when a session resumes after a compaction or reconnect, the continuation provenance (which turn produced which artifact, which message branch owns which claim) is now preserved instead of being reset to a default state, preventing stale or detached claims. (#1047)
- Codex reviewer approvals routed through elicitation — Codex reviewer tool approvals that were previously delivered as ordinary MCP updates are now routed through the elicitation flow with an approval marker, so they surface as actionable blocking cards instead of non-actionable activity rows. (#1071)
- Legacy provider sessions recovered — sessions created under a previous provider configuration that were missing expected runtime metadata are now recovered on load instead of being dropped. (#1066)
- Restored MCP activity preserved — MCP tool activities that were part of a restored continuation are no longer stripped from the transcript, so the activity history remains complete after a resume. (#1072)
- Custom-answer value captured before state updater — when a user types a custom answer in an ask-user card, the value is now captured before the state updater runs, preventing the answer from being lost to a concurrent re-render. (#1069)
- Unsupported binary files kept out of provider prompts — binary files that the provider cannot process as text or image are now filtered before prompt assembly, preventing provider errors from unsupported content types. (#1034)
- Notebook prompt kept within context budget — the notebook preamble and context are now bounded against the configured context window, preventing oversized notebook context from overflowing the provider's limit. (#1029)
- Ask-user turn usage aggregated — token usage from ask-user interactions is now correctly aggregated into the turn usage footer instead of being dropped. (#1017)
- Preview file tabs widened — file-preview tabs were too narrow for readable names; they now use available width and truncate gracefully. (#1013)
📦 Install
Requirements: macOS 12+ (Apple Silicon or Intel), Linux x64, or Windows 10/11 x64. On first run, the onboarding wizard checks the environment and can install and configure an app-managed agent runtime. Once installed, the app can update itself in place.
Download the appropriate package from the Assets section below:
| Platform | Package |
|---|---|
| macOS (Apple Silicon) | DMG for ARM64 |
| macOS (Intel) | DMG for x64 |
| Linux | AppImage or Debian package for x64 |
| Windows | Installer for x64 |
macOS — first launch. Official release builds are Developer ID signed and notarized by Apple, so they open like other trusted applications. A locally built copy is not notarized and may require approval through macOS Privacy & Security.
Windows — first launch (unsigned build). No Authenticode certificate yet, so SmartScreen shows a bypassable "unrecognized app" prompt (More info → Run anyway). Verify that the package came from the official release page before continuing.
Build from source instead:
npm install
npm run build:mac # or: build:linux / build:win
🧭 What's in this release (maturity)
- ✅ Implemented: a local-first desktop, localhost-web, headless, CLI, and task-SDK surface over persistent projects and sessions with selectable message branches, branching into a new session, reversible archiving, project pinning, and persistent side conversations; selectable Claude Code, OpenCode, and Codex agent frameworks behind a shared provider turn-adapter interface; review-gated session plans with durable execution contracts and persistent plan call records; a unified plan-approval, permission-approval, and ask-user composer lane; hot-switching of compatible models and providers without reconnecting the agent process; agent-aware context replay respecting each framework's context path; multi-provider model configuration with combined model/reasoning selection; persistent Python/R/REPL kernels and remote SSH execution with read-only installed-package inventories, inline image-output previews, and host capability introspection; immutable artifact versions with inspectable audit evidence and on-demand LLM-driven code reconstruction; multi-format previews including TIFF and code syntax highlighting; file-based skills with conversational creation, conversational imports, keyword search from GitHub URLs, authenticated GitHub access, and ZIP export; permissioned scientific connectors with standard remote OAuth sign-in and portable configuration import/export; opt-in review and bounded correction; personal specialist agent profiles with scoped capabilities, conversational customization, immediate in-flight handoff, and package import/export; scoped permission management with global, project, and session grants and live profile changes during a running turn; conversation export as Markdown and PDF; selective session-artifact downloads; per-turn token usage; message timing metadata; tool-activity elapsed time; completed-turn agent and model identification; context-usage persistence across restarts; branch-aware context-window run trends; a project-scoped command palette; session keyboard shortcuts; collapsible side panels; split-view file preview beside the session; prompt history navigation; session link favicons; branded loading indicators; adaptive macOS app icons; offline detection indicator with a Network status panel; Task API run-progress liveness and explicit run cancellation; desktop task-completion/failure notifications; a cross-surface notification message center; live session status with running, waiting-on-you, and newly completed cards on Home; structured agent clarification cards; user-waiting message indicators; and an in-place background auto-updater
- 🚧 Partial: R remains managed-only; provider choice remains constrained by the active framework's endpoint compatibility; remote compute is SSH-only; skills remain local; specialist roles are personal-only (no cross-machine sharing); and review is opt-in and record-scoped.
- 🗺️ Roadmap: a unified model gateway, a public skills commons and cross-machine specialist sharing, Slurm/cloud-GPU execution, stronger sandboxing and credential isolation, and collaborative research workflows.
🐢 Known Limitations
- R is managed-only. A bring-your-own R interpreter path is not built yet.
- Remote compute is SSH-only. Slurm, cloud GPU, and parallel sub-agent fan-out are not built yet.
- Provider choice is per framework, not one unified gateway. The available protocol depends on the selected agent backend.
- Hot-switching applies only to registered compatible targets. Framework, auth-lane, wire-route, or unsafe capability changes still require a reconnect.
- Code reconstruction is LLM-generated. It does not replace deterministic reproduction; portable environment locks and full-fidelity session replay remain open.
- Specialist roles are personal-only. There is no shared public commons or cross-machine specialist forking yet.
- The task SDK is a first-generation surface. Task creation, polling, artifact retrieval, run progress, and cancellation work; broader orchestration remains open.
- Switching agent backends cannot transfer in-flight tool state. Existing conversation history can replay, but a running action is not migrated.
- Skills are local only. There is no shared public commons, cross-machine forking, or user-facing version pinning yet.
- The reviewer is opt-in and record-scoped. It does not replace domain-specific validation of citations, units, statistics, or methods.
- Scoped permissions cover allow-grants only. Network sandboxing, directory-level file access control, and a credential vault are not built yet.
- Windows builds are unsigned. SmartScreen may warn on first launch; official macOS builds are notarized.
- No local GPU compute backend.
- No multi-user real-time collaboration.
🙏 Acknowledgements
Thanks to @ewen-poch, @wen2zhou, @daanveer-tech, @justemu, and everyone in Discord, X, and Discussions.
What's Changed
- test(settings): define backend ownership contracts by @ewen-poch in #1011
- feat(workspace): show user-waiting message indicators by @ewen-poch in #1014
- feat(workspace): add Customize sidebar entry by @ewen-poch in #1012
- feat(skills): add conversational skill creator by @ewen-poch in #1001
- refactor(settings): extract record codec by @ewen-poch in #1016
- fix(acp): aggregate ask-user turn usage by @ewen-poch in #1017
- fix(workspace): widen preview file tabs by @ewen-poch in #1013
- refactor(settings): extract responses request adapter by @ewen-poch in #1018
- refactor(settings): extract provider runtime projection by @ewen-poch in #1020
- refactor(settings): extract document codec by @ewen-poch in #1019
- feat(home): refine session update cards by @ewen-poch in #1015
- refactor(settings): extract responses response adapter by @ewen-poch in #1022
- refactor(settings): extract provider auth lifecycle by @ewen-poch in #1024
- refactor(settings): extract backend selection owner by @ewen-poch in #1027
- feat(projects): add project pinning by @ewen-poch in #1021
- refactor(settings): extract atomic document store by @ewen-poch in #1025
- fix(acp): keep notebook prompt within context budget by @ewen-poch in #1029
- refactor(settings): extract backend route planner by @ewen-poch in #1030
- refactor(settings): extract provider transport owner by @ewen-poch in #1032
- test(project-files): honor workflow hook timeout by @ewen-poch in #1031
- fix(acp): keep unsupported binary files out of provider prompts by @ewen-poch in #1034
- test(settings): certify backend ownership boundaries by @ewen-poch in #1033
- test(skills): lock user Skill repository contracts by @ewen-poch in #1035
- refactor(skills): extract Skill package transaction owner by @ewen-poch in #1036
- refactor(user-skills): extract personal skill store by @ewen-poch in #1037
- refactor(user-skills): extract bundle import owner by @ewen-poch in #1038
- refactor(user-skills): extract agent home owner by @ewen-poch in #1039
- test(user-skills): certify repository ownership by @ewen-poch in #1040
- fix(permissions): persist authorization waits across restarts by @ewen-poch in #1023
- refactor(settings): centralize provider loopback lifecycle by @ewen-poch in #1041
- refactor(workspace-runtime): hide recovery policy from send interface by @ewen-poch in #1042
- feat(side-chat): add persistent side conversations by @ewen-poch in #1028
- test(side-chat): make cwd assertions platform-aware by @ewen-poch in #1044
- fix(notebook): seed selected offline package cache by @ewen-poch in #1045
- fix(compute): make queued job promotion atomic by @ewen-poch in #1049
- fix(composer): move attachment limits into tooltip by @ewen-poch in #1046
- fix(composer): move session grants above auto-review by @ewen-poch in #1050
- fix(compute): guard dispatcher job transitions by @ewen-poch in #1051
- fix(workspace): avoid premature Plan projection reads by @ewen-poch in #1054
- fix(composer): add auto-review divider by @ewen-poch in #1055
- fix(compute): guard poller job transitions by @ewen-poch in #1056
- feat(context-window): add branch-aware run trends by @ewen-poch in #1057
- fix(compute): certify job lifecycle ownership by @ewen-poch in #1058
- feat(workspace): add session keyboard shortcuts by @ewen-poch in #1059
- fix(notifications): acknowledge visible session messages by @ewen-poch in #1060
- fix(workspace): move permission approval into composer lane by @ewen-poch in #1052
- fix(workspace): align ask-user composer layout by @ewen-poch in #1061
- fix(workspace): keep question progress visible by @ewen-poch in #1062
- fix(workspace): hide status chrome for blocking composers by @ewen-poch in #1063
- feat(notebook): add host capability introspection by @ewen-poch in #1064
- fix(acp): preserve restored continuation provenance by @ewen-poch in #1047
- fix(uploads): restore missing immutable upload bytes by @ewen-poch in #1048
- fix(workspace): capture custom-answer value before state updater by @wen2zhou in #1069
- feat(workspace): unify plan approval composer by @ewen-poch in #1065
- test(acp): relax notebook static context budget by @ewen-poch in #1068
- fix(acp): route Codex reviewer approvals through elicitation by @ewen-poch in #1071
- fix(session-resume): recover legacy provider sessions by @ewen-poch in #1066
- fix(session-persistence): preserve restored MCP activity by @ewen-poch in #1072
- chore(release): bump to v0.13.0 by @ewen-poch in #1073
Full Changelog: v0.12.1...v0.13.0