RESOURCES
Changelog
Shipped changes, newest first. Patches that don't affect the public API or the on-chain behaviour aren't listed here. Subscribe via the community channels for push notifications on new entries.
2026-06-02 · X relay fee + OAuth 1.0a posting + parallel mention processing
- X relay fee live.Tab now charges a small relay fee per X tip to offset X API costs and bridge gas. Three tiers, all denominated in USD but collected in the tip's asset (computed via live spot price):
$0.05same-chain tip under $5$0.10same-chain tip at or above $5$0.30cross-chain tip (flat, offsets relay.link bridge gas Tab pays)
- OAuth 1.0a User Context for posting. X v2
POST /2/tweetsrejects app-only Bearer auth. Bot now signs replies with OAuth 1.0a (HMAC-SHA1) using the bot account's Access Token + Secret. Reads (mentions polling, username lookup) still use the cheaper app-level Bearer. - Parallel mention processing. A burst of 10 tips in the same 30s window now processes concurrently (Promise.allSettled), not sequentially. A slow bridge on one tip no longer blocks the next nine.
- Tighter reply text.Tip card URL removed from X replies (X doesn't unfurl arbitrary image links; the raw t.co clutter wasn't adding signal). OpenTab claim URL now includes the escrow id so the link actually resolves to a valid claim page.
2026-06-01 · X (Twitter) tipping bot
- X bot live. Mention
@Tabpaybotwithtip @alice 5in any tweet to send a P2P tip from your gasless Tab wallet. Same dispatch engine as Telegram and Discord, same OpenTab fallback when the recipient isn't on Tab yet. V1 covers P2P only; split tips land in a later release. - Connect X. New dashboard card binds your X account to your Tab handle via OAuth 2.0 PKCE.
POST /api/auth/x/start→GET /api/auth/x/callbackwrites a row into the sharedconnectionstable withplatform='x'. - Tiered rate limiting.5 tips/hour for connected senders, 1 tip/24h for unconnected curious users. Per-user error-reply cooldown so spammers can't drain X API calls on repeated failures. Daily API budget circuit breaker halts polling if Tab approaches the daily X spend cap.
- OpenTab on X.Tips to unconnected recipients land in an OpenTab escrow keyed on the recipient's X user_id. They claim by linking X via the dashboard later. Refundable by the sender if unclaimed.
2026-05-30 · polish + native-order resilience
- Native-asset order completion.
/api/pay/smartaccepts an optionalorderId. When set, Tab marks the ordercompletedserver-side after Smart Pay lands and firesorder.completed. Native (ETH/BNB/CELO/SOL) orders no longer depend on the cron indexer (which only catches USDCPaymentRelayed) or the client's singlemark_paidcall. Resilient to client network blips. - POS terminal asset picker.Dashboard's POS now exposes USDC / ETH / BNB / CELO / SOL chips above the numpad. Asset filters valid chains; chain snaps automatically on switch.
/api/checkoutvalidates the chain x asset combo. - Multi-source row in candidates picker.
POST /api/pay/smart/candidatesnow surfaces akind: "multi"row when the auto planner returns a multi-source pack AND it's cheaper than the cheapest single-source. SmartPayModal renders it with a purple accent + leg breakdown. - Bot bridge auto-source fallback. TG and Discord bridge wizards now retry without a pinned source when the picked source is empty / hits slippage. Matches the web bridge modal. Reply card carries an
autoSourcedflag so bots can render "Sourced from X" instead of pretending the pick was used. - Solana enable budgetbumped 4 min → 6 min so slow relay.link fills don't dead-end the onboarding before SOL arrives.
- SDK v0.5.2 on npm. Adds
SmartPayParams.orderIdso agent callers can hand order completion off to Tab.
2026-05-29 · v2 routing + Solana parity
- Multi-source aggregation.When no single chain holds enough but the wallet's total does,
kind: "multi"routes pack the payment across N chains in parallel. Per-leg outcomes withallOkflag for partial-success cases. - Per-route candidate picker. New
POST /api/pay/smart/candidatesreturns top-N source options pre-priced, cheapest first. SmartPayModal has a "Show source options" toggle to render them. - 4-step progress UX everywhere. BridgeModal + SmartPayModal poll
GET /api/pay/smart/statusand render a BasedBot-style step counter (⚙ Preparing → ⏳ Waiting for confirmation → 🔄 Bridge processing → ✅ Bridge complete) with a segmented progress bar. TG and Discord bridge wizards mirror the same labels with a unicode progress bar. - Gasless subscription deactivate / reactivate. New
POST /api/subscriptions/manage. 7702 delegation caveats extended to whitelistdeactivatePlan(bytes32)+reactivatePlan(bytes32)selectors on the subscription router. No contract redeploy needed. Legacy delegations fall back to user-signed writeContract on409 delegation_legacy. - Solana subs health probe. Dashboard plan form consults
GET /api/diag/solana-subson mount and auto-disables Solana in the chain dropdown when the Subscriptions Program config PDA isn't initialised. - Wrap-more / unwrap-all SOL. Active-state Solana Smart Pay panel exposes a balance card with a Wrap input + Unwrap-all button.
POST /api/solana/wrap(kind:wrap | unwrap) builds + partial-signs the tx; Tab's executor pays the SOL fee, the user signs to authorise the lamport move. - Workspace routing fix. Buyer-side signing key now respects
useTabMode. Merchant-mode buyers debit their HKDF-derived business wallet instead of accidentally draining their personal wallet. - SDK v0.5.0 on npm.
SmartPayAssetincludes"SOL",recipientChainaccepts"solana", newtab.solana.topUp({ amountSol })helper, relay result exposesrequestIdfor status polling. - Tip card chain logos. Bot-shared tip card PNG renders the real chain mark (Base blue, BNB yellow, SOL gradient, etc.) in a pill in the top-right.
- TG bot parser fix. Strips Telegram's
/command@botnamedisambiguator so the bot mention can't steal the recipient slot (was charging the bot itself in some configurations).
2026-05-28
- Solana Smart Pay parity.One-signature delegation onboarding for USDC + native SOL on Solana via the Solana Foundation Subscriptions Delegation Program (Cantina-audited). Native SOL is held as wSOL inside the user's wallet; wallets auto-display as a single SOL balance.
- Solana destination in Smart Pay.The Smart Pay modal's chain dropdown now includes Solana, and the asset dropdown includes SOL. Recipient resolution picks the recipient's Solana base58 address when targeting Solana.
- POST /api/solana/top-up. When the user has no SOL on Solana for the Smart Pay enable tx, the panel auto-bridges native SOL from their EVM USDC balance through relay.link. Bypasses the buy-SOL-on-Coinbase-first dead end.
- POS / pay page Smart Pay fallback.Buyers whose stable balance on the destination chain is short now auto-route through Smart Pay instead of failing with “deposit funds via Receive.”
- Bridge auto-source. When the picked source chain has no balance, the bridge modal retries the quote without the source pin so any chain works. Surfaces the actual source it used.
- Smart Pay slippage default 1% → 2%. Covers typical relay.link bridge fee + DEX slippage on small cross-chain amounts; old 1% rejected legitimate routes.
- Business workspace routing fix. Buyers in merchant mode now sign with their HKDF-derived business key and debit their business wallet instead of personal. Payment links and Find-a-Tab respect the active workspace.
- Business handle slug.
/pay/handle/[h]?w=businessroutes the order through the 1% business router and lands the payout in the merchant's business wallet. - HandleSuggest autocomplete.Friends prefill on OpenTab, Smart Pay modal, and Find-a-Tab inputs — one tap to fill an @handle you pay regularly.
- Subscription deactivate fixes. Workspace-aware signing key (business plans now use the business key), rate-limit bucket raised from 30/min to 60/min, Solana relay surfaces program-side simulation errors before returning the tx.
- Notification bell. Fixed crash when feed contained a
tip_inkind (added defensive fallback so future kinds can't crash the dropdown), plus a dashboard-wide error boundary.