Skip to content

Releases: shuttle-hq/shuttle

v0.42.0

18 Mar 13:21
7f2a195
Compare
Choose a tag to compare

Shuttle: v0.42.0 update

We're excited to release Shuttle v0.42.0! 🚀

Secrets and Metadata plugins moved to shuttle-runtime

The shuttle-secrets and shuttle-metadata crates have been deprecated. You can now access these resources like this:

use shuttle_runtime::SecretStore;
use shuttle_runtime::DeploymentMetadata;

#[shuttle_runtime::main]
async fn main(
    #[shuttle_runtime::Secrets] secrets: SecretStore,
    #[shuttle_runtime::Metadata] metadata: DeploymentMetadata,
) -> ... { ... }

Other updates

  • Secrets.toml files can now be placed either in the crate root or in the workspace root if your project is in a workspace.
  • Resolved the most common errors in the project delete command. It should now be more reliable.
  • Improved the error message if fetching too many log line in one call.
  • (hotfixed in 0.41.0) Fixed a bug where RDS resources would error on redeployments.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: v0.41.0...v0.42.0

v0.41.0

07 Mar 11:07
ad834ae
Compare
Choose a tag to compare

Shuttle: v0.41.0 update

We're excited to release Shuttle v0.41.0! 🚀

Idle wakeups improved

The proxy will now properly wait until a service exposes its HTTP port when a project is waking up from idle. This should resolve the common 502 errors that services get on the first request to an idled project. No upgrade is needed.

Let us know if you experience any other issues with idling projects!

Easy access to more project templates

cargo shuttle init now allows you to browse the full list of official templates on shuttle-examples.

Other updates

  • shuttle-next is now discontinued
  • cargo-shuttle now has an --offline flag to skip non-essential network requests, like versions checks and template list fetching

Contributions

What's Changed

New Contributors

Full Changelog: v0.40.0...v0.41.0

0.40.0

04 Mar 15:44
22c3695
Compare
Choose a tag to compare

Shuttle: v0.40.0 update

We're excited to release Shuttle v0.40.0! 🚀

[BREAKING] Resource/plugin API updated

We have updated the interface for how a service requests resources, to make it easier to configure our resources, and allowing custom plugins to do more things.

After upgrading (restarting) your project to 0.40.0, your next deployment will need

  • shuttle-runtime 0.40.0+
  • cargo-shuttle 0.40.0+
  • An up-to-date Secrets.toml (previous secrets will be invalidated)

Local runs will also need matching versions of CLI and runtime.

If you have a custom plugin, it will need to be refactored to the new ResourceInputBuilder trait, an updated API for plugins. Check out the implementations of our plugins or an example.

CHANGED: The Metadata struct in shuttle-metadata no longer has a service_name field. Use project_name instead.

Other updates

  • Reduced the dependency weight of shuttle-runtime 🥳. The axum hello-world example went from 291 to 222 dependencies.
  • Added a --secrets arg to the run and deploy commands that allows you to use a different secrets file than the default
  • Added load phase caching, which should improve the speed and reliability of starting the service after wakeups from idle and project restarts
  • AWS RDS resources can now configure their database name in the macro: #[shuttle_aws_rds::Postgres(database_name = "thing")]. The project name is now used as the default name.
  • Newly generated database passwords will now have length 32 instead of 12
  • Fixed a bug where the --working-directory/--wd arg would create directories that didn’t exist
  • The init command will now suggest using a directory with the same name as the project, instead of the current directory
  • Bumped deployer’s trunk version to 0.18.8
  • Projects no longer restart when adding a custom domain
  • Fixed the URL formatting of services with a custom domain
  • (hotfixed during 0.39.0) Fixed an issue where project ownership was not checked in some backends

Deprecating shuttle-next

We are deprecating the current iteration of our WASM framework shuttle-next in this release to keep our priorities focused. Next release, we will drop support for shuttle-next.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

Full Changelog: v0.39.0...v0.40.0

0.39.0

14 Feb 09:39
3c4e6b3
Compare
Choose a tag to compare

Shuttle: v0.39.0 update

We're excited to release Shuttle v0.39.0! 🚀

Multiple domains + performance improvements

Projects that have custom domains (and have upgraded their deployer to 0.39.0) can now also be reached at their usual *.shuttleapp.rs domain. It is now also possible to add multiple custom domains to a project.

This change also comes with reduced CPU usage per request, so feel free to upgrade even if you are not using custom domains!

OpenDAL plugin

Thanks to @Xuanwo’s contribution, we now have shuttle-opendal. OpenDAL allows you to easily connect to many storage services with credentials that you provide as secrets, for example:

use opendal::Operator;

#[shuttle_runtime::main]
async fn main(
    #[shuttle_opendal::Opendal(scheme = "s3")] storage: Operator,
) -> ... { ... }

Templates

Some templates in our examples repo have been added or updated:

Other updates

  • Rust 1.76 is now available by restarting your project.
  • Deployment logs older than 1 month will regularly be getting cleaned up from now on.
  • Removed our tracking of resources that we don’t need to track, such as static folder, turso, and custom.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: v0.38.0...v0.39.0

v0.38.0

01 Feb 11:45
c9b916e
Compare
Choose a tag to compare

Shuttle: v0.38.0 update

We're excited to release Shuttle v0.38.0! 🚀

AWS RDS pricing

Our AWS RDS instances will from now be a paid add-on instead of a Pro feature. Emails with more information and instructions will be sent out to everyone who uses RDS.

All users can now sign up for AWS RDS in the billing section in the Console.

shuttle-turso now uses the libsql crate

The new and improved replacement for libsql-client is now used, which introduces some breaking changes. The resource output is now a libsql::Connection. Check out the updated docs for more. Thanks @Mouwrice for the contribution!

Other updates

  • The Shuttle crates’ minimum support Rust version (MSRV) is now officially set to 1.75. Future bumps to the MSRV will be announced in release notes. Enjoy those async traits!
  • Fixed a bug where cloning a template with a workspace incorrectly set the project name in the workspace manifest.

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: v0.37.0...v0.38.0

v0.37.0

24 Jan 11:29
9c1199c
Compare
Choose a tag to compare

Shuttle: v0.37.0 update

We're excited to release Shuttle v0.37.0! 🚀

Multiple output types in resource macros

🚨 BREAKING 🚨: To keep using an sqlx Pool in the main macro, add the feature flag sqlx to your shuttle-shared-db or shuttle-aws-rds dependency. To use sqlx with native TLS instead, use the feature flag sqlx-native-tls.

The traits in shuttle-service have been refactored, allowing you to have several possible output types in the Shuttle main macro’s resource annotations. For example:

// Use the connection string
#[shuttle_runtime::main]
async fn main(#[shuttle_shared_db::Postgres] conn_str: String) -> ... { ... }

// 🚨 Add the "sqlx" feature flag to get a PgPool like before
#[shuttle_runtime::main]
async fn main(#[shuttle_shared_db::Postgres] pool: sqlx::PgPool) -> ... { ... }

Shuttle + Qdrant

Thanks to @paulotten, we now have a shuttle-qdrant plugin that simplifies the client connection to a Qdrant Cloud vector database during deployment (that you set up yourself), and automates a local Qdrant Docker container during local runs. Check out this example!

The local provisioner can now start a wider variety of Docker containers during local runs, so making similar plugins is now easier.

Other breaking changes

  • shuttle-serenity now uses 0.12 by default. Using 0.11 is still possible with a feature flag. More info in the crate docs.
  • shuttle-poise has been deprecated, but can still be used for poise 0.5. To use poise 0.6, use shuttle-serenity and return a serenity client built with the poise framework. Example
  • shuttle-poem now uses poem 2.0.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

  • ci: split release flow by @jonaro00 in #1518
  • tests(auth): simplify auth service tests with wiremock by @oddgrd in #1514
  • refactor(gateway): renew gateway certificate returns more info about success by @iulianbarbu in #1492
  • feat: support poem v2.0.0 by @paulotten in #1520
  • fix(gateway): uppercase old ulids by @jonaro00 in #1424
  • Traces: set shuttle.project.name in more places by @Kazy in #1526
  • fix(proxy): record http.host after parsing to avoid Some(..) in the attr by @Kazy in #1527
  • Traces add shuttle version by @Kazy in #1528
  • chore: upgrade h2 to resolve cargo audit by @oddgrd in #1530
  • feat: base api and gateway client by @chesedo in #1525
  • ci: use default ubuntu machine image by @jonaro00 in #1524
  • feat(resources)!: get db connection string from resources, refactor ResourceBuilder by @jonaro00 in #1522
  • feat(auth): add subscriptions table to auth, add rds quota to claim limits by @oddgrd in #1529
  • chore: update wiremock to resolve cargo audit by @oddgrd in #1534
  • feat: Qdrant resource by @paulotten in #1025
  • Improve shuttle-runtime out-of-date hint by @beyarkay in #1533
  • feat(shuttle-serenity): make serenity 0.12 default, support poise 0.6, deprecate shuttle-poise by @supleed2 in #1521
  • chore: v0.37.0 by @jonaro00 in #1535

Full Changelog: v0.36.0...v0.37.0

v0.36.0

09 Jan 14:13
ad0f044
Compare
Choose a tag to compare

Shuttle: v0.36.0 update

We're excited to release Shuttle v0.36.0! 🚀

Windows installer script

We’ve had a cargo-shuttle installer script for Linux and macOS for some time now, but a Windows script has been missing. Thanks to a great contribution from @supleed2 we now have all the major operating systems covered. Refer to our getting started docs for how to use these scripts.

Axum 0.7

shuttle-axum will now use axum 0.7 by default. Using axum 0.6 is still possible by enabling a feature flag:

# If switching to axum 0.7 and hyper 1.0:
axum = "0.7.3"
shuttle-axum = "0.36.0"
shuttle-runtime = "0.36.0"

# If staying on axum 0.6:
axum = "0.6.20"
shuttle-axum = { version = "0.36.0", default-features = false, features = ["axum-0-6"] }
shuttle-runtime = "0.36.0"

Other updates

  • Rust 1.75.0 is now used in the deployers. Restart your project to upgrade.
  • The version of Salvo used in shuttle-salvo has been updated to 0.63.
  • cargo shuttle init now has a --no-git argument to not initialize a git repository.
  • The Shuttle Pro subscription total will now be visible in the console.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

New Contributors

Full Changelog: v0.35.1...v0.36.0

v0.35.2

21 Dec 15:25
Compare
Choose a tag to compare

v0.35.2 - Release Notes

We're excited to release Shuttle v0.35.2! 🚀

Shuttle: v0.35.2 update

Security fixes

Guarded an auth service endpoint to block any attempt for unauthorized projects to create or delete provisioned resources for other projects.

v0.35.1

13 Dec 08:51
fa0fce6
Compare
Choose a tag to compare

v0.35.1 - Release Notes

We're excited to release Shuttle v0.35.1! 🚀

Shuttle: v0.35.1 update

Platform stability improvements

We keep up with the platform stability improvement track and this time our focus was on Shuttle auth service, besides other small improvements. We made a significant change to our database by using PostgreSQL now, which opens up the stage for adding redundancy.

Other updates

  • fixed our CI in terms of the cargo-audit advisories
  • simplified a part of the gateway’s project state-machine dependencies, in terms of generics usage

Contributions

  • @fatfingers23 added a more descriptive error message for the case of using a project name that is not owned by the user of the command or the project doesn’t exist: #1452

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

Full Changelog: v0.35.0...v0.35.1

v0.35.0

07 Dec 14:14
501e6c8
Compare
Choose a tag to compare

We're excited to release Shuttle v0.35.0! 🚀

Shuttle: v0.35.0 update

Platform stability improvements

In the past week, we identified a bottleneck in our system linked to the way we were retrieving Docker stats for project containers. This bottleneck had a noticeable impact on the capacity of the Shuttle platform, causing intermittent service degradation, leading to e.g. slow and failing project commands. We’re pleased to announce that this bottleneck has been resolved in this release.

Breaking changes

  • The cargo shuttle generate command has been refactored to accommodate the new manpage command. This command now takes a subcommand for generating either shell completions or a manpage. In addition, it no longer reads the SHELL or OUTPUT environment variable for shell completions.
    • cargo shuttle generate manpage
    • cargo shuttle generate shell <SHELL>

Bug fixes

  • Fixed a bug where cancelling a Pro tier subscription immediately downgraded the user to the Community tier, rather than waiting until the end of the period.

Other updates

  • Added a flag to skip confirmation when deleting projects or resources: cargo shuttle project delete -y/--yes.

Contributions

Upgrading

Refer to the upgrading docs for how to upgrade your projects.

What's Changed

  • add: service docs readme by @AvaterClasher in #1425
  • feat: protect ourselves from going over the 1k limit by @chesedo in #1444
  • refactor: improve build queue messages and increase queueing time by @chesedo in #1447
  • test: add an extra property claim test for pro users by @chesedo in #1448
  • feat: protect pro tier projects and our services by @chesedo in #1445
  • feat(gateway): allow manual blocking of cch project traffic at high load by @jonaro00 in #1446
  • fix(gateway): don't attempt to retry error infinitely by @Kazy in #1450
  • feat(gateway): add cch projects idle admin endpoint by @oddgrd in #1454
  • feat: propagate ambulance traces by @chesedo in #1456
  • feat: don't overload docker with requests by @chesedo in #1457
  • Add back retry logic on project error by @Kazy in #1455
  • refactor: reduce backoff by @chesedo in #1458
  • refactor: only ambulance ready projects by @chesedo in #1459
  • refactor: allow stats to change in the future by @chesedo in #1463
  • Setup datadog by @Kazy in #1462
  • ci: fix tests with axum and serenity feature flags by @fatfingers23 in #1453
  • fix(optl): correctly set deployment.environment resource by @Kazy in #1467
  • feat(cargo-shuttle): add --no-confirmation flag to project deletion by @Kazy in #1468
  • feat(cargo-shuttle): generate manpage by @selectiveduplicate in #1388
  • feat: downgrade user to basic tier only after period end by @GugaGongadze in #1427
  • feat(cargo-shuttle): change no_confirmation flag to -y/--yes, add it to resource delete by @jonaro00 in #1470
  • refactor: get stats from cgroup file directly by @oddgrd in #1464
  • fix(cargo-shuttle): remove newline from errored project state output by @supleed2 in #1466
  • chore: v0.35.0 by @oddgrd in #1471
  • ci: fix deploy-images conditional by @oddgrd in #1473

New Contributors

Full Changelog: v0.34.1...v0.35.0