We're excited to announce a major improvement to our release process: continuous releases for the Tuist CLI, Server, and macOS app. This change represents a key step in reducing the dependency of our contributors and users on the project maintainers.

What's Changed

Previously, releasing new versions of Tuist required manual intervention from maintainers. This created bottlenecks and delays in getting new features and fixes to users. Now, we've implemented an automated release pipeline that:

  • Automatically detects releasable changes using git cliff, a changelog generator that understands conventional commits
  • Triggers releases on every push to main when there are meaningful changes to release
  • Generates changelogs automatically based on commit messages, properly categorized and formatted
  • Handles the entire release process including building, packaging, creating GitHub releases, and updating Homebrew formulas

How It Works

Each component (CLI, Server, and macOS app) now has its own release pipeline that:

  1. Uses git cliff to analyze commits since the last release
  2. Filters commits by scope (e.g., feat(cli): for CLI changes, feat(app): for app changes)
  3. Determines if there are releasable changes by comparing with the current changelog
  4. Automatically calculates the next version number
  5. Builds and releases the component if changes are detected

Benefits for Contributors

  • Faster feedback loop: Your contributions reach users as soon as they're merged
  • No waiting for maintainers: Releases happen automatically when criteria are met
  • Transparent process: The changelog clearly shows what changed in each release
  • Better commit discipline: Encourages meaningful commit messages that translate to clear release notes

Benefits for Users

  • More frequent updates: Get access to new features and fixes faster
  • Predictable releases: Every meaningful change triggers a release
  • Clear communication: Automatically generated changelogs show exactly what changed
  • Stable releases: Only changes that pass all tests and checks are released

Technical Details

We're using git cliff with custom configurations for each component:

  • CLI: Filters commits with (cli) scope or no scope
  • Server: Filters commits with (server) scope
  • App: Filters commits with (app) scope

The pipelines run on GitHub Actions and handle everything from version bumping to updating package managers like Homebrew.

This automation represents our commitment to making Tuist more accessible and reducing barriers for both contributors and users. We believe that great developer tools should be easy to contribute to and quick to deliver value.

A diagram showing the continuous release flow from commit to release

Over the years of developing the Tuist CLI, we’ve come to appreciate the value of consistent UI patterns across all aspects of the tool (like commands) in delivering an outstanding developer experience. Unfortunately, this is an area we overlooked for a while. Recently, we’ve taken steps to address this, not only to enhance the Tuist CLI experience but also to establish a foundation for other CLIs we’re building. Our goal is to ensure they all share a unified Tuist look and feel, while also adhering to excellent accessibility and UI practices.

To achieve this, we’ve introduced Noora—a design system for building CLIs in Swift. This Swift package provides themable components designed specifically for CLI interfaces. While the current selection of components is limited, we plan to gradually expand it by extracting more components from our work at Tuist.

If you’re building a CLI in Swift, we encourage you to explore the documentation. We’d love to hear your feedback and welcome contributions to make Noora even better. If there’s a specific component you need, feel free to open an issue or submit a PR!

A GIF that shows an example of a single-choice prompt component where the person can select among a list of options moving using the cursors

We've improved the account billing page to make managing your subscription clearer and more straightforward:

  • You can now see your current usage and the corresponding charges.
  • The end of your billing period is clearly displayed.
  • Usage calculations are more transparent than ever.
  • Your payment method now accurately reflects the state of your subscription.
  • A direct link to manage your Stripe subscription is now available.

In response to recent feedback on our pricing (thanks Vijay) and to better align with our philosophy, we've made some updates to our pricing model.

Transitioning from Tuist Air to Tuist Pro is now simpler—just add a payment method, and you'll only be charged for usage exceeding the defined thresholds. To make everything clearer, we've included a table outlining how the usage of various features is measured.

Looking ahead, we plan to provide examples, an estimation calculator, and tools to help you set usage limits, so you can stay within your budget and enjoy peace of mind.

This is the first changelog entry for the new website. We've redesigned the website to reflect the new direction of Tuist, and embody the new visual identity.

As part of this work we've also:

  • Improved the accessibility of the website.
  • Embraced structured data markup to enhance the search results.
  • Improved the pricing page to make it easier for users to understand the different plans and features.
  • Added a changelog page to keep users updated with the latest features and improvements.
  • Consolidated the dashboard and marketing pages under tuist.dev since .io domains might disappear

The design of the website has been done by Guinda Studio and it's publicly available.

Supercharge your Swift app development

Get started