Skip to content

vs-branch-10#39

Merged
VatsalSy merged 40 commits intomainfrom
vs-branch-10
May 11, 2025
Merged

vs-branch-10#39
VatsalSy merged 40 commits intomainfrom
vs-branch-10

Conversation

@VatsalSy
Copy link
Member

  • Add new research paper on viscoelastic Worthington jets and droplets
  • Add new history page with news updates
  • Improve styling and layout of history page
  • Add new history news box styles
  • Remove unused history collection from config
  • Add history button to news content
  • Introduce coding style guidelines across the project
  • Remove unused .gitignore entry and add newline

@coderabbitai
Copy link
Contributor

coderabbitai bot commented May 11, 2025

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Introduced a dedicated "History" page with a chronological record of academic milestones, awards, and publications.
    • Added a new HTML layout for history/teaching pages with enhanced navigation, theme support, and command palette functionality.
  • Enhancements

    • Unified and modernized news and history section layouts using shared responsive CSS for consistent styling.
    • Improved team and alumni pages with uniform PDF thesis links and corrected Ph.D. start dates.
    • Updated featured research section with a new isolated layout and styling for better visual clarity.
    • Added accessible, keyboard-friendly "Archive" button in the news section.
  • Documentation

    • Added comprehensive project guidelines, code style, and repository structure documentation for contributors.
    • Introduced detailed style guides for HTML, CSS, JavaScript, images, and general code practices.
  • Bug Fixes

    • Corrected author lists and publication details in research and news sections.
    • Fixed inconsistent formatting and removed outdated news content from 2024.
  • Style

    • Refactored and expanded CSS for team, about, research, teaching, and news/history sections with improved theming and responsiveness.
    • Enhanced accessibility and visual consistency across all major site sections.
  • Chores

    • Improved security by adding rel="noopener noreferrer" to all external links opening in new tabs.
    • Removed deprecated or redundant documentation files and updated .gitignore settings.

Summary by CodeRabbit

  • New Features

    • Introduced a dedicated history page showcasing academic and professional milestones with structured content and visual enhancements.
    • Added a new HTML layout for history/teaching pages, featuring SEO optimization, theme support, and an interactive command palette.
    • Implemented comprehensive code style and project structure guidelines for contributors.
    • Added a detailed project documentation file outlining build commands, repository practices, and style conventions.
  • Enhancements

    • Unified and improved styling for news and history sections with new shared CSS, responsive layouts, and theme-aware designs.
    • Refined team and map page layouts with modular, responsive, and accessible styles.
    • Updated featured research and news sections for better structure, navigation, and visual consistency.
    • Improved accessibility and security by adding rel="noopener noreferrer" to external links throughout the site.
    • Modularized and streamlined JavaScript for dynamic content loading, featured papers, and enhanced copy-to-clipboard functionality.
  • Content Updates

    • Added new publications, awards, and news items for 2025; removed outdated 2024 news.
    • Updated research and team pages with recent publications, corrected author lists, and revised member start dates.
  • Bug Fixes

    • Fixed inconsistent formatting and improved date accuracy in team and research entries.
  • Documentation

    • Added and updated markdown files for CSS, JavaScript, HTML/Markdown, image handling, and general code style guidelines.
    • Removed outdated rule-writing guide documentation.
  • Style

    • Reorganized and updated CSS variables and class rules for consistent theming and improved maintainability across all sections.

Walkthrough

This update introduces comprehensive documentation and styling guidelines, adds new layout and history pages, and unifies news/history presentation. It modularizes CSS for about, news, and team sections, refactors JavaScript for content loading and featured research, and updates security attributes on external links. News and research content are restructured for clarity and consistency.

Changes

File(s) / Path(s) Change Summary
.windsurf/rules/css-style.md, .windsurf/rules/general-code-style.md, .windsurf/rules/html-markdown-style.md, .windsurf/rules/image-guidelines.md, .windsurf/rules/javascript-style.md, .windsurf/rules/project-structure.md Added new style and structure guideline documents for CSS, general code, HTML/Markdown, images, JavaScript, and project organization.
CLAUDE.md Added a comprehensive contributor guide covering build commands, repository policies, and code style rules.
.cursor/rules/rule-writing-guide.mdc Deleted the meta-rule documentation for writing .mdc rule files.
.gitignore Removed the ignore rule for CLAUDE.md so it is now tracked by Git.
News.md Added May 2025 publication news, reformatted 2025 news items to use flexbox containers and unified classes, uncommented a previously hidden PRL news item, and removed all 2024 news entries.
history.md Added a new history page with a chronological record of publications, awards, and events for 2024–2025, using structured HTML and Markdown.
_layouts/history.html Added a new layout for history/teaching pages with SEO, theme toggle, command palette, and full navigation/footer.
index.html Replaced the old featured section with a new #featured-wrapper div, reset all borders/lines inside it, updated intro anchor link, and styled the news header.
_layouts/default.html Added shared-news-history.css and about-layout.css to the head, enhanced theme toggle with a custom event, and updated footer external links with rel="noopener noreferrer".
_layouts/team.html Added team-page-body class to <body>, improved section and heading classes, updated map embed with sandbox, and secured external links in the footer.
_layouts/research.html, _layouts/teaching.html, _layouts/teaching-course.html Updated all external footer links to include rel="noopener noreferrer".
_team/index.md Fixed minor formatting and updated PhD student start dates.
_research/index.md Moved a published paper from "Work in Progress" to 2025 with full citation, updated author list for a 2022 paper.
aboutCoMPhy.md, join.html, _teaching/2025-Basilisk101-Madrid.md Added rel="noopener noreferrer" to external anchor tags.
assets/css/styles.css Updated CSS variables for news, moved news styles to history.css, added .s-news__history-btn styles, and adjusted dark theme variables.
assets/css/shared-news-history.css New CSS file for unified news/history styling, including variables, flex layouts, link styles, and responsive design.
assets/css/about-layout.css New CSS file for responsive about/news section layout using flexbox and media queries.
assets/css/team.css Refactored and expanded team page styles with new variables, layout classes, responsive grid, image, map, and button styles, and enhanced theme support.
assets/css/research.css Updated heading and shadow colors to use new CSS variables for improved theming.
assets/css/teaching.css Updated heading colors to use new variables and removed gradient text effect.
assets/js/main.js Refactored for consistent style, modularized content loaders (loadAboutContent, loadNewsContent, loadFeaturedPapers), improved featured paper rendering, added news archive button, and enhanced email copy accessibility.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Browser
    participant MainJS
    participant Server

    User->>Browser: Loads main page
    Browser->>MainJS: window.onload
    MainJS->>Server: fetch('/aboutCoMPhy.md')
    Server-->>MainJS: about markdown
    MainJS->>Browser: Render about content

    MainJS->>Server: fetch('/News.md')
    Server-->>MainJS: news markdown
    MainJS->>Browser: Render news content
    MainJS->>Browser: Append "Archive" button

    MainJS->>Server: fetch('/research/')
    Server-->>MainJS: research HTML
    MainJS->>Browser: Parse and render featured papers

    User->>Browser: Clicks "Copy Email"
    Browser->>MainJS: copyEmail(button)
    MainJS->>Browser: Copy to clipboard, show feedback
Loading

Possibly related PRs

  • vs-branch-8 #36: Adds the .cursor/rules/rule-writing-guide.mdc meta-rule document that this PR deletes, directly related by file-level changes.

Poem

In the warren of code, new rules take their place,
With history and news now styled with grace.
Team and research pages, neat and bright,
About and featured—everything just right!
🐇 Hopping through markdown, CSS, and JS anew—
This rabbit celebrates a launch fresh as dew!

✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 20

🧹 Nitpick comments (26)
assets/js/main.js (1)

58-65: Well-implemented History Archive button

The History Archive button implementation is clean and includes proper accessibility attributes (role="button" and tabindex="0"). This matches the PR objective of adding navigation to the new history page.

One suggestion for further enhancement:

