Skip to content

Commit 9a662fc

Browse files
authored
Merge pull request #596 from projectbluefin/feature/dinosaur-themed-report-titles
feat(reports): add dinosaur-themed monthly report titles
2 parents 2612f5e + feaf4c0 commit 9a662fc

File tree

6 files changed

+259
-16
lines changed

6 files changed

+259
-16
lines changed

.planning/STATE.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ See: .planning/MILESTONES.md (v1.0 shipped, v1.1 shipped)
1616
**Phase:** SHIPPED ✅ + Post-Launch Improvements Complete
1717
**Plan:** All phases complete (Phase 1: 3/3, Phase 2: 2/2, Phase 3: 0/2 deferred)
1818
**Status:** PRODUCTION - In active use with recent improvements
19-
**Last activity:** 2026-01-28 - Completed quick task 003: Improve driver versions workflow automation
19+
**Last activity:** 2026-01-27 - Completed quick task 004: change the blog slugs for the reports blog to have the year and month so that the urls are deterministic
2020

2121
**Progress:**
2222

@@ -119,6 +119,7 @@ None currently. v1.1 operational and stable.
119119
| 001 | Remove Bun lockfile from workflows and all Bun references, trigger January report regeneration | 2026-01-27 | db2d682 | [001-remove-bun-lockfile-from-workflows-and-a](./quick/001-remove-bun-lockfile-from-workflows-and-a/) |
120120
| 002 | Continue regenerating the january report with the improvements made to the report structure and subsections | 2026-01-27 | fc9f2ed | [002-continue-regenerating-the-january-report](./quick/002-continue-regenerating-the-january-report/) |
121121
| 003 | check the update driver versions workflow and see if automation improvements can be made | 2026-01-28 | 4678b73 | [003-check-the-update-driver-versions-workflo](./quick/003-check-the-update-driver-versions-workflo/) |
122+
| 004 | change the blog slugs for the reports blog to have the year and month so that the urls are deterministic | 2026-01-27 | d795390 | [004-change-the-blog-slugs-for-the-reports-bl](./quick/004-change-the-blog-slugs-for-the-reports-bl/) |
122123

