Update blog layout + categories feature - #57
Conversation
n13
left a comment
There was a problem hiding this comment.
Reviewer model: GPT 5.6 Sol
Request changes: the category deep-link path can crash the hydrated blog list on malformed public query input.
Blocking finding
- [P1] Handle unknown category query values before updating state —
website/src/components/features/blog/BlogList.tsx:118-124passes anycategoryquery value intoparseBlogCategoryFilter, whilewebsite/src/utils/blog-categories.ts:12-19deliberately throws for unsupported values. A request such as/blog?category=or/blog?category=podcasttherefore raises an uncaught exception from the initial React effect (and from thepopstatehandler), leaving the blog-list island in an error instead of rendering a usable page. Treat the URL as untrusted input and handle an invalid value explicitly without throwing out of the effect, then add a regression test at the component/deep-link boundary.
Validation
npx --yes bun test— passed, 41 tests.SITE_BASE_URL=http://localhost:3000 ./node_modules/.bin/astro build— passed for all localized routes; existing missing-translation warnings remain outside this diff../node_modules/.bin/prettier --check .— passed.git diff --check b62c838ba42d8731a02ed2b4afc5ce4fc7e02106...f5d9d71ed181d8be516b3943e85d359f4de1cb3c— passed.node scripts/check-seo-meta.mjs— reports 17 pre-existing launch metadata length issues; the affected launch metadata is unchanged by this PR.- GitHub reports no CI checks for this head.
n13
left a comment
There was a problem hiding this comment.
Reviewer model: GPT 5.6 Sol
Request changes: the prior malformed-category crash is fixed, but the current head fails the repository's required formatting gate.
Blocking finding
- Format the migrated blog frontmatter before merging —
website/src/contents/blogs/en-US/weekly-update-01-13-2026.md:11is a representative case: the newly migrated multilinetagsarray does not match the repository's Prettier output.prettier --check .reports 189 files, all changed by this PR..github/workflows/code-quality.ymlruns this exactformat:checkgate and prevents the dependent build/SEO job from running when it fails, so this head cannot pass the required PR workflow. Runbun run format:write, commit the resulting formatting changes, and rerun the check.
Validation
npx --yes bun test— passed, 54 tests.SITE_BASE_URL=http://localhost:3000 ./node_modules/.bin/astro build— passed, 642 pages; the build emitted non-fatal translation/compression warnings../node_modules/.bin/prettier --check .— failed on 189 PR-changed blog files.git diff --check b62c838ba42d8731a02ed2b4afc5ce4fc7e02106...73d48854abf8a8a64cf19267bd3bf72f4357e767— passed.node scripts/check-seo-meta.mjs— reports 17 launch-metadata length issues outside the fields changed by this PR.- GitHub currently reports no checks for this head.
n13
left a comment
There was a problem hiding this comment.
Reviewer model: GPT 5.6 Sol
Approve: the previous malformed-category and formatting blockers are resolved, and I found no remaining blocking issues at 9fd61eb.
The category schema, deep-link parsing, locale-specific related-post selection, canonical tag migration, and localized labels are consistent across the full base-to-head diff. Invalid public category query values now safely select all posts, and regression coverage exercises that boundary.
Validation
npx --yes bun test— passed, 54 tests../node_modules/.bin/prettier --check .— passed.SITE_BASE_URL=http://localhost:3000 npx --yes bun run build— passed, 642 pages; existing non-fatal translation/compression warnings remain.git diff --check b62c838ba42d8731a02ed2b4afc5ce4fc7e02106...9fd61ebfa8f48c5cea282cf439969ec0e87b754b— passed.node scripts/check-seo-meta.mjs— still reports the 17 pre-existing launch-metadata length issues outside the fields changed by this PR.- GitHub reports no CI checks for this head.
No blocking findings.
…o beast/update-blog-layout
n13
left a comment
There was a problem hiding this comment.
Reviewer model: GPT 5.6 Sol
Approve: the prior malformed-category and formatting blockers remain resolved, and the merge from main is correctly integrated at 877c695.
I rechecked the complete current base-to-head diff and the incremental merge commit. The category schema and filtering, untrusted query parsing, locale-scoped related posts, canonical tag migration, localized labels, and merged CRQC article/tag additions are consistent. No blocking findings.
Validation
npx --yes bun test— passed, 56 tests../node_modules/.bin/prettier --check .— passed.SITE_BASE_URL=http://localhost:3000 PUPPETEER_SKIP_DOWNLOAD=true npx --yes bun run build— passed, 642 pages; existing non-fatal translation/compression warnings remain.git diff --check db99b5d543cb892e55bf7a730085d2ed9b903f36...877c6956015669cb2f9f566997966bdee5a6ab72— passed.node scripts/check-seo-meta.mjs— still reports the 17 pre-existing launch-metadata length issues outside the fields changed by this PR.- GitHub reports no CI checks for this head.
Summary