All notable changes to Bridgetown will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Refactor Roda plugin setup, add Roda "distribution" docs (#969) @jaredcwhite
- Revamp the minitesting bundled configuration so it uses Rack::Test (#954) @jaredcwhite
- BREAKING CHANGE: the
flash
plugin is no longer loaded by the file-based routes plugin by default, it's now configured withsessions: true
in the ssr plugin init. Flash required sessions to be set up anyway, which used to be manual but is now provided by this new config.
- BREAKING CHANGE: the
- Remove legacy doctor command (#966) @jaredcwhite
- Better inspect output for Bridgetown::Collection (#968) @jaredcwhite
- Add Viewable callable object mixin for Ruby components (#959) @jaredcwhite
- Add
irb
gem as a dependency @jaredcwhite - Add Enumerable to Paginator (#967) @jaredcwhite
- nsure symbol values for relations config still work @jaredcwhite
- docs: Add some file excludes for YARDoc generation (#964) @jaredcwhite
- Show generic index file instead of crashing (#963) @jarecwhite
- Support minimalist installations with no
config.ru
orRakefile
(or anything other thanGemfile
really) (#942) @jaredcwhite - Switch to
.bridgetown-cache/live_reload.txt
for live reload (#949) @jaredcwhite - Cache instantiated template objects for ERB and Serbea (#958) @jaredcwhite
- Preserve the
_bridgetown
default value inkeep_files
config (#945) @jaredcwhite - Add back in "Now serving", fix absolute URL bug in dev, fix missing 404 @jaredcwhite
- Ensure front matter defaults are dot access hashes (#944) @jaredcwhite
- Avoid duplication in r.bridgetown implementation (#939) @jeremyevans
- Update
gh_pages
bundled configuration #943 (@konnorrogers)
- Fix regression in base_path support (#938)#938 (@jaredcwhite)
- Revamping of view layer docs for v2 (#912)#912 (@jaredcwhite)
- Update esbuild config to use ESM (#934)#934 (@jaredcwhite)
- Support i18n with fast refresh (rerender multiple locales) #937 (@jaredcwhite)
- Remove all uses of just, simple, simply, and straightforward in the docs #936 (@ayushn21)
- Add additional possible error for Roda server #910 (@KonnorRogers) & (@ayushn21)
- Add note to update the package manager in the Rakefile #935 (@ayushn21)
- Fix Fast Refresh not working for Liquid templates #933 (@jaredcwhite)
- Convert a large number of comment docs to YARD #932 (@jaredcwhite)
- Minor fixes for migrating webpack to esbuild during a v2 upgrade #926 (@ayushn21)
- Update esbuild.defaults.js.erb #921 (@KonnorRogers)
- Memoize resource URLs for major performance gain #915 (@MaxLap) & (@jaredcwhite)
- Fixed: Beta-related install issues with Bundler (by making
bridgetown-foundation
a direct dependency ofbridgetown
, and relocating versioning responsibility to the foundation gem) - Fixed: new command still outputs Liquid code by default in posts.md
- Add additional Array features to Collection directly (
.last
,[]
) - Allow plugin gems to provide "features" which are automatically required #900 (@jaredcwhite)
- Make it easy for Roda routes to render "callable" objects #892 (@jaredcwhite)
- Simplify access to data syntax and Roda rendering #890 (@jaredcwhite)
- Fast refresh feature in development #872 (@jaredcwhite)
- Models and Resources can now be rendered by Roda automatically #845 (@jaredcwhite)
- Support pipe in Serbea 2.0, add new pure Ruby template syntax via Streamlined #817 (@jaredcwhite)
- Default to using ERB templates, the config YAML is now optional #888 (@jaredcwhite)
- Use bundler's binstub for bt shortcut #887 (@erickguan)
- Significant refactor of the Routes plugin #882 (@jaredcwhite)
- Initial batch of swapping Active Support extensions for in-house alternatives #881 (@jaredcwhite) & (@ayushn21)
- Refactor start command to use Rackup instead of Puma #875 (@ayushn21)
- Use rack 3 proc responses for SSE live reload #858 (@ayushn21)
- Refactor front matter handling and extract behavior into loaders #778 (@michaelherold)
- Thanks to @soulcutter for docs improvements!
- Remove the legacy URL and UrlDrop classes #891 (@jaredcwhite)
- Remove a variety of deprecated code paths for v2 #873 (@jaredcwhite)
- Remove webpack integration from Bridgetown #868 (@jaredcwhite)
- Remove Cucumber and consolidate around Minitest for integrated feature testing
- Fix: Lock Liquid to version < 5.5 (unresolved data leakage and generation errors otherwise)
- Fix: esbuild file endings from previous release
- Use bundler binstubs to create
bin/bt
shortcut instead of bycp
- Use global regex for Stimulus Configuration #865 (@MSILycanthropy)
- Move site and collections console commands to locals #853 (@mpace965)
- Relax the Rouge version requirement #864 (@matiaskorhonen)
- esbuild: Add webp (and some others) to the file endings loaded as files #863 (@moonglum)
- Improve Netlify bundled configuration #839 (@jclusso)
- Improve localization helpers #842 (@jclusso)
- Remove trailing whitespace from template resource #838 (@unasuke)
- Thanks to @jclusso & @ayushn21 for docs improvements!
- Fix logs and console for Ruby 3.3 #834 (jaredcwhite)
- Auto-detect package manager in the plugin manager #821 (KonnorRogers) This allows for support of non-Yarn package managers such as npm and pnpm
- Allow consistent permitting classes #795 (michaelherold)
- Show a reloading log for Roda routes in the server folder #818 (jaredcwhite)
- Fixed localization of paginated resources error #790 (jclusso)
- Catch error and log when PostCSS conversion fails #812 (jaredcwhite)
- Thanks to @bkjohnson, @jaredmoody, and @jclusso for improvements to documentation
- Fix bug with prototype page pagination not working for paginate #804 (jaredcwhite)
- Upgrade Cucumber to v8.0 #800 (michaelherold)
- Fix
link_to
when passed block #791 (jclusso) …thanks also to fabionl for looking at this issue - Add configurable inflector with examples for
ActiveSupport::Inflector
#796 (jclusso) - esbuild & webpack version bumps #802 (jaredcwhite)
- Add
date
task for generating a front matter friendly date (jaredcwhite) - Eager load to make DEFAULTS deterministic #776 (michaelherold)
- Feature improvements to i18n localize #783 (akarzim)
- Lock Rubocop to latest version that passes #779 (michaelherold)
- Upgraded docs website to latest Ruby2JS and esbuild
- Thanks to @jclusso and @mtomov for improvements to documentation
- esbuild and bundled configurations fixes
- Lit configuration bug fixes based on QA
- Declarative Shadow DOM integration #763 (jaredcwhite)
- Retool esbuild configuration and add "Islands Architecture" #765 (jaredcwhite)
- Add I18n localization shortcut "l" alongside "t" #759 (goulvench)
- Update to esbuild 0.17 #762 (jaredcwhite)
- docs: update gitlab pages deploy configuration #767 (akarzim)
- docs: GitLab Pages serving compressed assets #768 (akarzim)
- docs: remove trailing comma in configuration options #766 (akarzim)
- Fix missing word in
resources.md
- Add support for Nokolexbor & Puma 6.x #752 (jaredcwhite)
- Display build error on the page in a dialog in dev #747 (jaredcwhite)
- Remove deprecated serve command and WEBrick #750 (jaredcwhite)
- Fix locales warning bug #748 (sandstrom)
- Fix hanging tmp dir when running test suite (jaredcwhite)
- Relocate all Bridgetown Roda logic to new bridgetown_server plugin #737 (jaredcwhite)
- Fix passing headers and add passing parameters to HTTP DSL #722 (michaelherold)
- Fix: ensure hooks defined in initializers config are marked
reloadable: false
(jaredcwhite) - Fix purgecss plugin crashing when using scss #733 (goulvench)
- Upgrade to Faraday v2 #721 (michaelherold) & #713 (alison-acuna)
- Removed dependency on
faraday_middleware
, which was deprecated, and not ported to Faraday v2. - Added dependency on
faraday-follow_redirects
to replace functionality from ^ that was lost
- Removed dependency on
- Thanks to @dcr8898, @fbuys, @beeburrt, @neilvanbeinum, and @pboling for documentation improvements
- Remove terminal-table dependency
Possible breaking change — if you rely on Liquid template profiling to debug your site, you'll need to add the
terminal-table
gem dependency yourself - Add method to reset config for test suites #702 (jaredcwhite)
- Fix: Set timezone from initializer Ruby DSL #703 (ayushn21)
- Fix a minor typo in the plugins command #701 (ayushn21)
- Fix: load
initializers.rb
instead of require for working tests #700 (jaredcwhite) - Docs: Add details for importing Shoelace #698 (ikass)
- Add some DX improvements to StaticFile #677 (jaredcwhite)
- Restore localhost URL in development when using initializers config #686 (jaredcwhite)
- Note View Component oddities #687 (joemasilotti)
- Fix: dynamic route sorting #690 (jaredcwhite)
- Fix: Enture
resource.data.locale
consistently return symbols #682 (vvveebs) - Filter
Bridgetown::Localizable#all_locales
under the source's parent directory #671 (vvveebs) - Website: Fix the readability of namespaces in dark mode #674 (michaelherold)
- Add support for alternative gemfile
gems.rb
to core #658 (svoop)
- Provide an option for the file watcher to watch additional paths #668 (jaredcwhite)
- Localize file-based dynamic routes #654 (tommasongr)
- Website: Dark mode #620 (vvveebs)
- Docs: Fix typo in collections.md #664 (fbuys)
- Update GitHub Pages configuration to use new method of deploying websites. #657 (tombruijn)
- Bump up esbuild version in new template and on the BT site #646 (jaredcwhite)
- Fix: ensure Rake tasks can be run directly, and no crashes when Rake isn't available #656 (jaredcwhite)
- Parse using JSON.parse for more resilient parsing #662 (rickychilcott)
- Resolve Rubocop offenses #644 (vvveebs)
- Docs: Fix link to Liquid Template Engine #659 (KorbsStudio)
- Specify locales in "multi locale" mode #651 (rickychilcott)
- Change from master to main in additional places throughout the code #648 (Dynnammo)
- Fix Lint/ConstantDefinitionInBlock and Style/StructInheritance #640 (lxxxvi)
- Docs: Correct Typo in _docs/template-engines.md #649 (jacobdaddario)
- Fix: update broken initializers documentation link #652 (andrewmcodes)
- Extend url_for helper to accept other link types #633 (alexanderadam)
- Extend link_to helper to accept blocks #632 (alexanderadam)
- Docs: Fix typo in confirmation prompt #645 (brandoncc)
- Docs: typo: mergable => mergeable #635 (alexanderadam)
- Docs: fix typo: delimeters => delimiters #634 (alexanderadam)
- Add ability to specify locales in "multi locale" mode #651 (rickychilcott)
- Updates to Lit and Tailwind configurations
- Add new automation actions for v1.2 configurations
- Fix issues around Roda processing of form submissions
- Fix bug with builder registration in config DSL
Don't let yourself get distracted by the moonshine! https://cedarmillnews.com/legacy/archive/706/bonny_slope_bootleggers.html
- Add gemspec metadata for all gems (#619)
- Major refactor to add new configuration & initializer DSLs #618 (jaredcwhite)
- All-new Ruby-based config file format
- New Dotenv support
- Refactor to setup Bundler without automatic requires
- Relocate Roda plugins to their own files and use new init functionality
- Add permalink placeholder to Builder DSL
- Improve helper scope for methods, add resource extension to Builder DSL
- Deprecate TOML,
_config
, and.yaml
files for configurations (.yml
preferred)
- Slot content feature for templates and components #629 (jaredcwhite)
- Allow templates to use
data
directly instead ofresource.data
or evensite.data
#622 (jaredcwhite and johlym) - Add Dockerfile to deployment options #626 (stephendolan)
- Add hash attributes functionality to view tag helpers #589 (DRBragg)
- Provide esbuild config typing via JSDoc #604 (jaredcwhite)
- Update postcss-load-config to 4.x and address synchronization issues #596 (stefanvermaas) Possible breaking change — see: #596 (comment)
- Tailwind automation has been relocated to a separate repository — see: https://github.com/bridgetownrb/tailwindcss-automation
- Include subdirectories of
src/_locales
in I18n loader #606 (lux-shaun)
- Update SSR tests to work with Rack 3 #627 (vvveebs)
- Use regional fallbacks from i18n #607 (lux-shaun)
- esbuild entrypoint selection for index.css #621 (zealot128)
- Silence kwargs warning in ruby 2.7 #615 (sandstrom)
- New GitHub Pages configurations will deploy a production build #610 (vvveebs)
- Add better error message for YAML parse error around Symbols
- Remove unnecessary
excerpt_separator
configuration default - New docs: a guide how to migrate from Jekyll #594 (jaredcwhite)
- Improved default Liquid layout
- Fix PurgeCSS configuration so it works with esbuild
- Provide URL helpers to Roda #583 (jaredcwhite)
- Support kwargs-only method calls for
partial
#582 (jaredcwhite) - Switch from
rack-indifferent
to Roda'sindifferent_params
plugin #586 (jaredcwhite) with thanks to @jeremyevans - Thanks to work-leonid for docs improvements
- Fix: apply Inspectors to Generated Pages as well
- Breaking change from beta2
- Update Gemfile template with nokogiri commented out (helps with the Inspectors API) #574 (andrewmcodes)
- Fix migrate-from-webpack process #573 (katafrakt)
- Ensure gem-based Builders are part of priority sorting #567 (jaredcwhite)
- Add
fill: "forwards"
to improve Turbo transition states
- Update Webpack 5 default config to switch to native asset loaders (no more
file-loader
needed)
- New bundled configurations: Lit, Shoelace, Ruby2JS, Open Props #553 (jaredcwhite)
- NOTE: "frontend component files" (aka
.js
/.css
files within thesrc/_components
folder) will now be ignored by the build process watcher, thus allowing the frontend bundling refresh to trigger a dev reload
- NOTE: "frontend component files" (aka
- Improve Roda error handling and update static error pages #565 (jaredcwhite)
- Always make sure
:en
is at the end of the I18n fallback chain - Support
.rb
and.json
for translation files - Support front matter defaults for multi locale
- Update
in_locale
to support filtering resources - Add
t
Liquid filter, allow I18n fallbacks - Allow
.multi
suffix on files names for multi locales - feat: add rb files to the Tailwind content glob #564 (andrewmcodes)
- Fix default custom collection permalink so it includes the locale prefix
- Add link to configuration options documentation in the default
bridgetown.config.yml
#563 (andrewmcodes) - Simplify the Roda boot process, add more route tests #562 (jaredcwhite)
- Add Sass support for esbuild, update frontend dependency versions #542 (jaredcwhite)
- Add ability to configure file filter for PostCSS plugin
- Fix PostCSS esbuild watch bug & remove easy-import
- Update Tailwind config so jit-refresh.css is git ignored #559 (jaredcwhite)
- Ensure future-dated resources import only when expected #558 (jaredcwhite)
- Inherit generator priority from builder
- BREAKING CHANGE: (maybe) The exact order multiple generators will run in may be subtly different than before. Use Builder priorities to resolve
- Add HTML & XML Inspectors API using Nokogiri #546 (jaredcwhite) & (andrewmcodes)
- Add default locale prefixing config option,
in_locale
template filter/helper #540 (jaredcwhite) - Add Markdown support to convert
==
/::
to<mark>
#551 (jaredcwhite) - Apply default theme for syntax highlighting #516 (jaredlt)
- Add site
server_shutdown
hook via Puma - Allow route classes to be prioritized to adjust run order #538 (jaredcwhite)
- Fix: ensure capturing helpers use dedicated component context
- Fix typo in "Core Principles": focsued → focused #541 (das-g)
- Allow finding and linking to alternate locale pages #522 (jaredcwhite)
- Issue warning when a Rails-style extension is used (like .html.erb) #523 (jaredcwhite)
- Fix Roda serving bug when index.html is missing
- Re-run SSR setup block on live reload
- Trigger pre/post-read hooks on SSR reload
- BREAKING CHANGE: (maybe) If you had long-running code in a plugin
build
method or a hook, this might surprise you when you live reload in dev using dynamic routes. Usesite.ssr?
if you want to bypass code in SSR mode.
- BREAKING CHANGE: (maybe) If you had long-running code in a plugin
- Fix bug where sidecar aux process wasn't requiring bundler groups #532 (jaredcwhite)
- Add bundled configuration for GH pages #503 (ayushn21)
- Fix
base_path
issues with Roda and site templates #510 (jaredcwhite) - Many documentation tweaks
- Plus everything since v0.21!
- Project repo Gemfile cleanup
- Remove the Renderer class by merging into GeneratedPage #492 (jaredcwhite)
- Cleaner paginated page URL #491 (jaredcwhite)
- Documentation updates by fpsvogel and subsevenx
- Partials rendering speedup by nearly 8x (!) #489 (jaredcwhite)
- Map Stimulus controller filenames to identifiers as in the Stimulus docs #486 (fpsvogel)
- Fix for issue #482: don't load front matter defaults for data collection (jaredcwhite)
- Add bundled configuration for Vercel #483 (andrewmcodes)
- Descendants tracker fix for issue #484 (jaredcwhite)
- Brand new website and refreshed documentation. Yowza! Special thanks to @adrianvalenz for contributing refreshed branding and content enhancements and to Whitefusion for overall design & development of the new site.
- Native esbuild integration, default site template switched to use esbuild + postcss #461 (jaredcwhite)
- BREAKING CHANGE: you will need to run
bin/bridgetown webpack update
so the build process can find the relocated assets manifest file.
- BREAKING CHANGE: you will need to run
- New site template design along with ERB and Serbea support via CLI flags #475 (jaredcwhite)
- Refactor how Rake tasks are loaded or displayed (jaredcwhite)
- Clean up listener and watcher, resolves #467 (jaredcwhite)
- Update Stimulus and Turbo configurations to latest versions (jaredcwhite)
- Permit Rails 7 versions of Active Support & Active Model (jaredcwhite)
- Improve the display of build errors #479 (jaredcwhite)
- Remove the Swup bundled configuration and enhance Turbo instead #471 (jaredcwhite)
- Switch routes to path from absolute_path for Ruby 3.1 compatibility (jaredcwhite)
- Fix origins autoload issue in #472 (jaredcwhite)
- Add
.ruby-version
file to new sites (jaredcwhite)
- Allow saving of models with repo origin #452 (jaredcwhite)
- Normalize previous/next resource API between Ruby and Liquid #466 (jaredcwhite)
- Docs: Add a nginx section in deployment #447 (Eric-Guo)
- Switch to streaming/event source mechanism for live reload #458 (jaredcwhite)
- Hooks refactor & cleaning up SSR reload hook #457 (jaredcwhite)
- Add
BRIDGETOWN_ENV
to render config #460 (ayushn21) - Fix production ENV issue with Roda file-based routes
- Move
Collection#sort_resources!
to a public method
- Fix class duplication bug with reloads and
ActiveSupport::DescendantsTracker
#450 (jaredcwhite) - Remove extra space from plugins command output #449 (jacobherrington)
- Remove the Liquid Component gem dependency
- Add support for environment CLI flags (
-e production
or--environment=production
) - Integrate Serbea 1.0 into Bridgetown #440 (jaredcwhite)
- Add new console commands via ConsoleMethods mixin #439 (jaredcwhite
- Support long version form in CLI (
--version
) #445 (Eric-Guo)
- Skip the archived state in plugins. #443 (Eric-Guo)
- Update ruby2js as required by webpack loader #442 (Eric-Guo)
- Refactor builder DSL for Ruby 2.7 & 3.0 compatibility
- Update minimum Ruby requirement to 2.7
- Copy
bin/bridgetown
tobin/bt
after binstubs generation - Ensure Webpack error messages only display once
- Add bundled configuration for Cypress #339 (ayushn21)
- Use Zeitwerk for autoload/eager load paths (including plugins) #434 (jaredcwhite & ayushn21)
- Don't mutate bundler dependencies in place #433 (deivid-rodriguez)
- Add bundled configuration for Render #431 (ayushn21)
- Detect the presence of Puma a different way #430 (jaredcwhite)
- Fix netlify config to use native deploy command #429 (ayushn21)
- The deprecated
include
andinclude_relative
tags have been removed.
- Refactor and cleanup of routing gem for better maintainability #424 (jaredcwhite)
- Also adds
bin/bridgetown secret
which functions much like thebin/rails secret
to generate a long randomized hex token.
- Also adds
- Allow template engines to accept symbols via Ruby front matter #396 (JuanVqz)
- Add build callbacks to Builder plugins and allow arbitrary instantiation #422 (jaredcwhite)
- Upgrade the codebase to Rubocop 1.22 and use config from
rubocop-bridgetown
gem
NOTE: this is still considered experimental and largely undocumented. It's fine to use...just not recommended for production. =)
-
Strip out all of the legacy content engine #415 (jaredcwhite)
- Transition Page to GeneratedPage
- Resource content from plugins now supported
-
SSR & file-based dynamic routes in src/_routes #383 (jaredcwhite)
- includes adding Puma, Rack, Roda, and Rake!
- the previous WEBrick-based dev server is deprecated
- nearly all past Yarn commands are now available through
bin/bridgetown
add_resource
DSL now available for builders #419 (jaredcwhite)- Improve locale routing based on filenames or special front matter #414 (jaredcwhite)
- Enhance front matter DSL with nesting and lambda value eval #398 (jaredcwhite)
- Add debug message when saving static files
- Improve resource engine compatibility in link tag and url_for helper #389 (jaredcwhite)
- Prevent
.js
matches with any file likefoo.js.txt.bat.png
#399 (nachoal)
- Change single quotes in script folder #406 (JuanVqz)
- Return ordered results for belongs_to array #390 (jaredcwhite)
- Bumped minimum recommended Node requirement to v12 and updated the docs for Homebrew installation on macOS.
- Remove pry and use binding.irb in dev console script
- Remove incremental generation #388 (jaredcwhite)
- Allow symbols for use in pagination/prototype front matter #386 (jaredcwhite)
- Ensure the data collection is read first #373 (jaredcwhite)
- Strip out newlines in generated package.json and index.js #369 (eclectic-coding)
- Resolve postcss-focus-within to v4 #366 (ayushn21)
- Performance refactor of the Webpack helper #382 (jaredcwhite)
- Several documentation improvments thanks to JuanVqz and debashis-biswal
- Resource: switch from default proc to preemptive defaults #359 (jaredcwhite)
- Ensure there aren't double-slashes in pagination links (jaredcwhite)
- Ensure summary content is html safe (jaredcwhite)
- Add missing comma in package.json which broken install #354
- Resource extension API along with basic summary feature #344 (jaredcwhite) Read the Docs
- Unintentional overwriting of data when using the Resource content engine #343 (jaredcwhite)
- Bug where in Liquid the
next_resource
method would mistakenly return the previous resource
- Configure sites in subfolders via base_path, not baseurl #348 (jaredcwhite)
- Swap babel for ESBuild and upgrade to Webpack 5 #334 (ayushn21)
- Change postcss.config.js stage from 3 to 2 #349 (juhat) Read the Docs
- Various improvements to the new Webpack config documentation
Final release of 0.21.0! See below for full changelog.
- Configuration change to remove Webpack warning regarding Babel #314 (eclectic-coding)
- Memoization for caching templates in
Bridgetown::Component
#326 (jaredcwhite) layout
method inResource::Base
#324 (jaredcwhite)- Include Bridgetown version in Webpack defaults #322 (ayushn21)
- Confirmation for overwriting postcss config in tailwindcss and bt-postcss bundled configurations #317 (ayushn21)
- Create new config directory and move Webpack defaults into it #316 (ayushn21)
- Fix the Bridgetown logger and other test improvements #328 (ayushn21)
- NOTE: the
Configuration file
log message is now output with adebug
log level instead ofinfo
. This means you will no longer see the config path in your terminal/logs unless you use the--verbose
flag.
- NOTE: the
- Install required packages in Webpack enable postcss tool #319 (ayushn21)
- Update Babel configuration to prevent overt warning #314 (ayushn21)
- Resolve issue with zombie templates in Pagination/Prototype logic
- Locale files now reload when the site regenerates
- Switch to using a Keep a Changelog format.
- Switch
plugins new
command to use MiniTest from the sample plugin repo. - Make configure command use Thor's apply method directly #293 (ayushn21)
- Resources configured not to output to a destination are now transformed as expected.
- The
previous_resource
method now returns the proper resource. - Fix warnings in plugin tests by checking if an ivar was defined #296 (ayushn21)
- Ensure Netlify script is set to executable. #302 (ayushn21)
- Consider the default branch from the git config when creating a new site or plugin. #294 (ayushn21)
- A bunch of global config accessors on site (like
lsi
,keep_files
, etc.) - Remove safe_yaml gem in favour of using Psych which is in the stdlib. #303 (ayushn21)
- Refactor old TODOs and deprecations
- Remove deprecated
sassify
/scssify
filters, add html_safe to theobfuscate_link
helper - Fix dotfiles or multiple extension permalinks (for the resource content engine) #292 (jaredcwhite)
- End-to-end Ruby front matter, templates, and data files (jaredcwhite) #285
- New
Bridgetown::Component
class with a ViewComponent-inspired API #268 (jaredcwhite) Read the Docs- Breaking Change: ERB now uses an output safety buffer to escape HTML in strings, same as in Rails. Read the Docs
- Relations for resources (belongs_to, has_many, etc.) #261 (jaredcwhite) Read the Docs
- Migrate to dart-sass since node-sass is deprecated #279 (eclectic-coding)
- EXPERIMENTAL (and opt-in): the Great Resource Content Engine PR has been merged. 135 files changed. Holy guacamole! #243 (jaredcwhite) Read the Docs
- Further improved Webpack integration by allowing multiple entry points and loading any manifest item with webpack_path helper #247 (jaredcwhite) Docs
- Exclude current post from LSI-powered related posts #253 (katafrakt)
- The
inspect
string forBridgetown::Site
is now lean and clean. - The history bug with the
bridgetown console
has been fixed! Now pressing your up arrow after entering the console will pull up all previous commands entered. Up, up, and away! - Support added for upcoming gem
bridgetown-mdjs
which will allow inline JS code blocks in Markdown similar in purpose to MDX (but for web components and other HTML-native solutions). Stay tuned!
- Fix css-loader's resolving of
/path/to/file
type URLs #240 (jaredcwhite)- Add documentation to explain why this change was necessary and what it enables for the future regarding Webpack's bundling of images.
- Introducing bundled configurations! Now some popular automations, including enhanced PostCSS and Tailwind CSS setups, are available directly through the Bridgetown CLI rather than being in a separate automations repo. Documentation here. Thanks Ayush
- Upgrade to Liquid 5.0 and remove previous backported
render
tag #224 (jaredcwhite)- Breaking Change: when using the
where
filter, the literals""``,
blank, and
empty` are now all equivalent.
- Breaking Change: when using the
- New plugin generator now prefers
main
overmaster
for default branch name #225 (ayushn21) - Use
ActiveSupport::DescendantsTracker
for managing class hierarchies of plugins (converters, builders, and generators) #218 (jaredcwhite) - Lots of documentation improvements — thanks Juan, Taha, and Ayush.
-
Website: Fix a grammar error in the Jamstack.md page on Bridgetown website (taha)
-
Fix for issue #73 (less likely to hit ActiveSupport error when
bridgetown
command is run withoutbundle exec
prefixed)
- Improve our active ActiveSupport support =) #215 (jaredcwhite)
- Add
filters_scope
option to liquid_filter DSL #214 (jaredcwhite) - Deprecate
PageWithoutAFile
class. It will be removed in v0.20. - Specify Webrick as a gem dependency now that it's no longer in the stdlib in Ruby 3
- Website: documentation on how to install Bridgetown in Fedora (bkmgit)
- Add modules resolve paths to default webpack config #206 (ayushn21)
- Add an empty PostCSS configuration option to the "new" command #190 (ayushn21)
- Fix obfuscate link syntax #203 julianrubisch)
- Website: Fix class declaration keyword in liquid tags and helpers docs #198 (ayushn21)
- Website: The Great Unification (removing all div-ision-s) #191 (jaredcwhite)
- Website: Fix typo in generators page in docs #195 (ayushn21)
- Add mailto:--tag to generated footer #192 (pascalwengerter)
- Change the
name
attribute of the defaultpackage.json
to be inferred from the path passed tobridgetown new
#188 (ayushn21)
- Change the logging level for "Executing inline Ruby…" messages to the debug level #184 (ianbayne)
- Add yarn clean script to package.json #182 (andrewmcodes)
- Fix dash obfuscation in obfuscate filter #181 julianrubisch)
- Ensure HashWithDotAccess converts to Hash for Liquid templates
- Bugfix: use HashWithDotAccess when parsing JSON in the HTTP Builder DSL
- Bugfix: reset payload for each Liquid template conversion
- Change site.layouts hash to dot access
- Bugfix: For template engine converters, set template_engine frontmatter automatically #177 (jaredcwhite)
- Bugfix: Resolve bug in converter error notifications
- Bugfix: Use capture helper for liquid_render #174 (jaredcwhite)
- Configurable template engines on a per-site or per-document basis #157 (jaredcwhite)
- Set a
template_engine
key in your config file. The default is assumed to be liquid, but you can change it toerb
(or other things in the future as this gets rolled out). Once that is set, you don't even have to name all your ERB files with an.erb
extension—it will process even.html.
,.md
,.json
, etc. It also means Liquid won't try to "preprocess" any ERB files, etc. - Regardless of what is configured site-wide, you can also set the
template_engine
in front matter (whether that's in an individual file or using front matter defaults), allowing you to swap out template engines wherever it's needed. - Front matter defaults support setting
template_engine
to none or anything else for a part of the source tree. - Liquid pages/layouts with a
.liquid
extension are processed as Liquid even if the configured engine is something else. - Breaking change: previously it was possible in Liquid for a child layout to set a front matter variable and a parent layout to access the child layout's variable value, aka
{{ layout.variable_from_child_layout }}
. That's no longer the case now…each layout has access to only its own front matter data. - Breaking change: a few pre-render hooks were provided access to Liquid's global payload hash. That meant they could alter the hash and thus the data being fed to Liquid templates. The problem is that there was no visibility into those changes from any other part of the system. Plugins accessing actual page/layout/site/etc. data wouldn't pick up those changes, nor would other template engines like ERB. Now if a hook needs to alter data, it needs to alter actual Ruby model data, and Liquid's payload should always reflect that model data.
- Set a
- Add render method for Ruby templates #169 (jaredcwhite)
- Add Zeitwerk loaders for component folders (any
*.rb
file will now be accessible from Ruby templates). Note: Zeitwerk will not load classes from plugins if they're already present in the source folder, so if you want a component to "reopen" a class from a plugin, you'll need torequire
the plugin class explicitly in your local component. - Allow ERB capture to pass object argument to its block.
- Breaking change: the previous
<%|= output_block do %>…<%| end %>
block style is out in favor of:<%= output_block do %>…<% end %>
, so you don't have to change a thing coming from Rails. Note: if you're coming from Middleman where blocks output by default without<%=
, you'll need to switch to Rails-style block expressions. - Breaking change: the
markdownify
helper in ERB now just returns a string rather than directly outputting to the template, so use<%= markdownify do %>…<% end %>
.
- Add Zeitwerk loaders for component folders (any
- Site documents array should exclude static files #168 (jaredcwhite)
- Obfuscate link filter #167 (julianrubisch)
- Add link/url_for and link_to helpers #164 (jaredcwhite)
- False value in front matter is now supported to ensure no layout is rendered #163 (jaredcwhite)
- Support per-document locale permalinks and config #162 (jaredcwhite)
- This isn't yet documented because an even more comprehensive i18n solution and announcement is forthcoming.
- Add blank src/images folder #172 (jaredcwhite)
- chore: Prototype pages optimizations and improvements to YARD docs #171 (jaredcwhite)
- Use HashWithDotAccess::Hash for all data/config hashes #158 (jaredcwhite)
- Add view reference to template helpers object #153 (jaredcwhite)
- Support a _pages folder in the source tree #151 (jaredcwhite)
- Add reading_time filter/helper #150 (jaredcwhite)
- Rename pager variable to paginator #148 (ParamagicDev & jaredcwhite)
- Add Class Map helper and usage info in docs #147 (jaredcwhite)
- Helper DSL for plugins (similar to the Liquid Filter DSL) #135 (jaredcwhite)
- Process data cascade for folder-based frontmatter defaults #139 (jaredcwhite)
- Execute block-based filters within object scope #142 (jaredcwhite)
- Provide a Liquid find tag as easier alternative to where_exp #101 (jaredcwhite)
- First pass at implementing site locales and translations #131 (jaredcwhite)
- Add international character slug improvements #138 (jaredcwhite & swanson)
- Switch to processing Ruby front matter by default #136 (jaredcwhite)
- Switch from AwesomePrint to AmazingPrint #127 (jaredcwhite)
- Fix filter plugin doc #130 (julianrubisch)
- Try out a couple of improvements for Lighthouse score #128 (jaredcwhite)
- Adding netlify.toml to add caching & hint headers #112 (MikeRogers0)
- Final release of 0.16! Yipee yay! Keep reading for what's new since 0.15.
(0-16-stable
branch)
- Fix the "add_yarn_for_gem" action #114 (jaredcwhite)
- Call GitHub API to determine default branch name #115 (jaredcwhite)
- Add capture helper to ERB templates
- Switch to Erubi for ERB template parsing
- Move webpack parsing code to the Utils module and enable for ERB templates #105 (jaredcwhite)
(0-16-stable
branch)
- Improve handling of Webpack manifest errors #96 (ParamagicDev)
- Add a class_map Liquid tag #99 (ParamagicDev)
- Update pagination documentation #98 (andrewmcodes)
- Add ERB template support (with Slim/Haml coming as additional plugins) #79 (jaredcwhite)
- Add/update Yard documentation for Site concerns #85 (ParamagicDev)
- Resolve deprecation warnings for Ruby 2.7 #92 (jaredcwhite)
- Switched the default branch from master to main
- Remove the Convertible concern and refactor into additional concerns #80 (jaredcwhite)
- Reducing animation for users who prefer reduced motion #84 (MikeRogers0)
- Final release of 0.15! Woo hoo! Keep reading for what's new since 0.14
(0-15-stable
branch)
- Add documentation for Cypress testing #75 (ParamagicDev)
- Add missing related_posts to Document drop #78 (jaredcwhite)
- Use AwesomePrint gem for console #76 (jaredcwhite)
(0-15-stable
branch)
- New documentation on plugin development (including
bridgetown plugins new
), themes, automations, Liquid components, etc. now on beta website. Beta site also showcases the upcoming quick search plugin which will be made available to all site devs. - Optimizations made internally to the Bridgetown test suite.
- Bridgetown website experiment with test suite #69 (jaredcwhite)
- Fix for GitHub branch URLs in automations #66 (ParamagicDev)
- Migrate CLI from Mercenery to Thor and Enable Automations #56 (jaredcwhite)
- First implementation of Liquid Components as well as a preview tool on the Bridgetown website #26 (jaredcwhite)
- Deprecate the include tag and standardize around the render tag #46 (jaredcwhite)
- Patch to fix PluginManager
yarn add
bug when there is nodependencies
key inpackage.json
- Use
liquid-render-tag
backport gem and remove references to temporary GitHub fork of Liquid #52 (jaredcwhite) - Refactor
Bridgetown::Site
into multiple Concerns #51 (jaredcwhite) - Fix for
start.js
to eliminate junk terminal characters (jaredcwhite) - New Unified Plugins API with Builders, Source Manifests, and Autoreload #41 (jaredcwhite)
- Add a Posts page to the new site template #39 (andrewmcodes)
- Add
titleize
Liquid filter and improveslugify
filter description #38 (jaredcwhite) - Add Bundler cache to the build GH action to improve test speed #40 (andrewmcodes)
- Bump minimum Node requirement to 10.13 (jaredcwhite)
- Configurable setting to allow executable Ruby code in Front Matter #9
- Honor the configured site encoding when loading Liquid components #33
- Allow configuration file as well as site metadata file to pull YAML options out of an environment specific block #34
- Add Faraday to the default set of gems that get installed with Bridgetown #30
- Add blank favicon.ico file to prevent error when generating a new site for the first time #32 (jaredmoody)
- Update the minimum Ruby version requirement to 2.5
- Add Concurrently and Browsersync for live reload, plus add new Yarn scripts #21
- Add some color to terminal output
- Add code name for minor SemVer version updates
- Add components source folder to sass-loader include paths
- Include missing commit from PR #14
- Add a git init step to
bridgetown new
command #18 - Update sass-loader webpack config to support .sass #14 (jaredmoody)
- Add customizable permalinks to Prototype Pages (aka
/path/to/:term/and/beyond
). Use hooks and in-memory caching to speed up Pagination. Inspired by use cases like this… #12
Prototype Pages
You can now create a page, say categories/category.html
, and add a prototype
config
to the Front Matter:
layout: default
title: Posts in category :prototype-term
prototype:
term: category
And then all the site's different categories will have archives pages at this location
(e.g. categories/awesome-movies
, categories/my-cool-vacation
, etc.) It enables
pagination automatically, so you'd just use paginator.documents
to loop through the
posts. See the docs here.
Automatic Yarn Step for New Plugins
Now with Gem-based plugins for Bridgetown, all you need to do is add yarn-add
metadata matching the NPM package name and keep the version the same as the Gem
version. For example:
spec.metadata = { "yarn-add" => "my-awesome-plugin@#{MyAwesomePlugin::VERSION}" }
With that bit of metadata, Bridgetown will know always to look for that package in
the users' package.json
file when they load Bridgetown, and it will trigger a
yarn add
command if the package and exact version number isn't present.
Add {% webpack_path [js|css] }
tag which pulls in the Webpack manifest and finds
the hashed output bundles. Also works in concert with the Watcher so every time
Webpack rebuilds the bundles, Bridgetown regenerates the site.
Switch gears on experimental component functionality.
Going with a new rendercontent
tag instead of component
. It is based on
Shopify's new Render tag which recently got introduced to Liquid. Note that the
feature hasn't been officially released via the Liquid gem, so we need to use the
main branch that's been forked on GitHub with a higher version number).
- Update table styling in Documentation
- Now showing the plugins_dir in log output if it's present
- With the Posts Reader changes, now you can add a Front Matter Default of
_posts/drafts
havingpublished: false
, put a bunch of draft posts in_posts/drafts
and you're done! - New
-U
flag makes it easier to specify generatingpublished: false
docs. - The Posts Reader has been reworked so that files with valid front matter can
be read in even if there's no YYYY-MM-DD- at the beginning. In addition, static
files are also supported, which means if you can create a folder (
inlinefiles
), drop a post in along with a bunch of images, and use![alt](some-image.jpg)
relative paths, it'll work! Big improvement to Markdown authoring. (You'll need to use a permalink in a specific manner though, e.g.permalink: /inlinefiles/:title:output_ext
) If you need a static file not to get copied to the destination, just add an_
at the beginning and it'll get ignored. - Collections no longer allow displaying a full server file path via Liquid.
{{ page.collection }}
now returns a CollectionDrop, not the label of the collection. Using thejsonify
filter on a document however still returns just the label for thecollection
key.- Add favicon to website
- Add mobile improvements to website
- Add back working feature tests for basic pagination
- Convert to Ruby 1.9+
symbol: value
hash syntax - Add Swup to website for some slick transitions
- Add "where_query" feature to Paginate. For example. specify
where_query: [author, sandy]
in the pagination YAML to filter by that front matter key. - Update the Jamstack page in the docs.
- Fix bug where paginator wouldn't properly convert Markdown templates
- Add Bridgetown::Paginate gem to monorepo
- Add CI build workflow via GitHub actions
- Clean up Rake tasks
- Add documentation around gem releases and contributing PRs
- Moved the default plugins folder from
src/_plugins
to simplyplugins
- Remove
gems
andplugins
keys from configuration - Move the cache and metadata folders to the root dir
- Define a default data file for site metadata:
src/_data/site_metdata.yml
that's accessible via{{ site.metadata.title }}
(for example) - Add relevant changes to site template for
bridgetown new
- Continue work on repo cleanup and documentation
- Add
bridgetown console
command to invoke IRB with the current site (similar to the Rails console command). Plugins, gems, will be loaded, etc.
- Remove
em-websocket
dependency. - Change _config.yml to bridgetown.config.yml (but _config.yml will still work for compatibility purposes).
- New Bridgetown logo and further Bridgetown URL updates.
- Many new and improved docs.
- Added a
component
Liquid tag which extends the functionality of include tags. - Added a new
bridgetown-website
project to the repo, which of course is a Bridgetown site and will house the homepage, documentation, etc.
- Moved all Bridgetown code to
bridgetown-core
, the idea being this will now be a monorepo housing Core plus a few other official gems/projects as time goes on. Users will install thebridgetown
gem which in turns installsbridgetown-core
as a dependency.
- Completed comprehensive code audio and changed or removed features no longer required for the project. Fixed and successfully ran test suite accordingly.
- First version after fork from pre-released Jekyll 4.1