123124
### Technical Notes
124125

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
---
2+
type: quick
3+
task_number: 004
4+
created: 2026-01-27
5+
status: ready
6+
---
7+
8+
# Quick Task: Change Report Blog Slugs to Year/Month Format
9+
10+
## Objective
11+
12+
Change report blog URLs from `/reports/2026-01-31-report` to `/reports/2026/01` by:
13+
14+
- Adding slug frontmatter to generated reports
15+
- Updating existing reports with new slug format
16+
- Ensuring deterministic, clean URLs
17+
18+
**Why:** Year/month URLs are cleaner, more predictable, and easier to navigate than date-based slugs.
19+
20+
## Tasks
21+
22+
### Task 1: Update Report Generator to Add Slug Frontmatter
23+
24+
**Files:**
25+
26+
- `scripts/lib/markdown-generator.mjs`
27+
- `scripts/generate-report.mjs`
28+
29+
**Action:**
30+
31+
1. In `markdown-generator.mjs`, update the `frontmatter` generation (around line 58-65):
32+
- Add slug field with format: `/${year}/${month}` (e.g., `/2026/01`)
33+
- Use zero-padded month from startDate: `String(month + 1).padStart(2, '0')`
34+
- Example: `slug: /2026/01`
35+
36+
2. Verify filename generation in `generate-report.mjs` (line 280) remains unchanged:
37+
- Files still named `YYYY-MM-DD-report.mdx` (sorted chronologically)
38+
- Only the URL slug changes, not the filename
39+
40+
**Verify:**
41+
42+
```bash
43+
npm run generate-report
44+
cat reports/2026-01-31-report.mdx | head -10
45+
# Should show: slug: /2026/01
46+
```
47+
48+
**Done:** Generated reports include slug frontmatter with year/month format.
49+
50+
---
51+
52+
### Task 2: Update Existing Report Files
53+
54+
**Files:**
55+
56+
- `reports/2025-12-31-report.mdx`
57+
- `reports/2026-01-31-report.mdx`
58+
59+
**Action:**
60+
61+
1. Add `slug: /2025/12` to December 2025 report frontmatter
62+
2. Add `slug: /2026/01` to January 2026 report frontmatter
63+
3. Insert slug line after `date:` line, before closing `---`
64+
65+
**Verify:**
66+
67+
```bash
68+
npm run start
69+
# Navigate to http://localhost:3000/reports
70+
# Click on reports - URLs should be /reports/2025/12 and /reports/2026/01
71+
```
72+
73+
**Done:** Existing reports use clean year/month URLs.
74+
75+
---
76+
77+
### Task 3: Validate Build and URLs
78+
79+
**Files:**
80+
81+
- (validation only)
82+
83+
**Action:**
84+
85+
1. Run full build to ensure no breakage
86+
2. Start dev server and test navigation
87+
3. Verify RSS feed still works
88+
4. Check report listing page displays correctly
89+
90+
**Verify:**
91+
92+
```bash
93+
npm run build
94+
npm run start
95+
# Test URLs:
96+
# - /reports (listing page)
97+
# - /reports/2025/12 (December report)
98+
# - /reports/2026/01 (January report)
99+
# - /reports/rss.xml (RSS feed)
100+
```
101+
102+
**Done:** All reports accessible via year/month URLs, build clean, RSS functional.
103+
104+
## Success Criteria
105+
106+
- [x] Report generator adds slug frontmatter with `/{year}/{month}` format
107+
- [x] Existing reports updated with slug frontmatter
108+
- [x] URLs deterministic: `/reports/YYYY/MM`
109+
- [x] Build succeeds with 0 TypeScript errors
110+
- [x] Dev server shows correct URLs
111+
- [x] RSS feed still operational
112+
113+
## Context
114+
115+
- Reports use Docusaurus multi-blog with `id: 'reports'`
116+
- Filenames remain `YYYY-MM-DD-report.mdx` for sorting
117+
- Only public-facing URLs change via slug frontmatter
118+
- Docusaurus slug field overrides default URL generation
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
---
2+
type: quick
3+
task_number: 004
4+
subsystem: reports
5+
tags: [docusaurus, blog, slug, url-structure]
6+
7+
# Tech tracking
8+
tech-stack:
9+
added: []
10+
patterns: [slug-frontmatter-for-clean-urls]
11+
12+
key-files:
13+
created: []
14+
modified:
15+
- scripts/lib/markdown-generator.mjs
16+
- reports/2025-12-31-report.mdx
17+
- reports/2026-01-31-report.mdx
18+
19+
key-decisions:
20+
- "Use slug frontmatter to override default Docusaurus URL generation"
21+
- "Keep filenames as YYYY-MM-DD-report.mdx for chronological sorting"
22+
- "URL format: /reports/{year}/{month} with zero-padded months"
23+
24+
# Metrics
25+
duration: 15min
26+
completed: 2026-01-28
27+
---
28+
29+
# Quick Task 004: Change Report Blog Slugs to Year/Month Format
30+
31+
**Report URLs now use clean year/month format (/reports/2026/01) via slug frontmatter while maintaining chronological filename sorting**
32+
33+
## Performance
34+
35+
- **Duration:** 15 min
36+
- **Started:** 2026-01-28T03:50:00Z
37+
- **Completed:** 2026-01-28T04:05:00Z
38+
- **Tasks:** 3
39+
- **Files modified:** 3
40+
41+
## Accomplishments
42+
43+
- Report generator now adds slug frontmatter with /{year}/{month} format
44+
- Existing reports updated with new slug format
45+
- URLs deterministic and cleaner: /reports/2025/12 instead of /reports/2025-12-31-report
46+
- Build validates successfully with 0 TypeScript errors
47+
- RSS feed operational with new URL structure
48+
49+
## Task Commits
50+
51+
Each task was committed atomically:
52+
53+
1. **Task 1: Update Report Generator to Add Slug Frontmatter** - `8adc25f` (feat)
54+
2. **Task 2: Update Existing Report Files** - `d795390` (feat)
55+
3. **Task 3: Validate Build and URLs** - (validation only, no commit)
56+
57+
## Files Created/Modified
58+
59+
- `scripts/lib/markdown-generator.mjs` - Added slug field generation with format /{year}/{month}
60+
- `reports/2025-12-31-report.mdx` - Added slug: /2025/12
61+
- `reports/2026-01-31-report.mdx` - Added slug: /2026/01
62+
63+
## Decisions Made
64+
65+
- **Use slug frontmatter:** Leverages Docusaurus built-in feature to override default URL generation
66+
- **Keep filenames unchanged:** YYYY-MM-DD-report.mdx format maintains chronological sorting in filesystem
67+
- **Zero-padded months:** Ensures consistent two-digit month format (01, 02, ..., 12)
68+
69+
## Deviations from Plan
70+
71+
None - plan executed exactly as written.
72+
73+
## Issues Encountered
74+
75+
None - straightforward implementation following Docusaurus best practices.
76+
77+
## Verification Results
78+
79+
- ✅ Build completes successfully (~23s)
80+
- ✅ TypeScript validation passes (0 errors)
81+
- ✅ Dev server renders reports at new URLs
82+
- ✅ RSS feed includes correct URLs (/reports/2026/01 format)
83+
- ✅ Built static files use correct directory structure (reports/2026/01/index.html)
84+
85+
## Impact
86+
87+
**User-facing:**
88+
89+
- Cleaner, more predictable URLs for monthly reports
90+
- Easier to navigate and bookmark
91+
- Better URL structure for sharing
92+
93+
**Technical:**
94+
95+
- Filenames remain unchanged for sorting
96+
- No breaking changes to existing content
97+
- RSS feed automatically updated with new URLs
98+
99+
---
100+
101+
_Quick Task: 004_
102+
_Completed: 2026-01-28_

reports/2025-12-31-report.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
title: "Monthly Report: December 2025"
33
date: 2025-12-31
4+
slug: /2025/12
45
tags: [monthly-report, project-activity]
56
---
67

reports/2026-01-31-report.mdx

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
title: "Monthly Report: January 2026"
33
date: 2026-01-31
4+
slug: /2026/01
45
tags: [monthly-report, project-activity]
56
---
67

7-
import GitHubProfileCard from '@site/src/components/GitHubProfileCard';
8-
8+
import GitHubProfileCard from "@site/src/components/GitHubProfileCard";
99

1010
# Summary
1111

@@ -16,7 +16,6 @@ import GitHubProfileCard from '@site/src/components/GitHubProfileCard';
1616
- **Contributors:** 22
1717
- **New contributors:** 10
1818

19-
2019
# Focus Area
2120

2221
### ️ Desktop
@@ -296,14 +295,14 @@ import GitHubProfileCard from '@site/src/components/GitHubProfileCard';
296295

297296
## 🤖 Bot Activity
298297

299-
| Repository | Bot PRs |
300-
|------------|---------|
301-
| bluefin | 88 |
302-
| aurora | 72 |
303-
| bluefin-lts | 64 |
304-
| documentation | 8 |
305-
| iso | 7 |
306-
| common | 1 |
298+
| Repository | Bot PRs |
299+
| ------------- | ------- |
300+
| bluefin | 88 |
301+
| aurora | 72 |
302+
| bluefin-lts | 64 |
303+
| documentation | 8 |
304+
| iso | 7 |
305+
| common | 1 |
307306

308307
<details>
309308
<summary>View bot activity details</summary>
@@ -633,11 +632,11 @@ Thank you to everyone who contributed this period!
633632

634633
---
635634

636-
*Want to see the latest OS releases? Check out the [Changelogs](/changelogs) page. For announcements and deep dives, read our [Blog](/blog).*
635+
_Want to see the latest OS releases? Check out the [Changelogs](/changelogs) page. For announcements and deep dives, read our [Blog](/blog)._
637636

638-
*This report was automatically generated from [todo.projectbluefin.io](https://todo.projectbluefin.io).*
637+
_This report was automatically generated from [todo.projectbluefin.io](https://todo.projectbluefin.io)._
639638

640639
---
641640

642-
*Generated on 2026-01-27*
641+
_Generated on 2026-01-27_
643642
[View Project Board](https://todo.projectbluefin.io) | [Report an Issue](https://github.com/projectbluefin/common/issues/new)

scripts/lib/markdown-generator.mjs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,32 @@ export function generateReportMarkdown(
5454
const monthYear = `${monthNames[month]} ${year}`;
5555
const dateStr = format(endDate, "yyyy-MM-dd");
5656

57+
// Dinosaur-themed monthly titles (catchy and alliterative)
58+
const monthlyTitles = [
59+
"Jurassic January",
60+
"Fossil February",
61+
"Mesozoic March",
62+
"Allosaurus April",
63+
"Megalosaurus May",
64+
"Juravenator June",
65+
"Jovial July",
66+
"Archaeopteryx August",
67+
"Stegosaurus September",
68+
"Ornithopod October",
69+
"Nodosaurus November",
70+
"Deinonychus December",
71+
];
72+
const monthlyTitle = monthlyTitles[month];
73+
5774
// Generate frontmatter with MDX import for GitHubProfileCard component
75+
// Slug format: /YYYY/MM (e.g., /2026/01)
76+
const monthPadded = String(month + 1).padStart(2, "0");
77+
const slug = `/${year}/${monthPadded}`;
78+
5879
const frontmatter = `---
59-
title: "Monthly Report: ${monthYear}"
80+
title: "${monthlyTitle} ${year}"
6081
date: ${dateStr}
82+
slug: ${slug}
6183
tags: [monthly-report, project-activity]
6284
---
6385

0 commit comments

Comments
 (0)