Rhys SullivanVersion Packages (#1532)a479d233 months agoHistory
655 lines · 52.6 KB · Markdown
RawDownload

executor

1.5.39

Patch Changes

  • Updated dependencies [6c316c7]:
    • @executor-js/sdk@1.5.39
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.59
    • @executor-js/runtime-quickjs@1.5.39

1.5.38

Patch Changes

  • #1417 046d67d Thanks @morluto! - Show policy and OAuth app removal failures in the UI, and keep success-only state unchanged when those writes fail.

  • #1511 7eb795d Thanks @RhysSullivan! - Fix: execute scripts that both emit() output and return a value no longer lose the returned value in MCP clients that ignore structuredContent — the return value is now appended to the tool-result content after the emitted items

  • #1418 d3610e3 Thanks @morluto! - Return an execution error when a Deno subprocess closes stdin instead of emitting an unhandled write failure.

  • #1507 541549a Thanks @RhysSullivan! - Fix: OAuth refresh rejections with non-spec error bodies (e.g. Datadog) now surface as expired connections with a reconnect path, and definitively dead refresh tokens are no longer retried against the authorization server

  • #1517 59a6640 Thanks @kitze! - Fix: OpenAPI query parameters that use form-style exploded objects now serialize each object field as a query parameter.

  • #1416 f1b617c Thanks @morluto! - Prevent provider service migration row loss caused by generated ID conflicts.

  • #1420 8c71744 Thanks @morluto! - Abort GraphQL tool calls that exceed the configured invocation timeout instead of waiting indefinitely for an upstream response.

  • Updated dependencies [6a924dd]:

    • @executor-js/sdk@1.5.38
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.58
    • @executor-js/runtime-quickjs@1.5.38

1.5.37

Patch Changes

  • #1506 c05a1cf Thanks @RhysSullivan! - Artifacts are now on by default for MCP connections. A plain endpoint URL serves the full artifact surface — the artifact tools, the app shell resource, and the artifact skills. Connections that don't want it opt out with ?artifacts=false (or --no-artifacts on the stdio CLI); ?artifacts=true remains accepted as the explicit default. Previously the surface required a ?artifacts=true opt-in.

  • #1498 657b913 Thanks @RhysSullivan! - Add anonymous product analytics to the local daemon (CLI + desktop) and self-host: execution counts split by MCP/API plane, toolkit usage, integration add/remove, and artifact usage (created/viewed/updated/deleted, attributed to agent tools vs the console UI), filed under a persisted per-install anonymous id. Opt out with DO_NOT_TRACK or EXECUTOR_DISABLE_ANALYTICS.

  • #1500 5eb2ca3 Thanks @RhysSullivan! - Fix: the artifact migration no longer narrows definition.name to varchar(255), which failed on existing long definition names

  • #1472 1178e3b Thanks @RhysSullivan! - Add an Artifacts tab. Interactive components an agent generates with render-ui are saved and listed in the console, and each one has its own page that renders it live — the page an MCP client without MCP Apps support deep-links to. Artifacts can be renamed and deleted from the console, and agents find them again by title.

  • #1505 9bd4a5b Thanks @RhysSullivan! - Artifact tool results now include the web deep link beside the inline widget payload, not just on the no-apps fallback. Clients can lose a rendered widget in ways the server never sees — a reopened transcript that skips the resource re-read shows raw JSON — and the URL in the result is the model's way to point the user back at the artifact.

  • #1483 54df2e3 Thanks @davidwrossiter! - Fix: GraphQL connections now reject credentials when schema introspection fails and show actionable tool sync diagnostics

  • #1499 010ea98 Thanks @RhysSullivan! - Fix: the add-connection wizard no longer wipes a pasted credential when the key check saves a health check mid-flow

  • #1503 a7c4689 Thanks @RhysSullivan! - Fix: MCP responses larger than Durable Object storage's 128 KiB per-value cap hung the client instead of being delivered

    The DO transport persisted every outbound message for reconnect replay before writing the live SSE frame, and storage.put of an oversize value throws — so a large response (the ui://executor/shell.html resource is ~5 MB) was neither stored nor sent, and the client waited on keepalives forever. The transport now delivers the live frame first and treats persistence as best-effort: an oversize message skips the event store with a logged warning and arrives without a replay id, which only costs replayability if the connection drops mid-delivery.

  • #1502 25270b1 Thanks @RhysSullivan! - Fix: MCP clients of the cloud host got a "Shell not built" placeholder as the ui://executor/shell.html resource, so every artifact rendered as a widget that never finished loading

    The deployed Worker has no filesystem, and the shell loader silently fell back to an inert placeholder document when its fs.readFile failed. Workers hosts now fetch the built shell through the static-assets binding (the app build emits a stable-named copy alongside the hashed one), the self-host image reads the same emitted asset from its SPA dist, and a host that cannot produce the shell now fails the resource read with an actionable error instead of serving a document that hangs the client. App builds fail if the shell asset was not emitted.

  • Updated dependencies [657b913]:

    • @executor-js/sdk@1.5.37
    • @executor-js/api@1.4.57
    • @executor-js/local@1.4.4
    • @executor-js/runtime-quickjs@1.5.37

1.5.36

Patch Changes

  • #1478 8ecbfd6 Thanks @RhysSullivan! - Store minted OAuth tokens in the durable file secret store (auth.json under EXECUTOR_DATA_DIR) instead of the system keychain. On sandbox/headless hosts the keychain can be an in-memory keyring that a stop/recreate wipes, leaving OAuth connections expired with "Stored refresh token could not be resolved." Existing keychain-backed connections migrate with one clean reconnect.

  • #1462 5a70675 Thanks @RhysSullivan! - Fix: org OAuth connections on self-host worked only for whoever ran the consent

    The encrypted-secrets credential provider (the writable provider on the self-hosted and Cloudflare hosts) filed token rows under the acting user's private partition instead of the credential's own owner. An org-owned OAuth connection whose consent completed in one member's browser session therefore resolved only for that member — every other principal failed with oauth_connection_missing, while the UI showed the connection healthy. The provider now partitions by the owner embedded in the item id (oauth:org:… → org-shared), matching the WorkOS Vault provider, and a boot-time data migration re-files rows already written wrong. The encrypted value itself was never affected.

  • #1459 fc1e589 Thanks @wan0net! - Preserve elicitation_mode=native when creating self-hosted MCP sessions.

  • #1475 77b0821 Thanks @RhysSullivan! - Refresh OAuth tokens when the upstream rejects them with HTTP 401, not only when the stored expiry says they are due. Connections whose authorization server omits expires_in can now recover without a manual reconnect, and the refresh path is traced.

  • #1476 167d899 Thanks @RhysSullivan! - Remove the custom apps plugin. Git and local-directory app sources are no longer supported. The packed binary still ships the workerd and worker-bundler sidecars.

  • Updated dependencies []:

    • @executor-js/sdk@1.5.36
    • @executor-js/runtime-quickjs@1.5.36
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.56

1.5.35

Patch Changes

  • Updated dependencies [1b9b1f1, 99c808f]:
    • @executor-js/sdk@1.5.35
    • @executor-js/runtime-quickjs@1.5.35
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.55

1.5.34

Patch Changes

  • Updated dependencies [e2712db, 7207347, 0c4e9b4]:
    • @executor-js/sdk@1.5.34
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.54
    • @executor-js/runtime-quickjs@1.5.34

1.5.33

Patch Changes

  • #1404 5e0dd15 Thanks @RhysSullivan! - The provider service split boot migration now skips an org whose Google or Microsoft integration cannot be migrated (for example a config without a stored specHash) instead of failing the whole migration and blocking server startup. A daemon that does fail during boot now exits with the underlying error message instead of hanging with a generic "Unknown error".

  • Updated dependencies []:

    • @executor-js/local@1.4.4
    • @executor-js/sdk@1.5.33
    • @executor-js/runtime-quickjs@1.5.33
    • @executor-js/api@1.4.53

1.5.32

Patch Changes

  • #1395 d90d8be Thanks @RhysSullivan! - Policy create now defaults a new rule's position below any more-specific existing rule on the server, so a broad rule written without an explicit position (stale UI, API, agent tool) cannot shadow an existing narrower rule.

  • #1394 1ca5111 Thanks @RhysSullivan! - Ship the platform workerd binary in the self-host Docker runtime; without it custom app tools failed to sync or invoke with "workerd is unavailable on this platform".

  • Updated dependencies []:

    • @executor-js/sdk@1.5.32
    • @executor-js/runtime-quickjs@1.5.32
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.52

1.5.31

Patch Changes

  • #1390 d95e63c Thanks @RhysSullivan! - Ship @cloudflare/worker-bundler in the self-host Docker runtime so the server starts; it was resolved at runtime since the dynamic Worker bundler change but never copied into the image.

  • Updated dependencies []:

    • @executor-js/local@1.4.4
    • @executor-js/sdk@1.5.31
    • @executor-js/runtime-quickjs@1.5.31
    • @executor-js/api@1.4.51

1.5.30

Patch Changes

  • #1371 262fc3e Thanks @RhysSullivan! - Explain 401s from a hosted server as a sign-in problem with the exact executor login command to run, instead of surfacing a raw decode error. executor login now defaults to https://executor.sh when no server is specified, and profile plumbing stays out of messages unless you address servers by name.

  • #1375 0f81165 Thanks @RhysSullivan! - Run cloud custom tool bundling in a dynamically loaded Worker so dependency installation and bundling do not share the serving request isolate.

  • #1349 a7e3091 Thanks @RhysSullivan! - Back-stop code execution with a host-side timeout so a wedged sandbox delivers a descriptive error instead of hanging silently.

  • #1351 93b000a Thanks @RhysSullivan! - Let stock MCP clients auto-reconnect and recover a tool result when a POST stream drops mid-call.

  • #1345 c46730b Thanks @RhysSullivan! - Preserve MCP tool results across dropped streamable HTTP SSE connections.

  • #1357 4c319ee Thanks @RhysSullivan! - Throw a guidance error when sandbox code enumerates the tools proxy (Object.keys, spread, for...in) instead of returning an empty list, pointing agents at tools.search().

  • #1352 8bdf315 Thanks @RhysSullivan! - Treat a transient WorkOS outage during the MCP live-membership check as a retryable 503 instead of a Forbidden that destroys the session.

  • Updated dependencies []:

    • @executor-js/sdk@1.5.30
    • @executor-js/runtime-quickjs@1.5.30
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.50

1.5.29

Patch Changes

  • #1341 5656c3e Thanks @RhysSullivan! - Fix 1Password desktop-app connections failing with "undefined is not a constructor (evaluating 'new n.DesktopAuth(...)')" in packaged builds. The compiled binary now bundles the 1Password SDK's wasm core correctly and falls back to a copy shipped next to the binary, so vault listing and secret resolution work without the op CLI installed.

  • Updated dependencies []:

    • @executor-js/sdk@1.5.29
    • @executor-js/runtime-quickjs@1.5.29
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.49

1.5.28

Patch Changes

  • Updated dependencies [1c48182]:
    • @executor-js/sdk@1.5.28
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.48
    • @executor-js/runtime-quickjs@1.5.28

1.5.27

Patch Changes

  • Updated dependencies [c7ab1e2]:
    • @executor-js/api@1.4.47
    • @executor-js/local@1.4.4
    • @executor-js/sdk@1.5.27
    • @executor-js/runtime-quickjs@1.5.27

1.5.26

Patch Changes

  • #1221 3606317 Thanks @RhysSullivan! - Send correct Cache-Control headers for the self-hosted web app. The SPA shell (index.html) and its client-route fallbacks are now served with no-cache, so a new deploy is picked up on the next visit instead of the browser rendering a stale UI from cache until a hard refresh. Content-hashed /assets/* are served immutable and cached long-term.

  • Updated dependencies []:

    • @executor-js/sdk@1.5.26
    • @executor-js/runtime-quickjs@1.5.26
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.46

1.5.25

Patch Changes

  • Updated dependencies []:
    • @executor-js/local@1.4.4
    • @executor-js/sdk@1.5.25
    • @executor-js/runtime-quickjs@1.5.25
    • @executor-js/api@1.4.45

1.5.24

Patch Changes

  • #1207 c8d9b9d Thanks @RhysSullivan! - Polish the app's title bar. The release tag beside the executor wordmark is now quiet muted-mono metadata instead of a filled pill, matching the registry-minimal design language, and the wordmark is shared across the desktop and dashboard shells so the brand reads identically everywhere. The macOS traffic-light offset is also applied to the mobile sidebar overlay and the collapsed top bar, so the native window controls never sit on top of the wordmark when the window is narrow.

  • #1204 9394217 Thanks @RhysSullivan! - Fix the self-host and Cloudflare web dashboards showing "update available" even on the latest version. The builds baked a placeholder version (0.0.0-selfhost / 0.0.0-cloudflare) into the shell, so the update check always compared as behind. They now bake the real release version, and the sidebar footer shows the running version so you can see what you are on.

  • #1209 ffa4f70 Thanks @RhysSullivan! - Fix the desktop and CLI daemon crashing on first launch on Windows when a v1 local database is present. The v1 to v2 data migration performed file operations (fsync, rename, remove) on libSQL SQLite files whose native OS handles linger after close() on Windows, surfacing as a fatal "Unknown error" (EPERM on fsync of a read-only handle, EBUSY on rename/remove of just-closed files). POSIX is unaffected, so this only reproduced on Windows. The migration now opens files read-write for fsync (treating it as best-effort), retries removes the same way renames were already retried, and forces a GC pass on each retry so libSQL's native finalizer releases the handle before the next attempt. Fixes the v1.5.23 Windows startup regression.

  • Updated dependencies []:

    • @executor-js/sdk@1.5.24
    • @executor-js/runtime-quickjs@1.5.24
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.44

1.5.23

Patch Changes

  • #1199 29936d5 Thanks @RhysSullivan! - Add a test seam to skip the first-run "keep Executor running in the background?" consent dialog under automation, matching the existing confirmResetState seam. Set EXECUTOR_TEST_AUTO_CONFIRM_BACKGROUND_SERVICE=1 to keep the background service or any other value to decline. When the variable is unset the dialog is shown exactly as before. Native dialogs cannot be answered from CDP or Playwright, so a packaged first-run boot under automation previously blocked at this prompt with no way to proceed.

  • #1199 29936d5 Thanks @RhysSullivan! - Fix the desktop app failing to start its local server when the generated auth token begins with a dash. The token is randomBytes(32).toString("base64url"), which can start with "-", and the packaged app passed it to the bundled CLI as a separate argument (--auth-token, then the token). The CLI then read the leading-dash token as an unknown flag, printed its help, and exited, so the desktop showed a fatal "local Executor server crashed during startup" dialog. This was persistent (the token is saved) and cross-platform, affecting roughly 1 in 64 fresh installs. The token is now passed in the combined --auth-token=<value> form so a leading dash is treated as the value.

  • #1199 29936d5 Thanks @RhysSullivan! - Notify when a newer Executor is published. The CLI now prints an "update available" line under its ready banner, and the web shell's sidebar update card works for real (a new /v1/app/npm/dist-tags endpoint backs it). In the desktop app the card shows a native "Restart to update" action wired to the in-app updater instead of the npm command. The check is best-effort and offline-safe, and can be disabled with EXECUTOR_DISABLE_UPDATE_CHECK.

  • Updated dependencies [29936d5, 29936d5]:

    • @executor-js/api@1.4.43
    • @executor-js/local@1.4.4
    • @executor-js/sdk@1.5.23
    • @executor-js/runtime-quickjs@1.5.23

1.5.22

Patch Changes

  • #1167 add2e40 Thanks @RhysSullivan! - Fix the desktop app's main-area title-bar strip pushing page content down so page headers no longer lined up with the sidebar header. The drag strip now overlays the top of the main area (behind page content) instead of reserving its own row, and the Toolkits header uses a fixed title-bar height so its bottom border aligns with the sidebar header again.

  • Updated dependencies []:

    • @executor-js/local@1.4.4
    • @executor-js/sdk@1.5.22
    • @executor-js/runtime-quickjs@1.5.22
    • @executor-js/api@1.4.42

1.5.21

Patch Changes

  • #1134 78aa871 Thanks @RhysSullivan! - Fix OAuth callbacks in cloud so they preserve the URL-selected organization when the session cookie points at another org.

  • Updated dependencies []:

    • @executor-js/local@1.4.4
    • @executor-js/sdk@1.5.21
    • @executor-js/runtime-quickjs@1.5.21
    • @executor-js/api@1.4.41

1.5.20

Patch Changes

  • #1132 580fc7f Thanks @RhysSullivan! - Fix the PostHog custom MCP OAuth setup flow so Add connection opens PostHog authorization instead of falling back to manual OAuth app registration.

  • Updated dependencies []:

    • @executor-js/sdk@1.5.20
    • @executor-js/runtime-quickjs@1.5.20
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.40

1.5.19

Patch Changes

  • #1115 92bd86c Thanks @RhysSullivan! - Google media downloads (Drive file contents, exports, and other binary endpoints) are now returned as binary responses instead of being decoded as text, so files come back intact. Emit them with emit(result.data).

  • #1115 92bd86c Thanks @RhysSullivan! - The CLI now validates that a URL is http/https before handing it to the operating system's browser opener, and on Windows opens it via rundll32 url.dll,FileProtocolHandler instead of cmd /c start. This removes a path where a crafted URL could be interpreted as a shell command. executor login and the "open in browser" prompts behave the same for normal URLs.

  • #1115 92bd86c Thanks @RhysSullivan! - Hardened the hosted egress guard. Outbound requests from OAuth token exchanges, MCP transports, and GraphQL/Google/Microsoft discovery now all route through the guard, and the guard resolves DNS before connecting so a hostname that points at a private or loopback address is blocked rather than only literal private IPs. This tightens SSRF protection for hosted and cloud execution.

  • Updated dependencies []:

    • @executor-js/sdk@1.5.19
    • @executor-js/runtime-quickjs@1.5.19
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.39

1.5.18

Patch Changes

  • #1093 bc24d1a Thanks @RhysSullivan! - connections.create now accepts no-auth connections (the none template with no credential), which previously failed validation with "Expected exactly one provider credential origin". Agents can wire up public, no-auth integrations (public MCP servers, public REST APIs) programmatically instead of bouncing through the web UI. Templates that take a credential still require exactly one.

  • #1093 bc24d1a Thanks @RhysSullivan! - OpenAPI tools that return a file now spell out how to emit it directly in the tool's description, so an agent sees the emit(result.data) contract before its first call instead of only discovering it after a failed attempt or by reading describe.tool. Non-file tools are unchanged.

  • Updated dependencies []:

    • @executor-js/sdk@1.5.18
    • @executor-js/runtime-quickjs@1.5.18
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.38

1.5.17

Patch Changes

  • #1076 3e47752 Thanks @RhysSullivan! - Add executor login (plus logout and whoami) for signing the CLI into a hosted or self-hosted Executor server using the OAuth 2.0 Device Authorization Grant (RFC 8628), instead of manually creating and pasting an API key. login prints a code and verification URL, opens the browser, and polls; afterwards the CLI authenticates with a bearer token. Works against both cloud (WorkOS) and self-host (Better Auth) servers.

  • #1076 3e47752 Thanks @RhysSullivan! - connections.list now returns a lean summary by default, replacing the full oauthScope grant string (which can run to thousands of characters per connection) with an oauthScopeCount. Pass verbose: true to get the full grant back.

  • #1076 3e47752 Thanks @RhysSullivan! - The execute result envelope now reports how many items a script sent to the user via emit(). A script that only emits (with no return value) is no longer indistinguishable from one that did nothing: the envelope includes an emitted count and a (no return value; N items emitted to the user) text preview.

  • #1076 3e47752 Thanks @RhysSullivan! - Fix OAuth connect for providers that issue authorization codes redeemable only at a region-specific token host. Executor now redeems the code at the region returned on the callback rather than the statically advertised token endpoint, so connecting these providers no longer fails at the token-exchange step.

  • #1076 3e47752 Thanks @RhysSullivan! - Send a default executor User-Agent on OpenAPI tool calls. Upstreams such as GitHub that reject requests without a User-Agent (HTTP 403) now succeed instead of surfacing the rejection as a credential error. A spec- or connection-provided User-Agent still takes precedence.

  • Updated dependencies []:

    • @executor-js/sdk@1.5.17
    • @executor-js/runtime-quickjs@1.5.17
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.37

1.5.16

Patch Changes

  • #1066 0961773 Thanks @RhysSullivan! - Replace the code-mode output helpers with a single emit(value) primitive. emit(...) accepts plain values, ToolFile attachments, and MCP content blocks, while return remains reserved for ordinary structured data.
  • Updated dependencies []:
    • @executor-js/sdk@1.5.16
    • @executor-js/runtime-quickjs@1.5.16
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.36

1.5.15

Patch Changes

  • Updated dependencies []:
    • @executor-js/sdk@1.5.15
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.35
    • @executor-js/runtime-quickjs@1.5.15

1.5.14

Patch Changes

  • #1051 cfda0ac Thanks @RhysSullivan! - Fix desktop startup so a failed supervised-daemon replacement no longer leaves the app on a black window. The desktop now re-checks the daemon after install failures, falls back to a managed sidecar when the stale daemon disappears, and surfaces startup recovery instead of leaving a failed renderer visible.
  • Updated dependencies []:
    • @executor-js/sdk@1.5.14
    • @executor-js/runtime-quickjs@1.5.14
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.34

1.5.13

Patch Changes

  • #1046 2de1804 Thanks @RhysSullivan! - Windows installs now repair stale Executor service listeners and only report success after the background daemon publishes the sign-in manifest used by executor web. The desktop app also attaches to a reachable supervised daemon before trusting Windows PID probes, so it no longer starts a competing sidecar when the background service already owns the port.

  • Updated dependencies []:

    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.33
    • @executor-js/sdk@1.5.13
    • @executor-js/runtime-quickjs@1.5.13

1.5.12

Patch Changes

  • #1021 c8faad7 Thanks @RhysSullivan! - Self-hosted instances now detect their public URL automatically on common platforms, and origin handling is consistent across every host. When EXECUTOR_WEB_BASE_URL is not set, the server reads the origin a host injects (Railway, Render, Fly, Vercel, Netlify, Heroku, Azure, Cloudflare Pages) instead of defaulting to localhost — so a platform deploy works with zero configuration and no longer fails sign-in with "Invalid origin". When the origin still can't be determined, that error is replaced with a clear message telling you exactly which EXECUTOR_WEB_BASE_URL value to set, and a startup warning fires on any non-dev deploy that falls back to localhost. The MCP browser-approval link a self-host sends to clients now uses the pinned public URL (reachable behind a reverse proxy) rather than the server's internal address. These resolution rules now live in one shared helper used by every host.
  • Updated dependencies []:
    • @executor-js/sdk@1.5.12
    • @executor-js/runtime-quickjs@1.5.12
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.32

1.5.11

Patch Changes

  • #1002 64b3544 Thanks @RhysSullivan! - Fix the self-hosted "Connect an agent" MCP URL. The card printed an organization-scoped path (<origin>/<organizationId>/mcp) that the single-tenant self-host server didn't serve, so connecting an MCP client authorized successfully but then failed to reach the tools with an HTTP 404. The self-host server now accepts the organization-scoped path and routes it to its MCP endpoint.

  • #1002 64b3544 Thanks @RhysSullivan! - Self-hosted MCP connections now require explicit approval. When an MCP client connects, the browser stops on an approval screen showing the connecting client's name, what it can access, and that the grant is limited to the MCP server (not a web-app login, and it can't make other API calls on your behalf); a token is granted only after you Approve. Previously a signed-in user's client was authorized automatically with no prompt.

  • #1008 7237bf2 Thanks @RhysSullivan! - Self-hosted instances no longer lose data on restart. Better Auth now shares the same libSQL connection as the rest of the instance instead of opening its own. Previously the two connections each managed their own write-ahead log on the shared database file, and the second one to open could orphan the first — so integrations, connections, and tools written after startup landed in a discarded log and disappeared on the next restart, while sign-in data survived. This is the "reconnected my account but it has zero tools" failure; a single shared connection removes the split entirely.

  • Updated dependencies []:

    • @executor-js/sdk@1.5.11
    • @executor-js/runtime-quickjs@1.5.11
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.31

1.5.10

Patch Changes

  • #995 0717067 Thanks @RhysSullivan! - Self-hosted deployments now persist their data correctly across restarts.

  • Updated dependencies []:

    • @executor-js/sdk@1.5.10
    • @executor-js/runtime-quickjs@1.5.10
    • @executor-js/local@1.4.4
    • @executor-js/api@1.4.30

1.5.9

Patch Changes

  • fe4153d Thanks @RhysSullivan! - Fix a Windows race in the local v1→v2 database migration: the legacy database rename could hit EBUSY (file still held by the just-closed SQLite handle or an antivirus scan) and crash the app at boot. The retry window now covers the lock instead of giving up after ~2 seconds.

Lines 1–500 of 655.