Skip to content

Releases: toon-protocol/toon-client

TOON Desktop extension — latest

28 Jun 20:35
9895f33

Choose a tag to compare

Always the newest client-mcp .mcpb (currently 0.12.0). Stable download: https://github.com/toon-protocol/toon-client/releases/download/mcpb-latest/toon.mcpb — install via Claude Desktop → Settings → Extensions → Advanced → Install Extension.

@toon-protocol/views@0.12.0

28 Jun 20:34
9895f33

Choose a tag to compare

Minor Changes

  • b243c10: Wallet balance correctness (#199/#200), async funding, UI auto-refresh, and media posts.

    • Balances: fast-fail with correct error attribution instead of a 35s control-plane hang; always emit wrapped structuredContent; the views seam validates the wire contract (no silent blank); read the settlement chain (not the preset-first chain) and from an identity-level client (works with no apex).
    • Funding: async submit+poll fund-wallet with a toon_fund_status tool, a generous background faucet timeout, and a distinct timeout status so a slow-but-successful drip isn't reported as a failure.
    • UI: rendered views auto-refresh after any write action; the Fund button resets once the balance updates.
    • Media posts: captioned media uploader (compose → caption → publish) and an optional media/file attach on the default post composer (kind:1 with NIP-92 imeta, rendered inline); the dedicated uploader remains for upload-only.

Patch Changes

  • Updated dependencies [b243c10]
  • Updated dependencies [b243c10]
    • @toon-protocol/client@0.14.11

@toon-protocol/views@0.11.0

28 Jun 13:30
493ad55

Choose a tag to compare

Minor Changes

  • 48205b0: Wallet balance correctness (#199/#200), async funding, UI auto-refresh, and media posts.

    • Balances: fast-fail with correct error attribution instead of a 35s control-plane hang; always emit wrapped structuredContent; the views seam validates the wire contract (no silent blank); read the settlement chain (not the preset-first chain) and from an identity-level client (works with no apex).
    • Funding: async submit+poll fund-wallet with a toon_fund_status tool, a generous background faucet timeout, and a distinct timeout status so a slow-but-successful drip isn't reported as a failure.
    • UI: rendered views auto-refresh after any write action; the Fund button resets once the balance updates.
    • Media posts: captioned media uploader (compose → caption → publish) and an optional media/file attach on the default post composer (kind:1 with NIP-92 imeta, rendered inline); the dedicated uploader remains for upload-only.

Patch Changes

  • Updated dependencies [48205b0]
    • @toon-protocol/client@0.14.10

@toon-protocol/client@0.14.11

28 Jun 20:35
9895f33

Choose a tag to compare

Patch Changes

  • b243c10: Fix the wallet falsely showing "No channels open yet" on funded channels, and
    make rendered TOON views render-first with no preflight ceremony.

    • GET /channels 500 → wallet "No channels open yet". getChannels()
      called apex.client.getSettleableAt(channelId), but ToonClient never got the
      public passthrough when it was added to ChannelManager (#181) — it only used
      this.channelManager.getSettleableAt internally. The wallet atom renders the
      failed fetch as empty, so funded, actively-paying channels showed as none.
      Added the passthrough, plus a compile-time conformance guard
      (toon-client-conformance.ts) asserting ToonClient satisfies the daemon's
      ToonClientLike surface — the channel-tool tests use a mock client, which is
      why this gap shipped green.
    • Resumed channels showed 0 deposit / 0 available. Persisted channel state
      omits the on-chain deposit, so after a daemon restart depositTotal was 0
      and the wallet showed 0 spendable on a funded channel. The daemon now re-reads
      the participant's on-chain deposit (new participants accessor on the
      TokenNetwork ABI + ToonClient.rehydrateChannelDeposit) when resuming an EVM
      apex channel, so available = deposit − cumulative is correct again.
    • Render-first, zero ceremony. The server instructions and the
      toon_status / toon_identity tool descriptions now state that a read-only
      render goes straight toon_atomstoon_render — no status/identity/balance
      preflight, no tool-call narration. SKILL.md's "always start with toon_status"
      is reframed to lazy/render-first.
  • b243c10: Wallet balance correctness (#199/#200), async funding, UI auto-refresh, and media posts.

    • Balances: fast-fail with correct error attribution instead of a 35s control-plane hang; always emit wrapped structuredContent; the views seam validates the wire contract (no silent blank); read the settlement chain (not the preset-first chain) and from an identity-level client (works with no apex).
    • Funding: async submit+poll fund-wallet with a toon_fund_status tool, a generous background faucet timeout, and a distinct timeout status so a slow-but-successful drip isn't reported as a failure.
    • UI: rendered views auto-refresh after any write action; the Fund button resets once the balance updates.
    • Media posts: captioned media uploader (compose → caption → publish) and an optional media/file attach on the default post composer (kind:1 with NIP-92 imeta, rendered inline); the dedicated uploader remains for upload-only.

@toon-protocol/client@0.14.10

28 Jun 13:30
493ad55

Choose a tag to compare

Patch Changes

  • 48205b0: Wallet balance correctness (#199/#200), async funding, UI auto-refresh, and media posts.

    • Balances: fast-fail with correct error attribution instead of a 35s control-plane hang; always emit wrapped structuredContent; the views seam validates the wire contract (no silent blank); read the settlement chain (not the preset-first chain) and from an identity-level client (works with no apex).
    • Funding: async submit+poll fund-wallet with a toon_fund_status tool, a generous background faucet timeout, and a distinct timeout status so a slow-but-successful drip isn't reported as a failure.
    • UI: rendered views auto-refresh after any write action; the Fund button resets once the balance updates.
    • Media posts: captioned media uploader (compose → caption → publish) and an optional media/file attach on the default post composer (kind:1 with NIP-92 imeta, rendered inline); the dedicated uploader remains for upload-only.

@toon-protocol/client-mcp@0.12.0

28 Jun 20:35
9895f33

Choose a tag to compare

Minor Changes

  • b243c10: Wallet balance correctness (#199/#200), async funding, UI auto-refresh, and media posts.

    • Balances: fast-fail with correct error attribution instead of a 35s control-plane hang; always emit wrapped structuredContent; the views seam validates the wire contract (no silent blank); read the settlement chain (not the preset-first chain) and from an identity-level client (works with no apex).
    • Funding: async submit+poll fund-wallet with a toon_fund_status tool, a generous background faucet timeout, and a distinct timeout status so a slow-but-successful drip isn't reported as a failure.
    • UI: rendered views auto-refresh after any write action; the Fund button resets once the balance updates.
    • Media posts: captioned media uploader (compose → caption → publish) and an optional media/file attach on the default post composer (kind:1 with NIP-92 imeta, rendered inline); the dedicated uploader remains for upload-only.

Patch Changes

  • b243c10: Fix the wallet falsely showing "No channels open yet" on funded channels, and
    make rendered TOON views render-first with no preflight ceremony.

    • GET /channels 500 → wallet "No channels open yet". getChannels()
      called apex.client.getSettleableAt(channelId), but ToonClient never got the
      public passthrough when it was added to ChannelManager (#181) — it only used
      this.channelManager.getSettleableAt internally. The wallet atom renders the
      failed fetch as empty, so funded, actively-paying channels showed as none.
      Added the passthrough, plus a compile-time conformance guard
      (toon-client-conformance.ts) asserting ToonClient satisfies the daemon's
      ToonClientLike surface — the channel-tool tests use a mock client, which is
      why this gap shipped green.
    • Resumed channels showed 0 deposit / 0 available. Persisted channel state
      omits the on-chain deposit, so after a daemon restart depositTotal was 0
      and the wallet showed 0 spendable on a funded channel. The daemon now re-reads
      the participant's on-chain deposit (new participants accessor on the
      TokenNetwork ABI + ToonClient.rehydrateChannelDeposit) when resuming an EVM
      apex channel, so available = deposit − cumulative is correct again.
    • Render-first, zero ceremony. The server instructions and the
      toon_status / toon_identity tool descriptions now state that a read-only
      render goes straight toon_atomstoon_render — no status/identity/balance
      preflight, no tool-call narration. SKILL.md's "always start with toon_status"
      is reframed to lazy/render-first.

@toon-protocol/client-mcp@0.11.0

28 Jun 13:30
493ad55

Choose a tag to compare

Minor Changes

  • 48205b0: Wallet balance correctness (#199/#200), async funding, UI auto-refresh, and media posts.

    • Balances: fast-fail with correct error attribution instead of a 35s control-plane hang; always emit wrapped structuredContent; the views seam validates the wire contract (no silent blank); read the settlement chain (not the preset-first chain) and from an identity-level client (works with no apex).
    • Funding: async submit+poll fund-wallet with a toon_fund_status tool, a generous background faucet timeout, and a distinct timeout status so a slow-but-successful drip isn't reported as a failure.
    • UI: rendered views auto-refresh after any write action; the Fund button resets once the balance updates.
    • Media posts: captioned media uploader (compose → caption → publish) and an optional media/file attach on the default post composer (kind:1 with NIP-92 imeta, rendered inline); the dedicated uploader remains for upload-only.

@toon-protocol/views@0.10.9

27 Jun 16:40
6782615

Choose a tag to compare

Patch Changes

  • Updated dependencies [cb2362b]
    • @toon-protocol/client@0.14.9

@toon-protocol/views@0.10.8

27 Jun 04:04
bba34b1

Choose a tag to compare

Patch Changes

  • 0f6fc74: Fix three wallet-overview bugs that made the wallet card look broken in the host iframe:

    • Copy button was a silent no-op. The TOON app runs in the host iframe, which
      isn't granted the clipboard-write permission policy, so
      navigator.clipboard.writeText rejects there — and the click had no rejection
      handler. CopyButton now falls back to the legacy document.execCommand('copy')
      over a hidden textarea (works in a sandboxed frame), same iframe-limitation
      class as the window.confirm → consent fix.
    • Fund button gave no feedback. Tapping "Fund" fired the faucet but the card
      never changed, so it read as broken. The button now shows a Funding…
      Requested (or Retry fund on failure) state and re-reads balances after a
      successful drip.
    • Balances rendered blank on a flaky read. The toon_balances control plane
      can transiently refuse on :8787 while the websocket transport is healthy
      (toon-client#186) — it succeeds on retry. readBalances now retries before
      giving up and throws on persistent failure, and wallet-overview shows a
      "Balances temporarily unavailable — Retry" state instead of a blank card that's
      indistinguishable from a real zero balance.

    Also fixes the daemon-side root cause of that flakiness (toon-client#186), not
    just the symptom:

    • Stale keep-alive socket race. The long-lived MCP server calls the localhost
      control plane infrequently, so the daemon (Node's default 5s keep-alive) reaped
      idle sockets the undici client pool still held — the next request reused a dead
      socket and failed with ECONNRESET, mislabeled as "daemon not reachable". The
      daemon now keeps idle sockets alive past the client's pool window
      (keepAliveTimeout: 650s), and the ControlClient transparently retries
      idempotent (GET/DELETE) requests on a transient connection failure. Mutating
      POSTs are not retried (no double publish/fund/deposit).
    • Timeouts no longer masquerade as "daemon not reachable". A request the
      client aborts on its own timeout (e.g. a hung on-chain balance read) is now a
      retryable 504, so the surfaced message says "retry" instead of "the daemon
      failed to start — check the log".

@toon-protocol/views@0.10.7

27 Jun 03:11
40a76a3

Choose a tag to compare

@toon-protocol/views@0.10.7