-                historyBtn.innerHTML = '<i class="fa-solid fa-arrow-right" style="margin-right: 8px; font-size: 1.2em;"></i>History Archive';
+                historyBtn.innerHTML = '<i class="fa-solid fa-arrow-right" style="margin-right: 8px; font-size: 1.2em;" aria-hidden="true"></i>History Archive';

Adding aria-hidden="true" to the icon ensures screen readers don't announce it redundantly.

.windsurf/rules/css-style.md (1)

37-56: Example Media Query Structure is illustrative
The snippet demonstrates mobile-first scaling well. As an optional improvement, you could include an example for the largest desktop breakpoint or show how to override specific component styles.

history.md (4)

1-4: Consider adding a permalink or URL frontmatter
Specifying a permalink: /history/ can ensure consistent routing and SEO-friendly URLs.


14-23: Flex-row layout is consistent but could lazy-load images
All <img> tags have alt text, which is great. To improve performance, consider adding loading="lazy".


29-37: April news-flex-row structure is sound
Like above, consider loading="lazy" on images for large pages.


38-41: Use semantic <figure>/<figcaption> for image credits
Wrapping the credit in a <figure> and <figcaption> enhances accessibility and semantics:

- <div class="news-flex-row">…</div>
+ <figure class="news-flex-row">
+   <img … class="news-image"/>
+   <figcaption style="…">Image credit: …</figcaption>
+ </figure>
.windsurf/rules/image-guidelines.md (1)

36-45: Specify fenced-code block language for linting
The HTML snippet should be annotated as an HTML code block:

- ```  
+ ```html

This addresses markdownlint MD040.

.windsurf/rules/javascript-style.md (1)

20-23: Consider module context for strict mode
ES6 modules are strict by default, so the 'use strict' directive may be redundant in module-based code. If your project uses native ES modules or a bundler, you can omit it to reduce boilerplate.

🧰 Tools
🪛 LanguageTool

[duplication] ~22-~22: Possible typo: you repeated a word.
Context: ...etwhen reassignment is needed - Never usevar` - Use camelCase for variable and function nam...

(ENGLISH_WORD_REPEAT_RULE)

assets/css/styles.css (2)

574-623: Add focus-visible outline for accessibility
The history button currently lacks a visible focus indicator, which hinders keyboard navigation. Add a :focus-visible rule to meet WCAG standards.

.s-news__history-btn:focus-visible {
  outline: 2px solid var(--color-link);
  outline-offset: 2px;
}

Also consider replacing hard-coded colors with CSS variables for better theming consistency.


2846-2852: Unify .news-flex-row spacing values
The gap is set to 20px here, but in history.css it’s 15px. Align these values or document intentional differences to maintain consistent layouts across news and history sections.

CLAUDE.md (1)

30-38: Capitalize Markdown and reconsider strict mode directive

  • Change "markdown" to "Markdown" for consistency as a proper noun.
- Keep content files in markdown format where possible
+ Keep content files in Markdown format where possible
  • ES6 modules are strict by default; the 'use strict' directive may not be necessary if your JavaScript runs as modules.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~32-~32: You might be missing the article “the” here.
Context: ...n - Use semantic HTML elements - Follow BEM naming convention for CSS classes (e.g....

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[grammar] ~33-~33: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...der__nav-list`) - Keep content files in markdown format where possible ## CSS - Use CSS...

(MARKDOWN_NNP)

assets/css/history.css (5)

7-13: Scope typography resets under a container
Overriding global font-style and text-decoration for anchors may affect unrelated pages. Prefix selectors with a history page scope (e.g., .history-news-box a) to isolate these fixes.


15-23: Combine and scope icon style rules
You have two similar selector lists targeting icons. Merge them into a single rule and restrict their scope to the history page to avoid global side effects.


32-38: Use semantic classes over generic selectors
Targeting .news-flex-row directly risks collisions. Adopt a BEM-style or more descriptive class name (e.g., .s-news-flex__row) to improve clarity and prevent conflicts.


67-78: Swap hard-coded dark theme colors for variables
Hex values in dark theme rules reduce flexibility. Use theme-aware custom properties (e.g., var(--link-doi-color), var(--news-img-shadow)) consistently for easier maintenance.


80-89: Consider responsive adjustments for .history-news-box
The fixed max-width: 900px and uniform padding may overflow on smaller devices. Add a mobile breakpoint or fluid padding to ensure the box scales gracefully.

_layouts/history.html (10)

10-19: Evaluate critical CSS scope and optimization
Inlining only the header and heading visibility rules is a good start, but you may want to document why these selectors are critical. Consider expanding or extracting additional above-the-fold styles into this block for the fastest first paint.


21-26: Preload critical assets
Preloading your core CSS and JS is excellent. Since this is the history page, you might also preload history.css if its rules are needed immediately to avoid FOUC.


59-65: Site stylesheet inclusion is correct
All necessary CSS files are included in the right order. If critical styling in history.css impacts above-the-fold content, you may want to preload it or reorder for performance as noted above.


82-88: Deferred JS dependencies are in order
Deferring the Markdown parser (marked.js), search (fuse.js), and your core scripts reduces render-blocking. Verify that unused libraries aren’t loaded on pages that don’t need them.


90-128: Theme toggle logic is robust
The IIFE correctly handles saved preferences, OS defaults, and toggle events. For maintainability, consider moving this script into its own module (e.g., theme.js) under assets/js/ and loading it with defer.


164-167: Preloader inclusion
The preloader markup is present. If your main JS also handles preloading visuals, ensure you’re not duplicating functionality or styles in multiple places.


169-174: Remove redundant script block
This inline <script> block is now empty (platform detection and shortcut updates moved to platform-utils.js). Consider removing it to declutter the markup.


176-229: Enhance navigation context for History
The global nav links are comprehensive but don’t include a “History” menu item or active-state styling. For better UX, add a History link (and highlight it when on this layout) so users know where they are.


231-242: Lazy-loading enhancements
Your approach to inject loading="lazy" on images and wrap iframes is effective. You may want to rename the teaching-content class to history-content for semantic clarity, unless it’s intentionally shared.


293-306: Improve accessibility of command palette modal
Consider adding ARIA attributes to the modal container and input for screen readers, e.g.:

<div role="dialog" aria-modal="true" aria-labelledby="command-palette-input">
  <input id="command-palette-input" aria-label="Type a command" >

This will make the palette more accessible.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 72b396f and 1c6d38d.

⛔ Files ignored due to path filters (1)
  • assets/images/research/S002211202500237X_figAb.png is excluded by !**/*.png
📒 Files selected for processing (16)
  • .cursor/rules/rule-writing-guide.mdc (0 hunks)
  • .gitignore (1 hunks)
  • .windsurf/rules/css-style.md (1 hunks)
  • .windsurf/rules/general-code-style.md (1 hunks)
  • .windsurf/rules/html-markdown-style.md (1 hunks)
  • .windsurf/rules/image-guidelines.md (1 hunks)
  • .windsurf/rules/javascript-style.md (1 hunks)
  • .windsurf/rules/project-structure.md (1 hunks)
  • CLAUDE.md (1 hunks)
  • News.md (1 hunks)
  • _layouts/history.html (1 hunks)
  • _research/index.md (2 hunks)
  • assets/css/history.css (1 hunks)
  • assets/css/styles.css (2 hunks)
  • assets/js/main.js (1 hunks)
  • history.md (1 hunks)
💤 Files with no reviewable changes (1)
  • .cursor/rules/rule-writing-guide.mdc
🧰 Additional context used
🪛 LanguageTool
.windsurf/rules/javascript-style.md

[duplication] ~22-~22: Possible typo: you repeated a word.
Context: ...etwhen reassignment is needed - Never usevar` - Use camelCase for variable and function nam...

(ENGLISH_WORD_REPEAT_RULE)

CLAUDE.md

[uncategorized] ~32-~32: You might be missing the article “the” here.
Context: ...n - Use semantic HTML elements - Follow BEM naming convention for CSS classes (e.g....

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[grammar] ~33-~33: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...der__nav-list`) - Keep content files in markdown format where possible ## CSS - Use CSS...

(MARKDOWN_NNP)

News.md

[uncategorized] ~76-~76: Did you mean “I”?
Context: ...djsent" style="text-decoration: none;"> <i class="fa-brands fa-github" style="font...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~79-~79: Did you mean “I”?
Context: ...ne; color: #0056b3; font-weight: 500;"> <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)

history.md

[uncategorized] ~83-~83: Did you mean “I”?
Context: ...djsent" style="text-decoration: none;"> <i class="fa-brands fa-github" style="font...

(I_LOWERCASE_PREMIUM)

🪛 markdownlint-cli2 (0.17.2)
.windsurf/rules/image-guidelines.md

6-6: Headings must start at the beginning of the line
null

(MD023, heading-start-left)


23-23: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

.windsurf/rules/html-markdown-style.md

6-6: Headings must start at the beginning of the line
null

(MD023, heading-start-left)

🪛 ast-grep (0.31.1)
_layouts/history.html

[warning] 245-247: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context:
Basilisk C

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)

🔇 Additional comments (26)
.gitignore (1)

34-34: LGTM!

The line Thumbs.db appears to be preserved or just have a formatting change, which aligns with the PR objective of removing unused entries while maintaining existing ignore rules.

.windsurf/rules/general-code-style.md (1)

1-45: Well-structured code style guidelines

The general code style guidelines document is clearly organized with appropriate sections covering formatting, organization, and documentation standards. The examples effectively illustrate good and bad practices, which will help maintain consistent code quality across the project.

.windsurf/rules/html-markdown-style.md (1)

1-5: Well-defined HTML/Markdown guidelines

The HTML and Markdown style guidelines are comprehensive and include excellent examples of semantic HTML usage and BEM naming conventions. This will help maintain consistency across documentation and templates.

Also applies to: 7-44

_research/index.md (2)

50-53: New 2025 publication entry is correctly formatted
The <h3 id="16"> block and its accompanying <tags> and badge links follow the established pattern and maintain consistency with other entries.


158-158: Expanded author list update is properly applied
The <h3 id="9"> element now includes the additional authors Sen, U., Kant, P., and Lohse, D., matching the corrected citation format.

.windsurf/rules/css-style.md (3)

12-20: CSS Variables section is clear and concise
Defining colors and typography in :root using custom properties aligns with best practices for themeability and maintainability.


22-30: Responsive Design guidelines follow mobile-first best practices
The listed breakpoints cover common device widths. Consider briefly noting that additional breakpoints can be added if future layouts require them.


58-62: Common Pitfalls list is comprehensive
The bullet points cover typical mistakes; no changes needed here.

.windsurf/rules/project-structure.md (3)

12-20: Repository Structure guidelines are well-defined
Mapping templates to their CSS files and calling out shared assets (search.css/styles.css) provides clarity.


21-25: Documentation Maintenance section is appropriate
Manual control of Jekyll deployment and README upkeep instructions are clear and actionable.


26-29: Common Pitfalls properly highlight gotchas
The listed pitfalls will help prevent documentation drift and mapping errors.

history.md (3)

10-13: History entry for May 2025 is accurate and consistent
The markdown list item linking to /research#16 and the citation format matches other entries.


27-28: April 2025 award entry is clear
The list item with an inline link follows the established pattern and styling.


42-45: March 2025 list item is formatted correctly
The mix of HTML anchors and markdown is consistent with other entries.

.windsurf/rules/image-guidelines.md (5)

6-10: Introduction clearly states purpose
The context for image optimization and accessibility is well communicated.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

6-6: Headings must start at the beginning of the line
null

(MD023, heading-start-left)


12-19: Image Optimization guidelines are thorough
Covering formats and compression aligns with modern web standards.


20-27: Naming Convention examples are descriptive
The [name]-[descriptor] pattern and examples will help maintain consistency.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

23-23: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


29-33: Accessibility section is comprehensive
Emphasizing meaningful alt text and empty alt="" for decoratives is spot on.


48-53: Common Pitfalls list is well-considered
These points will catch typical oversights in image handling.

.windsurf/rules/javascript-style.md (1)

6-17: Comprehensive and clear JavaScript style guidelines
This document effectively outlines ES6+ feature use, naming conventions, async/await patterns, and event handling best practices.

CLAUDE.md (1)

1-8: Comprehensive development commands
The build and development steps are clearly documented. Consider breaking multi-command lines into separate bullets or code blocks for improved readability, but the current setup is concise and functional.

_layouts/history.html (5)

1-9: Head structure and includes are well-formed
The DOCTYPE declaration, lang attribute, and inclusion of theme-init.html establish a solid foundation for theming and accessibility. No immediate issues detected.


27-37: Favicon links are correctly configured
You’ve covered all major platforms and included theme-color meta tags. This implementation looks complete and accurate.


44-57: Font loading strategy looks solid
Using font-display: swap, the print/onload media hack, and a <noscript> fallback ensures fonts load efficiently and degrade gracefully.


133-160: Conditional Font Awesome loading is effective
Loading local CSS during development and the Kit in production—with error handling and version constants—provides flexibility and resilience. No changes needed here.


307-315: Global keyboard shortcut registration is appropriate
The keydown listener for Ctrl/Cmd+K is implemented correctly. Ensure that window.openCommandPalette() is defined and error-handled in your deferred command-palette.js.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (4)
_layouts/history.html (3)

38-43: Meta description/keywords still describe “Courses” not “History”
Same issue flagged in the previous review – please update these tags for SEO accuracy.


67-81: Structured-data schema mismatches page intent

The embedded JSON-LD declares @type:"Course" and points to /teaching; switch to CollectionPage (or WebPage) and /history to avoid SEO penalties.


245-248: ⚠️ Potential issue

Use HTTPS for external links to avoid mixed-content warnings

http://basilisk.fr/sandbox/vatsal/ should be served over HTTPS.

-<a href="http://basilisk.fr/sandbox/vatsal/" target="_blank">
+<a href="https://basilisk.fr/sandbox/vatsal/" target="_blank" rel="noopener noreferrer">
🧰 Tools
🪛 ast-grep (0.31.1)

[warning] 246-248: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context:
Basilisk C

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)

News.md (1)

14-15: Inline styles and <strong> tags should be replaced with classes/Markdown bold

The same clean-up proposed earlier still applies: move style="margin-right … font-size …" into CSS (e.g., .icon-inline) and use **bold** instead of <strong>.

Also applies to: 40-42, 70-73, 76-81

🧹 Nitpick comments (3)
assets/js/main.js (1)

5-7: "use strict" is redundant inside an IIFE

Modern browsers automatically apply strict-mode to script modules; for plain scripts an IIFE already constrains scope and the directive adds no value.
Feel free to drop it to cut three bytes and appease Biome’s noRedundantUseStrict rule.

🧰 Tools
🪛 Biome (1.9.4)

[error] 6-6: Redundant use strict directive.

The entire contents of JavaScript modules are automatically in strict mode, with no statement needed to initiate it.
Safe fix: Remove the redundant use strict directive.

(lint/suspicious/noRedundantUseStrict)

history.md (1)

12-23: Replace <strong> and inline icon styles with semantic Markdown and CSS

Following the new style guides, prefer Markdown bold (**Author**) and centralise icon spacing/sizing in the shared stylesheet (.icon-inline, .news-icon) instead of per-element style attributes.

assets/css/team.css (1)

29-34: Minor duplication of horizontal spacing declarations

margin: 2rem 0; followed by explicit margin-left/right:auto; works but is slightly brittle.
Consider one declaration (margin: 2rem auto;) for brevity.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1c6d38d and 08e818c.

📒 Files selected for processing (11)
  • News.md (1 hunks)
  • _layouts/default.html (1 hunks)
  • _layouts/history.html (1 hunks)
  • _layouts/team.html (2 hunks)
  • assets/css/about-layout.css (1 hunks)
  • assets/css/history.css (1 hunks)
  • assets/css/shared-news-history.css (1 hunks)
  • assets/css/styles.css (5 hunks)
  • assets/css/team.css (4 hunks)
  • assets/js/main.js (1 hunks)
  • history.md (1 hunks)
✅ Files skipped from review due to trivial changes (4)
  • _layouts/default.html
  • _layouts/team.html
  • assets/css/about-layout.css
  • assets/css/shared-news-history.css
🚧 Files skipped from review as they are similar to previous changes (2)
  • assets/css/history.css
  • assets/css/styles.css
🧰 Additional context used
🪛 Biome (1.9.4)
assets/js/main.js

[error] 6-6: Redundant use strict directive.

The entire contents of JavaScript modules are automatically in strict mode, with no statement needed to initiate it.
Safe fix: Remove the redundant use strict directive.

(lint/suspicious/noRedundantUseStrict)


[error] 115-115: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)


[error] 251-251: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)

🪛 LanguageTool
News.md

[uncategorized] ~76-~76: Did you mean “I”?
Context: ...> <i class="fa-brands fa-github" style="font...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~79-~79: Did you mean “I”?
Context: ...ay: inline-flex; align-items: center;"> <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)

history.md

[uncategorized] ~83-~83: Did you mean “I”?
Context: ...> <i class="fa-brands fa-github" style="font...

(I_LOWERCASE_PREMIUM)

🪛 ast-grep (0.31.1)
_layouts/history.html

[warning] 246-248: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context:
Basilisk C

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

♻️ Duplicate comments (3)
_layouts/history.html (3)

38-43: Update SEO metadata to reflect history archive.

The current description and keywords target course content, but this layout renders a history/timeline page. Update these to accurately describe the history archive.

- <meta name="description" content="Courses and educational resources offered by the Computational Multiphase Physics Laboratory">
- <meta name="keywords" content="computational physics courses, physics education, multiphase physics training, scientific courses">
+ <meta name="description" content="Laboratory milestones, publications, and news archive of the Computational Multiphase Physics Laboratory">
+ <meta name="keywords" content="physics research history, laboratory milestones, research publications, multiphase physics archive, comphy lab news">

67-82: Structured data schema mismatch.

The JSON-LD defines a Course with url: "{{ site.url }}/teaching", which does not match the history archive context.

{
  "@context": "https://schema.org",
- "@type": "Course",
- "name": "Computational Multiphase Physics Courses",
- "description": "Educational resources and courses related to computational multiphase physics.",
+ "@type": "CollectionPage",
+ "name": "Computational Multiphase Physics History Archive",
+ "description": "Timeline of laboratory milestones, publications, and news from the Computational Multiphase Physics Laboratory.",
  "provider": {
    "@type": "Organization",
    "name": "Computational Multiphase Physics Laboratory",
    "sameAs": "{{ site.url }}"
  },
- "url": "{{ site.url }}/teaching"
+ "url": "{{ site.url }}/history"
}

247-248: ⚠️ Potential issue

Update to secure HTTPS URL for Basilisk link.

The current link uses an insecure HTTP protocol, which could lead to mixed content warnings or security issues.

- <a href="http://basilisk.fr/sandbox/vatsal/" target="_blank" rel="noopener noreferrer">
+ <a href="https://basilisk.fr/sandbox/vatsal/" target="_blank" rel="noopener noreferrer">
🧰 Tools
🪛 ast-grep (0.31.1)

[warning] 246-248: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context:
Basilisk C

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)

🧹 Nitpick comments (10)
index.html (2)

65-98: Consider moving aggressive style overrides to a CSS file.

The style block uses multiple !important rules to forcibly override existing styles, which can make debugging and maintenance difficult. While this approach works for isolation, consider moving these overrides to a dedicated CSS file with appropriate specificity to maintain better separation of concerns.

- <!-- Adding a style block with !important rules to override any section styling -->
- <style>
-   /* Global override to remove ANY lines and borders from featured wrapper and children */
-   #featured-wrapper,
-   #featured-wrapper *,
-   #featured-wrapper::before,
-   #featured-wrapper::after,
-   #featured-wrapper *::before,
-   #featured-wrapper *::after {
-     border: none !important;
-     border-top: none !important;
-     border-bottom: none !important;
-     box-shadow: none !important;
-   }
-
-   /* Completely hide any ::after pseudo-elements that might be adding lines */
-   #featured-wrapper::after,
-   #featured-wrapper *::after {
-     display: none !important;
-     content: none !important;
-     height: 0 !important;
-     background: transparent !important;
-     opacity: 0 !important;
-     visibility: hidden !important;
-     border: none !important;
-   }
-
-   /* Extra strong reset for the wrapper */
-   #featured-wrapper {
-     position: relative !important;
-     z-index: 1 !important;
-     overflow: visible !important;
-   }
- </style>

