This PR updates the user menu in the title bar to show the plan from the
`CloudUserStore` instead of the `UserStore`.
We're still leveraging the RPC connection to listen for `UpdateUserPlan`
messages so that we can get live-updates from the server, but we are
merely using this as a signal to re-fetch the information from Cloud.
Release Notes:
- N/A
This PR adds more data to the `GetAuthenticatedUserResponse`.
We now return more information about the authenticated user, as well as
their plan information.
Release Notes:
- N/A
This PR updates the user menu in the title bar to base the "signed in"
state on the user in the `CloudUserStore` rather than the `UserStore`.
This makes it possible to be signed-in—at least, as far as the user menu
is concerned—even when disconnected from Collab.
Release Notes:
- N/A
This PR adds two new crates for interacting with Cloud:
- `cloud_api_client` - The client that will be used to talk to Cloud.
- `cloud_api_types` - The types for the Cloud API that are shared
between Zed and Cloud.
Release Notes:
- N/A
This PR temporarily adds back the `GET /user` endpoint to Collab since
we're still using it for local development.
Will remove it again once we update the local development process to
leverage Cloud.
Release Notes:
- N/A
This PR adds two kill switches for syncing data to and from Stripe using
Collab.
The `cloud-stripe-events-polling` and `cloud-stripe-usage-meters-sync`
feature flags control whether we use Cloud for polling Stripe events and
updating Stripe meters, respectively.
When we're ready to hand off the syncing to Cloud we can enable the
feature flag to do so.
Release Notes:
- N/A
This PR makes it so we attach the value from the `User-Agent` header to
the `handle connection` span.
We'll start sending this header in
https://github.com/zed-industries/zed/pull/35280.
Release Notes:
- N/A
This PR makes it so we send the `User-Agent` header on the WebSocket
connection requests when connecting to Collab.
We use the user agent set on the parent HTTP client.
Release Notes:
- N/A
This PR removes the caching of Stripe price IDs by meter ID on the
`StripeBilling` object, as we weren't actually reading them anywhere.
Release Notes:
- N/A
This PR refactors the `OpenRequest` to introduce an `OpenRequestKind`
enum.
It seems most of the fields on `OpenRequest` are mutually-exclusive, so
it is better to model it as an enum rather than using a bunch of
`Option`s.
There are likely more of the existing fields that can be converted into
`OpenRequestKind` variants, but I'm being conservative for this first
pass.
Release Notes:
- N/A
This PR makes it so users will be sent immediately into the trial
checkout flow (by hitting zed.dev/account/start-trial) when they click
the "Start Pro Trial" button.
Release Notes:
- N/A
This PR makes it so all LLM traffic is routed through `cloud.zed.dev`.
We're already routing `llm.zed.dev` to `cloud.zed.dev` on the server,
but we want to standardize on `cloud.zed.dev` moving forward.
Release Notes:
- N/A
This PR makes it so we refresh the list of models whenever the LLM token
is refreshed.
This allows us to add or remove models based on the plan in the new
token.
Release Notes:
- Fixed model list not refreshing when subscribing to Zed Pro.
---------
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
This PR fixes an issue where the plan usage limits in Zed would not get
updated immediately after the plan has changed.
Previously we were only sending down the usage—which contains the
limits—if there was a usage record in the database. This would be absent
if the user had just changed their plan.
We now always send down the usage in order to update the limits on the
client side.
Release Notes:
- N/A
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
This PR adds a new `zed-cloud` feature flag that can be used to send
traffic to `cloud.zed.dev` instead of `llm.zed.dev`.
This is just so Zed staff can test the new infrastructure. When we're
ready for prime-time we'll reroute traffic on the server.
Release Notes:
- N/A
This PR reorders the `Model` variants in the `anthropic` crate in
descending order.
Newer/more powerful models at the top -> older/less powerful models at
the bottom.
Release Notes:
- N/A
This PR increases the number of returned extensions from the extension
API to 1,000 (up from 500).
We'll need a better solution at some point, but for now we can keep
bumping this number.
Closes https://github.com/zed-industries/zed/issues/31067.
Release Notes:
- N/A
This PR updates the `POST /billing/subscriptions/sync` endpoint to use
the `StripeClient` trait instead of using `stripe::Client` directly.
Release Notes:
- N/A
This PR updates the `sync_subscription` function to use the
`StripeClient` trait instead of using `stripe::Client` directly.
Release Notes:
- N/A
---------
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
This PR adds a Danger check to remind engineers that any changes to our
various prompts need to be verified against the LLM Worker.
When changes to the prompt files are detected, we will fail the PR with
a message:
<img width="929" alt="Screenshot 2025-05-30 at 8 40 58 AM"
src="https://github.com/user-attachments/assets/79afab4e-e799-45f1-a90e-0fd7c9a73706"
/>
Once the corresponding changes have been made (or no changes to the LLM
Worker have been determined to be necessary), including the indicated
attestation message will convert the errors into informational messages:
<img width="926" alt="Screenshot 2025-05-30 at 8 41 52 AM"
src="https://github.com/user-attachments/assets/ff51c17a-7a76-46a7-b468-a7d864d480c3"
/>
Release Notes:
- N/A
This PR moves over the last method on `StripeBilling` to use the
`StripeClient` trait, allowing us to fully mock out Stripe behaviors for
`StripeBilling` in tests.
Release Notes:
- N/A
This PR adds a new `intent` field to completion requests to assist in
categorizing them correctly.
Release Notes:
- N/A
---------
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
This PR updates the `StripeBilling::checkout_with_zed_pro` and
`StripeBilling::checkout_with_zed_pro_trial` methods to use the
`StripeClient` trait instead of using `stripe::Client` directly.
Release Notes:
- N/A
This PR updates `StripeBilling` to use the `StripeClient` trait to
retrieve prices and meters from Stripe instead of using the
`stripe::Client` directly.
Release Notes:
- N/A
This PR introduces a new `StripeClient` trait to abstract over
interacting with the Stripe API.
This will allow us to more easily test our billing code.
This initial cut is small and focuses just on making
`StripeBilling::find_or_create_customer_by_email` testable. I'll follow
up with using the `StripeClient` in more places.
Release Notes:
- N/A
This PR fixes an issue where the various links to the account page from
the Edit Prediction menu were not working.
The `OpenZedUrl` action is opening URLs that deep-link _into_ Zed.
Fixes https://github.com/zed-industries/zed/issues/31060.
Release Notes:
- Fixed an issue with opening links to the Zed account page from the
Edit Prediction menu.
This PR downgrades a number of database queries that aren't part of the
actual collaboration from `SERIALIZABLE` to `READ COMMITTED`.
The serializable isolation level is overkill for these queries.
Release Notes:
- N/A
This PR is a follow-up to
https://github.com/zed-industries/zed/pull/31415 that fixes the model ID
for Claude Sonnet 4.
With the release of the Claude 4 models, the model version now appears
at the end.
Release Notes:
- N/A
This PR updates the Zed LLM provider to fetch the available models from
the server instead of hard-coding them in the binary.
Release Notes:
- Updated the Zed provider to fetch the list of available language
models from the server.
This PR makes it so the Zed Free plan cannot be canceled.
We were already preventing this on the zed.dev side, but this will make
it more airtight.
Release Notes:
- N/A
This PR fixes an issue where the eval was incorrectly pulling the
provider/model from the user settings, which could cause problems when
running certain evals.
Was introduced in #30168 due to the restructuring after the removal of
the `assistant` crate.
Release Notes:
- N/A
This is a follow-up to https://github.com/zed-industries/zed/pull/31217
that removes the last turn after we get a `refusal` stop reason, as
advised by the Anthropic docs.
Meant to include it in that PR, but accidentally merged it before
pushing these changes 🤦🏻♂️.
Release Notes:
- N/A
This PR updates the default/recommended models for the Anthropic and Zed
providers to be Claude Sonnet 4.
Release Notes:
- Updated default/recommended Anthropic models to Claude Sonnet 4.
This PR makes it so we always prefer the plan on the subscription.
The plan stored on the subscription usage is informational only.
Release Notes:
- N/A
This PR adds a new `GET /users/look_up` endpoint for retrieving users by
various identifiers.
This endpoint can look up users by the following identifiers:
- Zed user ID
- Stripe Customer ID
- Stripe Subscription ID
- Email address
- GitHub login
Release Notes:
- N/A
This PR makes it so we only create a Zed Free subscription if there is
no other active subscription, rather than just having another Zed Free
subscription.
Release Notes:
- N/A
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
This PR makes it so we create a Zed Free subscription when issuing an
LLM token, if one does not already exist.
Release Notes:
- N/A
---------
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
This PR makes it so a user can initiate a checkout session for a Zed Pro
trial while on the Zed Free plan.
Release Notes:
- N/A
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
This PR adds a sanity check to ensure that we only subscribe the user to
Zed Free if they don't already have an active subscription.
Release Notes:
- N/A
This PR makes the `product` field required in the request body for `POST
/billing/subscriptions`.
We were already passing this everywhere, in practice.
Release Notes:
- N/A