Skip to content

v0.11.0

Choose a tag to compare

@tomtom87 tomtom87 released this 29 Sep 04:11
· 207 commits to main since this release

Delivers the buy skill and the local-browser plan: offer sources and the Shopify Catalog, a local store index, browser import, the portage setup wizard, hand-off targets and a Portage browser profile. WebMCP learns to drive stores that don't run Portage. Five adapter exes that crashed at launch are fixed, and the buy Claude Code plugin ships through this repo's own marketplace.

  • portage-cli 0.8.0 delivers Phases 1-8 of docs/plans/buy-skill-and-local-browser.md.
    • find gains a second backend kind, OfferSource. The first one is the Shopify Catalog. --max-price now filters its offers too.
    • Categories and a shared Classifier route find to stores that sell what the query asks for.
    • portage index build/refresh/show/add/remove/sources builds a local store and product index. The repo's known-stores list (221 stores, 396 products) is fetched over jsdelivr, and the user's own entries always win.
    • portage browser import turns the user's own bookmarks and history into index entries. It reads only history and bookmark files, never password, cookie or autofill stores. Nothing is saved without a TTY "y" or --yes.
    • portage setup runs an interactive wizard on a TTY. Under --json or with no TTY it prints the same read-only report as portage doctor.
    • buy --handoff-target default|print|profile|agent:<name> picks where a dead-end checkout URL goes. Amazon, walmart.com, ebay.com, bestbuy.com and any host in handoff_only_hosts are hand-off only. Portage never sends them a request.
    • portage browser profile init|open|status manages a dedicated Portage browser profile for hand-offs.
    • Five opt-in retailer offer sources: Walmart Affiliate, eBay Browse, Best Buy Products, Etsy Open API v3 and Amazon Creators. Each needs its own key, and every offer they return ends in hand-off.
    • The WebMCP hand-off path now uses presets, schema matching and approved checkout autofill. A mutating tool mapping needs the shopper's confirmation first. dry_run: true was ignored on this path and is now honoured.
    • Requires portage-ucp-webmcp 0.2.0 or newer for WebMCP paths. An older install is treated as absent instead of raising NameError.
    • Rolls up 0.7.4 and 0.7.5, published on 2026-09-25. portage doctor reports how Portage was installed (Homebrew or gem) and warns when another portage on PATH shadows it. portage loads ~/.portage/.env. Doctor runs the seller checks only for a seller.
    • portage buy "coffee" runs as a search when the argument doesn't look like a URL. Doctor flags a DuckDuckGo-only search setup, which only resolves entity queries.
    • PORTAGE_AGENT_PROFILE defaults to the repo's published profile instead of failing on a fresh install.
  • portage-ucp-webmcp 0.2.0 drives stores that don't run Portage.
    • Platform presets are detected from the exact set of tool names a page registers, never from page text. Shopify is the first preset.
    • Matcher.propose maps an unknown page's tools to UCP actions by name and input-schema shape, never by a tool's untrusted description.
    • Autofill fills a checkout's contact and shipping fields and picks the cheapest shipping rate in any currency. It never touches payment fields, never clicks pay, and stops at the first sign of a CAPTCHA.
    • Fixes assets/autofill.js, which didn't parse, so every real Autofill.call raised.
  • portage-ucp-bigcommerce, -magento, -wix 0.1.5 and portage-ucp-woocommerce 0.2.2 fix a NoMethodError at launch. Each exe called .start on a plain MCP::Server, which has no #start in mcp 0.25.0. Each gem gains an exe_spec.rb that runs the exe as a real subprocess and does a JSON-RPC handshake with it.
  • portage-ucp-etsy 0.1.5 adds exe/portage-ucp-etsy and examples/portage_ucp.rb. It was the only adapter without them.
  • buy plugin (plugins/buy, listed in .claude-plugin/marketplace.json) is the agent-facing interface to portage. It covers the find → dry-run → confirm → buy flow, hand-off, hand-off-only retailers, and hard rules: no raw card data, no browser credential reads, no CAPTCHA bypass, confirm before buying. It needs portage-cli 0.8.0.
  • rake homebrew:update regenerates the Homebrew formula and runs at the end of publish_all. The docs now lead with brew install.

What shipped

