Skip to content

v0.11.1

Choose a tag to compare

@V3RON V3RON released this 22 Sep 20:03
· 22 commits to main since this release
977e6b8

0.11.1 (2026-09-22)

  • Fix: an ungrouped tool reports group: null to every reader. appduct_describe_tool
    dropped the key instead of reporting null, so it disagreed with appduct_list_tools about
    the same tool. ToolDescriptor.group is
    string | undefined again — it is the registration type, and registering null has always been
    rejected — so the type app authors write against (appduct/client, the React Native SDK's
    getRegisteredTools()) no longer admits a value that throws. Code reading a tools.list entry
    takes the new ListedToolDescriptor (or ToolsListEntry, which adds policy), where group is
    string | null; appduct/client's tools() now returns those entries.
  • Fix: the first Appduct command on a clean machine no longer fails with a bare ENOENT.
    Nothing created the state directory before the auto-spawn path wrote into it: ~/.appduct is
    created by startDaemon, but the spawn-lock and daemon.log's fd are opened by the parent
    process, before the daemon it spawns exists. So with no ~/.appduct yet, every command that
    auto-spawns a daemon — appduct ls, appduct daemon start|status, and appduct mcp, which
    died before an MCP client could finish initialize — failed with
    ENOENT: ... open '~/.appduct/daemon.spawn.lock' until someone ran appduct daemon run in the
    foreground once. The auto-spawn path now creates the directory (mode 0700, same as the daemon
    would) before taking the lock.