Skip to content
CAI
Software that uses CAICheck a score

bridgetownrb/bridgetown

52.5

Adequate · 19 September 2026

16.7k

lines of production code

Ruby

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Bridgetown is a modern, Ruby-based static site generator that provides a comprehensive framework for building and deploying websites. It features a flexible plugin architecture with priority-based builders, supports multiple templating engines including Liquid, ERB, and Serbea, and integrates native server-side rendering via a Roda-based routing system. The system handles asset bundling with esbuild, manages content through a robust resource model with caching, and includes tools for internationalization, pagination, and dynamic data handling.

How it got here

2020 — Bridgetown core migration and feature expansion

49 changes.

This period focused on the comprehensive migration from Jekyll to Bridgetown, involving the removal of legacy Jekyll code, test suites, and tooling while establishing new core infrastructure like the Samovar CLI, multi-engine support, and a builder plugin system. The work also included significant architectural refactoring of the site generation pipeline, the introduction of new features such as persistent caching and dynamic pagination, and the modernization of the default site template and website frontend.

2021–2022 — Roda-based server and structured data

39 changes.

This period focused on overhauling the core architecture by introducing a Roda-based server for dynamic routing and server-side rendering, alongside a new Model abstraction for structured data management. The frontend tooling was standardized around esbuild, and the project expanded its configuration ecosystem with bundled setups for SEO, Lit, and testing. Concurrently, the documentation website was completely redesigned to showcase these new capabilities using the Serbea templating engine.

2023–2024 — Core architecture and extensibility

5 changes.

This period focused on modularizing the framework's core by extracting foundational utilities into a standalone library and refactoring front matter handling into an extensible loader system. These changes introduced support for pure Ruby layouts and established a more maintainable architecture for parsing and rendering content.

Features

Add bundled Cypress configuration and Rake tasks for end-to-end testing

Bridgetown now includes a pre-configured Cypress setup to simplify end-to-end testing. This change adds a default \cypress.json\ configuration pointing to the local development server, along with example integration tests (such as a navbar link check), fixtures, and support files. It also introduces Rake tasks (\cy:open\, \cy:run\, \cy:test\, \cy:test:ci\) that allow users to easily launch the Cypress test runner or execute tests headlessly, automatically starting and stopping the Bridgetown server in the test environment.

bridgetown-core/lib/bridgetown-core/configurations/cypress · high confidence

Added bridgetown CLI binstubs

The project now includes executable binstubs (\bin/bridgetown\ and \bin/bt\) that delegate to the \bridgetown-core\ gem. This allows users to run the Bridgetown command-line interface directly from the project directory without needing to invoke \bundle exec\ explicitly.

bridgetown-website/bin · high confidence

Added bundled Render configuration for static site deployment

A new \render.yaml.erb\ template has been added to the core library, providing a pre-configured deployment setup for the Render platform. This configuration defines a static web service that builds using \bin/bridgetown deploy\ and serves the \./output\ directory, while automatically injecting security headers (such as X-Frame-Options and HSTS) and setting the \BRIDGETOWN\_ENV\ to production. The file also includes commented-out examples for hybrid deployments, database integration, and API routing, allowing users to easily adopt or extend this setup for more complex architectures.

bridgetown-core/lib/bridgetown-core/configurations/render · high confidence

Added local development and CI automation scripts

The bridgetown-builder project now includes a set of executable shell scripts to streamline local development and continuous integration workflows. Users can run \script/cibuild\ to execute formatting and tests in sequence, \script/fmt\ to run Rubocop with suggestions for auto-fixing, \script/test\ to execute the test suite (with optional file targeting), and \script/minitest\ to invoke the test runner directly. These scripts standardize how developers format code and run tests locally, mirroring the CI environment.

bridgetown-builder/script · high confidence

Added site builder template for custom plugin development

The site template now includes a \SiteBuilder\ class and a \builders\ directory, providing a structured starting point for users to define custom builders by subclassing \SiteBuilder\ within the plugins folder.

_bridgetown-core/lib/site\template/plugins · high confidence

Introduce Bridgetown Foundation as a standalone Ruby library with core refinements and utilities

Bridgetown Foundation is now available as a separate gem, providing the core Ruby refinements and utilities previously bundled within the main framework. This includes a \Bridgetown.refine\ API for wrapping objects to use refinements, a \within?\ method for intuitive value comparisons, string inflection methods (camelize, pluralize, etc.) via Dry::Inflector, and helper modules for ANSI colorization, safe translations, and PID tracking. The library also ships with a custom Minitest expectation suite (\IntuitiveExpectations\) and a Zeitwerk-based autoloader, establishing the foundational layer for the rest of the Bridgetown ecosystem.

bridgetown-foundation · high confidence

Introduce Model and Origin abstractions for structured data handling

Bridgetown now provides a new \Bridgetown::Model\ API that allows site builders to define, load, and persist structured data objects beyond standard static files. The \Model::Base\ class serves as the foundation, offering methods to find models by ID, save changes back to their source, and convert models into Jekyll-compatible resources for rendering. This system is backed by an \Origin\ hierarchy that abstracts data sources: \RepoOrigin\ handles reading and writing YAML, JSON, CSV, and Ruby data files from the site's source directory, \BuilderOrigin\ supports dynamic data generated by Builder plugins, and \PluginOrigin\ enables access to data packaged within source manifests. This change enables more programmatic and dynamic data management within Bridgetown sites.

bridgetown-core/lib/bridgetown-core/model · high confidence

Introduce bridgetown-paginate gem for content pagination

The new bridgetown-paginate gem provides a complete pagination system for Bridgetown sites. It allows users to paginate collections of content (such as posts or custom collections) by configuring options like items per page, sorting, and filtering by tags, categories, or locales. The gem integrates via site and page hooks to automatically generate paginated pages, supports customizable URL structures with \:num\ placeholders, and exposes a \Paginator\ object in Liquid templates for navigating pages, accessing previous/next links, and iterating over content.

bridgetown-paginate · high confidence

Introduce file-based dynamic routing via \`src/\_routes\`

Users can now define dynamic routes using files in the \src/\_routes\ directory, which are automatically processed by the new Roda plugin. This feature supports segment-based parameters (e.g., \\[slug\].erb\ maps to \:slug\), locale handling, and front-matter data extraction, allowing for SSR-compatible, file-driven route definitions that integrate directly with Bridgetown's model and template systems.

bridgetown-routes/lib/roda · high confidence

Introduce persistent disk-backed caching and automated destination cleanup

Bridgetown now includes a new \Bridgetown::Cache\ class that persists build artifacts to disk using SHA2 hashes and Ruby Marshal, significantly speeding up rebuilds by avoiding redundant work. Alongside this, a new \Bridgetown::Cleaner\ class automatically manages the site's destination directory, ensuring obsolete files are removed before each build while respecting \keep\_files\ configurations. These changes provide a more robust and efficient build lifecycle for users.

bridgetown-core/lib/bridgetown-core · high confidence

Introduces Builder plugin system with priority-based execution

The bridgetown-builder library now registers a site pre-read hook that discovers and instantiates Builder plugins (including those from the PluginBuilder registry and SiteBuilder descendants), sorting them by priority before execution. It also includes a pre-reload hook to clean up anonymous generator classes to support autoreloading.

bridgetown-builder/lib · high confidence

Introduction of a plugins directory with a site builder scaffold

The website now includes a dedicated plugins directory containing a SiteBuilder class that subclasses Bridgetown::Builder, providing a scaffold for custom site builders. A text file is also added to clarify that actual plugin files should be placed in the src/\_plugins directory instead.

bridgetown-website/plugins · high confidence

New Builder DSL modules for generators, helpers, hooks, and resource management

The builder DSL now includes dedicated modules for defining generators, template helpers, build hooks, and dynamic resources. Builders can use the \generator\ method to create and register custom generators that run during the build process, and the \helper\ method to expose builder methods as helpers in view templates. The \hook\ method allows registering callbacks for specific build events (like \:post\_read\ or \:post\_render\) with optional priority, while \add\_data\ provides a shorthand for adding site data during the \:post\_read\ phase. Additionally, the \add\_resource\ method enables builders to dynamically create and register new resources into collections on the fly, and \define\_resource\_method\ allows extending resource classes with custom methods. These changes provide a more structured and explicit way to integrate custom logic into the Bridgetown build lifecycle.

bridgetown-builder/lib/bridgetown-builder/dsl · high confidence

New CLI automation helpers and build configuration options

The CLI now includes a new \Automations\ concern that provides helper methods for setting up sites and plugins, such as creating builders, managing JavaScript imports, adding Ruby gems and NPM packages, and applying remote automation scripts. Additionally, new concerns expose CLI options for specifying build sources, destinations, plugins directories, and environment overrides, while \GitHelpers\ ensures new repositories are initialized with the user's configured default branch.

bridgetown-core/lib/bridgetown-core/commands/concerns · high confidence

New CLI entry points with environment flag support and custom command loading

The \bridgetown\ and \bt\ (shortcut) executable scripts are introduced to bootstrap the CLI. The main entry point now supports the \-e\ and \--environment=\ flags to set the \BRIDGETOWN\_ENV\ variable, allows version display via \-v\/\--version\, and loads custom commands from a \config/custom\_commands.rb\ file if present. It also handles specific Samovar errors with formatted output and delegates to the application parser.

bridgetown-core/bin · high confidence

New CLI tasks for secret generation, frontend watching, and date formatting

The Bridgetown CLI now includes several new rake tasks to streamline development workflows. Users can generate a secure secret key using the \secret\ task, which outputs a 64-byte hex string for sessions and tokens. A new \frontend:watcher\ task allows independent management of the frontend bundler (supporting both esbuild and other types), with logic to handle sidecar mode or background execution. Additionally, a \date\ task is introduced to print the current time in the site's configured timezone, formatted for easy use in front matter. The \roda:routes\ task remains available to print the application's route map.

bridgetown-core/lib/bridgetown-core/tasks · high confidence

New Liquid tags for asset paths, class mapping, content finding, and localization

This update introduces several new Liquid tags to the core templating engine. The \asset\_path\ tag resolves paths for JavaScript and CSS assets from the esbuild manifest (while \webpack\_path\ is retained as a deprecated alias that raises an error). A \class\_map\ tag allows conditional CSS class application based on truthy/falsy variables. The \find\ tag provides a simplified syntax for filtering arrays by conditions. Localization is supported via new \l\ (localize) and \t\ (translate) tags. Additionally, a \with\ tag enables named content regions for component rendering, and a \ruby\_render\ tag allows direct instantiation and rendering of Ruby component classes.

bridgetown-core/lib/bridgetown-core/tags · high confidence

New Ruby DSL for configuration initializers

Bridgetown now supports a Ruby DSL (configuration\_dsl.rb) for defining site configuration, allowing users to initialize plugins, register hooks, set timezones, and configure Roda server options using Ruby code instead of (or alongside) YAML. This change introduces methods like \init\, \hook\, \timezone\, and \roda\ to the configuration scope, enabling more programmatic and flexible setup of the site's behavior during initialization.

bridgetown-core/lib/bridgetown-core/configuration · high confidence

New author listing and individual author pages

The website now includes dedicated pages for authors. An index file generates a JSON data source listing all authors, while a new template renders individual author pages that display their name, link to their website or social profiles (Mastodon or GitHub), and a paginated list of their articles.

_bridgetown-website/src/\pages/authors · high confidence

New bundled Lit configuration with sidecar CSS support

Bridgetown now includes a bundled configuration for Lit web components, providing a ready-to-use setup for server-side rendering and frontend bundling. This configuration introduces support for sidecar CSS files (\.lit.css\), allowing developers to import component-specific styles directly alongside their Lit elements via a new esbuild plugin. The bundle includes example components, an entry point for automatic component discovery, and SSR build scripts to streamline integration.

bridgetown-core/lib/bridgetown-core/configurations/lit · high confidence

New bundled configurations for PostCSS, SEO, Feed, Lit, and Web Awesome

Bridgetown now includes several new bundled configuration scripts to streamline setup for common features and frameworks. Users can now easily enable SEO metadata and RSS feeds via the new \seo\ and \feed\ configurations, which automatically install the necessary gems and inject helper tags into the site's head file. Frontend tooling is enhanced with a \postcss\ configuration that sets up a standard plugin chain (mixins, color functions, autoprefixer, cssnano) and a \purgecss\ builder that optimizes CSS output during builds. Component development is supported through new \lit\ and \webawesome\ configurations, which install respective npm packages, configure esbuild plugins, and provide starter components. Additionally, new configurations are available for testing (\minitesting\ with Minitest and Rack::Test), deployment (\gh-pages\, \netlify\, \render\), and CSS utilities (\open-props\). Note that the previous \shoelace\ and \tailwindcss\ bundled configurations have been removed or redirected to external community repos.

bridgetown-core/lib/bridgetown-core/configurations · high confidence

New development and maintenance utility scripts

The bridgetown-core/script directory now includes a suite of new shell and Ruby scripts to streamline development workflows. These include \backport-pr\ for automating pull request backports to stable branches, \console\ for launching an interactive IRB session with the project loaded via Bundler, \cibuild\ for orchestrating CI tasks like formatting and testing, \fmt\ for running Rubocop, \memprof\ for memory profiling, \minitest\ for running tests, \test\ for executing the test suite, and \vendor-mimes\ for syncing MIME type definitions. A \branding\ script is also added to display project ASCII art.

bridgetown-core/script · high confidence

New documentation components for multilingual code examples and sidebar navigation

The documentation site now includes a new \multilang\ component that displays code examples in tabs for multiple languages (Ruby, ERB, Liquid, Serbea, YAML), improving readability for users comparing syntax across different templating engines. Additionally, a new \sidebar\ component has been introduced to render the documentation navigation with improved accessibility via \aria-current\ attributes, and the \variables\_table\ component has been migrated to the new component structure with updated styling for better mobile responsiveness.

_bridgetown-website/src/\components/documentation · high confidence

New documentation, note, plugin grid, and post card components for the website

The website now includes new Bridgetown components to structure content presentation: a documentation sidebar and variables table for API reference pages, a configurable note/alert component that displays contextual icons based on its type, a plugins grid that lists plugins with their versions and author details, and a post card component that displays blog post metadata (title, category, date) with a read-more link. These components form the visual building blocks for the new site's documentation and blog sections.

_bridgetown-website/src/\components · high confidence

New frontend JavaScript entry point and UI components

The website's frontend JavaScript bundle now explicitly imports Shoelace web components (such as buttons, dialogs, and tabs) and configures the Remixicon icon library. It introduces a keyboard shortcut (Cmd/Ctrl+K) to focus the search input, dynamically loads the Quick Search plugin, and registers new custom elements: a theme picker that respects OS-level dark mode preferences and persists user choice, and a wiggle-note component that animates when scrolled into view.

bridgetown-website/frontend/javascript · high confidence

New server template with Roda-based dynamic routing

The site template now includes a \server\ directory containing a \RodaApp\ class that initializes the Roda web framework with the \bridgetown\_server\ plugin, enabling file-based dynamic routes via \src/\_routes\. A sample route file (\routes/hello.rb.sample\) is provided to demonstrate how to define custom GET endpoints, allowing users to add server-side logic and dynamic API routes directly within their project structure.

_bridgetown-core/lib/site\template/server · high confidence

New site template includes server configuration files and initializers

The site template now ships with explicit configuration files for production web servers (Puma and Falcon) and a new \initializers.rb\ file for site-wide settings. Users generating a new site will now have ready-to-use Puma configuration for handling workers, threads, and logging, as well as a Falcon configuration for production deployment. Additionally, the new \initializers.rb\ provides a structured place to configure the template engine (defaulting to ERB), URL, timezone, and optional features like SSR or routes, replacing or supplementing the previous configuration approach.

_bridgetown-core/lib/site\template/config · high confidence

New site templates with ERB, Serbea, and Liquid support

The default site template now includes starter layouts and components for ERB, Serbea, and Liquid templating engines. Users generating a new site will receive a consistent structure featuring a shared navigation bar, default page/post layouts, and head/footer partials, allowing them to choose their preferred templating syntax from the start.

_bridgetown-core/lib/site\template/TEMPLATES · high confidence

New template engine converters for ERB, Liquid, Markdown, Ruby, and Serbea

The site now supports rendering content using five distinct template engines: ERB, Liquid, Markdown, pure Ruby (.rb), and Serbea. Each engine is handled by a dedicated converter in the core library, allowing users to choose their preferred syntax for layouts and content files. ERB and Serbea templates benefit from optimized output buffering and partial rendering, while Liquid templates include payload configuration and caching for partials. Markdown conversion supports Kramdown and custom processors with caching. Pure Ruby templates allow direct Ruby code execution within templates, and Serbea provides a pure Ruby syntax with helper delimiters.

bridgetown-core/lib/bridgetown-core/converters · high confidence

New test helper for Bridgetown integration testing

The bridgetown gem now includes a dedicated test helper (lib/bridgetown/test.rb) that simplifies writing integration tests for Bridgetown sites. This helper sets up the Minitest environment, boots the Rack application, and provides convenient methods like \html\ and \json\ for parsing responses, along with access to the site configuration and routes.

bridgetown · high confidence

This change introduces several new utility modules in the core library. The \Aux\ module manages background processes (like frontend build tools) by tracking their PIDs and handling their output with optional color coding. The \Initializers\ module registers core setup hooks, including support for external sources, server-side rendering (SSR), route parsing, and a new wikilinks feature. The \Wikilinks\ module itself implements a parser that converts wiki-style \\[\[links\]\]\ in Markdown content into standard HTML links, handling anchors and display text. Additionally, new modules include \LoadersManager\ for managing Zeitwerk autoloaders, \RequireGems\ for graceful dependency loading, \RubyExec\ for evaluating inline Ruby data, and \SmartyPantsConverter\ for typographic HTML conversion.

bridgetown-core/lib/bridgetown-core/utils · high confidence

New website assets for the Bridgetown Center program and 2022 branding

The website now includes new image assets to support the newly announced Bridgetown Center program and the updated 2022 brand identity. This change adds a \bridgetown-center.svg\ graphic to represent the program, a \bridgetown-logo-2022.svg\ file for the current logo, and a \community.svg\ icon for community-related sections. These files are placed in the \src/images\ directory to be served by the site.

bridgetown-website/src/images · high confidence

Prototype pages for dynamic paginated archives

Bridgetown now supports 'Prototype' pages, a new feature that allows you to define a single template page in front matter to automatically generate paginated archive pages for categories, tags, or other indexed values. This generator scans for pages with a \prototype\ hash configuration, validates search terms and collections, and dynamically creates individual pages for each matching term (e.g., a page for every tag). The implementation includes hooks for fast refresh during development, ensures pagination is enabled for these generated pages, and supports dynamic title placeholders like \:prototype-term-titleize\ and \:prototype-data-label\ to customize the output for each generated archive.

bridgetown-core/lib/bridgetown-core/generators · high confidence

Support for \`==\` and \`::\` text highlighting in Markdown

Users can now use double equals (\==\) or double colons (\::\) to wrap text, which will be rendered as a \\<mark\>\ element in the final output. This feature is implemented via a custom GFM parser extension that detects these delimiters and applies inline highlighting, provided the \mark\_highlighting\ option is enabled.

bridgetown-core/lib/bridgetown-core/kramdown · high confidence

Support for pure Ruby (.rb) layouts and refactored front matter loading

Bridgetown now supports using pure Ruby files (.rb) as layouts, allowing developers to define front matter and content using Ruby DSL syntax instead of YAML. This capability is enabled by new front matter loaders that process .rb files, integrating with the existing YAML loader. The front matter handling logic has been refactored into a dedicated \Defaults\ class and a loader registry, ensuring that front matter defaults are consistently accessible via dot notation and that the loading process is extensible. Users can now leverage Ruby's expressive power for layout definitions while maintaining compatibility with existing YAML-based workflows.

_bridgetown-core/lib/bridgetown-core/front\matter · high confidence

Removals

Removal of default site scaffolding and core library files

The default site scaffolding template (including the blank template, default layout, styles, and index page) has been removed from the library. Additionally, the core Bridgetown library files (such as bridgetown.rb, cache.rb, cleaner.rb, collection.rb, and command classes) are deleted from this location, indicating a structural shift in how the library is packaged or distributed.

lib/bridgetown · high confidence

Removal of development and CI helper scripts

The repository has removed a suite of local development, testing, and CI automation scripts, including \script/backport-pr\, \script/bootstrap\, \script/cibuild\, \script/console\, \script/cucumber\, \script/default-site\, \script/fmt\, \script/memprof\, \script/profile-docs\, \script/proof\, \script/rubies\, \script/rubyprof\, \script/stackprof\, \script/test\, \script/travis\, and \script/vendor-mimes\. These scripts previously provided utilities for running test suites, formatting code with RuboCop, profiling Jekyll builds, managing Docker-based CI environments, and vendoring MIME type configurations; their removal eliminates these local tooling capabilities.

script · high confidence

Removal of internal Rake task files

Deleted the internal Rake task files \profile.rake\, \release.rake\, and \site.rake\. This removes the ability to run local development tasks for memory profiling, gem release packaging, and Jekyll site generation/previewing directly from the repository's Rake namespace.

rake · high confidence

Removal of legacy Cucumber support files

The custom Cucumber formatter and helper modules located in features/support have been removed. This eliminates the previous custom test output formatting and the specific Jekyll execution helpers that were previously used to run and verify Jekyll commands during feature tests.

features/support · high confidence

Removal of legacy Jekyll feature tests

The \features/\ directory has been completely removed, deleting all Cucumber test scenarios for core Jekyll capabilities including caching, collections, site creation, data loading, draft posts, embed filters, frontmatter defaults, syntax highlighting, and hooks. This cleanup eliminates the legacy test suite as part of the transition to Bridgetown.

features · high confidence

Removal of the legacy executable entry point

The \exe/bridgetown\ script, which previously served as the main entry point for the command-line interface, has been removed. This change eliminates the legacy executable structure, aligning with the project's cleanup and reorganization efforts.

exe · high confidence

Removed benchmark scripts

The benchmark directory has been removed, deleting all Ruby scripts used to compare performance of Liquid processing, path handling, string operations, and other internal optimizations.

benchmark · high confidence

Architecture

Refactored front matter parsing into dedicated loader classes

The front matter handling logic has been restructured into a modular loader system within \bridgetown-core/front\_matter/loaders\. This change introduces a \Base\ abstract class and specific implementations for \YAML\ (parsing standard triple-dash delimited metadata) and \Ruby\ (parsing fenced code blocks or ERB/Serbea indicators). This refactoring isolates the parsing behavior for different data syntaxes, making the core more maintainable and extensible for future format support.

_bridgetown-core/lib/bridgetown-core/front\matter/loaders · high confidence

Relocated Roda server logic into a dedicated bridgetown\_server plugin

The Bridgetown server implementation has been moved from the core library into a new \bridgetown\_server\ Roda plugin located in \bridgetown-core/lib/roda/plugins\. This change introduces a suite of new plugins—including \bridgetown\_ssr\, \flashier\, \ssg\, \method\_override\, and \initializers\—to handle server-side rendering, static file serving, session management, and error handling. For users, this means the server's routing, request processing, and error display logic are now encapsulated within this specific plugin structure, replacing the previous inline or middleware-based approach.

bridgetown-core/lib/roda · high confidence

Site logic refactored into modular concerns

The monolithic Site class has been decomposed into a set of focused concerns (Configurable, Content, Extensible, FastRefreshable, Localizable, Processable, Renderable, SSR, and Writable). This structural change organizes site behavior into distinct responsibilities—such as configuration management, content processing, rendering, and fast-refresh handling—making the codebase more maintainable and easier to extend without altering the external API.

bridgetown-core/lib/bridgetown-core/concerns/site · high confidence

Behavioural changes

Add RuboCop configuration, YARD setup, and Open Props template

This change introduces a dedicated RuboCop configuration file (.rubocop.yml) to manage linting rules and exclusions specific to the bridgetown-core gem, alongside a .yardopts file to standardize YARD documentation generation. It also adds a Rakefile to streamline testing and documentation tasks, and includes a new Open Props CSS template (variables.css.erb) that conditionally imports styles based on the frontend bundler type.

bridgetown-core · high confidence

Benchmark suite migrated to Bridgetown core with new performance tests

The benchmark suite has been moved into the bridgetown-core directory and updated to test Bridgetown instead of Jekyll. Several new benchmarks were added to measure the performance of path sanitization, string concatenation and replacement, and hash access patterns (including dot-access and indifferent access). Existing benchmarks were updated to reference Bridgetown classes and modules, and the Schwartzian transform benchmark was adjusted to test different document properties.

bridgetown-core/benchmark · high confidence

Bridgetown core library initialization and configuration loading

The core library entry point now explicitly loads the I18n fallbacks backend to ensure default locale fallbacks work correctly, and introduces a \HashWithDotAccess::Hash\#to\_liquid\ method to guarantee that hash data structures are properly converted for Liquid templates. The main \Bridgetown\ module now provides a \reset\_configuration!\ method, allowing test suites and other consumers to cleanly reset the preloaded configuration state between runs.

bridgetown-core/lib · high confidence

File-based dynamic routes now support localization and improved sorting

The routing system for file-based dynamic routes (located in \src/\_routes\ and islands) has been refactored to automatically generate localized URL slugs based on the site's configured available locales, enabling multi-language route definitions. Additionally, the manifest now implements a deterministic sorting algorithm for routes, prioritizing them by path depth and segment count to ensure consistent URL matching order. The change also introduces view helpers for CSRF protection and a stub flash object to support these dynamic routes within the rendering context.

bridgetown-routes/lib/bridgetown-routes · high confidence

Migrate CLI framework from Thor to Samovar

The Bridgetown command-line interface has been rewritten to use the Samovar library instead of Thor, introducing a new command registration and parsing system. This change brings a new CLI architecture with dedicated command classes (such as \Application\, \Build\, \Start\, \Console\, and \New\) and includes a backward-compatibility shim (\thor\_shim.rb\) that allows older Thor-based commands to function while issuing deprecation warnings. Users will experience the same CLI surface but with an underlying framework that supports more flexible option handling and integration with the new Freyia automation system.

bridgetown-core/lib/bridgetown-core/commands · high confidence

Native esbuild integration replaces Webpack with new configuration and migration tools

Bridgetown now uses esbuild as the default frontend build tool, introducing a new set of configuration files including \esbuild.config.js\, \esbuild.defaults.js.erb\, and \jsconfig.json\ to manage asset bundling, PostCSS processing, and Sass support. The \setup.rb\ script initializes these new defaults for new sites, while \migrate-from-webpack.rb\ provides an automated path for existing projects to switch from Webpack, removing redundant packages and updating build scripts. An \update.rb\ command allows existing esbuild setups to upgrade to the latest configuration, including switching to ESM syntax and removing the now-unnecessary \glob\ npm package in favor of Node's native glob capabilities.

bridgetown-core/lib/bridgetown-core/commands/esbuild · high confidence

New Bridgetown Center program & plugins directory

The website configuration has been restructured to support the new Bridgetown Center program and plugins directory. This includes adding custom CLI commands for importing plugins from GitHub and managing the site, configuring esbuild for asset bundling with support for PostCSS and Sass, setting up initializers for various plugins like wikilinks, SEO, feed, search, SVG inlining, and sitemap, and configuring Puma for the development server. Additionally, Ruby2JS is configured to transpile Ruby to JavaScript with camelCase filtering and ES2020 level support.

bridgetown-website/config · medium confidence

New Builder plugin architecture with lifecycle callbacks and DSL

The builder system has been restructured to introduce a new \Bridgetown::Builder\ superclass that extends \PluginBuilder\. This change adds support for \before\_build\ and \after\_build\ lifecycle callbacks, allowing plugins to execute code at specific stages of the build process. The \PluginBuilder\ base class now includes a comprehensive set of DSL modules (Generators, Helpers, Hooks, Inspectors, HTTP, Liquid, and Resources) and implements a priority sorting mechanism (highest to lowest) to control the execution order of builder plugins.

bridgetown-builder/lib/bridgetown-builder · high confidence

New Liquid Renderer with performance metrics and flexible file loading

The Liquid rendering engine has been refactored to include built-in performance tracking and improved template resolution. The renderer now measures and reports execution time, byte size, and render counts for each processed file, displaying these metrics in a summary table (via terminal-table) to help users identify slow templates. Additionally, the file system loader now supports resolving templates with either .liquid or .html extensions, providing more flexibility in template naming conventions.

_bridgetown-core/lib/bridgetown-core/liquid\renderer · high confidence

New Liquid drop classes for Bridgetown objects

The \bridgetown-core/lib/bridgetown-core/drops\ directory now contains a complete set of new Liquid drop classes (\BridgetownDrop\, \Drop\, \CollectionDrop\, \GeneratedPageDrop\, \RelationsDrop\, \ResourceDrop\, \SiteDrop\, \StaticFileDrop\, \UnifiedPayloadDrop\). These classes define how Bridgetown's internal objects (like sites, resources, and pages) are exposed to Liquid templates, including specific handling for mutability, JSON serialization, and resource relations.

bridgetown-core/lib/bridgetown-core/drops · high confidence

New Liquid filters for localization, date formatting, and URL handling

The \bridgetown-core/filters\ directory now includes dedicated modules for internationalization, date manipulation, and URL generation. The \t\ and \l\ filters allow templates to translate strings and format dates using the I18n library, supporting locale-specific formats and fallbacks. The \in\_locale\ filter enables prefixing relative URLs with a locale code or filtering resource arrays by locale, respecting the \prefix\_default\_locale\ configuration. Additionally, new date filters (\date\_to\_string\, \date\_to\_long\_string\, \date\_to\_xmlschema\, \date\_to\_rfc822\) provide standardized formatting with ordinal and regional style support, while URL filters (\absolute\_url\, \relative\_url\, \strip\_index\, \strip\_extname\) handle path normalization and base path integration.

bridgetown-core/lib/bridgetown-core/filters · high confidence

New Rack-based server boot and routing infrastructure

The server boot process now uses a dedicated Rack layer (\bridgetown-core/rack\) to initialize the Roda application, manage Zeitwerk autoloaders for the server folder, and handle live reloads via Server-Sent Events. This introduces a default \config.ru\ entry point, a structured \Routes\ class for prioritizing and merging route definitions, and a \LiveReload\ class that watches for file changes and pushes reload signals or build errors to the browser, replacing previous ad-hoc server startup mechanisms.

bridgetown-core/lib/bridgetown-core/rack · high confidence

The core resource handling in Bridgetown has been rewritten to support a new signal-based change tracking system that enables fast refresh in development. This change introduces locale-aware permalink processing (supporting the :locale placeholder and respecting the prefix\_default\_locale config), a new Relations API for cross-collection linking, and a warning for Rails-style file extensions. It also adds support for pure Ruby layouts and data collections that skip front matter defaults.

bridgetown-core/lib/bridgetown-core/resource · high confidence

New Roda-based server and preview route implementation

The server component now uses a new Roda-based application structure defined in \roda\_app.rb\, replacing previous boot processes. Additionally, a new preview route (\routes/preview.rb\) has been added, allowing users to preview specific pages by collection and path via a \/preview/:collection/:path\ endpoint, with fallback to a 404 page if content is empty.

bridgetown-website/server · high confidence

New documentation site styling and dark mode support

The documentation website now features a completely redesigned visual style, including a new navigation bar component, responsive layout adjustments for mobile and desktop views, and a dedicated dark mode theme. This update introduces CSS View Transitions for smoother page navigation animations, replaces the previous Turbo-based transitions, and enhances code block readability with updated syntax highlighting colors and language labels. The styling also improves accessibility with better contrast ratios and font sizing across different screen sizes.

bridgetown-website/frontend/styles · high confidence

New readers for defaults, layouts, and plugin content

The site now uses dedicated readers to process path-based defaults, layout files, and content from external plugin sources. Defaults are loaded from \_defaults files in the source directory and stored in a hash with dot-access for configuration. Layouts are read from the configured layouts directory and merged with layouts provided by plugin source manifests. Plugin content is read from external source directories, respecting collection-specific external source filters, handling bare-text files, and ignoring symlinks, with results added to the site's static files or resources.

bridgetown-core/lib/bridgetown-core/readers · high confidence

New shared navbar component with sponsorship banner and edge status indicator

The website now uses a new shared navbar component that includes a sponsorship announcement bar at the top, encouraging users to support the project. The navigation bar visually indicates when the site is running an edge version via a distinct background gradient and an animated 'edge' label. It also features improved accessibility with ARIA labels for social links (Mastodon, GitHub) and keyboard shortcuts for search, while maintaining standard navigation sections for Documentation, Plugins, Community, and Blog.

_bridgetown-website/src/\components/shared · high confidence

New site template with ERB/Serbea support and esbuild defaults

The frontend site template has been updated to support ERB and Serbea templating in JavaScript files (e.g., \index.js.erb\), allowing dynamic configuration of asset imports based on build options like esbuild and PostCSS. The default frontend bundler has switched to esbuild with PostCSS, changing how component assets are imported via dynamic glob imports instead of the previous Webpack-based \require.context\. Additionally, a default syntax highlighting stylesheet (\syntax-highlighting.css\) is now included to style code snippets, and the base CSS has been updated with a new default theme.

_bridgetown-core/lib/site\template/frontend · high confidence

The website now uses new \\_footer.serb\ and \\_head.serb\ partials. The footer displays the current Bridgetown version and codename, links to the philosophy page, sponsorship, GitHub issues/PRs, Code of Conduct, Discord, and an RSS feed, along with attribution to Whitefusion and Adrian Valenzuela. The head partial includes SEO and feed meta tags, favicons, and a client-side ThemeManager script that respects the system's prefers-color-scheme and persists the user's theme choice in localStorage, applying theme-dark classes to the document root.

_bridgetown-website/src/\partials · high confidence

New website layout structure with accessibility and navigation enhancements

The website now uses a new set of layout templates (default, docs, page, post) that introduce a 'Skip to main content' link for improved keyboard accessibility, a theme picker component, and structured navigation including breadcrumbs for documentation and blog posts. The default layout serves as the base, while specific layouts for docs, pages, and posts add contextual elements like category breadcrumbs, author information, sharing buttons, and related content sections.

_bridgetown-website/src/\layouts · high confidence

Optimized Kramdown Markdown parsing engine

The Markdown converter now uses a custom \Kramdown::BridgetownDocument\ class to optimize memory usage by reusing the same options hash and parser instance across all documents in a site, rather than initializing a new Kramdown document for each file. This change improves performance and reduces memory overhead during site generation while maintaining full compatibility with existing Kramdown configuration options such as syntax highlighting and GFM support.

bridgetown-core/lib/bridgetown-core/converters/markdown · high confidence

Redesigned website with new pages and Serbea templating

The Bridgetown website has been completely overhauled, introducing new pages for the Home, Community, Plugins, Sponsorship, and Blog sections. The site now utilizes the Serbea template engine (files ending in .serb) for dynamic content rendering, including paginated blog listings and plugin directories. Key additions include a dedicated Community page highlighting core team members and support channels, a Plugins page featuring the new 'Bridgetown Center' program, and a Sponsor page with a Q2 2026 funding goal. The redesign also includes a new 404 error page and uses native web components like Shoelace for UI elements.

_bridgetown-website/src/\pages · high confidence

Refactor core resource concerns and introduce Viewable mixin for Ruby components

The resource lifecycle and rendering logic in bridgetown-core has been reorganized into distinct concerns: LayoutPlaceable now explicitly handles layout assignment (including support for \layout: false\), Publishable manages visibility and future-dating checks, Prioritizable allows route classes to define execution order, and Localizable optimizes locale matching with a pre-computed index. Additionally, the new Viewable mixin enables Ruby-based components to define front matter and render through the standard layout transformation pipeline, while Transformable centralizes the converter execution logic used by these components.

bridgetown-core/lib/bridgetown-core/concerns · high confidence

Removed Jekyll-based site template in favor of Bridgetown

The default site template previously generated for new projects has been removed. This change deletes the Jekyll-specific configuration file (\_config.yml), the default theme setup (Minima), the 404 page, the welcome post, and other starter content files. Users generating new sites will no longer receive a Jekyll-based scaffold; the template has been replaced to support Bridgetown, as indicated by the commit context.

_lib/site\template · high confidence

Repository modernized with GitPod support and updated tooling configuration

The repository now includes configuration for GitPod cloud development environments, specifying Ruby 3.2.9 for the workspace and Ruby 3.3.11 as the project standard via \.gitpod.dockerfile\ and \.ruby-version\. Legacy CI and code quality configurations for Travis CI (\.travis.yml\) and Code Climate (\.codeclimate.yml\) have been removed, alongside the JRuby runtime configuration (\.jrubyrc\). Documentation tooling is standardized with new \.yardopts\ and \.solargraph.yml\ files, and Prettier is configured to ignore Markdown, HTML, and Liquid files via \.prettierignore\.

(repo-wide) · high confidence

RuboCop configuration migrated from Jekyll to Bridgetown

The RuboCop configuration has been renamed from Jekyll to Bridgetown, and the associated custom cop files have been updated to reflect this change. The \rubocop/jekyll.rb\ file was renamed to \rubocop/bridgetown.rb\, and the \rubocop/jekyll/\ directory was renamed to \rubocop/bridgetown/\. The \AssertEqualLiteralActual\ cop was moved from the Jekyll namespace to the Bridgetown namespace, and the \NoPAllowed\ and \NoPutsAllowed\ cops were removed as they were specific to Jekyll's logging mechanisms.

rubocop · high confidence

Server-side rendering sessions enabled by default

The routes plugin now initializes server-side rendering (SSR) with sessions enabled by default. This ensures that session support is available immediately upon startup without requiring manual configuration, providing a more seamless experience for users relying on session-based features in their dynamic routes.

bridgetown-routes/lib · high confidence

Standardized local development and CI scripts

The repository now includes a set of standardized shell and Ruby scripts in the \script/\ directory to streamline local development and continuous integration workflows. The new \script/cibuild\ script automates the CI pipeline by sequentially running formatting checks and tests. The \script/fmt\ script executes Rubocop for code style enforcement, providing clear feedback and suggestions for automatic fixes. The \script/test\ script manages the test suite, handling cleanup of previous test destinations and supporting both full suite execution and specific test file runs. Additionally, \script/minitest\ provides a dedicated entry point for running Minitest suites via Bundler.

bridgetown-routes/script · high confidence

Updated default HTML documentation theme with new color palette and typography

The default HTML documentation template now uses a new CSS stylesheet that introduces a green and orange color scheme, updates the font stack to prioritize system and modern sans-serif fonts, and applies specific styling for code blocks, links, and signature sections.

yard · high confidence

Updated default site template with ERB/Serbea support and custom error pages

The default Bridgetown site template has been refreshed to include new pages (About, Posts) that support ERB and Serbea templating, allowing users to choose their preferred syntax for dynamic content. Additionally, the template now provides custom 404 and 500 error pages to improve the user experience when errors occur, replacing the previous generic layouts.

_bridgetown-core/lib/site\template/src · high confidence

Updated new site template to use esbuild, PostCSS, and Rack-based server

The default Bridgetown site template has been updated to use esbuild for JavaScript bundling and PostCSS for CSS processing, replacing previous Webpack-based tooling. The template now includes a \config.ru\ file for Rack-based server booting, a \Gemfile\ that defaults to the Falcon web server (with Puma as an option), and a \Rakefile\ with tasks for building and watching assets via esbuild. Additionally, the template now requires Ruby \>= 3.3 and Node \>= 22, and includes a \.gitignore\ file tailored for Bridgetown projects.

_bridgetown-core/lib/site\template · high confidence

Updated welcome post with new documentation and support links

The sample blog post included in new Bridgetown sites has been updated to reflect current project resources. The text now directs users to the official Bridgetown documentation site and GitHub Discussions for questions and support, replacing previous links that may have pointed to older forums or different locations. The post retains its instructional content on file naming conventions and code snippets but ensures all external references are current.

_bridgetown-core/lib/site\_template/src/\posts · high confidence

Website build plugins for TOC, HTML linting, and version labeling

The website now includes new site builder plugins that enhance content rendering and build validation. A Table of Contents helper is added to automatically generate navigation links for article headings, while an HTML inspector enforces semantic markup by warning or failing the build if non-semantic div or span tags are detected outside allowed classes. Additionally, the site dynamically labels itself as 'EDGE' or 'v1' based on the current Bridgetown version and displays the release date of the active gem version in metadata.

bridgetown-website/plugins/builders · high confidence

Website rebuild with native Inspector, esbuild, and file-based routing

The Bridgetown website has been rebuilt to use native HTML Inspector (via Nokolexbor) to enforce semantic HTML by banning div and span tags, switch to esbuild for frontend asset compilation, and implement file-based dynamic routes through a new .routes.json configuration.

bridgetown-website · high confidence

Test coverage

Added SSR route test fixtures for dynamic routing and rendering; Added test fixtures for .rb and .json translation files; Added test fixtures for SSR server routing; Added test fixtures for Serbea 2.0 template syntax and front matter DSL features; Added test fixtures for alternate routes and SSR output; Added test fixtures for multi-locale pages and Ruby template syntax; Added test fixtures for nested route rendering; Added test suite for Builder DSL capabilities; Added tests for SSR configuration and refinement initialization; Added tests for the Roda-powered routes plugin; Expanded feature test coverage for Bridgetown core; Expanded test fixtures for source processing and component rendering; Removal of Jekyll test fixtures and helper infrastructure.

Dependencies

Bridgetown 2.2.2 dependency and manifest updates

This change updates the Bridgetown monorepo to version 2.2.2, refreshing the Gemfile.lock and gemspec files for bridgetown-core, bridgetown-builder, bridgetown-foundation, bridgetown-paginate, and bridgetown-routes. Key dependency adjustments include pinning samovar to 2.4.1, updating liquid to the 5.4.0 range (\>= 5.0, \< 5.5), and bumping rack to 3.2.4. The bridgetown-website location updates its Gemfile to use bridgetown-quick-search \~\> 3.0 and bridgetown-svg-inliner \~\> 2.1, while its package.json and package-lock.json reflect upgrades to esbuild ^0.28.0, postcss ^8.4.31, and @shoelace-style/shoelace ^2.2.0. The root Gemfile is refactored to depend on the local bridgetown gems and includes bridgetown-lit-renderer 3.0.0.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 52.

Lenses

  • Code Health 67
  • Architecture 61
  • Maturity 58
  • Readiness 42
  • Security 65
  • Accessibility 72

Changes since last survey

  • 300 commits — 259 feature/other, 41 fixes

By area

  • bridgetown-core/lib — 105 commits
  • bridgetown-website/src — 74 commits
  • (root) — 47 commits
  • (repo) — 29 commits
  • bridgetown-core/test — 17 commits
  • bridgetown-website/frontend — 11 commits
  • bridgetown-website/Gemfile — 3 commits
  • bridgetown-website/Gemfile.lock — 3 commits
  • bridgetown-foundation/lib — 2 commits
  • bridgetown-foundation/test — 2 commits
  • .github/FUNDING.yml — 1 commit
  • .github/PULL_REQUEST_TEMPLATE.md — 1 commit
  • bridgetown-builder/lib — 1 commit
  • bridgetown-core/.rubocop.yml — 1 commit
  • bridgetown-core/bin — 1 commit
  • bridgetown-routes/lib — 1 commit
  • bridgetown-routes/test — 1 commit

Notable commits

  • fix: Add back in "Now serving", fix absolute URL bug in dev, fix missing 404
  • fix: Fix #922 (regression in base_path support) (#938)
  • fix: Fix broken star history chart in README (#1123)
  • fix: Fix freaky regexp bug
  • fix: Fix link, add joke
  • fix: Fix relative translations for multiple locale files (#1032)
  • fix: Fix routing order dependency in bridgetown_server (#1007)
  • fix: Fix slot duplicating issue
  • fix: Fix test to not conflict with EntryFilter::SPECIAL_LEADING_CHAR_REGEX
  • fix: Fix: Don't take all arguments to create a new site (#1006) (#1008)
  • fix: Merge pull request #1070 from kgt/fix-utils-slugify-docs
  • fix: Merge pull request #926 from ayushn21/v2-upgrade-fixes
  • fix: basic blog fixes
  • fix: basic blog fixes
  • fix: fix #904 (new command still output Liquid code by default in posts.md)
  • fix: fix bug in ERB capture
  • fix: fix build issues
  • fix: fix cop
  • fix: fix fast refresh not working for Liquid templates (#933)
  • fix: fix links about Streamlined
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

bridgetownrb/bridgetown was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 250d6efe2b015af01707afbfcabc4bac270b4b55 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.