Repository navigation
Redesign the site and harden it for 2026 - #115
Open
indiVar0508 wants to merge 2 commits into
Open
indiVar0508 wants to merge 2 commits into
indiVar0508 wants to merge 2 commits into
Conversation
Rebuild the theme around the BangPypers brand and drop the legacy Mediumish/Bootstrap stack. Design and UX - New header, footer and homepage: upcoming meetups first, recent write-ups, community posts and ways to take part - Official logo marks from bangpypers/assets, navy and yellow palette, Anek Latin and Source Serif 4 type - Light and dark themes: follows the system setting, with a header button that remembers the reader's choice - Accessible markup: skip link, landmarks, one h1 per page, single-link cards, visible focus, reduced motion respected - Post pages with reading time, author cards, tags and share links; blog and archives grouped by year; proper 404 page - Search in a native dialog, loaded only when opened Security - Content-Security-Policy in production builds; no inline scripts or event handlers anywhere in the templates - Fix DOM XSS in search results (rendered with textContent) - Remove jQuery, Bootstrap, Popper and Font Awesome CDNs - Google Analytics only in production builds - SECURITY.md, .well-known/security.txt, robots.txt and sitemap Build and deploy - Jekyll 4.4 with all gems updated - Deploy with GitHub Actions instead of the classic Pages builder, so jekyll-archives runs and tag/year pages stop returning 404 - Fix jekyll-archives keys (year/month) that never generated pages - SHA-pinned actions, least-privilege permissions, Dependabot with a 7-day cooldown; remove Travis and the token-based deploy script - check_blogs.rb also guards the CSP, inline scripts, search index, structured data, security.txt expiry and theme script loading Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The per-field replace in structuredata.html was a no-op, so a post title, description or author name containing "</script>" could end the JSON-LD script element early and inject HTML. Escape "<" once over the rendered block instead, which also covers author names and site fields, and add a check_blogs.rb test that renders the include with hostile values. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Rebuilds the site's theme around the BangPypers brand, replaces the old Mediumish/Bootstrap stack, and fixes several live bugs and security issues. Content (posts, authors, pages) is unchanged apart from the jobs page's embed and the mailing list links.
Before merging: repository settings
SECURITY.mdrely on it.bangalore.pythonindia.orgin the organisation's Pages settings and keep "Enforce HTTPS" on, so nobody else can claim the subdomain.buildcheck required on pull requests.Bugs fixed on the live site
jekyll-archives, and_config.ymlused the wrong keys (years/months).textContent.h1s, and the mailing list links pointed to the retired Mailman 2 archive.Design and UX
bangpypers/assets, navy#002750and yellow#FFCA00palette, Anek Latin and Source Serif 4.h1per page, one link per card, visible focus, reduced motion respected.Security
check_blogs.rbfails if one is added.SECURITY.md,/.well-known/security.txt,robots.txtand a sitemap.Build and deploy
.github/workflows/pages.ymlbuilds every PR and deploysmasterwithactions/deploy-pages(no stored token). Actions are pinned to commit SHAs, permissions are least-privilege, and checkout doesn't keep credentials..travis.ymlanddeploy.sh, which pushed using a personal access token.How to review locally
Testing
check_blogs.rbpasses. Its new checks were tested by breaking each one on purpose./shortcut), mobile menu, archives, author pages, 404 and Giscus.cooldownsetting.Known effects
jobposting.md. When resolving, drop thestatic.airtable.comscript: the CSP blocks it, and the form iframe works without it at a fixed height.altuntil a post sets the new optionalimage_altfront matter.🤖 Generated with Claude Code