feat(nav): repoint every wxyc.info link at its wxyc.org successor page - #222
Merged
Conversation
tubafrenzy serves every wxyc.info/playlists/* page and goes dark at the 2026-08-31 cutover (WXYC/wiki#93), so the four listener-facing links from wxyc.org into wxyc.info become dead links on that date. The three successor pages all landed on main and are live in prod, so the nav can point at them now. - components/Header.js and components/DropdownMenu.js: "Live playlist" -> /playlist (#211). Both become internal navigations, so target="_blank" goes away and they take the repo's internal-link idiom (legacyBehavior={false}). Header's copy also gets onClick={toggleMenu}, matching every other internal link in that mobile overlay — without it the overlay stays open on top of the page it just navigated to. DropdownMenu's stale "Until new flowsheet is deployed" comment, which held the target this commit now uses, is removed rather than left pointing at shipped code. - content/page/programming.mdx: "show archives" -> /playlists/archive (#213), "airplay records" -> /airplay-search (#212). These are the paths the pages actually landed at, read off main rather than assumed from the ticket's suggested filenames. __tests__/wxycInfoLinks.test.js guards the cutover: no href or markdown link anywhere in the repo may target wxyc.info, each of the four sites links to its named successor, and each successor route resolves to a page that exists. It is a source-level check because Header.js and DropdownMenu.js hold JSX in .js files, which this repo's vitest transform rejects, and because the third site is TinaCMS-managed .mdx that no component test would reach. Verified red against the pre-change tree on all four sites. Prose mentions of wxyc.info survive on purpose — the three successor pages and README.md each name the page they replace, which is accurate provenance and not a link. The test policies link targets only. Closes #214
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #214. Last remaining code ticket in Phase 4 of the tubafrenzy decommissioning.
Why now
tubafrenzy serves every
wxyc.info/playlists/*page and goes dark at the 2026-08-31 cutover (WXYC/wiki#93), so the four listener-facing links fromwxyc.orgintowxyc.infobecome dead links on that date.#214's two remaining blockers — #211 and #212 — both closed 2026-08-11, so all three successor pages are on
main. Verified live in prod before repointing:https://wxyc.org/playlist,/airplay-search, and/playlists/archiveeach return 200.Changes
components/Header.js:107http://www.wxyc.info/playlists/recent/playlist(#211)components/DropdownMenu.js:49http://www.wxyc.info/playlists/recent/playlist(#211)content/page/programming.mdx:54http://wxyc.info/playlists/radioWeek/playlists/archive(#213)content/page/programming.mdx:56http://wxyc.info/playlists/searchPlaylists/airplay-search(#212)Targets were read off
main, not taken from the ticket's suggested filenames —/airplay-searchis top-level, not under/playlists/.Both nav links become internal navigations, so
target="_blank"goes away and they take the repo's internal-link idiom (legacyBehavior={false}). Header's copy also gainsonClick={toggleMenu}, matching every other internal link in that mobile overlay — without it the overlay stays open on top of the page it just navigated to.DropdownMenu's stale{/* Until new flowsheet is deployed: <Link href="/playlist"> */}comment held exactly the target this PR now uses, so it is removed rather than left commenting on shipped code.Test
__tests__/wxycInfoLinks.test.js(8 assertions) guards the cutover: nohrefor markdown link anywhere in the repo may targetwxyc.info; each of the four sites links to its named successor; each successor route resolves to a page that exists. Verified red against the pre-change tree, failing on all four sites.It is a source-level check by choice, for two reasons a render test can't cover:
Header.jsandDropdownMenu.jshold JSX in.jsfiles, which this repo's vitest transform rejects (The JSX syntax extension is not currently enabled), and the third site is TinaCMS-managed.mdxthat no component test would reach.Notes for review
grepacceptance criterion is met as narrowed on the ticket. Threewxyc.infomentions survive — docblocks in the three successor pages, plusREADME.md. Each names the page it replaces. That is accurate provenance, not a link, and the ticket's own comment asks that it not be deleted to satisfy a grep. The test policies link targets only.content/page/programming.mdxis CMS-managed. The edit is a plain body-text link swap in a file TinaCMS round-trips, so a later CMS edit should rewrite the file without conflict; nothing surprising surfaced. Worth watching on the next CMS save.wxyc.info. Deliberately not implemented here. Itswxyc.inforeference is now stale, but whether to close it as superseded is a human call.programming.mdx:54still reads "going back to 2009", while the new archive page covers back to at least November 2004. Not corrected here — that is listener-facing copy, not a link.Verification
npm run test— 287 passed (15 files)npm run lint— no errors (pre-existingno-img-element/alt-textwarnings only)npx next buildundertinacms dev, i.e. the exact CI build — succeeds;/playlist,/airplay-search,/playlists/archiveall export, and the exported site contains zerowxyc.infooccurrencesprettier --checkon all four touched files — clean. (Header.jsandDropdownMenu.jswere already prettier-dirty onmainbefore this change; left as-is per the ticket.)