Sanitize team member anchor slugs - #93
Closed
VatsalSy wants to merge 793 commits into
Closed
Conversation
- Capitalize 'Markdown' in add-person.md documentation - Fix quote escaping in teaching.js selector strings - Break long selector string into multiple lines for readability
October 2025 website updates - Team, research, teaching additions
Add volume 22 and page range 657-667 for the stood-up drop paper now that it's officially published.
Adds comprehensive command-line options to both scripts: Build script (build.sh): - --help: Display usage information - --clean: Force rebuild by removing _site and .jekyll-cache - --skip-deps: Skip dependency installation for faster rebuilds - --skip-seo: Skip SEO metadata generation - --skip-research: Skip research page generation Deploy script (deploy.sh): - --help: Display usage information - --port PORT: Use specific port instead of auto-detection - --host HOST: Bind to specific host (default: localhost) - --drafts: Include draft posts in build - --incremental: Enable faster incremental rebuilds - --no-livereload: Disable live reload feature - --open: Auto-open browser after server starts Both scripts maintain backward compatibility and include improved error handling and user feedback.
Adds year-based organization to News.md and history.md: - Creates separate sections for 2026 and 2025 - Moves Durham University announcement under 2025 heading - Adds paper [21] (Soft Matter) to January 2026 section - Maintains 5-item limit for regular news items - Updates add-news command to handle year sections - Special announcements now excluded from 5-item count This structure makes the news system more scalable as we enter 2026.
Changes to aboutCoMPhy.md: - Update location badge from Physics of Fluids to Durham University - Change map link to Durham campus location - Remove mailto badge to avoid duplicate email display - Keep two email containers with envelope and copy functionality
Keep shared command definitions in the OpenCode directory. Ignore the local .claude symlink so it stays machine-specific.
Reject missing or non-numeric port values and missing host args up front. Clarify news month ordering guidance to match reverse-chronological usage.
2025 wrap-up updates
Generate the GitHub App token before checkout and push via origin so updates are attributed to the app for ruleset bypass.
Force author and committer identity to the GitHub App bot and log the latest commit metadata for verification.
Preserve jsdom globals in Jest setup and align tests. Scope markdownlint to repo ignores and quiet noisy content. Relax ESLint max-len/no-console for legacy scripts and fix CSS spacing.
The legacy --research-list-text chain in styles.css resolves to --color-secondary, which bridge.css remaps to --c-paper-tint -- invisible on dark paper. --c-brand-blue also lacks a dark override, leaving the Highlights heading dim. Override both in research-v2.css with theme-aware values.
Website v2: design-system migration, redesigned homepage + team + research + news
Pad table separator rows for markdownlint MD060
Bump addressable to 2.9.0 (CVE-2026-35611)
Replace the broken /VatsalSy and /comphy-bot footer routes with live external destinations so the v2 footer no longer emits 404s.
Fix footer maintainer links
Adds the Tiny Defects, Big Consequences news item that was only in News.md but not in the structured feed. Fixes typo in URL (tiniy -> tiny). Closes #5182
- Added news item for the award (kind: award, date: 2026-05-28) - Added featured hero work entry showcasing the award video on landing page
- Added the image as poster frame for the video hero slide - Updated index.html to support poster attribute on video elements
Update npm and Ruby dependency constraints to resolve the current Dependabot alerts for fast-uri, PostCSS, and Nokogiri. Also refresh markdownlint-cli2/ws-resolved dev dependencies so npm audit is clean.
Align rebuild workflow Ruby toolchain
There was a problem hiding this comment.
Pull request overview
This PR removes a stored XSS / attribute-injection vector on the Team page by ensuring the in-page anchor link uses a sanitized, slugified identifier rather than interpolating raw m.slug into the href. It also aligns the href fragment with the corresponding <article id> so deep links resolve consistently.
Changes:
- Introduces a per-member Liquid
member_idderived fromm.slug | default: m.name | slugify. - Reuses
member_idfor both the present-member<article id>and the name-linkhreffragment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
Motivation
m.sluginto an anchorhrefby ensuring the href uses a slugified/sanitized identifier.Description
_team/index.mdderive a single Liquidmember_idwithm.slug | default: m.name | slugifyand reuse{{ member_id }}for both the<article id>and the present-member name linkhref, preserving deep-link behavior while avoiding unescaped interpolation.Testing
./scripts/lint-check.sh(passed) andnpm test -- command-data.test.js(Jest tests passed);bundle exec jekyll build --destination /tmp/comphy-site-buildwas attempted but blocked by missing local Jekyll/Bundler/Ruby environment in the execution environment.Codex Task