Skip to content

Let /podcasts be the Podcasts page it now has - #92

Merged
ssavutu merged 1 commit into
mainfrom
fix/unshadow-podcasts-subsection
Aug 13, 2026
Merged

Let /podcasts be the Podcasts page it now has#92
ssavutu merged 1 commit into
mainfrom
fix/unshadow-podcasts-subsection

Conversation

@ssavutu

@ssavutu ssavutu commented Aug 13, 2026

Copy link
Copy Markdown
Member

The bug

podcasts reports 75 articles on the CMS sections screen, and /podcasts on the site serves none of them — it 301s to /columns.

Cause

LEGACY_SECTION_SLUGS maps dead WordPress category archives to whichever section absorbed them, and it held exactly one entry: podcasts: "/columns", added when Podcasts existed only as a category_aliases entry on Columns.

DrexelTriangle/triangle-cms#215 gave Podcasts a subsection row with a page of its own. The redirect runs in middleware, ahead of routing, so it shadows that page completely — every request for /podcasts still lands on /columns, and the article count in the CMS was the only visible sign the page existed.

The module's own comment predicted this:

If a slug here is ever given a real taxonomy row, remove it from this map: the redirect runs ahead of routing and would shadow the new page.

So this is that removal.

Scope

I checked all 48 seeded slugs against production before assuming this was isolated. /podcasts was the only one shadowed:

podcasts        301 -> /columns
wrestling       200   (Wrestling - The Triangle, 34 articles)
editorial       200   (Editorial - The Triangle, 34 articles)
mens-lacrosse   200   (Men's Lacrosse - The Triangle, 34 articles)
tennis, crew, style, tv, theater, features, commentary,
word-search, triangle-talks, swimming-diving, administration … all 200

Why keep an empty map

The mechanism is still right for the next WordPress archive that needs it, and the file carries the reasoning for when to add an entry versus when to create a taxonomy row instead. Empty is now the healthy state — every sub-category the migration left behind has a row.

Testing

eslint clean, astro check 0 errors / 0 warnings. Ran the site locally against the production CMS API over an SSH tunnel: /podcasts returns 200, titles as "Podcasts - The Triangle", and renders 34 article links instead of redirecting.

🤖 Generated with Claude Code

LEGACY_SECTION_SLUGS redirects a dead WordPress category archive to the
section that absorbed it, and it carried one entry: /podcasts -> /columns,
from when Podcasts existed only as a category_aliases entry on Columns.

Podcasts has a subsection row now, with 75 articles and a page of its own.
The redirect runs in middleware, ahead of routing, so it shadowed that page
completely: every request for /podcasts still landed on /columns, and the
count on the sections screen was the only visible sign the page existed.

The module's own comment called this out -- "if a slug here is ever given a
real taxonomy row, remove it from this map" -- so this is that removal. The
map is now empty, which is the healthy state: every WordPress sub-category
the migration left behind has a row. The mechanism stays for the next one.

Checked the other 47 seeded slugs against production first; /podcasts was
the only one shadowed. /wrestling, /editorial and /mens-lacrosse were
already serving their own pages.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ssavutu
ssavutu merged commit 5c79e1b into main Aug 13, 2026
1 check passed
@ssavutu
ssavutu deleted the fix/unshadow-podcasts-subsection branch September 1, 2026 23:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant