-
Notifications
You must be signed in to change notification settings - Fork 0
October 2025 website updates - Team, research, teaching additions #60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Restore JavaScript files accidentally deleted in commit c86a438 - Fix all quote style violations (single to double quotes) - Remove unused Fuse global variable declarations - All 33 ESLint errors resolved (0 errors remaining) - 61 warnings remain (mainly line-length and intentional console.log)
- Add avoidEscape: true to quotes rule - Allows single quotes when they avoid escaping (e.g., HTML strings) - Resolves conflict between ESLint and Prettier formatting
- Turn off indent rule (handled by Prettier) - Resolves remaining 3 indentation errors - All ESLint errors now resolved (0 errors, 59 warnings)
- Create scripts/deploy.sh with automatic port detection (4001-4999) - Automatically find available livereload port (35730-35999) - Includes color-coded output for better developer experience - Handles port conflicts gracefully using lsof - Enable Jekyll live reload for automatic browser refresh - Update README.md with deploy.sh usage in Local Development section - Add deploy.sh to Scripts Documentation section - Add deploy.sh to Directory Structure overview
- Create /add-paper command for automated paper entry - Parse BibTeX entries and extract metadata (authors, title, journal, DOI, arXiv) - Automatic lab member detection and formatting (**Sanjay, V.**, **Dixit, A.**) - Interactive tag selection based on paper keywords - Generate appropriate badges (arXiv, journal, blog, GitHub) - Handle both published papers and preprints - Check for existing preprints when adding published versions - Maintain proper formatting and spacing requirements
- Add paper #18 (Saini et al., J. Comput. Phys., 2025) to published research - Add paper #19 (Mclauchlan et al., PNAS, 2025) to published research - Update News.md with September and August announcements for papers #18 and #19 - Update history.md with complete news archive including new publications - Move papers from preprint to published status in research index - Add new research tags: Elastic beads, Bouncing, Rupture, Marangoni flows, Numerical methods - Include work-in-progress papers with featured tags - Remove oldest news items from main page while preserving in history
- Replace stick figure with modern bust silhouette design - Use filled shapes instead of outlined strokes - Circular head with rounded shoulders and torso - Maintain light gray background with good contrast
- Implement /add-person command for adding new team members - Automates profile image handling and anonymous.svg fallback - Maintains consistent formatting in team index - Validates required fields and proper chronological ordering
- Add M.Sc. student from Durham University - Research focus on porous media flow and Bretherton phenomena - Uses anonymous.svg placeholder for profile image - Position effective from 2025
- Add M.Sc. student Mark Boulogne with co-advisors Detlef Lohse and Aman Bhargava - Include GitHub profile and POF profile links - Add team photo (7.png) - Research interest: Drops and bubbles spreading on LIS
- Add new course card linking to external lecture notes - Include Durham University location and Fall 2025 timeframe - Create custom SVG visualization representing soft matter concepts - Link opens in new tab to blog lecture notes
📝 WalkthroughSummary by CodeRabbit
WalkthroughAdds Claude command docs, content updates (research, news, team, teaching), a Jekyll dev deploy script with automatic port discovery, lint/config tweaks, and a large search DB/content refresh; removes .claude/settings.json. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor Dev
participant deploy.sh as "deploy.sh"
participant System as "Local host"
participant Jekyll as "jekyll (bundle exec)"
Dev->>deploy.sh: run script
deploy.sh->>System: scan ports 4001-4999 for availability
alt port found
System-->>deploy.sh: return port P
deploy.sh->>System: scan livereload ports 35730-35999
alt livereload found
System-->>deploy.sh: return livereload L
deploy.sh->>Jekyll: exec jekyll serve --port P --livereload-port L
Jekyll-->>deploy.sh: started (success)
deploy.sh-->>Dev: print success/banner (P, L)
else no livereload
deploy.sh-->>Dev: error & exit (no livereload port)
end
else no port
deploy.sh-->>Dev: error & exit (no port)
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes
Possibly related PRs
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (3)
🚧 Files skipped from review as they are similar to previous changes (3)
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
News.md (1)
16-62: News item count exceeds guideline limit.The News.md file currently contains 6 non-pinned monthly sections (November, September, August, July, June, May), but the coding guideline specifies keeping only the 5 most recent non-pinned items. Consider removing the oldest section (May) to comply with the guideline.
As per coding guidelines.
assets/js/teaching.js (1)
138-142: Use double quotes for DOM selector queries.Line 142 uses single quotes in the selector query. Convert to double quotes to maintain consistency with JavaScript coding guidelines.
Apply this diff:
const extractDateFromElement = (element) => { return ( element.getAttribute("data-date") || element.getAttribute("date") || - element.querySelector('.course-date, .date, time, [class*="date"]') + element.querySelector(".course-date, .date, time, [class*=\"date\"]") ?.textContent || element.querySelector("[datetime]")?.getAttribute("datetime") ||
🧹 Nitpick comments (3)
_teaching/index.md (1)
46-61: Consider adding image dimensions for layout stability.The new course card follows the existing structure well and includes proper lazy loading. However, consider adding
widthandheightattributes to the image to prevent layout shift during page load. Since the SVG is 600×400px (per PR description), you could add:- <img src="/assets/images/teaching/soft-matter.svg" alt="Introduction to Soft Matter" loading="lazy"> + <img src="/assets/images/teaching/soft-matter.svg" alt="Introduction to Soft Matter" width="600" height="400" loading="lazy">This applies to the other course images as well, but addressing it for new content helps prevent the pattern from spreading.
As per coding guidelines.
scripts/deploy.sh (2)
22-30: Consider checking for lsof availability.The script relies on
lsofto check port availability, but this tool might not be available on all systems (particularly minimal Docker containers or some Linux distributions). Consider adding a check at the script start:# Check for required tools if ! command -v lsof &> /dev/null; then echo -e "${RED}✗ Error: lsof command not found. Please install lsof to use this script.${NC}" >&2 exit 1 fiAlternatively, you could use a more portable method like
nc(netcat) or directly attempting to bind to the port, thoughlsofis generally the most reliable option when available.
64-96: Consider adding Jekyll availability check.The script assumes
bundle exec jekyll servewill work, but doesn't verify that Jekyll and its dependencies are installed. Consider adding a check before port detection:# Check for Jekyll availability if ! bundle exec jekyll --version &> /dev/null; then echo -e "${RED}✗ Error: Jekyll not available. Run './scripts/setup.sh' first.${NC}" >&2 exit 1 fiThis would provide clearer error messages if the user hasn't run setup yet, rather than failing after port detection.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (5)
Gemfile.lockis excluded by!**/*.lockassets/images/teaching/soft-matter.svgis excluded by!**/*.svgassets/images/team/7.pngis excluded by!**/*.pngassets/images/team/anonymous.svgis excluded by!**/*.svgpackage-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (17)
.claude/commands/add-paper.md(1 hunks).claude/commands/add-person.md(1 hunks).claude/settings.json(0 hunks)News.md(1 hunks)README.md(3 hunks)_layouts/team.html(1 hunks)_research/index.md(3 hunks)_teaching/index.md(2 hunks)_team/index.md(2 hunks)assets/js/command-data.js(1 hunks)assets/js/command-palette.js(0 hunks)assets/js/search_db.json(5 hunks)assets/js/teaching.js(3 hunks)eslint.config.js(1 hunks)history.md(1 hunks)package.json(1 hunks)scripts/deploy.sh(1 hunks)
💤 Files with no reviewable changes (2)
- .claude/settings.json
- assets/js/command-palette.js
🧰 Additional context used
📓 Path-based instructions (21)
**/*.js
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.js: Enforce 80-character line limit for JavaScript
Use double quotes for JavaScript strings
Prefer ES6+ features (arrow functions, const/let, async/await) in JavaScript
ESLint (with auto-fix) must pass for JavaScript changes
Files:
assets/js/teaching.jsassets/js/command-data.jseslint.config.js
**/*.{js,css,md,html}
📄 CodeRabbit inference engine (CLAUDE.md)
Run Prettier for code formatting
Files:
assets/js/teaching.js_teaching/index.mdNews.mdhistory.md_layouts/team.html_team/index.mdassets/js/command-data.js_research/index.mdREADME.mdeslint.config.js
**/*.{js,mjs,cjs}
📄 CodeRabbit inference engine (.cursor/rules/javascript-style.mdc)
**/*.{js,mjs,cjs}: Use arrow functions for callbacks and methods
Use template literals for string interpolation instead of string concatenation
Use destructuring for object and array manipulation
Use spread/rest operators where appropriate
Always enable strict mode ('use strict')
Use const by default and let only when reassignment is needed
Never use var
Use camelCase for variable and function names
Use async/await for asynchronous operations instead of .then chains
Implement proper error handling for async code using try/catch around awaited operations
Prefer event delegation for multiple similar elements
Use descriptive event handler names
Remove event listeners when components are destroyed to avoid leaks
Files:
assets/js/teaching.jsassets/js/command-data.jseslint.config.js
_teaching/index.md
📄 CodeRabbit inference engine (CLAUDE.md)
_teaching/index.md must use the teaching layout
Files:
_teaching/index.md
**/*.md
📄 CodeRabbit inference engine (CLAUDE.md)
markdownlint must pass for Markdown files
Files:
_teaching/index.mdNews.mdhistory.md_team/index.md_research/index.mdREADME.md
**/*.{html,md}
📄 CodeRabbit inference engine (CLAUDE.md)
Use lazy loading for images (e.g., loading="lazy")
Files:
_teaching/index.mdNews.mdhistory.md_layouts/team.html_team/index.md_research/index.mdREADME.md
**/*.{md,mdx}
📄 CodeRabbit inference engine (.cursor/rules/html-markdown-style.mdc)
**/*.{md,mdx}: Use appropriate heading levels (h1–h6) in Markdown
Maintain consistent spacing between sections in Markdown
Use lists and tables for structured content in Markdown
Do not skip heading levels in Markdown document structure
Files:
_teaching/index.mdNews.mdhistory.md_team/index.md_research/index.mdREADME.md
**/{News.md,history.md}
📄 CodeRabbit inference engine (CLAUDE.md)
**/{News.md,history.md}: When adding news manually, update both News.md and history.md
News items use "- " list items under "### Month Year" headers; maintain blank lines between sections
Files:
News.mdhistory.md
**/News.md
📄 CodeRabbit inference engine (CLAUDE.md)
Keep only 5 most recent (non-pinned) items in News.md; pinned Durham announcement is excluded from the count
Files:
News.md
**/history.md
📄 CodeRabbit inference engine (CLAUDE.md)
In history.md, sort years descending and months in chronological order within each year
Files:
history.md
**/*.{html,htm}
📄 CodeRabbit inference engine (.cursor/rules/html-markdown-style.mdc)
for page headers
**/*.{html,htm}: Use
Use for navigation
Use for primary content
Use for self-contained content
Usefor thematic grouping
Use for page footers
Avoid using non-semanticelements when appropriate HTML5 elements exist
Files:
_layouts/team.html
**/*.{html,htm,css,scss}
📄 CodeRabbit inference engine (.cursor/rules/html-markdown-style.mdc)
**/*.{html,htm,css,scss}: Follow BEM (Block Element Modifier) naming convention for CSS classes
Avoid inconsistent BEM naming patterns
Files:
_layouts/team.html
**/*.html
📄 CodeRabbit inference engine (.cursor/rules/image-guidelines.mdc)
**/*.html: Include meaningful alt text for all images in HTML
Use empty alt="" for decorative images in HTML
Specify width and height for images to ensure defined dimensions
Files:
_layouts/team.html
_layouts/*.html
📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)
Templates are located in _layouts/*.html
Files:
_layouts/team.html
{_layouts/team.html,assets/css/team.css}
📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)
_layouts/team.html must be paired with assets/css/team.css
Files:
_layouts/team.html
{_layouts/*.html,assets/css/{search.css,styles.css}}
📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)
All templates must include assets/css/search.css and assets/css/styles.css
Files:
_layouts/team.html
_team/index.md
📄 CodeRabbit inference engine (CLAUDE.md)
Use <img src="../assets/images/team/NUMBER.webp" ... class="member-image"> format for team profiles
Files:
_team/index.md
**/{command-palette.js,command-data.js}
📄 CodeRabbit inference engine (CLAUDE.md)
Ensure command-palette.js loads before command-data.js
Files:
assets/js/command-data.js
_research/index.md
📄 CodeRabbit inference engine (CLAUDE.md)
_research/index.md: Add research tags using TagName format in _research/index.md
Add research papers in the specified HTML/Markdown entry template (h3 with id, tags block, badge link)
Mark lab members with bold and include Featured tag (max 2 total) for homepage display
Files:
_research/index.md
**/{README.md,CONTRIBUTING.md,CODE_OF_CONDUCT.md,SECURITY.md}
📄 CodeRabbit inference engine (CLAUDE.md)
Do not create developer documentation files unless explicitly requested
Files:
README.md
README.md
📄 CodeRabbit inference engine (.cursor/rules/project-structure.mdc)
README.md: The README.md file at repository root serves as the primary documentation
Keep README.md up-to-date with any structural changes
Document any new files or directories added to the project in README.md
Files:
README.md
🧠 Learnings (18)
📓 Common learnings
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to _research/index.md : Mark lab members with **bold** and include <span>Featured</span> tag (max 2 total) for homepage display
📚 Learning: 2025-08-24T19:51:04.722Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: .cursor/rules/javascript-style.mdc:0-0
Timestamp: 2025-08-24T19:51:04.722Z
Learning: Applies to **/*.{js,mjs,cjs} : Use template literals for string interpolation instead of string concatenation
Applied to files:
assets/js/teaching.js
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to _teaching/[0-9][0-9][0-9][0-9]-*.md : Teaching course pages must be created as _teaching/YYYY-CourseName-Location.md using the teaching-course layout
Applied to files:
_teaching/index.md
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to _teaching/index.md : _teaching/index.md must use the teaching layout
Applied to files:
_teaching/index.md
📚 Learning: 2025-08-24T19:51:18.247Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-08-24T19:51:18.247Z
Learning: Applies to README.md : Document any new files or directories added to the project in README.md
Applied to files:
.claude/commands/add-person.md.claude/commands/add-paper.mdREADME.md
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to _team/index.md : Use <img src="../assets/images/team/NUMBER.webp" ... class="member-image"> format for team profiles
Applied to files:
.claude/commands/add-person.md
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to _research/index.md : Mark lab members with **bold** and include <span>Featured</span> tag (max 2 total) for homepage display
Applied to files:
.claude/commands/add-person.mdassets/js/search_db.json_team/index.md
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to **/{News.md,history.md} : News items use "- " list items under "### Month Year" headers; maintain blank lines between sections
Applied to files:
News.mdhistory.md
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to _research/index.md : Add research papers in the specified HTML/Markdown entry template (h3 with id, tags block, badge link)
Applied to files:
.claude/commands/add-paper.md
📚 Learning: 2025-08-24T19:51:18.247Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-08-24T19:51:18.247Z
Learning: Prefer manual control over Jekyll server deployment
Applied to files:
scripts/deploy.shREADME.md
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to **/{command-palette.js,command-data.js} : Ensure command-palette.js loads before command-data.js
Applied to files:
assets/js/command-data.js
📚 Learning: 2025-08-24T19:51:18.247Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-08-24T19:51:18.247Z
Learning: Applies to README.md : Keep README.md up-to-date with any structural changes
Applied to files:
README.md
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to assets/images/teaching/**/* : Store teaching images under /assets/images/teaching/ (cards 600x400px, banners 1200x400px)
Applied to files:
README.md
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to **/*.js : ESLint (with auto-fix) must pass for JavaScript changes
Applied to files:
eslint.config.js
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to **/*.{js,css,md,html} : Run Prettier for code formatting
Applied to files:
eslint.config.js
📚 Learning: 2025-08-24T19:51:04.723Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: .cursor/rules/javascript-style.mdc:0-0
Timestamp: 2025-08-24T19:51:04.723Z
Learning: Applies to **/*.{js,mjs,cjs} : Always enable strict mode ('use strict')
Applied to files:
eslint.config.js
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to **/*.js : Prefer ES6+ features (arrow functions, const/let, async/await) in JavaScript
Applied to files:
eslint.config.js
📚 Learning: 2025-08-24T19:49:35.574Z
Learnt from: CR
Repo: comphy-lab/comphy-lab.github.io PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-24T19:49:35.574Z
Learning: Applies to **/*.js : Use double quotes for JavaScript strings
Applied to files:
eslint.config.js
🪛 LanguageTool
.claude/commands/add-person.md
[uncategorized] ~129-~129: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...nonymous.svg instead - Links should use markdown format with icons in square brackets - ...
(MARKDOWN_NNP)
🔇 Additional comments (14)
package.json (1)
42-44: ---The
form-dataoverride is justified—it addresses CVE-2025-7783.The override to
^4.0.4is appropriate. Versions 4.0.0–4.0.3 (along with earlier major versions) contained a critical vulnerability (CVE-2025-7783) where multipart boundary strings were generated usingMath.random(), making them predictable and enabling HTTP parameter pollution attacks. Version 4.0.4 is the patched release.Consider adding a brief comment to
package.jsondocumenting this security rationale for future maintainers:"overrides": { "form-data": "^4.0.4" // Ensure patched version (CVE-2025-7783) }assets/js/command-data.js (1)
2-2: LGTM! Valid cleanup of lint directive.The removal of
Fusefrom the global lint directive is appropriate since Fuse.js is loaded via CDN in the HTML layout files and doesn't need to be declared as a global in this file's context.eslint.config.js (1)
14-16: LGTM! Proper ESLint and Prettier integration.These changes follow best practices for coordinating ESLint with Prettier:
- Disabling
indentrule prevents conflicts since Prettier handles formatting- Adding
avoidEscape: trueto thequotesrule allows single quotes in strings when it avoids escaping (e.g.,"don't"instead of'don\'t')This improves the developer experience while maintaining code quality standards.
_layouts/team.html (1)
316-316: LGTM! Map URL updated to reflect current team locations.The update to the Google Maps embed URL (new map ID and domain change from .nl to .com) aligns with the team member additions in this PR. The iframe attributes remain properly configured with security and accessibility features intact.
README.md (1)
109-133: LGTM! Clear and helpful documentation.The documentation for
deploy.shis well-written and properly positioned:
- Clear explanation of features (port detection, live reload, auto-refresh)
- Positioned as the recommended approach while preserving the manual method
- Follows the existing documentation style
- Provides helpful context about port ranges and conflict resolution
This will improve the developer experience for new contributors.
_team/index.md (2)
108-133: LGTM! New team members properly formatted.Both new team member entries (Peter Croxford and Mark Boulogne) follow the established format consistently:
- Proper heading structure and styling
- GitHub links included
- Appropriate image attributes with lazy loading and dimensions
- Research interests clearly stated
- Use of anonymous.svg placeholder for Peter Croxford is a good practice when photos aren't available yet
The entries maintain consistency with the rest of the team page.
431-437: LGTM! Proper update to reflect Ph.D. completion.The update from "Pim J. Dekker M.Sc." to "Dr. Pim J. Dekker" appropriately reflects the completion of their Ph.D. The entry maintains consistent formatting with other alumni entries, and the updated position information is clearly presented.
.claude/commands/add-paper.md (1)
1-166: Comprehensive workflow documentation for adding research papers. ✓This documentation clearly defines the BibTeX-to-markdown conversion workflow with proper formatting rules, author truncation guidelines (et al. for 5+ authors), tag specifications, and badge generation. The example input/output aligns with best practices.
.claude/commands/add-person.md (1)
1-128: Comprehensive team member addition workflow. ✓Well-structured documentation covering all three categories (Present Team, Active Collaborations, Alumni) with clear formatting rules, image handling, icon references, and insertion guidelines. Aligns with project standards.
_research/index.md (3)
20-25: New topic tags and Featured tag management. ✓Five new topic tags (Elastic beads, Bouncing, Rupture, Marangoni flows, Numerical methods) are properly added and follow the tags format. Featured tag removed from [16] to maintain the max 2 Featured items on homepage—correct per PR objectives and learnings.
31-48: New preprint entries properly formatted. ✓Two new preprints (Dixit et al., Jana et al.) in Work in Progress section follow the specified HTML/Markdown template with correct author bolding, tags, badges (arXiv, GitHub, Blog), and embedded YouTube content. Formatting is consistent with project standards.
66-83: 2025 publications correctly added with proper badges and metadata. ✓Three 2025 papers ([19] Mclauchlan, [18] Saini, [17] Bashkatov) are properly formatted with journal badges (PNAS, J. Comput. Phys., Nat. Commun.), arXiv links, GitHub repos, and blog placeholders. Entry numbers and IDs are correctly assigned. Note: Address author list truncation for [17] per separate comment.
history.md (1)
25-35: News entries properly formatted with consistent styling. ✓Three new 2025 news items (November, September, August) follow the required "- " list format under "### Month Year" headers with proper blank-line spacing. Links, GitHub icons, thesis links with PDF styling, and award information are consistently formatted. Cross-references to research page (e.g.,
/research#18,/research#19) properly link to corresponding publications.assets/js/search_db.json (1)
323-323: "Featured" tag constraint is satisfied.The verification confirms that adding the "Featured" tag to paper [11] results in exactly 2 papers marked with this tag, meeting the maximum constraint for homepage display.
- Remove 'et al.' usage for papers with more than 5 authors - Always list complete author lists regardless of length - Update example to show all 13 authors in full format - Aligns with existing practice in research publications
- Capitalize 'Markdown' in add-person.md documentation - Fix quote escaping in teaching.js selector strings - Break long selector string into multiple lines for readability
Summary
This PR consolidates significant updates to the CoMPhy Lab website for October 2025, including team member additions, new research publications, teaching course expansion, and workflow automation improvements.
Team Updates
New Team Members
Title and Affiliation Updates
Research Publications
New Published Papers
New Preprints (Work in Progress)
Updates
Teaching Expansion
New Course Card
Custom SVG Image Created
/assets/images/teaching/soft-matter.svgNews Updates
Recent Achievements
Developer Workflow Improvements
New Slash Commands
/add-paper- Automated research paper addition/add-person- Automated team member managementNew Deployment Script
deploy.sh- Local development server with smart featuresCode Quality Improvements
Technical Changes
Dependencies
Removed Files
.claude/settings.json(moved to project-specific hooks)Documentation
Files Changed (22 files)
Major Additions:
.claude/commands/add-paper.md(166 lines) - Research paper automation.claude/commands/add-person.md(130 lines) - Team member automationscripts/deploy.sh(96 lines) - Smart local development serverassets/images/teaching/soft-matter.svg(105 lines) - Custom SVG artworkContent Updates:
_team/index.md- New team members and updates_research/index.md- New papers and preprint transitions_teaching/index.md- New course cardNews.md&history.md- Recent achievementsREADME.md- Documentation improvementsTechnical Updates:
Testing
All changes have been tested locally:
Notes