v1.6.9
Patch Changes
-
#1901
de13821Thanks @baggiiiie! - Prevent deleted artifacts from briefly reappearing after returning to the artifact gallery. -
#1915
5c1d1b4Thanks @baggiiiie! - Fix: links in generated artifacts (<a target="_blank">) did nothing when clicked. The sandbox iframe deliberately has noallow-popups, so the browser blocked the new browsing context and the click went nowhere. A trusted user click is now relayed across the frame boundary to the host'sopenLinkcapability — guarded by a per-render nonce so generated code cannot forge or observe it — and the host opens onlyhttp/httpsURLs. -
#1884
3eea03bThanks @GijungKim! - Render artifacts that call integrations or tools with hyphenated slugs. -
#1943
b5d53cbThanks @baggiiiie! - Fix:show-artifactnow returns the saved component source to MCP clients that cannot render Apps. Agents can read the current source and make targeted edits instead of receiving only a link to the artifact. -
#1967
bfc46e5Thanks @utpalsinghdev! - Pin CLI browser approval links toEXECUTOR_WEB_BASE_URLso a TLS reverse proxy no longer returns an unreachablehttp://URL. -
#1976
40b2f2eThanks @SunkenInTime! - Carry an approval's persistence choice through elicitation, so Codex Computer Use stops asking to use the same app on every call.Computer Use offers
persist: ["session", "always"]in the prompt's terms and remembers the app only when the answer names one. Executor dropped the offer on the way in (the terms projection kept strings only) and the choice on the way out (every adapter rebuilt the reply fromactionandcontent), so each accept was one-time.ElicitationResponsenow hasmeta.persist; the MCP plugin, the app-server bridge, and the MCP host pass it through; the model-moderesumetool and the browser approval page let the approver pick from the offered scopes. Nothing is chosen automatically: a bare accept still approves once. -
#1977
6870f38Thanks @RhysSullivan! - Compiledescribe.toolpreviews against only the definitions a tool references, drop the compiler's per-call retained graph, and fall back tounknownfor schemas over a node limit. Describing a tool from a large OpenAPI spec no longer burns seconds of CPU or leaks memory in the shared session isolate. -
#1980
b961092Thanks @daviesayo! - Return a tool's declared annotations fromtools.schemaanddescribe.tool. Code insideexecutecan now readrequiresApproval,approvalDescriptionandmayElicitwithout parsing the tool's prose description. -
#1978
f1d95f2Thanks @RhysSullivan! - Report an MCPexecutecall that dies with a session reset as a JSON-RPC error instead of a silently closed stream. The front worker answers outstanding request ids when the session socket closes abnormally or a response deadline passes, and a rebuilt session answers ids stranded by a previous incarnation on the next stream. The plain memory-limit reset is now classified as transient. -
#2016
84620aaThanks @RhysSullivan! - Fix: an MCP server refusing a tool call with a 4xx HTTP response (for example Stripe's422whenstripe_contextis missing) surfaced asInternal tool error [id]. When the body is a JSON object naming the problem, the call now returns a typedmcp_tool_errorfailure with the server's message and status, so the model can fix the arguments instead of reading an outage. -
#2014
f94e5e0Thanks @RhysSullivan! - Name the MCP SDK rejection (error class and code) in theInternal tool errordefect log, so an opaque MCP failure can be diagnosed from the trace instead of only naming the tool that failed. -
#2012
5b5db98Thanks @RhysSullivan! - Fix: an MCP server refusing a tool call with a JSON-RPC error (for example-32602 Invalid params) surfaced asInternal tool error [id]. The server's answer is for the caller, so it now comes back as a typedmcp_tool_errorfailure carrying the server's message and JSON-RPC code, and the model can correct the arguments instead of reading an outage. -
#1942
3c263d7Thanks @RhysSullivan! - Add a search and invoke MCP mode (?mode=passthrough,executor mcp --mode passthrough). Search returns bounded pages of matching tool IDs and input schemas. Invoke validates arguments and runs the selected tool, with native client approval and workspace blocks enforced. The MCP catalog stays at two tools regardless of integration count. -
#1971
61f71c5Thanks @Adityakk9031! - Shut down scoped executors and tool subprocess resources upon MCP session eviction and disposal in the in-process session store. -
#1960
d64639bThanks @baggiiiie! - OpenAPI tools that cannot reach the upstream server now return anupstream_unreachableerror instead ofInternal tool error [id]. The message names the integration and origin that could not be reached,detailscarries the sanitizedhostand errno-stylecode(ECONNREFUSED,ENOTFOUND, …), and the failure is logged with the same classification. -
#1963
eaa1f3aThanks @RhysSullivan! - Bundle the Geist and Geist Mono fonts with the console instead of loading them from Google Fonts. The UI no longer stays blank when a self-hosted deployment cannot reach fonts.googleapis.com. -
#1987
347537cThanks @baggiiiie! - Hide the self-hosted Admin area from non-admin members and refuse direct access before member details or invite controls are rendered. -
#1897
f1930ddThanks @baggiiiie! - Prevent the empty Toolkits page from scrolling past its visible add cards. -
Updated dependencies [
d873caf,40b2f2e,65d939e,3c263d7,61f71c5,a6cdcf1,be77521,f8cfa5f,cc0fd8f,85cf428,38a7725,3fd28a5,929b233]:- @executor-js/api@1.4.72
- @executor-js/sdk@1.6.9
- @executor-js/local@1.6.9
- @executor-js/runtime-quickjs@1.6.9