Back to Blog
5 min read

Open Science v0.7.2 Released

This is a patch release: no breaking changes and no Roadmap phase status changes.

AIPOCHJuly 26, 2026

This is a patch release: no breaking changes and no Roadmap phase status changes. It rounds out the skills lifecycle (import installed global skills, preview candidates before import, agent-requested package imports in a session), sharpens the PDF preview (crisp on-screen rendering plus a width-based zoom), maps reasoning effort to each model's real capability set, and classifies tool access requests into plain-language actions on the approval card, plus two new bundled models and macOS update routing fix.

Watch: Open Science v0.7.2

Highlights

Agent-requested skill imports

Ask the agent to install an attached .zip or .skill package and it routes through the app-owned preview and confirmation dialog (Select all / Invert) before anything is written โ€” no manual archive extraction.

Preview before you import

Installed, GitHub, ZIP/.skill, and bare-Markdown skill candidates can all be inspected (parsed SKILL.md body, metadata, file/reference names) before selection.

Sharper, zoomable PDFs.

Pages rasterize at their on-screen resolution (no more soft A4/Letter pages) and gain a width-based zoom (0.5โ€“3) with overlay controls and Ctrl/Cmd+wheel.

Reasoning effort mapped to the model.

Effort is resolved against each model's real capability profile, custom models can pick a 2โ€“5 level preset, and each framework receives only its valid transport values.

Plain-language permission cards.

Tool access requests show a readable action, impact summary, and category (Python / R / JS REPL / notebook shell, file, network, command, MCP service) instead of raw protocol identifiers.

New Features

Conversational package imports

A session-scoped request_skill_import tool lets the agent request a skill import from an attachment owned by the invoking conversation; resolution reuses the bounded Skill preview/import pipeline, an app-owned candidate selection and preview dialog runs before any write, and the existing import confirmation checklist (Select all / Invert) applies. Pending approvals cancel on timeout, prompt cancellation, session deletion, or global disconnect, and still-pending approvals recover after renderer recreation. Replacement targets stay authoritative in main and skills reload after a successful import for the next turn.

Skill candidate preview

One accessible, read-only preview dialog shared by all import flows renders parsed SKILL.md bodies with the renderer, plus candidate description, safe source label, extra frontmatter metadata, and relative file/reference names; installed candidates lazy-load through trusted source/slug resolution with realpath containment, GitHub candidates lazy-load through the bounded import helpers, and uploads reuse already-extracted content. Row checkboxes stay selection-only and preview failures are isolated per candidate.

Import installed global skills

An "Import installed skills" entry scans ~/.agents/skills plus the framework-specific ~/.codex/skills (Codex) and ~/.claude/skills (Claude Code) directories, lets users multi-select, and imports through the existing managed-skill flow with per-skill results so one invalid selection doesn't abort the rest; source paths resolve in the main process with traversal rejection and safe cross-root symlink handling, and absolute paths are never exposed to the renderer.

PDF preview zoom

Zoom by page width (like Chrome / Preview), not by CSS transform: each page's displayed width is fitWidth ร— zoom (0.5โ€“3), canvases rasterize at that width so text stays crisp at every zoom level, and the measured width tracks the current frame so narrowing the panel or returning from full screen shrinks pages back to fit. Controls are a bottom-right overlay (zoom out / reset / zoom in + percentage, mirroring the image preview) and Ctrl/Cmd+wheel; native vertical scrolling and lazy per-page rendering are preserved, and zoom resets when the previewed file changes.

Model-aware reasoning effort

Static per-provider and per-model effort profiles with five stable user-intent slots; the control renders only the selected model's real concrete choices plus a separate Default option, custom models can enable/disable effort and choose a 2โ€“5 level preset (legacy/unconfigured default to five), intent resolves once and every framework (Claude Code, OpenCode, Codex, ACP, Responses bridge) carries the resolved value in its valid transport vocabulary, and live changes stay scoped to the active runtime.

Plain-language permission classification

A pure renderer-side presentation classifier for pending permission requests shows a plain-language action, impact summary, and category in the approval-card header; Python, R, JS REPL, and notebook shell execution are distinguished while preserving the existing environment badge and code preview, notebook control operations (restart, โ€ฆ) are explained without raw MCP identifiers, and file / network / command / MCP-service / fallback requests are classified without altering ACP responses or session grants. New bundled models โ€” claude-opus-5 (1M context) added to the Anthropic catalog, and doubao-seed-2-1-turbo-260628 (256k context, multimodal) added to the Volcengine Ark catalog alongside the Seed 2.1 pro flagship

Improvements

Sharper PDF rendering โ€” the full-page PDF preview now sizes its canvas backing store from the container's measured CSS width ร— device-pixel ratio รท page point width, so pages occupy their real physical pixels (a 350pt page in a 700px frame at DPR 2 backs at 1400ร—2000, not 700px); the hardcoded 2 cap is replaced by a MAX_RENDER_SCALE = 4 memory-safety bound, a ResizeObserver grows the render width when the frame widens (panel โ†’ fullscreen), and it falls back to the intrinsic page width when unm laid out.

Bug Fixes

macOS update routing for incompatible signatures โ€” packaged macOS builds with a stable version string are no longer assumed to be Developer ID signed; the in-place updater inspects the installed bundle metadata and uses Squirrel.Mac only when both the bundle ID and Apple Team ID match the official stable release identity, failing closed to the manifest installer flow for ad-hoc, mismatched, or unreadable signatures so the UI downloads and opens the installer instead of offering a restart that can't complete.

OpenCode external-skill isolation โ€” every OpenCode session now sets OPENCODE_DISABLE_EXTERNAL_SKILLS (and OPENCODE_DISABLE_CLAUDE_CODE_SKILLS as defense in depth), so host-global .agents/.claude skills can no longer leak into an app session and inflate the reported catalog count; app-materialized skills remain discoverable from the isolated XDG config.