发布

  • fix: copy ion-dist static assets for app:// protocol handler (#490)

    frostbyte_neo 发布于 2026-04-23 01:35:16 +00:00

    The Claude Desktop app registers a custom app:// protocol handler rooted
    at process.resourcesPath/ion-dist — that directory holds the static SPA
    assets for internal windows like Third-Party Inference setup, Connectors
    config, etc. The Windows installer ships ion-dist under lib/net45/resources
    but scripts/staging/cowork-resources.sh never copied it into the electron
    resources dest, so every app://localhost/* request fell through to the
    static file handler's index.html fallback, which also failed because the
    whole directory was missing.

    Net effect: the Third-Party Inference setup window (Developer → Configure
    Third-Party Inference…) opened as a blank window with
    ERR_FILE_NOT_FOUND / ERR_UNEXPECTED on loadURL.

    Add an ion-dist copy step to copy_cowork_resources() matching the
    existing smol-bin / plugin-shim pattern (warn-and-continue on absence),
    and a matching install stanza in nix/claude-desktop.nix so NixOS users
    get the fix too — without the Nix hunk, ion-dist lands in the
    nix-resources/ sentinel but the installPhase doesn't cherry-pick it.

    Verified end-to-end:

    • Fresh build ./build.sh --build appimage picks up ion-dist from the
      1.3883.0 Windows installer (84 MB uncompressed, ~42 MB delta in the
      AppImage after squashfs).
    • Live install on CachyOS daily-driver; Developer → Configure Third-Party
      Inference… now renders the full 6-tab config UI (Connection / Sandbox
      & workspace / Connectors & extensions / Telemetry & updates / Usage
      limits / Plugins & skills / Egress Requirements) per the upstream
      docs at support.claude.com/en/articles/14680741.
    • Logs clean of ERR_UNEXPECTED / ERR_FILE_NOT_FOUND on setup-desktop-3p.

    Fixes #488

    Co-authored-by: Claude claude@anthropic.com

    下载附件