Skip to content

Releases: shuttle-hq/shuttle

v0.45.0

13 May 11:46
f00a098
Compare
Choose a tag to compare

Shuttle: v0.45.0 update

This release comes with a few bugfixes and lots of behind the scenes work on upcoming updates.

Breaking changes

  • The project list command on cargo-shuttle v0.44.0 will produce an additional 404 error. Upgrade to v0.45.0 to resolve this.

Bug fixes

  • Improved the error when Docker is not running on local runs.
  • Shuttle will no longer try to run library workspace members that have the shuttle-runtime dependency.
  • Made the project delete action more reliable.

Upgrading

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

What's Changed

Full Changelog: v0.44.0...v0.45.0

v0.44.0

23 Apr 10:50
8a1b1ce
Compare
Choose a tag to compare

Shuttle: v0.44.0 update

Improvements to cargo shuttle logs

Until this point, it has only been possible to fetch all the logs for a deployment. Following this release, after upgrading your cargo-shuttle CLI, you will be able to:

  • Fetch the last n log lines with cargo shuttle logs --tail <n>.
  • Fetch the first n log lines with cargo shuttle logs --head <n>.
  • Fetch all the logs lines with cargo shuttle logs --all. Note that this is capped at 4 MiB of log lines.

Thanks to @biplab5464 for contributing this new functionality!

Breaking changes

  • The version of poem in shuttle-poem has been increased to 3.0.
  • The return type of the turso resource in shuttle-turso has been changed to the Database type, which makes it possible to work around the bug described in #1746.

Bug fixes

  • The shuttle_service::Environment enum is now correctly re-exported from shuttle_runtime.

Other updates

  • We made improvements to the errors returned from the control plane, that should make it easier to resolve some common failures.

Contributions

Upgrading

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

What's Changed

New Contributors

Full Changelog: v0.43.0...v0.44.0

v0.43.0

02 Apr 12:32
32bb5af
Compare
Choose a tag to compare

Shuttle: v0.43.0 update

This is mainly a bugfix release, and no upgrade is required. We are working on several upcoming features behind the scenes, so stay tuned!

Updates

  • cargo-shuttle now has a global --debug flag that enables debug logging.
  • Made cargo-shuttle fail fast when encountering an API error, instead of retrying up to 3 times.
  • Fixed a small downtime in the logger service that happened when new versions of Shuttle were deploying.
  • Fixed a bug where having a non-std Result type in scope would make the shuttle_runtime::main macro fail.
  • (released in shuttle-turso 0.42.1) Fixed the connection behaviour when connecting to a remote URL on local runs.

Contributions

Upgrading

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

What's Changed

New Contributors

Full Changelog: v0.42.0...v0.43.0

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