Instead, add these styles to a dedicated CSS file like assets/css/featured-research.css and link it in the head section.


100-119: Move inline styles to external CSS file for better maintainability.

The new featured wrapper uses extensive inline styling which makes the HTML harder to read and maintain. Consider moving these styles to an external CSS file and applying classes instead.

- <div id="featured-wrapper" style="padding: 2rem 2rem; background: var(--color-background); display: flex; align-items: flex-start; position: relative; min-height: 50vh; z-index: 1; border: none !important; overflow: visible;">
-   <div style="width: 100%; max-width: 1400px; margin: 0 auto; border: none !important; position: relative; z-index: 2;">
-     <div style="text-align: center; margin-bottom: 4rem; border: none !important;">
-       <h2 style="font-size: 3.6rem; color: var(--color-heading-h1); margin-bottom: 0.5rem; text-transform: uppercase; letter-spacing: 0.1em; font-weight: 500; border: none !important;">
-         Featured Research
-       </h2>
+ <div id="featured-wrapper" class="featured-section">
+   <div class="featured-container">
+     <div class="featured-header">
+       <h2 class="featured-title">
+         Featured Research
+       </h2>

This can be paired with appropriate CSS in your shared-news-history.css or a new featured-research.css file.

assets/js/main.js (4)

5-6: Remove redundant "use strict" directive.

Modern JavaScript modules automatically run in strict mode, making this directive unnecessary.

(function (html) {
-  "use strict";
🧰 Tools
🪛 Biome (1.9.4)

[error] 6-6: Redundant use strict directive.

The entire contents of JavaScript modules are automatically in strict mode, with no statement needed to initiate it.
Safe fix: Remove the redundant use strict directive.

(lint/suspicious/noRedundantUseStrict)


117-118: Use optional chaining for cleaner code.

Instead of using the Boolean AND operator to check if nextEl exists before accessing its properties, use optional chaining for more concise code.

- return nextEl && nextEl.textContent.includes("Featured");
+ return nextEl?.textContent.includes("Featured");
🧰 Tools
🪛 Biome (1.9.4)

[error] 117-117: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)


253-258: Use optional chaining for cleaner code.

Replace the Boolean AND pattern with optional chaining for more concise and readable code.

- if (nav && nav.classList.contains("is-active")) {
+ if (nav?.classList.contains("is-active")) {
🧰 Tools
🪛 Biome (1.9.4)

[error] 253-253: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)


370-416: Refactor clipboard functionality to reduce code duplication.

The current implementation has duplicated code for success handling between the promise and the fallback path. Consider extracting the common success handling logic into a separate function.

window.copyEmail = function (button) {
  const text =
    button.getAttribute("data-text") ||
    button.getAttribute("data-clipboard-text");
+  
+  function handleCopySuccess(btn) {
+    const icon = btn.querySelector("i");
+    btn.classList.add("copied");
+    icon.classList.remove("fa-copy");
+    icon.classList.add("fa-check");
+
+    setTimeout(() => {
+      btn.classList.remove("copied");
+      icon.classList.remove("fa-check");
+      icon.classList.add("fa-copy");
+    }, 2000);
+  }
  
  navigator.clipboard
    .writeText(text)
    .then(() => {
-      const icon = button.querySelector("i");
-      button.classList.add("copied");
-      icon.classList.remove("fa-copy");
-      icon.classList.add("fa-check");
-
-      setTimeout(() => {
-        button.classList.remove("copied");
-        icon.classList.remove("fa-check");
-        icon.classList.add("fa-copy");
-      }, 2000);
+      handleCopySuccess(button);
    })
    .catch((err) => {
      console.error("Copy failed:", err);
      // Fallback for older browsers
      const textarea = document.createElement("textarea");
      textarea.value = text;
      textarea.style.position = "fixed";
      textarea.style.opacity = "0";
      document.body.appendChild(textarea);
      textarea.select();
      try {
        document.execCommand("copy");
-        button.classList.add("copied");
-        const icon = button.querySelector("i");
-        icon.classList.remove("fa-copy");
-        icon.classList.add("fa-check");
-
-        setTimeout(() => {
-          button.classList.remove("copied");
-          icon.classList.remove("fa-check");
-          icon.classList.add("fa-copy");
-        }, 2000);
+        handleCopySuccess(button);
      } catch (err) {
        console.error("Fallback failed:", err);
      }
      document.body.removeChild(textarea);
    });
};
assets/css/team.css (2)

87-105: Use theme variable for underline color
The pseudo-element on .s-team__desc h1:after hardcodes var(--color-purple-dark) instead of the theme-aware var(--team-heading-color).

 .s-team__desc h1:after {
-    background: var(--color-purple-dark);
+    background: var(--team-heading-color);
 }
 [data-theme="dark"] .s-team__desc h1:after {
-    background: var(--color-purple-light);
+    background: var(--team-heading-color);
 }

113-123: Consider auto-fit grid for flexibility
Currently .team-grid uses repeat(4, 1fr) and explicit breakpoints. You might adopt repeat(auto-fit, minmax(250px, 1fr)) for more fluid resizing, reducing the number of media queries.

assets/css/teaching.css (2)

5-12: Unused teaching-heading-color variable
The custom property --teaching-heading-color is defined but never used—headings now reference --color-heading-h1. Consider removing or repurposing it to avoid dead code.


16-24: Unused dark theme variable
Similarly, --teaching-heading-color in the dark theme block isn’t applied anywhere. Clean up to prevent confusion.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 08e818c and 576b534.

📒 Files selected for processing (16)
  • _layouts/default.html (4 hunks)
  • _layouts/history.html (1 hunks)
  • _layouts/research.html (2 hunks)
  • _layouts/teaching-course.html (2 hunks)
  • _layouts/teaching.html (2 hunks)
  • _layouts/team.html (20 hunks)
  • _teaching/2025-Basilisk101-Madrid.md (1 hunks)
  • _team/index.md (7 hunks)
  • aboutCoMPhy.md (1 hunks)
  • assets/css/research.css (7 hunks)
  • assets/css/shared-news-history.css (1 hunks)
  • assets/css/teaching.css (5 hunks)
  • assets/css/team.css (3 hunks)
  • assets/js/main.js (1 hunks)
  • index.html (3 hunks)
  • join.html (1 hunks)
✅ Files skipped from review due to trivial changes (7)
  • aboutCoMPhy.md
  • join.html
  • _teaching/2025-Basilisk101-Madrid.md
  • _layouts/teaching.html
  • _layouts/research.html
  • _layouts/teaching-course.html
  • assets/css/shared-news-history.css
🚧 Files skipped from review as they are similar to previous changes (2)
  • _layouts/default.html
  • _layouts/team.html
🧰 Additional context used
🪛 Biome (1.9.4)
assets/css/team.css

[error] 83-83: Unexpected shorthand property margin after margin-bottom

(lint/suspicious/noShorthandPropertyOverrides)


[error] 390-390: Unexpected shorthand property margin after margin-top

(lint/suspicious/noShorthandPropertyOverrides)

assets/js/main.js

[error] 6-6: Redundant use strict directive.

The entire contents of JavaScript modules are automatically in strict mode, with no statement needed to initiate it.
Safe fix: Remove the redundant use strict directive.

(lint/suspicious/noRedundantUseStrict)


[error] 117-117: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)


[error] 253-253: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)

🪛 ast-grep (0.31.1)
_layouts/history.html

[warning] 246-248: "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible."
Context:
Basilisk C

Note: [CWE-319] Authentication Bypass by Primary Weakness [REFERENCES]
- https://cwe.mitre.org/data/definitions/319.html

(plaintext-http-link-html)

🪛 LanguageTool
_team/index.md

[inconsistency] ~24-~24: The abbreviation is usually written “Ph.D.”.
Context: ..._CV.pdf){: .cv-button} ## Ayush Dixit (Ph.D) [<i class="fa-brands fa-github" style=...

(PH_D)


[inconsistency] ~37-~37: The abbreviation is usually written “Ph.D.”.
Context: ..., Respiratory Drops. ## Aman Bhargava (Ph.D) [<i class="fa-brands fa-github" style=...

(PH_D)

🔇 Additional comments (28)
assets/js/main.js (1)

71-73: Good null check implementation.

The null check for newsContent before appending the history button is good defensive programming that prevents potential TypeError exceptions.

assets/css/team.css (6)

1-46: Well-structured CSS variable definitions
The base theme custom properties cover a comprehensive palette, alpha variants, and spacing, following the style guidelines. Variables are named consistently and will support maintainability and theming.


48-62: Well-defined dark theme overrides
Dark-mode custom properties correctly override only the necessary variables, preserving the base theme defaults. This aligns with the project’s theming strategy.


64-76: Consistent team page layout
The .s-team container uses a mobile-first, flex-based vertical layout with full-viewport support. Padding, centering, and theming are handled cleanly.


306-314: Browser support for :has() selector
The rules centering “Joint with” text use the CSS relational pseudo-class :has(), which isn’t fully supported in all browsers. Consider adding a utility class or a small JS polyfill to ensure consistency.

Would you like assistance adding a class-based fallback?


459-468: Well-implemented map section styles
The new .s-map section follows the same theme variables and layout conventions, with proper centering and responsive constraints. Looks solid.


608-769: Comprehensive responsive breakpoints
Media queries at 1700px, 1300px, 900px, 768px, and 500px adapt the layout and typography well, adhering to the mobile-first approach.

_team/index.md (9)

8-13: Removed trailing whitespace from heading
The heading ## Vatsal Sanjay (PI) no longer has extraneous spaces. Excellent cleanup for consistency.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~9-~9: Did you mean “I”?
Context: ...ck;">](https://github.com/VatsalSy) [<i class="ai ai-google-scholar-square" sty...

(I_LOWERCASE_PREMIUM)


24-29: Removed trailing whitespace from heading
The heading ## Ayush Dixit (Ph.D) has been trimmed. Thank you for keeping headings clean.

🧰 Tools
🪛 LanguageTool

[inconsistency] ~24-~24: The abbreviation is usually written “Ph.D.”.
Context: ..._CV.pdf){: .cv-button} ## Ayush Dixit (Ph.D) [<i class="fa-brands fa-github" style=...

(PH_D)


37-42: Removed trailing whitespace from heading
The heading ## Aman Bhargava (Ph.D) has been normalized.

🧰 Tools
🪛 LanguageTool

[inconsistency] ~37-~37: The abbreviation is usually written “Ph.D.”.
Context: ..., Respiratory Drops. ## Aman Bhargava (Ph.D) [<i class="fa-brands fa-github" style=...

(PH_D)


51-55: Removed trailing whitespace from heading
The heading ## Jnandeep Talukdar (M.Sc.) is now tidy.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~52-~52: Did you mean “I”?
Context: ...k;">](https://github.com/spilltheT) [<i class="ai ai-google-scholar-square" sty...

(I_LOWERCASE_PREMIUM)


60-63: Updated Ph.D. start date
Changed the Ph.D. start month to Jun 2025 for Jnandeep Talukdar. The timeline is now accurate.


66-70: Removed trailing whitespace from heading
The heading ## Saumili Jana (M.Sc.) is now cleanly formatted.


73-76: Updated Ph.D. start date
Changed the Ph.D. start month to Jun 2025 for Saumili Jana.


184-188: Removed trailing whitespace from heading
The heading ## Radu Cimpeanu has no trailing spaces.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~185-~185: Did you mean “I”?
Context: ...J&hl=en&inst=5726176096060060532&oi=ao) [<i class="fa-brands fa-x-twitter" style="f...

(I_LOWERCASE_PREMIUM)


239-242: Removed trailing whitespace from heading
The heading ## Stéphane Zaleski is properly trimmed.

assets/css/research.css (8)

5-5: Use of CSS variable fallback for H1 headings
Replacing the fixed heading color with --color-heading-h1 and a fallback enhances maintainability and theming.


18-18: Dark theme H1 heading color uses fallback
Good consistency: dark theme heading now uses --color-heading-h1 with a fallback.


49-50: Text shadow uses CSS variable
The dark-mode bold text shadow now references --color-white-alpha-30, adhering to the variable-based styling guidelines.


53-56: Inset box-shadow uses variable fallback
Switching to --color-black-alpha-30 for the inner shadow is on-point and consistent.


155-158: Year section heading color standardized
Changed H2 headings to use --color-heading-h2, aligning with other sections.


173-178: Paper title heading color standardized
Updated H3 headings to use --color-heading-h3, promoting style consistency.


371-375: Print style heading color
The print stylesheet now uses --color-near-black for H1, ensuring legibility when printing.


513-515: Verify definition of --color-secondary
The TOC heading uses --color-secondary, but it’s not defined in this file. Please confirm that this variable is declared globally.

assets/css/teaching.css (4)

40-45: Solid color for main heading
Replacing the gradient with --color-heading-h1 simplifies styling and improves accessibility.


53-57: Teaching content H1 styling
Increasing font-size and using --color-heading-h1 aligns with the new design direction.


59-64: Teaching content H2 styling
Refactoring to --color-heading-h2 with a sensible fallback ensures consistency across sections.


81-85: Teaching content H3 styling
Switching to --color-heading-h3 with fallback is in line with the research and news sections.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (10)
assets/css/team.css (1)

521-536: Reduce verbosity in override selectors
You’ve added many nearly identical selectors with !important to remove autogenerated :after elements. Consider scoping the rule to the map container once and using :is() or a single selector list to simplify maintenance.

For example:

.s-map :is(h1, h2)::after {
  content: none !important;
  display: none !important;
  /* ... */
}
_team/index.md (4)

24-24: Append missing period in “Ph.D.”
The heading is written ## Ayush Dixit (Ph.D) but should use Ph.D. for consistency.

-## Ayush Dixit (Ph.D)
+## Ayush Dixit (Ph.D.)
🧰 Tools
🪛 LanguageTool

[inconsistency] ~24-~24: The abbreviation is usually written “Ph.D.”.
Context: ..._CV.pdf){: .cv-button} ## Ayush Dixit (Ph.D) [<i class="fa-brands fa-github" style=...

(PH_D)


37-37: Append missing period in “Ph.D.”
Similarly, update ## Aman Bhargava (Ph.D) to include the trailing period.

-## Aman Bhargava (Ph.D)
+## Aman Bhargava (Ph.D.)
🧰 Tools
🪛 LanguageTool

[inconsistency] ~37-~37: The abbreviation is usually written “Ph.D.”.
Context: ..., Respiratory Drops. ## Aman Bhargava (Ph.D) [<i class="fa-brands fa-github" style=...

(PH_D)


60-60: Normalize “starting Jun 2025” phrasing
Use full month names and capitalize consistently. Consider:

-  - Ph.D. Student, Phys. Fluids - Univ. Twente / **starting** Jun 2025
+  - Ph.D. Student, Phys. Fluids - Univ. Twente / **Starting June 2025**

73-73: Normalize “starting Jun 2025” phrasing
Same adjustment needed for Saumili Jana’s entry.

-  - Ph.D. Student, Phys. Fluids - Univ. Twente / **starting** Jun 2025
+  - Ph.D. Student, Phys. Fluids - Univ. Twente / **Starting June 2025**
assets/js/main.js (5)

5-7: Remove redundant "use strict" directive.

JavaScript modules are automatically in strict mode without requiring the directive.

-(function (html) {
-  "use strict";
+(function (html) {
🧰 Tools
🪛 Biome (1.9.4)

[error] 6-6: Redundant use strict directive.

The entire contents of JavaScript modules are automatically in strict mode, with no statement needed to initiate it.
Safe fix: Remove the redundant use strict directive.

(lint/suspicious/noRedundantUseStrict)


110-118: Use optional chaining for safer property access.

Using optional chaining would make this code more robust against unexpected DOM structures.

 const featuredSections = Array.from(paperSections).filter((section) => {
   // Find the next tags element
   let nextEl = section.nextElementSibling;
   while (nextEl && !nextEl.matches("tags")) {
     nextEl = nextEl.nextElementSibling;
   }
-  return nextEl && nextEl.textContent.includes("Featured");
+  return nextEl?.textContent.includes("Featured");
 });
🧰 Tools
🪛 Biome (1.9.4)

[error] 117-117: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)


192-199: Enhance paper navigation with fall-back URL parameters.

When the paper number extraction fails, you redirect to the general research page. Consider adding a query parameter with the paper title to help users locate the specific paper.

 if (paperNumber) {
   // Navigate to research page with the paper ID
   window.location.href = `/research/#${paperNumber}`;
 } else {
-  window.location.href = "/research/";
+  // Fallback: Use paper title as search parameter
+  const cleanTitle = title.textContent.trim();
+  window.location.href = `/research/?search=${encodeURIComponent(cleanTitle)}`;
 }

250-256: Use optional chaining for safer property access.

Similar to the previous suggestion, use optional chaining for better code robustness.

document.addEventListener("click", function (e) {
-  if (nav && nav.classList.contains("is-active")) {
+  if (nav?.classList.contains("is-active")) {
    // Check if click is outside nav and not on menu toggle
    if (!nav.contains(e.target) && !menuToggle.contains(e.target)) {
      nav.classList.remove("is-active");
    }
  }
});
🧰 Tools
🪛 Biome (1.9.4)

[error] 251-251: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)


368-414: Consider consolidating duplicate email copy functionality.

There's significant code duplication between this global function and the event handlers at lines 323-366. Consider refactoring to use this global function from the event handlers as well.

// Email copy functionality
const copyButtons = document.querySelectorAll(".copy-btn");
copyButtons.forEach((button) => {
-  button.addEventListener("click", function () {
-    const textToCopy = this.getAttribute("data-clipboard-text");
-    const textarea = document.createElement("textarea");
-    textarea.value = textToCopy;
-    textarea.style.position = "fixed";
-    textarea.style.left = "-9999px";
-    document.body.appendChild(textarea);
-
-    try {
-      textarea.select();
-      document.execCommand("copy");
-      this.classList.add("copied");
-      const icon = this.querySelector("i");
-      icon.classList.remove("fa-copy");
-      icon.classList.add("fa-check");
-
-      setTimeout(() => {
-        this.classList.remove("copied");
-        icon.classList.remove("fa-check");
-        icon.classList.add("fa-copy");
-      }, 2000);
-    } catch (err) {
-      console.error("Copy failed:", err);
-    } finally {
-      document.body.removeChild(textarea);
-    }
-  });
+  button.addEventListener("click", function() {
+    window.copyEmail(this);
+  });
});
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 576b534 and a666a62.

📒 Files selected for processing (3)
  • _team/index.md (8 hunks)
  • assets/css/team.css (3 hunks)
  • assets/js/main.js (1 hunks)
🧰 Additional context used
🪛 LanguageTool
_team/index.md

[uncategorized] ~9-~9: Did you mean “I”?
Context: ...ck;">](https://github.com/VatsalSy) [<i class="ai ai-google-scholar-square" sty...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~16-~16: Did you mean “I”?
Context: ...s - Univ. Twente / 2018-22, Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~17-~17: Did you mean “I”?
Context: ...Lab, IIT-Roorkee / 2013-18, Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[inconsistency] ~24-~24: The abbreviation is usually written “Ph.D.”.
Context: ..._CV.pdf){: .cv-button} ## Ayush Dixit (Ph.D) [<i class="fa-brands fa-github" style=...

(PH_D)


[uncategorized] ~33-~33: Did you mean “I”?
Context: ...ity Lab, IIT-Roorkee / 2018-23,Thesis:<i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[inconsistency] ~37-~37: The abbreviation is usually written “Ph.D.”.
Context: ..., Respiratory Drops. ## Aman Bhargava (Ph.D) [<i class="fa-brands fa-github" style=...

(PH_D)


[uncategorized] ~299-~299: Did you mean “I”?
Context: ... with B.Sc., Univ. Twente - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~306-~306: Did you mean “I”?
Context: ...th M.Sc., Univ. Amsterdam - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~313-~313: Did you mean “I”?
Context: ...e.nl/people/profile/2119) - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~320-~320: Did you mean “I”?
Context: ...e.nl/people/profile/2064) - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~325-~325: Did you mean “I”?
Context: ...e.nl/people/profile/1741) - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~331-~331: Did you mean “I”?
Context: ...e.nl/people/profile/1741) - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~338-~338: Did you mean “I”?
Context: ...e.nl/people/profile/1822) - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~345-~345: Did you mean “I”?
Context: ... with B.Sc., Univ. Twente - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~352-~352: Did you mean “I”?
Context: ...e.nl/people/profile/1630) - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~358-~358: Did you mean “I”?
Context: ...e.nl/people/profile/1709) - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~365-~365: Did you mean “I”?
Context: ...e.nl/people/profile/1431) - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~380-~380: Did you mean “I”?
Context: ...e.nl/people/profile/1518) - Thesis: <i class="fa-solid fa-file-pdf" style="mar...

(I_LOWERCASE_PREMIUM)

🪛 Biome (1.9.4)
assets/js/main.js

[error] 6-6: Redundant use strict directive.

The entire contents of JavaScript modules are automatically in strict mode, with no statement needed to initiate it.
Safe fix: Remove the redundant use strict directive.

(lint/suspicious/noRedundantUseStrict)


[error] 117-117: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)


[error] 251-251: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)

🔇 Additional comments (7)
assets/css/team.css (5)

1-46: Base theme variables look solid
The new CSS variables under :root cover a comprehensive palette and spacing scale, aligning with the project’s theming guidelines. No conflicts or overrides detected.


49-62: Dark theme overrides are correctly scoped
Your [data-theme="dark"] block cleanly overrides only the necessary variables. This follows the mobile-first and theming rules from the new CSS style guide.


78-86: Separated margin properties for .s-team__desc
Good job removing the shorthand that previously overrode margin-bottom and instead using explicit margin-left, margin-right, and margin-bottom. This preserves the intended vertical spacing.


397-404: Consolidated .cv-button margin shorthand correctly
The single margin: 1rem auto 1rem; now replaces multiple conflicting declarations, centering the button and preserving the vertical spacing.


475-485: Map section base styles are well-structured
The new .s-map container and row/column flex setup provide a clear, responsive foundation. They integrate seamlessly with the existing CSS variable system.

assets/js/main.js (2)

63-73: History button creation is now properly protected.

Good fix! You've addressed the previous review comment by only creating and appending the history button if newsContent exists, preventing potential TypeError if the element is missing.


229-232: User-friendly error message improvement.

Great improvement! You've replaced the technical error message with a user-friendly one that doesn't expose implementation details, addressing the previous review comment.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (4)
assets/js/main.js (2)

246-249: Good improvement to user-facing error message.

The error message has been improved to be more user-friendly, avoiding technical details that would confuse end users.


68-77: 🛠️ Refactor suggestion

Add more robust checking for newsContent element.

The history button creation and its attributes are defined outside the conditional check for newsContent. While the button is only appended if newsContent exists (line 87), it would be better to move the entire button creation inside that check to avoid unnecessary operations when the element doesn't exist.

-const historyBtn = document.createElement("a");
-historyBtn.href = "/history";
-historyBtn.className = "s-news__history-btn";
-historyBtn.innerHTML =
-  '<i class="fa-solid fa-arrow-right" style="margin-right: 8px; font-size: 1.2em;"></i>Archive';
-historyBtn.setAttribute("role", "button");
-historyBtn.setAttribute("tabindex", "0");
-historyBtn.setAttribute("aria-label", "View archive of all news items");

// Add keyboard event handler for accessibility
-historyBtn.addEventListener("keydown", function(event) {
-  // Check for Enter (13) or Space (32) key
-  if (event.key === "Enter" || event.key === " " || event.keyCode === 13 || event.keyCode === 32) {
-    event.preventDefault();
-    window.location.href = this.href;
-  }
-});

if (newsContent) {
+  const historyBtn = document.createElement("a");
+  historyBtn.href = "/history";
+  historyBtn.className = "s-news__history-btn";
+  historyBtn.innerHTML =
+    '<i class="fa-solid fa-arrow-right" style="margin-right: 8px; font-size: 1.2em;"></i>Archive';
+  historyBtn.setAttribute("role", "button");
+  historyBtn.setAttribute("tabindex", "0");
+  historyBtn.setAttribute("aria-label", "View archive of all news items");
+
+  // Add keyboard event handler for accessibility
+  historyBtn.addEventListener("keydown", function(event) {
+    // Check for Enter (13) or Space (32) key
+    if (event.key === "Enter" || event.key === " " || event.keyCode === 13 || event.keyCode === 32) {
+      event.preventDefault();
+      window.location.href = this.href;
+    }
+  });
  newsContent.appendChild(historyBtn);
}
assets/css/team.css (2)

415-416: Fix margin shorthand property overriding margin-top.

You've consolidated the margin values into a single declaration which is good practice. This fixes the previous issue where a margin shorthand was overriding an earlier margin-top declaration.


78-86: Fix margin shorthand overriding margin-bottom.

You've properly fixed the previous issue where a margin shorthand was overriding the margin-bottom declaration by separating the margin properties into individual margin-left, margin-right, and margin-bottom.

🧹 Nitpick comments (8)
assets/js/main.js (3)

6-6: Remove redundant "use strict" directive.

Since JavaScript modules and IIFE contexts already run in strict mode, this explicit directive is unnecessary.

-  "use strict";
🧰 Tools
🪛 Biome (1.9.4)

[error] 6-6: Redundant use strict directive.

The entire contents of JavaScript modules are automatically in strict mode, with no statement needed to initiate it.
Safe fix: Remove the redundant use strict directive.

(lint/suspicious/noRedundantUseStrict)


79-84: Remove deprecated keyCode usage.

The keyCode property is deprecated in favor of using the key property. Since you're already checking for the key value, the additional keyCode checks are unnecessary.

historyBtn.addEventListener("keydown", function(event) {
  // Check for Enter (13) or Space (32) key
-  if (event.key === "Enter" || event.key === " " || event.keyCode === 13 || event.keyCode === 32) {
+  if (event.key === "Enter" || event.key === " ") {
    event.preventDefault();
    window.location.href = this.href;
  }
});

90-92: Add user-facing error message for news content failure.

Similar to how you handle errors for featured papers (lines 246-249), consider adding a visible error message when news content fails to load, rather than just logging to console.

} catch (error) {
  console.error("Error loading news content:", error);
+  if (document.getElementById("news-section")) {
+    const errorMsg = document.createElement("div");
+    errorMsg.className = "news-error";
+    errorMsg.innerHTML = "<p>We're having trouble loading the latest news. Please try refreshing the page.</p>";
+    document.getElementById("news-section").appendChild(errorMsg);
+  }
}
assets/css/team.css (1)

