Skip to content

v0.17.0

Choose a tag to compare

@tomtom87 tomtom87 released this 05 Oct 11:58
· 82 commits to main since this release

This release is mostly a cleanup: dead code removed, duplicated helpers shared, and one less system tool needed. It also fixes two bugs and removes the buy skill's raw-UCP direct-checkout fallback. Removing unused public methods and constants is breaking for anyone who called them, so the gems that lost one get a minor bump. Each removal is marked breaking in that gem's changelog.

  • Security: the buy skill no longer has a direct-checkout fallback. ClawHub's audit of the portage-buy skill 0.10.4 flagged its "No CLI available" section. With portage missing, that section had the agent create and pay a store's checkout over raw UCP itself, outside Portage's spending policy, approval and checkout-mismatch checks. Now the skill tells the agent to ask the user to install or upgrade portage and stop. references/raw-ucp.md is gone. Buying over raw UCP stays in the standalone shop-via-ucp skill.
  • portage-cli 0.13.0.
    • portage browser import no longer needs the sqlite3 command-line tool. It reads the copied Chromium, Firefox and Safari history through the sqlite3 gem, which portage-cli already depends on. error: "reader_unavailable" now means a SQLite error reading the copy, or a missing plutil for Safari bookmarks.
    • Fix: payment enroll works against your own adapter-backed store again. The fallback referenced a class that doesn't exist, and the error was swallowed, so it always reported no session.
    • Fix: payment enroll follows homepage redirects (for example apex to www), up to five, like buy does. Every hop stays on the payment proxy route.
    • Breaking: removed the unused BrowserProfile::Cdp.close_tab, and BrowserImport::Sqlite.new no longer takes command:.
    • Keeps portage-ucp ~> 0.11.
  • portage-ucp 0.12.0.
    • Fix: a trusted JWK whose x or y isn't valid base64url now gets a 401 invalid_signature. It used to raise a raw ArgumentError, so the request failed with a 500.
    • Security hardening: Content-Digest is compared with OpenSSL.fixed_length_secure_compare instead of a hand-rolled byte loop.
    • Breaking: removed CapabilityNegotiator (nothing called it), Dispatcher#call's ignored agent_profile: keyword, and SchemaValidator#valid? (use errors_for(...).empty?). The EC curve constants moved from Security::Signature and Ap2::MandateSignature to the new Security::EcJwk.
    • The unused embedded.openrpc.json schema no longer ships in the gem.
  • Adapter gems, breaking removals only. The removed methods were unused public pass-throughs and client methods. Nothing changed for a store running the adapter.
    • portage-ucp-shopify 0.6.0 and portage-ucp-wix 0.2.0: Mapper.money.
    • portage-ucp-bigcommerce 0.2.0: Mapper.money, Client#v2_post, Client#v3_put.
    • portage-ucp-magento 0.2.0: Mapper.money, Client#admin_post.
    • portage-ucp-woocommerce 0.3.0: Client#admin_post, Client#store_delete.
    • portage-ucp-instagram 0.2.0: the site_url: keyword on Mapper.product.
  • One shared examples/portage_ucp.rb. It now lives once in portage-ucp/examples/, replacing seven identical copies in the adapter gems. The adapter exes and READMEs link to it.
  • buy plugin and OpenClaw plugin @tomtom87/portage 0.10.5. They carry the skill change above. The OpenClaw plugin also gets small internal tidy-ups, with no change in behaviour.

portage-ucp-client, portage-ucp-webmcp and portage-ucp-etsy changed only in docs, comments or internals, so they stay at 0.6.3, 0.2.0 and 0.1.5.