Breaking Changes
- Some
reflex cloudcommands changed what they report. A refused request now exits non-zero rather than printing a"... failed: ..."line and exiting 0, and--jsonwrites no document on that path;apps stop,apps startandapps deleteare the ones most likely to be scripted against, and they now report their own outcome rather than echoing the server's sentence.vmtypesandregionsanswered a failed request with an empty listing and exit 0, which a script could not tell from a control plane that offers neither; they exit non-zero now.apps history --jsonreplaceshostnamewith the deployment'surl, reportsvm typeas the machine's name rather than an object, and reportstimestampas an ISO 8601 string with an offset;apps inspect --jsondropshostnamefromlatest_deploymentthe same way, the URL carrying it already.create-token --jsonreplacesexpires_in_dayswithexpires_at, an ISO 8601 string ornull, carrying the expiry the server applied rather than the duration that was asked for.apps logsdrops its inert--cursoroption and its--jsondocument returns every line in the window rather than one page.project role-permissionslists permission names rather than objects.reflex deploynow requires a control plane that signs upload URLs; the multipart fallback for older ones is gone, and with it the "payload is too large (over 100MB)" hint, which only that path could produce. Andapps status --watch --jsonreports"success": nullwhen the watch stopped before the deployment ended -- it is still running, and the command did not see how it finished -- rather than answeringtrueorfalsefor something it does not know. (#7207)
Bug Fixes
reflex cloudreports a refusal as the sentence the API wrote rather than a message of its own, and an expired token now says to runreflex loginwherever it turns up — not only where a command started by authenticating. (#7207)reflex cloud apps deletenow exits non-zero when the app ID is not found. (#7295)- With
--no-interactive, a rejected access token now fails right away with the same messagereflex cloud whoamigives, instead of starting the browser login. (#7298) - Preserve a different stored access token when authentication rejects an outdated or explicitly supplied token. (#7321)
reflex deploynow consistently shows the "Built with Reflex" badge on apps deployed on the free tier, including apps built with earlier reflex releases. Paid plans can still hide it withshow_built_with_reflex=False. (#7333)reflex cloud apps list,apps historyandapps inspectkeep app names and app and deployment IDs whole on one line, so you can copy them from a normal-width terminal.apps listandapps historyshow fewer columns;--jsonstill returns every field.apps inspectshows one field per row. Tables no longer draw cell borders. (#7351)reflex cloud secrets updatenow prints a success line naming the keys it set and whether the app is rebooting, likesecrets deletealready did. Only key names are printed; values are never logged. (#7352)- Fail
reflex deploybefore building when an explicitly requested project does not exist or does not own the selected app. Accept equivalent UUID spellings, including uppercase and unhyphenated project IDs. (#7355)
Miscellaneous
reflex-hosting-clinow talks to Reflex Build throughreflex-build-sdkrather than its own HTTP layer, so every command shares the SDK's retries, timeouts and typed errors. While the SDK is pre-1.0, where any release may change its API, the requirement is capped to the single patch line the CLI was built against, so upgradereflex-hosting-clito move to a newer SDK rather than upgrading the SDK on its own. (#7207)