Today I Learned & Then I Learned Guide
Today I Learned & Then I Learned Features
Overview
The “Today I Learned” and “Then I Learned” features provide views of your changelog entries over time, helping you track what you’ve learned and changed across your digital garden.
-
Today I Learned (
/til) - Shows all changelog entries updated today -
Then I Learned (
/til-archive) - Calendar view of all changelog entries with a modal for dates with 3+ entries
How It Works
Automatic Data Extraction
The changelog_entries_extractor.rb plugin automatically:
-
Scans all changelog files in the
_changelogs/directory - Extracts changelog entries from the Liquid template syntax
- Parses dates from each entry (date_published and date_updated)
- Groups entries by date for the calendar view
- Identifies today’s entries for the Today I Learned page
Data Structure
Each extracted changelog entry contains:
-
note_title- The title of the note being tracked -
entry_title- The title of the changelog entry -
date_published- When the change was first published -
date_updated- When the change was last updated -
sort_date- Used for sorting (defaults to date_updated)
Today I Learned (/til)
What It Shows
A simple list of changelog entries updated on the current date, formatted as:
- Note Title - Changelog Entry Title
- Another Note - Another Entry
Example
If you have these changelog entries with date_updated="2025-12-02":
- “Example Note with Changelog” - “Fixed Formatting”
- “Your first seed” - “Improved examples and formatting”
- “Your first seed” - “Added navigation improvements”
- “Your first seed” - “Revised code examples”
The Today I Learned page will display:
Changes made on December 2, 2025:
- Example Note with Changelog - Fixed Formatting
- Your first seed - Improved examples and formatting
- Your first seed - Added navigation improvements
- Your first seed - Revised code examples
Then I Learned (/til-archive)
What It Shows
A calendar view of the current month with all changelog entries. Each calendar cell shows:
- Date number (bold)
- Changelog entries as a list of “Note Title - Entry Title”
- View More button (if 3+ entries) - shows a “View More…” link with count
Calendar Features
-
Visual Highlighting
- Dates with entries have a light purple background (#efefff)
- Dates without entries have a light gray background (#fafafa)
- Days from other months are grayed out
-
Entry Display
- Shows up to 3 entries per day in the calendar cell
- If 3+ entries exist, a “View More…” button appears
- Button shows count of additional entries: “View More… (X more)”
-
Modal for Additional Entries
- Clicking “View More…” opens a modal dialog
- Modal displays all entries for that date
- Shows entry title, note title, and date range
Modal Interactions
Users can close the modal by:
- Clicking the X button in the top right corner
- Clicking outside the modal (on the semi-transparent background)
- Pressing the Escape key
Example Calendar Display
If December 2, 2025 has 5 entries:
Calendar cell shows:
2
Example Note - Fixed Formatting
Your first seed - Improved examples
Your first seed - Added navigation
View More... (2 more)
Clicking "View More..." opens modal with all 5 entries:
December 2, 2025
─────────────────
✕
[Entry 1] Example Note - Fixed Formatting
[Entry 2] Your first seed - Improved examples
[Entry 3] Your first seed - Added navigation
[Entry 4] Your first seed - Revised code
[Entry 5] Another Note - Some change
How to Create Changelog Entries
Step 1: Add changelog_url to Your Note
Update your note’s front matter:
---
title: Your Note Title
changelog_url: /changelogs/your-note-slug/
---
Step 2: Create a Changelog File
Create _changelogs/your-note-slug.md:
---
layout: changelog
title: Changelog - Your Note Title
note_title: Your Note Title
note_url: /your-note-slug/
permalink: /changelogs/your-note-slug/
---
<div class="changelog-entry" style="margin: 2em 0; padding: 1.5em; background: #f9f9f9; border-left: 4px solid #8b88e6; border-radius: 4px;">
<h3 style="margin-top: 0;">Entry Title</h3>
<p style="color: #666; font-size: 0.9em; margin: 0.5em 0;">
Created: December 1, 2025
| Updated: December 2, 2025
</p>
<div style="margin-top: 1em;">
<div style="margin: 0.8em 0; padding: 0.8em; background: white; border-radius: 3px;">
<strong style="color: #8b88e6;">:</strong>
</div>
</div>
</div>
Step 3: Add Changelog Entries
Use the changelog_entry include with:
-
title- Changelog entry title -
date_published- Initial publish date (YYYY-MM-DD) -
date_updated- Last update date (YYYY-MM-DD) -
actions- JSON array of action objects
The date_updated field determines when the entry appears in Today I Learned and the calendar.
Date Format
All dates in changelog entries must be in ISO 8601 format: YYYY-MM-DD
Examples:
-
2025-12-02✓ Correct -
12-02-2025✗ Incorrect -
December 2, 2025✗ Incorrect
Files
Created Files
-
_plugins/changelog_entries_extractor.rb- Plugin to extract and organize changelog data -
_layouts/today-i-learned.html- Layout for Today I Learned page -
_layouts/then-i-learned.html- Layout for Then I Learned calendar (modified)
Updated Files
-
_layouts/note.html- Added changelog link to note header
Tips & Best Practices
-
Update Dates Consistently - Use
date_updatedto control when entries appear - Group Related Changes - Multiple related changes can be one entry with multiple actions
-
Regular Updates - Update
date_updatedwhen you modify an entry - Clear Titles - Use descriptive entry titles that explain the change at a glance
- Test Today’s Entries - Add a changelog entry with today’s date to see it appear in Today I Learned
Troubleshooting
Entries Not Appearing
- Check that changelog files are in
_changelogs/directory - Verify front matter has correct
layout: changelog - Ensure dates are in YYYY-MM-DD format
- Confirm
note_titlematches what you want displayed
Calendar Not Loading
- Rebuild your Jekyll site
- Check browser console for JavaScript errors
- Verify modal HTML is being generated
- Clear browser cache
Modal Not Opening
- Check that entry count is 4 or more for the date
- Verify JavaScript isn’t blocked
- Check browser console for errors
- Try pressing Escape to see if modal is open but invisible
This line appears after every note.