Back to release notes
2026.10.19

AI Credits, Buyable Meter Credits, and Studio GitHub Sync

An AI Credits page with voucher redemption, Studio charging AI credits, buyable meter credits on subscription plans, one-window GitHub connect in Studio, and CLI 0.9.2.

OSStudioUtilitiesAgentsLocalization
OS

AI Credits

Projects now have an AI credit balance, which Studio charges as you work.

  • AI Credits page: OS has a new AI Credits entry in the environment sidebar. It shows the project's available balance, the free and voucher credits it's made up of, credits about to expire, and your last top-up.

  • Redeem vouchers: Type an eight-character voucher code (XXXX-XXXX) and choose Redeem. Clear empties the form. The form appears only for people allowed to top up. If a voucher can't be used, the page says why.

  • Studio charges credits: Each chat turn and each build in Studio uses credits from the project balance. Free credits (100 by default) are used first. Studio checks the balance before each turn, and a turn is refused when the balance is empty.

  • Credit meter and notice: Studio's credit meter changes colour as credits run low. When credits run out, the chat shows an AI credits used up notice with links to redeem a voucher or manage credits on the project's OS page.


Studio

  • Default model: New apps start on Studio's default model, which now has a Default badge in Settings > Models and in the model picker. Previously, an app without a chosen model didn't say which model it used, and its AI credit use wasn't shown.

  • Connect a repository in one window: Settings > GitHub connects an app to a repository in a single window, with Check, Connect and Build steps. Studio compares commit histories first:

    • If both sides are at the same commit, or Studio's app is ahead, Studio connects without asking.

    • If GitHub is ahead, the code is checked, brought in and built before anything else happens.

    • You're asked how to combine the code only when both sides have their own changes.

  • Ready to go live: After a successful connect, the chat shows a Ready to go live card. Deploy starts a deployment; Not now closes the card.

  • No repositories: If a project has no repositories to connect, the chat says so in a card.

  • Fewer requests during builds: Studio no longer checks the app's status every 5 seconds during a build. It gets build updates over the chat's live connection. The full-screen preview re-reads the app when you return to its tab.


Utilities

A subscription plan can now sell extra credits for a meter, such as AI tokens.

  • Buyable meter credits: For each meter, a plan sets the price per credit, how many credits can be bought at once, the tax, and when credits expire:

    • at the end of the usage window,

    • when the plan changes, or

    • never.

  • Spending order: Usage is paid from the plan's allowance first, then from credits, then billed as overage. Usage paid with credits is never billed again as overage.

  • Credits API: Preview a purchase, buy credits, grant them for free, move them, or list them under subscriptions/{id}/credits. These calls need the subscription::manage permission.

  • Discount codes for credits: A discount code can apply to subscriptions or to credit purchases, and can be limited to particular meters. A credit-only code can't be used to sign up.

  • First top-up opens checkout: Previously, buying credits on a subscription with no saved card failed with subscription_credits_no_payment_method, so a free plan could never buy its first credits. The purchase now returns a checkoutUrl for a payment page that also saves the card. Credits are added only after the payment provider confirms the payment. A subscription can have one open checkout at a time; a second returns 409 checkout_in_progress. Checkout pages expire after 60 minutes.

  • Minimum charge: A purchase at or below the payment provider's minimum charge is refused with subscription_credits_below_minimum_charge, before any money is taken.

  • Billing reliability:

    • A charge that times out is kept as pending instead of failed, so a payment that goes through later still adds its credits.

    • Credits are never charged for, or added, after a subscription has ended. A purchase that may already have been paid goes to an operator for a refund.

    • Usage summaries now include the credits you bought.

    • A recording that's refused no longer pushes a person's usage below zero.

  • Clearer invoices: Invoices show the plan's name instead of an internal ID. When the buyer's name isn't known, the invoice shows their email instead of a user ID.

  • Plan builder: The plan builder has a new Credits step, and all its steps now fit on one row.

Magic links, template queries and PDF generation now work only on the caller's own project. A request whose ProjectKey names another project is refused. Leave ProjectKey out to use your own project. Template queries also refuse platform collections and the $where, $function, $accumulator and $expr operators.

  • PDF rendering stays on public addresses: When the PDF generator renders HTML or a document, it fetches only resources on public internet addresses. It can't fetch internal network addresses or local files.


CLI

@seliseblocks/cli-os 0.9.2, plus the rest of 0.9.1.

  • new web --client-id works again (0.9.2): Every OIDC client ID was refused with oidc_client_not_found, even one you had just created, and the interactive picker showed no existing clients. Both now work.

  • Production deploys from main (0.9.2): release deploy and release setup now use the documented branch for each environment, so Production (prod) deploys from main. Previously a correctly linked Production repo was refused with branch_environment_mismatch. The error now names the branch the environment expects.

  • Faster localization pushes (0.9.1): localization push now regenerates the UILM file once per push instead of once per key. Previously, a push of a few hundred keys could hold up other modules' publishing for tens of minutes. --publish once|per-key|none chooses the behaviour, and once is the default.

  • Workflow import fixed (0.9.1): logic workflow import and logic workflow save no longer fail with a 500 error for workflows whose nodes have parameters.

  • Schemas named in rules.json (0.9.1): In rules.json, a security entry can name a schema with schemaName, so one data sync can create a schema and set its access. Security entries are checked before anything is deployed.


Developer SDKs

  • Blocks Genesis (.NET) v4.2.5 (October 13): Rate limits now apply to each signed-in user, or to each OAuth client calling without a user, separately for each service. The count uses a sliding window shared across servers through Redis, with a 30-second cooldown.

    • The limit comes from UserRateLimitPerSecond, then the vault secret, and defaults to 100 requests per second.

    • If Redis isn't available, requests are allowed through.

    • HttpService no longer stops calling a downstream service that returns 429. It retries a 429 only when the Retry-After wait fits within the request timeout.


Extension

The UILM Assistant browser extension is now at v1.6.2 (from v1.4.0).

  • Import and export: Import and export translations from the side panel, with a history of past exports.

  • Notifications: Get notified when a migration, Auto-translate all or Publish changes finishes.

  • Finding domains: Search the domain list. The environment list shows each domain on its own line.

  • Fixes: Toast and pop-up messages show the right content, and domains on localhost work.

Related entries