Skip to content

Jekyll Archives v2.3.0 breaks Jekyll's defaults system for archive pages #182

Open
@pblxptr

Description

@pblxptr

Hi,
I think I've discovered a regression in v2.3.0 that's breaking Jekyll's defaults system for archive pages. This is affecting users of popular themes like Minimal Mistakes and anyone relying on Jekyll's configuration defaults.

What's happening

In v2.3.0, the new PageDrop implementation (from PR #158) only exposes a specific set of attributes to Liquid templates. While this was likely done for great reasons like performance and security, it has the unintended side effect of completely bypassing Jekyll's defaults system.

This means any configuration like this in _config.yml is now silently ignored:

defaults:
  - scope:
      type: category
    values:
      author_profile: true
      sidebar: true
      toc: true

Impact on real users

This is causing some pretty frustrating issues:

  • Minimal Mistakes users suddenly lose author profiles or e.g header.image_overlay on category/tag pages after updating
  • Custom themes that rely on defaults for archive pages break silently
  • Documentation becomes wrong - the official Jekyll docs say this should work, but it doesn't
  • No clear migration path - users have to either downgrade or completely rewrite their layouts

The technical bit

The PageDrop class only forwards these specific attributes:

def_delegators :@obj, :posts, :type, :title, :date, :name, :path, :url, :permalink

But Jekyll's defaults system works by merging configuration values into the page's @data hash during processing. Since PageDrop doesn't expose this merged data, any defaults just... disappear.

Why this matters

This is a breaking change that's failing silently - builds still succeed, but functionality is missing. Users upgrade expecting things to work the same way, but suddenly their carefully configured defaults stop working.

Reproduction steps

  1. Create a Jekyll site with Jekyll Archives v2.3.0
  2. Configure defaults in _config.yml for type: category or type: tag
  3. Build the site and check archive pages
  4. Notice that page.author_profile (or any default value) is false/missing
  5. Downgrade to v2.1.1 and rebuild
  6. Same pages now correctly show page.author_profile as true

Environment

  • Jekyll Archives: v2.3.0 (broken), v2.1.1 (works)
  • Jekyll: 4.4.1
  • Theme: Minimal Mistakes 4.27.1

Temporary workaround

For now, users can downgrade to v2.1.1 where everything works as expected:

gem "jekyll-archives", "~> 2.1.1"

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions