You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
0.15.0 (2026-10-12)
Fix: an app whose first connection to the daemon fails now keeps trying instead of staying unconnected. It retries until the link expires, which fixes Android apps that sometimes never claimed a freshly opened link; a link the daemon refuses is still not retried, and neither, in a browser, is a daemon it cannot reach.
Fix: on macOS, a connection to the daemon at 127.0.0.1 no longer lands on another program by mistake. If another program already uses the configured wssPort, the daemon now refuses to start and names the port; set a different wssPort in config.json.
New: Flutter apps can listen to Appduct.instance.sessionChanges and Appduct.instance.errors and read Appduct.instance.sessionId. They report when a session is claimed, resumed or lost, and why a connection failed; see Flutter setup.
Fix: opening a second Appduct link in an app that is already connected now switches to the new session on iOS and Android. Before, on iOS, the app dropped the old session and never connected to the new one.
Fix: appduct init in a project that spans iOS and Android now prints the wiring step for both.init --json also gains a platforms field listing the native platforms it found, such as ["android", "ios"].
Docs: the Build variants guide now tells apps with expo installed to exclude Appduct through package.json. The react-native.config.js exclusion it showed before does nothing on Expo SDK 54, so Appduct still shipped; see Leave Appduct out permanently.
Docs: a new home page, and every page now has a link preview when shared. Agents can read the home page as Markdown at index.md.
Fix: appduct init's next steps now match the project it found. A React Native app still gets
the @appduct/react-native/auto import, including when init runs from its ios/ or android/
directory; a plain iOS or Android app gets the wiring that app needs. An Android app that already
handles its own deep links is told to give Appduct a scheme of its own — see Android setup.
Fix: APPDUCT_ENABLED=1 now carries Appduct into an iOS configuration whatever you call it, rather than only into ones named Debug or Release; see Build variants.
Docs: an Android app with a custom build type needs one matchingFallbacks line before Appduct applies to it. Without it, any build that includes Appduct fails at dependency resolution rather than building without it.
Changed: @appduct/react-native names its shared API type AppductPublicApi. The old name CordierePublicApi still imports, with a deprecation warning, until 0.16.0 removes it.
New: Flutter apps use Appduct through the appduct package on pub.dev, on Android, iOS, macOS, Windows and Linux. Appduct is included in debug and profile builds, and a release build leaves it out unless you opt in with --dart-define=APPDUCT_ENABLED=true (=false opts out of debug and profile); see Flutter setup.
Fix: a tool result over 256 KiB no longer drops the session. The call fails with tool_serialization_error and a message naming the size and the limit; an oversized event is reported to the app's error listener instead.
New: on iOS, tool calls keep working for about 30 seconds after the app is backgrounded, instead of failing at once. After that a call fails with session_suspended; needs an app built with this release.
Fix: events posted from an iOS app now report their time in milliseconds, like Android's.
A script reading data.ts from appduct events tail or appduct events since no longer needs to multiply it by 1,000.
Fix: the iOS and Android SDKs no longer report a "Failed to send a tool response frame." error when the connection drops during a tool call.
New: appduct init and scheme discovery understand Flutter projects. Run from a directory with a pubspec.yaml, they read the URL scheme from android/app/, ios/Runner and macos/Runner, and init prints the Flutter setup steps.
Fix: a tool call no longer hangs until its timeout when the app reconnects while its old connection is still open. The call now fails at once with session_suspended and can be retried.
Docs: the website has a Web setup page and lists web on the home page. See Web setup.
Docs: which browsers and launch setups connect a web page without a permission prompt, and how to choose between DevTools and WebSocket. See Drive a web page and Security.
New: appduct_connect({ target: "web", url, browserUrl }) and appduct sessions link --open web <url> --browser-url <u> attach a tab of a Chrome launched with --remote-debugging-port, with no permission prompt on https pages. When several tabs match, the error lists their target ids; pass one as targetId or --target-id.
New: attachPage(page, { link }) in appduct/client runs a web page's session through a Playwright page, so an https page connects with no network connection of its own. A reload resumes the session; a popup or a page in a new target is not relayed.
New: a React Native app's web build registers its tools with the same @appduct/react-native calls, including useAppductTool, and they are callable once the page is opened with appduct sessions link --open web <url>; a production web build leaves Appduct out. In expo start --web this needs withAppduct in metro.config.js. Web used to throw; see Security.
New: @appduct/web lets any web page register tools that appduct, MCP clients and appduct/client call, and production bundles leave it out. Vite, webpack and other bundlers use the real code only under the development condition; import @appduct/web/enabled to opt in elsewhere. See the package README and Build variants.
New: the background service listens for web pages on 127.0.0.1, and appduct sessions link --open web <url> returns the page URL and a connect script.appduct_connect takes target: "web", and webOrigins in config.json allows origins beyond localhost; see Security.
Docs: the README is a short overview of Appduct on iOS, Android and React Native, and the guides for registering tools, security and build variants live only on the docs site. The docs/TOOLS.md, docs/SECURITY.md and docs/BUILD-VARIANTS.md files are gone.
Docs: the shipped appduct skill covers native iOS and Android setup, and no longer tells you to set APPDUCT_ENABLED=0 for production. Release builds leave Appduct out by default.