Description
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
- Create a Jekyll site with Jekyll Archives v2.3.0
- Configure defaults in
_config.yml
fortype: category
ortype: tag
- Build the site and check archive pages
- Notice that
page.author_profile
(or any default value) isfalse
/missing - Downgrade to v2.1.1 and rebuild
- Same pages now correctly show
page.author_profile
astrue
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"