portage-cli 0.7.3 → 0.8.0

  • c8a5274 Homebrew Phase 4: brew-first docs and install checks in portage doctor
  • 3e5b64d Load ~/.portage/.env, and run doctor's seller checks only for a seller
  • 0104ab8 buy: accept bare query with no --query; doctor/find surface duckduckgo-only search limits
  • 5090654 Derive WebMCP session capabilities from the page's tools
  • 7af985b WebMCP Phase 1: platform presets and the hand-off checkout path
  • 11d87bc WebMCP Phase 2: schema matching for unknown pages, confirmed by the user
  • c8935bc WebMCP Phase 3: approved autofill of the store's checkout
  • 92cece2 WebMCP Phase 4: document presets, matching and autofill
  • e4b2c72 Fix autofill.js parsing, dry runs on the WebMCP hand-off, and rerun the live checks
  • 80c7a93 portage-cli: OfferSource seam + Shopify Catalog (Phase 1)
  • 1169700 portage-cli: categories + Classifier + find routing caps (Phase 2a)
  • 8231629 portage-cli: local store index + portage index (Phase 2b)
  • fa4b321 portage-cli: known-stores list in the repo, fetched over jsdelivr (Phase 2c)
  • 1a58c0a portage-cli: browser import of bookmarks and history as index seeds (Phase 3)
  • f091200 portage-cli: portage setup wizard (Phase 4)
  • cd719bb portage-cli: hand-off targets + hand-off-only hosts (Phase 5)
  • 8a3a6e9 portage-cli: Portage browser profile (Phase 6)
  • 9385aad portage-cli: retailer offer sources (Phase 7)
  • bae99fa portage-cli: docs + buy skill release (Phase 8)
  • 80666cf portage-cli: apply find --max-price to offer-source offers

portage-ucp-webmcp 0.1.1 → 0.2.0

  • 5090654 Derive WebMCP session capabilities from the page's tools
  • 7af985b WebMCP Phase 1: platform presets and the hand-off checkout path
  • bf573de Complete the Shopify WebMCP preset fingerprint from a live sweep
  • 11d87bc WebMCP Phase 2: schema matching for unknown pages, confirmed by the user
  • c8935bc WebMCP Phase 3: approved autofill of the store's checkout
  • 92cece2 WebMCP Phase 4: document presets, matching and autofill
  • 5b6378e Record the WebMCP live checks against a real Shopify checkout
  • e4b2c72 Fix autofill.js parsing, dry runs on the WebMCP hand-off, and rerun the live checks
  • 7b8d4e4 Read shipping-rate prices one pattern at a time, with real ISO codes

portage-ucp-bigcommerce 0.1.4 → 0.1.5

  • 8a0f268 Fix portage-ucp-bigcommerce's exe: StdioTransport#open, not .start

portage-ucp-magento 0.1.4 → 0.1.5

  • 78fbbf3 Fix portage-ucp-magento's exe: StdioTransport#open, not .start

portage-ucp-wix 0.1.4 → 0.1.5

  • d292b8c Fix portage-ucp-wix's exe: StdioTransport#open, not Server.build.start

portage-ucp-woocommerce 0.2.1 → 0.2.2

  • 387827b Fix portage-ucp-woocommerce's exe: StdioTransport#open, not .start

portage-ucp-etsy 0.1.4 → 0.1.5

  • 3850fc2 Add a standalone MCP server exe for portage-ucp-etsy
  • ca6ce83 Add a spec that exe/portage-ucp-etsy and its example config load
  • 4f68f3b Document the standalone MCP server exe in portage-ucp-etsy's README
  • b72bfcd Link portage-ucp-etsy's example config by absolute URL

Also in this cycle

  • 391c5e0 buy skill + plugin marketplace (Phase 0)
  • 928ee7b Record the clean-session /buy check in the buy skill plan
  • e153209 / 5b75385 Add rake homebrew:update and run it at the end of publish_all
  • ceb8837 / c2113a9 Add a Read the Docs link to the top of the README
  • ad9a54d Cut 0.11.0: portage-cli 0.8.0, portage-ucp-webmcp 0.2.0, adapter exe fixes

The 0.10.0 release set (proxy support, portage-ucp 0.10.0) was published to RubyGems on 2026-09-25. Its notes are on the v0.10.0 release.

See each gem's own CHANGELOG for full details, and the design log for the rationale.