Open Science v0.7.2 Released
This is a patch release: no breaking changes and no Roadmap phase status changes.
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.
- ๐ Website
- ๐ฆ GitHub Repository
- ๐ Full Release Notes
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.