529-543: Consider using more specific selectors for overriding headings.

While the multiple selectors with !important ensure the heading styles are overridden, this approach could make future maintenance challenging. Consider using more specific selectors with the BEM methodology to avoid needing so many !important declarations.

_team/index.md (4)

16-17: Improved thesis links with consistent styling.

The updates to the thesis links follow a consistent format with PDF icons, making them more visually distinct and user-friendly. Make sure to update all inline styles to use the new pdf-link-icon class you've defined in your CSS.

- <a href="https://doi.org/10.3990/1.9789036554077" class="pdf-link" style="display: inline-flex; align-items: center; margin-left: 5px;"><i class="fa-solid fa-file-pdf pdf-link-icon"></i>Viscous Free-Surface Flows</a>
+ <a href="https://doi.org/10.3990/1.9789036554077" class="pdf-link"><i class="fa-solid fa-file-pdf pdf-link-icon"></i>Viscous Free-Surface Flows</a>
🧰 Tools
🪛 LanguageTool

[uncategorized] ~16-~16: Did you mean “I”?
Context: ...s - Univ. Twente / 2018-22, Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~17-~17: Did you mean “I”?
Context: ...Lab, IIT-Roorkee / 2013-18, Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


299-299: Standardize thesis link styling for Milan Sent.

For consistency with the other thesis links, remove the inline styles from the PDF link, as these styles should be defined in the CSS.

- <a href="https://tinyurl.com/2ycunjcr" class="pdf-link" style="display: inline-flex; align-items: center;"><i class="fa-solid fa-file-pdf pdf-link-icon"></i>Spinning Pizza</a>
+ <a href="https://tinyurl.com/2ycunjcr" class="pdf-link"><i class="fa-solid fa-file-pdf pdf-link-icon"></i>Spinning Pizza</a>
🧰 Tools
🪛 LanguageTool

[uncategorized] ~299-~299: Did you mean “I”?
Context: ... with B.Sc., Univ. Twente - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


33-33: Fix spacing in thesis text.

There should be spaces after punctuation and before the link.

- B.Tech + M.Tech, Two-Phase Flow & Instability Lab, IIT-Roorkee / 2018-23,**Thesis:**<a href="http://dx.doi.org/10.13140/RG.2.2.23218.79040" class="pdf-link" style="display: inline-flex; align-items: center; margin-left: 5px;"><i class="fa-solid fa-file-pdf pdf-link-icon"></i>Understanding interfacial interaction in macro and nano scales</a>
+ B.Tech + M.Tech, Two-Phase Flow & Instability Lab, IIT-Roorkee / 2018-23, **Thesis:** <a href="http://dx.doi.org/10.13140/RG.2.2.23218.79040" class="pdf-link" style="display: inline-flex; align-items: center; margin-left: 5px;"><i class="fa-solid fa-file-pdf pdf-link-icon"></i>Understanding interfacial interaction in macro and nano scales</a>
🧰 Tools
🪛 LanguageTool

[uncategorized] ~33-~33: Did you mean “I”?
Context: ...ity Lab, IIT-Roorkee / 2018-23,Thesis:<i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


24-24: Standardize Ph.D. abbreviation.

For consistency, standardize the Ph.D. abbreviation with periods (Ph.D.) as this is the typical academic format and is used elsewhere in the document.

- ## Ayush Dixit (Ph.D)
+ ## Ayush Dixit (Ph.D.)

- ## Aman Bhargava (Ph.D)
+ ## Aman Bhargava (Ph.D.)

Also applies to: 37-37

🧰 Tools
🪛 LanguageTool

[inconsistency] ~24-~24: The abbreviation is usually written “Ph.D.”.
Context: ..._CV.pdf){: .cv-button} ## Ayush Dixit (Ph.D) [<i class="fa-brands fa-github" style=...

(PH_D)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a666a62 and 7820250.

📒 Files selected for processing (4)
  • _layouts/default.html (5 hunks)
  • _team/index.md (8 hunks)
  • assets/css/team.css (3 hunks)
  • assets/js/main.js (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • _layouts/default.html
🧰 Additional context used
🪛 LanguageTool
_team/index.md

[uncategorized] ~9-~9: Did you mean “I”?
Context: ...ck;">](https://github.com/VatsalSy) [<i class="ai ai-google-scholar-square" sty...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~16-~16: Did you mean “I”?
Context: ...s - Univ. Twente / 2018-22, Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~17-~17: Did you mean “I”?
Context: ...Lab, IIT-Roorkee / 2013-18, Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[inconsistency] ~24-~24: The abbreviation is usually written “Ph.D.”.
Context: ..._CV.pdf){: .cv-button} ## Ayush Dixit (Ph.D) [<i class="fa-brands fa-github" style=...

(PH_D)


[uncategorized] ~33-~33: Did you mean “I”?
Context: ...ity Lab, IIT-Roorkee / 2018-23,Thesis:<i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[inconsistency] ~37-~37: The abbreviation is usually written “Ph.D.”.
Context: ..., Respiratory Drops. ## Aman Bhargava (Ph.D) [<i class="fa-brands fa-github" style=...

(PH_D)


[uncategorized] ~299-~299: Did you mean “I”?
Context: ... with B.Sc., Univ. Twente - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~306-~306: Did you mean “I”?
Context: ...th M.Sc., Univ. Amsterdam - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~313-~313: Did you mean “I”?
Context: ...e.nl/people/profile/2119) - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~320-~320: Did you mean “I”?
Context: ...e.nl/people/profile/2064) - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~325-~325: Did you mean “I”?
Context: ...e.nl/people/profile/1741) - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~331-~331: Did you mean “I”?
Context: ...e.nl/people/profile/1741) - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~338-~338: Did you mean “I”?
Context: ...e.nl/people/profile/1822) - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~345-~345: Did you mean “I”?
Context: ... with B.Sc., Univ. Twente - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~352-~352: Did you mean “I”?
Context: ...e.nl/people/profile/1630) - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~358-~358: Did you mean “I”?
Context: ...e.nl/people/profile/1709) - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~365-~365: Did you mean “I”?
Context: ...e.nl/people/profile/1431) - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)


[uncategorized] ~380-~380: Did you mean “I”?
Context: ...e.nl/people/profile/1518) - Thesis: <i class="fa-solid fa-file-pdf pdf-link-ic...

(I_LOWERCASE_PREMIUM)

🪛 Biome (1.9.4)
assets/js/main.js

[error] 6-6: Redundant use strict directive.

The entire contents of JavaScript modules are automatically in strict mode, with no statement needed to initiate it.
Safe fix: Remove the redundant use strict directive.

(lint/suspicious/noRedundantUseStrict)


[error] 133-133: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)


[error] 267-267: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)

🔇 Additional comments (5)
assets/js/main.js (2)

31-36: Good implementation of DOMPurify sanitization.

You've correctly implemented content sanitization for the markdown parser to prevent XSS attacks. The proper sequence (parse, sanitize, then insert into DOM) is an important security improvement.


55-67: Good implementation of content sanitization and style fixes for list items.

The code properly sanitizes the news content and adds style fixes for list item paragraphs to ensure correct display.

assets/css/team.css (2)

1-62: Well-structured CSS variables for theme management.

Excellent work organizing the CSS variables into logical groups with clear naming conventions. The base theme variables and dark theme overrides provide a solid foundation for consistent styling across the site.


782-793: Good responsive design considerations for mobile devices.

The media query for small screens (max-width: 500px) properly adjusts icon and button sizes for better usability on mobile devices.

_team/index.md (1)

60-60: Consistent date formatting for Ph.D. start dates.

Good update to use consistent date formatting (Jun 2025) for both Ph.D. students' start dates.

Also applies to: 73-73

@VatsalSy VatsalSy merged commit 769154e into main May 11, 2025
3 checks passed
@VatsalSy VatsalSy deleted the vs-branch-10 branch May 11, 2025 21:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant