Skip to content

Releases: bullet-train-co/bullet_train

v1.32.0

27 Oct 19:26
7de7c67

Choose a tag to compare

Possible Breaking Changes

Upgrade ruby 3.4.5 => 3.4.7

This release upgrades ruby to verison 3.4.7. You'll need to install it locally via whatever runtime manager you use (asdf is a good one if you're looking for recommendations) and then run bundle install to install all the gems for the new version.

Upgrade node 22.18.0 => 22.20.0

This release upgrades node to version 22.20.0. You'll need to install it locally via whatever runtime manager you use (asdf is a good one if you're looking for recommendations) and then do the following to install yarn and all the JS dependencies:

npm install -g yarn
corepack enable
yarn install

What's changed in bullet_train-core

Also check the corresponding release for the bullet_train-core repo:
https://github.com/bullet-train-co/bullet_train-core/releases

What's Changed

  • [js] Update all Yarn dependencies (2025-10-16) by @depfu[bot] in #2251
  • [ruby] Update all Bundler dependencies (2025-10-17) by @depfu[bot] in #2252
  • [ruby] Update all Bundler dependencies (2025-10-18) by @depfu[bot] in #2253
  • [ruby] Update all Bundler dependencies (2025-10-22) by @depfu[bot] in #2254
  • [ruby] Update all Bundler dependencies (2025-10-23) by @depfu[bot] in #2256
  • [js] Update all Yarn dependencies (2025-10-23) by @depfu[bot] in #2257
  • [ruby] Update all Bundler dependencies (2025-10-24) by @depfu[bot] in #2258
  • [ruby] Update all Bundler dependencies (2025-10-25) by @depfu[bot] in #2259
  • [ruby] Update all Bundler dependencies (2025-10-26) by @depfu[bot] in #2260
  • [ruby] Update all Bundler dependencies (2025-10-27) by @depfu[bot] in #2261
  • Super scaffolding should generate code that passes standardrb by @jagthedrummer in #2262
  • [js] Update Node.js 22.18.0 → 22.20.0 by @depfu[bot] in #2230
  • [ruby] Update Ruby 3.4.5 → 3.4.7 by @depfu[bot] in #2247
  • BT-Core version bump: - 1.32.0 by @jagthedrummer in #2263

Full Changelog: v1.31.0...v1.32.0

v1.31.0

15 Oct 17:24
e62f8ba

Choose a tag to compare

New feature - Color scheme selector

We've added a new appearance switcher under the Account Details link in the User menu. This allows users to choose between "Always Light", "Always Dark", and "Same as System" to set their preference for light or dark mode.

CleanShot 2025-10-14 at 14 33 44

By default the switcher will appear for users, and will default to "Same as System".

How to force one particular color scheme

If you want to remove the appearance switcher and force your app to use either light or dark mode you can edit config/initializers/theme.rb and set the force_color_scheme_to option.

# Force the color scheme to :light or :dark.
# Defaults to nil, which offers users the ability to choose their preference in Account Details.
BulletTrain::Themes::Light.force_color_scheme_to = :light

Update your custom CSS

If you have custom CSS that is responding to dark mode you should switch from using media queries to using a .dark class selector. The .dark class will be applied to the main <html> element if the user has selected dark mode, or if they have selected "Same as System" and the system is in dark mode, or if you have set force_color_scheme_to = :dark.

If your custom CSS has @media (prefers-color-scheme: dark) {} blocks, replace them with .dark { } nested blocks instead.

Update app/views/account/users/edit.html.erb

If you've ejected the main edit form for users, you'll need to add the appearance selector to that form. Between the profile form and the two factor authentication form you can add this block:

        <% unless BulletTrain::Themes::Light.force_color_scheme_to.presence %>
          <%= render 'account/shared/box', divider: true do |box| %>
            <% box.t title: '.preferences.header', description: '.preferences.description' %>
            <% box.body.render "account/users/color_form", user: @user %>
          <% end %>
        <% end %>

Here's the corresponding update in the core repo.

Update app/views/themes/light/layouts/_head.html.erb

If you've ejected app/views/themes/light/layouts/_head.html.erb (NOT the default app/views/layouts/_head.html.erb that comes with the starter repo) you should update it to include the following reference:

<%= render 'shared/layouts/head/color_scheme_preference' unless BulletTrain::Themes::Light.force_color_scheme_to.presence %>

Here's the corresponding update in the core repo.

Responding to dark mode changes in custom JavaScript

See the new docs for details about how to respond to color scheme changes in your JavaScript code.

What's changed in bullet_train-core

Also check the corresponding release for the bullet_train-core repo:
https://github.com/bullet-train-co/bullet_train-core/releases

What's Changed

Full Changelog: v1.30.1...v1.31.0

v1.30.1

14 Oct 16:36
43f2ddc

Choose a tag to compare

What's changed in bullet_train-core

Also check the corresponding release for the bullet_train-core repo:
https://github.com/bullet-train-co/bullet_train-core/releases

What's Changed

  • [ruby] Update all Bundler dependencies (2025-10-05) by @depfu[bot] in #2235
  • [ruby] Update all Bundler dependencies (2025-10-07) by @depfu[bot] in #2236
  • [ruby] Update all Bundler dependencies (2025-10-08) by @depfu[bot] in #2237
  • [ruby] Update all Bundler dependencies (2025-10-09) by @depfu[bot] in #2238
  • [ruby] Update all Bundler dependencies (2025-10-10) by @depfu[bot] in #2239
  • [ruby] Update all Bundler dependencies (2025-10-11) by @depfu[bot] in #2240
  • [ruby] Update all Bundler dependencies (2025-10-12) by @depfu[bot] in #2241
  • [ruby] Update all Bundler dependencies (2025-10-13) by @depfu[bot] in #2242
  • [ruby] Update all Bundler dependencies (2025-10-14) by @depfu[bot] in #2244
  • Bump sha.js from 2.4.11 to 2.4.12 in /zapier by @dependabot[bot] in #2216
  • BT-Core version bump: - 1.30.1 by @jagthedrummer in #2245

Full Changelog: v1.30.0...v1.30.1

v1.30.0

03 Oct 15:38
9ad44c6

Choose a tag to compare

Potentially breaking change - Updated sortable_controller.js from bullet_train-sortable to no longer require dragula and jquery

We've updated sortable_controller.js to no longer require dragula and jquery. This eliminates dragula (which is largely abandoned) and 5 other sub-dependencies from yarn.lock (unfortunately we still use jquery in a couple of other places). The new controller also offers a better user experience by adding drag handles and improving the visual styling of dragged items.

New sortable UI

If you're using a sortable model and haven't heavily customized the UI around it then things should Just Work. You should get drag handles added to your tables automatically by the controller. If you'd like to customize the handles you can add them to your templates. For details see the "Drag Handles" section at the bottom of the "Super Scaffolding with the --sortable option" page in the docs.

If you have heavily customized the sortable UI, or if you're relying heavily on the sortable:* events dispatched by the controller then you may have some breakage. There are two options for resolving the trouble.

  • Update your app to work with the new controller. - Check out the new docs for sortable models, especially the sections about "Events" and "Drag Handles", and update your app accordingly. Feel free to raise any troubles as GitHub issues and/or in Discord.

  • Continue to use the old dragula based controller. - We don't ship that controller anymore because doing so would prevent us from being able to remove dragula as a dependency. See the documentation for the dragula controller for full details. The short version is:

    1. Add dragula and jquery to your app: yarn add dragula jquery
    2. Copy the old controller into your app at app/javascript/controllers/dragule-sortable_controller.js.
    3. Update app/views/account/*/_index.html.erb and change instances of data-controller="sortable" to be data-controller="dragula-sortable". If you're responding to any of the events emitted by the controller they will also need to be changed from sortable to dragula-sortable.

What's changed in bullet_train-core

Also check the corresponding release for the bullet_train-core repo:
https://github.com/bullet-train-co/bullet_train-core/releases

What's Changed

  • fix small SETUP_GITHUB issue by @grymoire7 in #2200
  • Update all Bundler dependencies (2025-09-13) by @depfu[bot] in #2201
  • [ruby] Update all Bundler dependencies (2025-09-14) by @depfu[bot] in #2202
  • [ruby] Update all Bundler dependencies (2025-09-15) by @depfu[bot] in #2203
  • [ruby] Update all Bundler dependencies (2025-09-16) by @depfu[bot] in #2204
  • [ruby] Update all Bundler dependencies (2025-09-17) by @depfu[bot] in #2206
  • [js] Update all Yarn dependencies (2025-09-19) by @depfu[bot] in #2210
  • [ruby] Update all Bundler dependencies (2025-09-19) by @depfu[bot] in #2211
  • [ruby] Update all Bundler dependencies (2025-09-20) by @depfu[bot] in #2212
  • [js] Update all Yarn dependencies (2025-09-21) by @depfu[bot] in #2215
  • [ruby] Update all Bundler dependencies (2025-09-22) by @depfu[bot] in #2217
  • [ruby] Update all Bundler dependencies (2025-09-23) by @depfu[bot] in #2218
  • [js] Update all Yarn dependencies (2025-09-24) by @depfu[bot] in #2220
  • [ruby] Update all Bundler dependencies (2025-09-24) by @depfu[bot] in #2221
  • [js] Update all Yarn dependencies (2025-09-26) by @depfu[bot] in #2223
  • [ruby] Update all Bundler dependencies (2025-09-27) by @depfu[bot] in #2224
  • [js] Update all Yarn dependencies (2025-09-28) by @depfu[bot] in #2225
  • [ruby] Update all Bundler dependencies (2025-09-29) by @depfu[bot] in #2226
  • [ruby] Update all Bundler dependencies (2025-09-30) by @depfu[bot] in #2227
  • [ruby] Update all Bundler dependencies (2025-10-01) by @depfu[bot] in #2229
  • [ruby] Update all Bundler dependencies (2025-10-02) by @depfu[bot] in #2231
  • Run corepack enable as part of the setup script by @jagthedrummer in #2232
  • Remove dragula as an application dependency by @jagthedrummer in #2228
  • BT-Core version bump: - 1.30.0 by @jagthedrummer in #2234

New Contributors

Full Changelog: v1.29.0...v1.30.0

v1.29.0

05 Sep 17:21
78f0c22

Choose a tag to compare

Potentially breaking change - upgrade puma to 7.0.0

See the puma release notes for details.

Potentially breaking change - replace sprockets-rails with propshaft

This release removes sprockets-rails and replaces it with propshaft, the new iteration of the Rails assets pipeline. This is a necessary stepping-stone in making the transition to using importmaps for easier asset deployment.

Things to know about this change

The biggest things to know about the move to propshaft are:

  • Replace asset helpers in CSS (like asset_path etc...) with standard url() references
  • css.erb and js.erb files will not be processed by erb
  • Assets will not be gzipped

Keep reading for additional details about each of these items.

See the propshaft migration docs for more info about this change and/or check out the propshaft PR for a deep dive into the differences between files produced by propshaft vs sprockets.

Replace asset helpers with standard url() references.

The biggest change is that asset helpers (like asset_path, asset_url, image_url, etc.) are no longer needed. Instead you can use url and pass an absolute path to the asset in question. It will automatically be fingerprinted by propshaft.

- background: image_url('hero.jpg');
+ background: url('/hero.jpg');

css.erb and js.erb files will not be processed by erb

propshaft is a simpler pipeline than sprockets and it does not come with erb processing.

If you were using erb processing to reference fonts like this:

src: url("<%= font_path('your-custom-font.woff2') %>")

Then you can just use url directly like this instead:

src: url('/assets/fonts/your-custom-font.woff2')

After replacing any erb tags you should rename any .css.erb or .js.erb files to just .css or .js to avoid confusion.

If you're doing other "ruby stuff" within the erb blocks of those files you'll need to move that stuff into a <style> or <script> tag within an html.erb template.

Assets will not be gzipped

Previously sprockets would automatically produce gzipped versions of all compressible assets. Many webservers/CDNs can dynamically compress assets as they're being served, so this may not be an issue.

If you need your assets to be compressed you can add the propshaft-compressor gem to your Gemfile. (We're not including this gem by default to keep our dependencies as small and simple as possible.)

What's changed in bullet_train-core

Also check the corresponding release for the bullet_train-core repo:
https://github.com/bullet-train-co/bullet_train-core/releases

What's Changed

Full Changelog: v1.28.0...v1.29.0

v1.28.0

21 Aug 19:43
221454a

Choose a tag to compare

New Feature / Potentially Breaking Change - Docker!

We've added a Dockerfile and a dev.Dockerfile that take advantage of some official bullet_train Docker images that we've begun to publish. If you already have a Dockerfile or dev.Dockerfile in your app you'll want to pay attention to this upgrade to make sure it doesn't clobber anything for you. See the Bullet Train Docker documentation for more information.

After updating you should either run bin/configure-scripts/update_configs.rb to update the included convenience scripts in bin/docker-dev to use your application name instead of untitled_application, or you can make those changes manually if you'd rather.

This is our first pass at adding official Docker support, and it's unlikely that we got everything perfect, so please let us know how it goes for you and help us smooth off the rough edges.

What's changed in bullet_train-core

Also check the corresponding release for the bullet_train-core repo:
https://github.com/bullet-train-co/bullet_train-core/releases

What's Changed

Full Changelog: v1.27.0...v1.28.0

v1.27.0

19 Aug 18:25
2db3ddf

Choose a tag to compare

Possible Breaking Changes

Upgrade ruby 3.4.4 => 3.4.5

This release upgrades ruby to verison 3.4.5. You'll need to install it locally via whatever runtime manager you use (asdf is a good one if you're looking for recommendations) and then run bundle install to install all the gems for the new version.

Upgrade node 22.16.0 => 22.18.0

This release upgrades node to version 22.18.0. You'll need to install it locally via whatever runtime manager you use (asdf is a good one if you're looking for recommendations) and then do the following to install yarn and all the JS dependencies:

npm install -g yarn
corepack enable
yarn install

What's changed in bullet_train-core

Also check the corresponding release for the bullet_train-core repo:
https://github.com/bullet-train-co/bullet_train-core/releases

What's Changed

  • [ruby] Update all Bundler dependencies (2025-07-31) by @depfu[bot] in #2158
  • Pin @redocly/cli to the 1.x line by @jagthedrummer in #2161
  • [ruby] Update all Bundler dependencies (2025-08-02) by @depfu[bot] in #2162
  • [ruby] Update all Bundler dependencies (2025-08-04) by @depfu[bot] in #2163
  • [ruby] Update all Bundler dependencies (2025-08-05) by @depfu[bot] in #2166
  • 🚨 [security] [ruby] Update rails 8.0.2 → 8.0.2.1 (minor) by @depfu[bot] in #2172
  • [js] Update all Yarn dependencies (2025-08-14) by @depfu[bot] in #2173
  • [js] Update all Yarn dependencies (2025-08-15) by @depfu[bot] in #2174
  • Fix invitation test class names by @pascallaliberte in #2165
  • [ruby] Update all Bundler dependencies (2025-08-19) by @depfu[bot] in #2167
  • [js] Update Node.js 22.16.0 → 22.18.0 by @depfu[bot] in #2169
  • [ruby] Update Ruby 3.4.4 → 3.4.5 by @depfu[bot] in #2151
  • BT-Core version bump: - 1.27.0 by @jagthedrummer in #2175

Full Changelog: v1.26.1...v1.27.0

v1.26.1

31 Jul 20:59
6d371dc

Choose a tag to compare

What's changed in bullet_train-core

Also check the corresponding release for the bullet_train-core repo:
https://github.com/bullet-train-co/bullet_train-core/releases

What's Changed

  • [ruby] Update all Bundler dependencies (2025-07-15) by @depfu[bot] in #2143
  • [ruby] Update all Bundler dependencies (2025-07-16) by @depfu[bot] in #2145
  • [ruby] Update all Bundler dependencies (2025-07-17) by @depfu[bot] in #2146
  • [ruby] Update all Bundler dependencies (2025-07-18) by @depfu[bot] in #2147
  • [ruby] Update all Bundler dependencies (2025-07-19) by @depfu[bot] in #2148
  • [ruby] Update all Bundler dependencies (2025-07-21) by @depfu[bot] in #2149
  • [js] Update all Yarn dependencies (2025-07-21) by @depfu[bot] in #2150
  • [js] Update all Yarn dependencies (2025-07-24) by @depfu[bot] in #2155
  • [ruby] Update all Bundler dependencies (2025-07-23) by @depfu[bot] in #2154
  • [ruby] Update all Bundler dependencies (2025-07-29) by @depfu[bot] in #2157
  • BT-Core version bump: - 1.26.1 by @jagthedrummer in #2159

Full Changelog: v1.26.0...v1.26.1

v1.26.0

11 Jul 17:23
ff24e51

Choose a tag to compare

New feature: Webhook Deactivation System

1.26.0 introduces a new feature for deactivating webhooks that have been failing consistently. This feature is disabled by default. There are some lines in config/environments/development.rb and config/environments/production.rb that you can uncomment and customize in order to activate the feature.

NOTE: This features requires some database migrations to the webhooks_outgoing_endpoints, webhooks_outgoing_deliveries, and webhooks_outgoing_delivery_attempts tables. If your app is particularly large or busy some of these tables may be very large and the migrations may take a while to run. You may want to do a test on a similarly sized database to see if you need to handle these migrations in a different way than normal.

See the "Endpoint Deactivation" section of the Outgoing Webhooks documentation for additional details.

What's changed in bullet_train-core

Also check the corresponding release for the bullet_train-core repo:
https://github.com/bullet-train-co/bullet_train-core/releases

What's Changed

  • [ruby] Update all Bundler dependencies (2025-07-03) by @depfu[bot] in #2136
  • [ruby] Update all Bundler dependencies (2025-07-04) by @depfu[bot] in #2137
  • [ruby] Update all Bundler dependencies (2025-07-05) by @depfu[bot] in #2138
  • [ruby] Update all Bundler dependencies (2025-07-07) by @depfu[bot] in #2139
  • [js] Update all Yarn dependencies (2025-07-09) by @depfu[bot] in #2140
  • Webhook deactivation system by @Riddlerrr in #2114
  • BT-Core version bump: - 1.26.0 by @jagthedrummer in #2142

New Contributors

Full Changelog: v1.25.1...v1.26.0

v1.25.1

02 Jul 18:31
86d348f

Choose a tag to compare

New feature - Outgoing Webhook Signatures

Note

The new webhook signature feature was added in 1.25.0 but we're duplicating mention of it here since 1.25.1 was released so closely to 1.25.0. Many people may go directly to 1.25.1 and we want to highlight this new feature. The only change in 1.25.1 is the addition of a link to the documentation about webhook security.

The 1.25.0 release adds a new security feature to Outgoing Webhooks. Now they will include a few additional headers in the outgoing HTTP request. See the "Security" section of the Incoming Webhook docs for more details.

When upgrading your app you'll see some lines like this added to config/environments/development.rb, config/environments/production.rb, and config/environments/test.rb:

  config.outgoing_webhooks[:webhook_headers_namespace] = "X-Webhook-Untitled-Application"

You should update them to use the name of your application instead of Untitled-Application:

  config.outgoing_webhooks[:webhook_headers_namespace] = "X-Webhook-Your-App-Name"

What's changed in bullet_train-core

Also check the corresponding release for the bullet_train-core repo:
https://github.com/bullet-train-co/bullet_train-core/releases

What's Changed

Full Changelog: v1.25.0...v1.25.1