From 6e2b28d0b6fcf0cb351e83ade859de30d49e777d Mon Sep 17 00:00:00 2001 From: Vatsal Sanjay Date: Wed, 10 Dec 2025 19:52:52 +0000 Subject: [PATCH 1/9] updated papers --- _research/index.md | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/_research/index.md b/_research/index.md index d9d6176..efb2d15 100644 --- a/_research/index.md +++ b/_research/index.md @@ -51,18 +51,9 @@ title: Research EmulsionsRheology [![arXiv](https://img.shields.io/static/v1.svg?style=flat-square&label=arXiv&message=2508.13022&color=green)](https://arxiv.org/abs/2508.13022) +[![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/tappleford/droplet_under_shear_newtonian_2D) [![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) -### Demirkır, Ç., Yang, R., Bashkatov, A., Sanjay, V., Lohse, D., & Krug, D. To jump or not to jump: Adhesion and viscous dissipation dictate the detachment of coalescing wall-attached bubbles. Submitted to Phys. Rev. Lett. (2025). - -BubblesCoalescence - -[![arXiv](https://img.shields.io/static/v1.svg?style=flat-square&label=arXiv&message=2501.05532&color=green)](https://arxiv.org/abs/2501.05532) -[![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/VatsalSy/jumping-bubbles) -[![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) - - - ### Verschuur, C. I., Oratis, A. T., Sanjay, V., & Snoeijer, J. H. How elasticity affects bubble pinch-off. arXiv preprint arXiv:2511.20075 (2025). BubblesSoft-matter-singularitiesElastic beads @@ -79,8 +70,27 @@ title: Research [![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/comphy-lab/Retracting-Droplet) [![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) +### Ghaemi, A. H., Yang, Z., Huang, A., Sanjay, V., Feng, J., & Constante-Amores, C. R. Bursting bubbles in Herschel-Bulkley fluids: dynamics and jetting transitions. arXiv preprint arXiv:2511.23345 (2025). + +BubblesNon-NewtonianJets + +[![arXiv](https://img.shields.io/static/v1.svg?style=flat-square&label=arXiv&message=2511.23345&color=green)](https://arxiv.org/abs/2511.23345) +[![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/comphy-lab/BurstingBubble_Herschel-Bulkley/) +[![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) + ## 2025 +

[20] Demirkır, Ç., Yang, R., Bashkatov, A., Sanjay, V., Lohse, D., & Krug, D. To jump or not to jump: Adhesion and viscous dissipation dictate the detachment of coalescing wall-attached bubbles. Phys. Rev. Fluids, 10, 123602 (2025).

+ +BubblesCoalescence + +[![PRF](https://img.shields.io/static/v1.svg?style=flat-square&label=PRF&message=OA&color=orange)](https://doi.org/10.1103/nq3w-57gg) +[![arXiv](https://img.shields.io/static/v1.svg?style=flat-square&label=arXiv&message=2501.05532&color=green)](https://arxiv.org/abs/2501.05532) +[![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/VatsalSy/jumping-bubbles) +[![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) + + +

[19] Mclauchlan, J., Walker, J. S., Sanjay, V., Jalaal, M., Reid, J. P., Squires, A. M., & Souslov, A. Bouncing microdroplets on hydrophobic surfaces. Proc. Natl. Acad. Sci., 122, e2507309122 (2025).

DropsBouncing @@ -191,6 +201,7 @@ title: Research DropsBouncingDissipative anomalyFeatured [![JFM](https://img.shields.io/static/v1.svg?style=flat-square&label=JFM&message=OA&color=orange)](https://doi.org/10.1017/jfm.2023.55) +[![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/comphy-lab/Drop-Impact) [![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) @@ -200,6 +211,7 @@ title: Research DropsBouncingSuperhydrophobic surfaces [![JFM](https://img.shields.io/static/v1.svg?style=flat-square&label=JFM&message=OA&color=orange)](https://doi.org/10.1017/jfm.2023.13) +[![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/VatsalSy/Drop-impact-on-viscous-liquid-films) [![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) @@ -221,6 +233,7 @@ title: Research SheetsDissipative anomalyRetraction [![JFM](https://img.shields.io/static/v1.svg?style=flat-square&label=JFM&message=OA&color=orange)](https://doi.org/10.1017/jfm.2022.671) +[![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/VatsalSy/Taylor-Culick-retractions) [![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) From b9d77a80799d665a0ee2e451342f6089a4b3f79a Mon Sep 17 00:00:00 2001 From: Vatsal Sanjay Date: Wed, 10 Dec 2025 20:02:05 +0000 Subject: [PATCH 2/9] updated News and History --- News.md | 36 ++++-------------------------------- history.md | 4 ++++ 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/News.md b/News.md index c0b0c01..39747af 100644 --- a/News.md +++ b/News.md @@ -13,6 +13,10 @@ Starting July 1st, 2025, the CoMPhy Lab will be relocating to Durham University, UK. We are excited to join the [Condensed Matter Physics section](https://www.durham.ac.uk/research/institutes-and-centres/condensed-matter-physics/) in the [Department of Physics](https://www.durham.ac.uk/departments/academic/physics/) and continue our research in computational physics and fluid dynamics in our new home. +### December + +- [Demirkır, Ç., Yang, R., Bashkatov, A., Sanjay, V., Lohse, D., & Krug, D. To jump or not to jump: Adhesion and viscous dissipation dictate the detachment of coalescing wall-attached bubbles. Phys. Rev. Fluids, 10, 123602 (2025).](/research#20) + ### November - Jnandeep Talukdar won the KHMW Young Talent Graduation Award for Mechanical Engineering and Materials Science 2025 for his master's thesis on fundamental research in droplet formation. Thesis: Singularities with Surfactants @@ -28,35 +32,3 @@ Starting July 1st, 2025, the CoMPhy Lab will be relocating to D ### July - Saumili Jana received the award for best master's thesis from IIT Kharagpur. Thesis: Retract or Collapse? The Role of Viscosity and Viscoelasticity on Bubble Dynamics - -### June - -- Jnandeep Talukdar graduated with a master's degree (Cum Laude - the highest grade in Dutch master's degree) from University of Twente. Thesis: Singularities with Surfactants - -### May - -- [Bashkatov, A., Bürkle, F., Demirkır, Ç., Ding, W., Sanjay, V., Babich, A., Yang, X., Mutschke, G., Czarske, J., Lohse, D., et al. Electrolyte droplet spraying in H2 bubbles during water electrolysis under normal and microgravity conditions. Nat. Commun., 16, 4580 (2025).](/research#17) - -
-
- - Drop injection - -
- -
- -- [Dixit, A., Oratis, A., Zinelis, K., Lohse, D., & Sanjay, V. Viscoelastic Worthington Jets and Droplets Produced by Bursting Bubbles. J. Fluid Mech., 1010, A2 (2025).](/research#16) - -
-
- - Worthington Jets and Droplets - -
- -
diff --git a/history.md b/history.md index b08ac7b..5b0a7ff 100644 --- a/history.md +++ b/history.md @@ -22,6 +22,10 @@ title: History Starting July 1st, 2025, the CoMPhy Lab will be relocating to Durham University, UK. We are excited to join the [Condensed Matter Physics section](https://www.durham.ac.uk/research/institutes-and-centres/condensed-matter-physics/) in the [Department of Physics](https://www.durham.ac.uk/departments/academic/physics/) and continue our research in computational physics and fluid dynamics in our new home. +### December + +- [Demirkır, Ç., Yang, R., Bashkatov, A., Sanjay, V., Lohse, D., & Krug, D. To jump or not to jump: Adhesion and viscous dissipation dictate the detachment of coalescing wall-attached bubbles. Phys. Rev. Fluids, 10, 123602 (2025).](/research#20) + ### November - Jnandeep Talukdar won the KHMW Young Talent Graduation Award for Mechanical Engineering and Materials Science 2025 for his master's thesis on fundamental research in droplet formation. Thesis: Singularities with Surfactants From 5e3080af48eb8dc51acf174522cc0cc1db5902ed Mon Sep 17 00:00:00 2001 From: Vatsal Sanjay Date: Wed, 10 Dec 2025 20:29:11 +0000 Subject: [PATCH 3/9] Fix js-yaml security vulnerability (CVE-2025-64718) - Add js-yaml override to force version >=4.1.1 - Resolves Dependabot alerts #10 and #11 - Fixes prototype pollution in YAML merge operations --- package-lock.json | 37 +++---------------------------------- package.json | 3 ++- 2 files changed, 5 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index d96c984..0b05994 100644 --- a/package-lock.json +++ b/package-lock.json @@ -749,16 +749,6 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -773,20 +763,6 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -4595,9 +4571,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -6952,13 +6928,6 @@ "source-map": "^0.6.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", diff --git a/package.json b/package.json index e534469..108b90a 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "stylelint-config-standard": "^36.0.0" }, "overrides": { - "form-data": "^4.0.4" + "form-data": "^4.0.4", + "js-yaml": ">=4.1.1" } } From cfe67d9428bc66d0665e8050fdf4bc34ed91165a Mon Sep 17 00:00:00 2001 From: Vatsal Sanjay Date: Fri, 23 Jan 2026 21:01:50 +0000 Subject: [PATCH 4/9] Update publication details for Soft Matter paper [21] Add volume 22 and page range 657-667 for the stood-up drop paper now that it's officially published. --- _research/index.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/_research/index.md b/_research/index.md index efb2d15..ff28f2c 100644 --- a/_research/index.md +++ b/_research/index.md @@ -20,6 +20,7 @@ title: Research Elastic beads Bouncing Rupture +Contact line Marangoni flows Numerical methods Featured @@ -62,14 +63,6 @@ title: Research [![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/comphy-lab/ElasticPinchOff/) [![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) -### Díaz, D., Bhargava, A., Walz, F., Sharifi, A., Sumally, S., Berger, R., Kappl, M., Butt, H.-J., Lohse, D., Willers, T., Sanjay, V., & Vollmer, D. Stood-up drop to measure receding contact angles. arXiv preprint arXiv:2511.20259 (2025). - -DropsSuperamphiphobic-surfaces - -[![arXiv](https://img.shields.io/static/v1.svg?style=flat-square&label=arXiv&message=2511.20259&color=green)](https://arxiv.org/abs/2511.20259) -[![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/comphy-lab/Retracting-Droplet) -[![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) - ### Ghaemi, A. H., Yang, Z., Huang, A., Sanjay, V., Feng, J., & Constante-Amores, C. R. Bursting bubbles in Herschel-Bulkley fluids: dynamics and jetting transitions. arXiv preprint arXiv:2511.23345 (2025). BubblesNon-NewtonianJets @@ -78,6 +71,17 @@ title: Research [![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/comphy-lab/BurstingBubble_Herschel-Bulkley/) [![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) +## 2026 + +

[21] Díaz, D., Bhargava, A. S., Walz, F., Sharifi, A., Summaly, S., Berger, R., Kappl, M., Butt, H.-J., Lohse, D., Willers, T., Sanjay, V., & Vollmer, D. Stood-up Drop to Determine Receding Contact Angles. Soft Matter, 22, 657-667 (2026).

+ +DropsContact line + +[![Soft Matter](https://img.shields.io/static/v1.svg?style=flat-square&label=Soft%20Matter&message=OA&color=orange)](https://doi.org/10.1039/D5SM00985E) +[![arXiv](https://img.shields.io/static/v1.svg?style=flat-square&label=arXiv&message=2511.20259&color=green)](https://arxiv.org/abs/2511.20259) +[![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat-square&logo=github&logoColor=white)](https://github.com/comphy-lab/Retracting-Droplet) +[![Blog](https://img.shields.io/badge/Blog-Coming%20Soon-yellow?style=flat-square&logo=obsidian&logoColor=white)](https://blogs.comphy-lab.org/0_ToDo-Blog-public) + ## 2025

[20] Demirkır, Ç., Yang, R., Bashkatov, A., Sanjay, V., Lohse, D., & Krug, D. To jump or not to jump: Adhesion and viscous dissipation dictate the detachment of coalescing wall-attached bubbles. Phys. Rev. Fluids, 10, 123602 (2025).

From d71b53003f0d69547b588819ae894fa94094943b Mon Sep 17 00:00:00 2001 From: Vatsal Sanjay Date: Fri, 23 Jan 2026 21:11:16 +0000 Subject: [PATCH 5/9] Add CLI options and help text to build and deploy scripts Adds comprehensive command-line options to both scripts: Build script (build.sh): - --help: Display usage information - --clean: Force rebuild by removing _site and .jekyll-cache - --skip-deps: Skip dependency installation for faster rebuilds - --skip-seo: Skip SEO metadata generation - --skip-research: Skip research page generation Deploy script (deploy.sh): - --help: Display usage information - --port PORT: Use specific port instead of auto-detection - --host HOST: Bind to specific host (default: localhost) - --drafts: Include draft posts in build - --incremental: Enable faster incremental rebuilds - --no-livereload: Disable live reload feature - --open: Auto-open browser after server starts Both scripts maintain backward compatibility and include improved error handling and user feedback. --- scripts/build.sh | 147 ++++++++++++++++++++++++++++++++++--------- scripts/deploy.sh | 154 +++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 255 insertions(+), 46 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index ab1d1aa..7c1e566 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -3,21 +3,96 @@ # Exit on error set -e +# Parse command line arguments +CLEAN_BUILD=false +SKIP_SEO=false +SKIP_RESEARCH=false + +show_help() { + cat << EOF +Usage: ./scripts/build.sh [OPTIONS] + +Build the CoMPhy Lab Jekyll website with all assets and generated pages. + +OPTIONS: + -h, --help Show this help message and exit + -c, --clean Force clean rebuild (removes _site directory first) + --skip-seo Skip SEO metadata generation + --skip-research Skip pre-filtered research page generation + --skip-deps Skip dependency installation (Ruby gems and npm packages) + +EXAMPLES: + ./scripts/build.sh # Standard build + ./scripts/build.sh --clean # Clean rebuild + ./scripts/build.sh --skip-seo # Build without SEO generation + +EOF + exit 0 +} + +# Parse arguments +SKIP_DEPS=false +while [[ $# -gt 0 ]]; do + case $1 in + -h|--help) + show_help + ;; + -c|--clean) + CLEAN_BUILD=true + shift + ;; + --skip-seo) + SKIP_SEO=true + shift + ;; + --skip-research) + SKIP_RESEARCH=true + shift + ;; + --skip-deps) + SKIP_DEPS=true + shift + ;; + *) + echo "Error: Unknown option $1" + echo "Run './scripts/build.sh --help' for usage information" + exit 1 + ;; + esac +done + echo "Starting build process..." +# Clean build if requested +if [ "$CLEAN_BUILD" = true ]; then + echo "Performing clean rebuild..." + if [ -d "_site" ]; then + echo "Removing _site directory..." + rm -rf _site + fi + if [ -d ".jekyll-cache" ]; then + echo "Removing .jekyll-cache directory..." + rm -rf .jekyll-cache + fi +fi + # Check if running in GitHub Actions if [ -n "$GITHUB_ACTIONS" ]; then echo "Running in GitHub Actions environment" # GitHub Actions already has Ruby and Bundler set up via ruby/setup-ruby@v1 - - # Install npm dependencies in GitHub Actions - echo "Installing npm dependencies in GitHub Actions environment..." - if [ -d "./scripts" ] && [ -f "./scripts/package.json" ]; then - (cd ./scripts && npm install --no-fund --no-audit --ignore-scripts) - fi - - if [ -f "./package.json" ]; then - npm install --no-fund --no-audit --ignore-scripts + + if [ "$SKIP_DEPS" = false ]; then + # Install npm dependencies in GitHub Actions + echo "Installing npm dependencies in GitHub Actions environment..." + if [ -d "./scripts" ] && [ -f "./scripts/package.json" ]; then + (cd ./scripts && npm install --no-fund --no-audit --ignore-scripts) + fi + + if [ -f "./package.json" ]; then + npm install --no-fund --no-audit --ignore-scripts + fi + else + echo "Skipping dependency installation (--skip-deps flag)" fi else # Try to detect the environment for local builds @@ -93,20 +168,24 @@ else echo "Bundler version: $(bundle -v)" - # Install dependencies for local environment - echo "Installing Ruby dependencies..." - bundle install + if [ "$SKIP_DEPS" = false ]; then + # Install dependencies for local environment + echo "Installing Ruby dependencies..." + bundle install - # Install npm dependencies (for husky, lint-staged, etc.) - echo "Installing npm dependencies..." - if [ -d "./scripts" ] && [ -f "./scripts/package.json" ]; then - # Script directory has its own package.json - (cd ./scripts && npm install --no-fund --no-audit --ignore-scripts) - fi - - # Also install root npm dependencies if package.json exists - if [ -f "./package.json" ]; then - npm install --no-fund --no-audit --ignore-scripts + # Install npm dependencies (for husky, lint-staged, etc.) + echo "Installing npm dependencies..." + if [ -d "./scripts" ] && [ -f "./scripts/package.json" ]; then + # Script directory has its own package.json + (cd ./scripts && npm install --no-fund --no-audit --ignore-scripts) + fi + + # Also install root npm dependencies if package.json exists + if [ -f "./package.json" ]; then + npm install --no-fund --no-audit --ignore-scripts + fi + else + echo "Skipping dependency installation (--skip-deps flag)" fi fi @@ -115,17 +194,25 @@ echo "Building Jekyll site..." JEKYLL_ENV=production bundle exec jekyll build # Generate pre-filtered research pages -echo "Generating pre-filtered research pages..." -bundle exec ruby scripts/generate_filtered_research.rb +if [ "$SKIP_RESEARCH" = false ]; then + echo "Generating pre-filtered research pages..." + bundle exec ruby scripts/generate_filtered_research.rb +else + echo "Skipping research page generation (--skip-research flag)" +fi # Check if search database exists -if [ -f "assets/js/search_db.json" ]; then - # Generate SEO metadata from search database - echo "Generating SEO metadata from search database..." - chmod +x scripts/generate_seo_tags.rb - bundle exec ruby scripts/generate_seo_tags.rb +if [ "$SKIP_SEO" = false ]; then + if [ -f "assets/js/search_db.json" ]; then + # Generate SEO metadata from search database + echo "Generating SEO metadata from search database..." + chmod +x scripts/generate_seo_tags.rb + bundle exec ruby scripts/generate_seo_tags.rb + else + echo "Warning: search_db.json not found - skipping SEO metadata generation" + fi else - echo "Warning: search_db.json not found - skipping SEO metadata generation" + echo "Skipping SEO metadata generation (--skip-seo flag)" fi echo "Build completed successfully!" diff --git a/scripts/deploy.sh b/scripts/deploy.sh index b6d470e..5d2f035 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -1,7 +1,7 @@ #!/bin/bash # deploy.sh - Find an available port and start Jekyll development server -# Usage: ./scripts/deploy.sh +# Usage: ./scripts/deploy.sh [OPTIONS] set -e @@ -18,6 +18,84 @@ END_PORT=4999 LIVERELOAD_START_PORT=35730 LIVERELOAD_END_PORT=35999 +# Default options +ENABLE_LIVERELOAD=true +ENABLE_DRAFTS=false +ENABLE_INCREMENTAL=false +CUSTOM_PORT="" +CUSTOM_HOST="localhost" +OPEN_BROWSER=false + +show_help() { + cat << EOF +Usage: ./scripts/deploy.sh [OPTIONS] + +Start Jekyll development server with automatic port detection. + +OPTIONS: + -h, --help Show this help message and exit + -p, --port PORT Use specific port instead of auto-detection + --host HOST Bind to specific host (default: localhost) + --no-livereload Disable live reload feature + --drafts Include draft posts in the build + --incremental Enable incremental rebuilds (faster) + --open Open browser automatically after server starts + +EXAMPLES: + ./scripts/deploy.sh # Standard development server + ./scripts/deploy.sh --port 4000 # Use specific port + ./scripts/deploy.sh --drafts # Include draft posts + ./scripts/deploy.sh --incremental # Faster rebuilds + ./scripts/deploy.sh --host 0.0.0.0 # Allow external connections + ./scripts/deploy.sh --open # Auto-open browser + +NOTES: + - Server will auto-find available ports in range ${START_PORT}-${END_PORT} + - Live reload ports range: ${LIVERELOAD_START_PORT}-${LIVERELOAD_END_PORT} + - Press Ctrl+C to stop the server + +EOF + exit 0 +} + +# Parse arguments +while [[ $# -gt 0 ]]; do + case $1 in + -h|--help) + show_help + ;; + -p|--port) + CUSTOM_PORT="$2" + shift 2 + ;; + --host) + CUSTOM_HOST="$2" + shift 2 + ;; + --no-livereload) + ENABLE_LIVERELOAD=false + shift + ;; + --drafts) + ENABLE_DRAFTS=true + shift + ;; + --incremental) + ENABLE_INCREMENTAL=true + shift + ;; + --open) + OPEN_BROWSER=true + shift + ;; + *) + echo -e "${RED}Error: Unknown option $1${NC}" + echo "Run './scripts/deploy.sh --help' for usage information" + exit 1 + ;; + esac +done + # Function to check if a port is available is_port_available() { local port=$1 @@ -67,30 +145,74 @@ echo -e "${BLUE} Jekyll Development Server${NC}" echo -e "${BLUE}================================${NC}" echo "" -# Find an available port -PORT=$(find_available_port) +# Determine port to use +if [ -n "$CUSTOM_PORT" ]; then + echo -e "${BLUE}Using custom port: ${CUSTOM_PORT}${NC}" + if ! is_port_available $CUSTOM_PORT; then + echo -e "${YELLOW}⚠ Warning: Port ${CUSTOM_PORT} is already in use${NC}" + echo -e "${YELLOW}Server may fail to start or conflict with existing service${NC}" + fi + PORT=$CUSTOM_PORT +else + # Find an available port + PORT=$(find_available_port) + + if [ -z "$PORT" ]; then + echo -e "${RED}Failed to find an available port. Exiting.${NC}" + exit 1 + fi +fi + +# Build Jekyll command with options +JEKYLL_CMD="bundle exec jekyll serve --port $PORT --host $CUSTOM_HOST" + +# Add livereload if enabled +if [ "$ENABLE_LIVERELOAD" = true ]; then + LIVERELOAD_PORT=$(find_available_livereload_port) -if [ -z "$PORT" ]; then - echo -e "${RED}Failed to find an available port. Exiting.${NC}" - exit 1 + if [ -z "$LIVERELOAD_PORT" ]; then + echo -e "${RED}Failed to find an available livereload port. Disabling livereload.${NC}" + else + JEKYLL_CMD="$JEKYLL_CMD --livereload --livereload-port $LIVERELOAD_PORT" + fi fi -# Find an available livereload port -LIVERELOAD_PORT=$(find_available_livereload_port) +# Add drafts if enabled +if [ "$ENABLE_DRAFTS" = true ]; then + JEKYLL_CMD="$JEKYLL_CMD --drafts" +fi -if [ -z "$LIVERELOAD_PORT" ]; then - echo -e "${RED}Failed to find an available livereload port. Exiting.${NC}" - exit 1 +# Add incremental if enabled +if [ "$ENABLE_INCREMENTAL" = true ]; then + JEKYLL_CMD="$JEKYLL_CMD --incremental" fi +# Display server configuration echo "" -echo -e "${GREEN}🚀 Starting Jekyll server on port ${PORT}...${NC}" -echo -e "${GREEN}🔄 Live reload enabled on port ${LIVERELOAD_PORT}${NC}" -echo -e "${YELLOW}📍 Local URL: http://localhost:${PORT}${NC}" +echo -e "${GREEN}🚀 Starting Jekyll server...${NC}" +echo -e "${YELLOW}📍 URL: http://${CUSTOM_HOST}:${PORT}${NC}" +[ "$ENABLE_LIVERELOAD" = true ] && [ -n "$LIVERELOAD_PORT" ] && \ + echo -e "${GREEN}🔄 Live reload: enabled (port ${LIVERELOAD_PORT})${NC}" +[ "$ENABLE_DRAFTS" = true ] && \ + echo -e "${BLUE}📝 Drafts: included${NC}" +[ "$ENABLE_INCREMENTAL" = true ] && \ + echo -e "${BLUE}⚡ Incremental builds: enabled${NC}" echo "" echo -e "${BLUE}Press Ctrl+C to stop the server${NC}" echo -e "${BLUE}================================${NC}" echo "" -# Start Jekyll with the found ports -bundle exec jekyll serve --port $PORT --livereload --livereload-port $LIVERELOAD_PORT +# Open browser if requested +if [ "$OPEN_BROWSER" = true ]; then + echo -e "${GREEN}🌐 Opening browser...${NC}" + if [[ "$OSTYPE" == "darwin"* ]]; then + open "http://${CUSTOM_HOST}:${PORT}" & + elif [[ "$OSTYPE" == "linux-gnu"* ]]; then + xdg-open "http://${CUSTOM_HOST}:${PORT}" & + else + echo -e "${YELLOW}⚠ Auto-open not supported on this platform${NC}" + fi +fi + +# Start Jekyll with the configured options +$JEKYLL_CMD From 178ea961163b4c1556fc4a1b5d5fc20fae4594b4 Mon Sep 17 00:00:00 2001 From: Vatsal Sanjay Date: Fri, 23 Jan 2026 21:40:04 +0000 Subject: [PATCH 6/9] Reorganize news structure with year headings Adds year-based organization to News.md and history.md: - Creates separate sections for 2026 and 2025 - Moves Durham University announcement under 2025 heading - Adds paper [21] (Soft Matter) to January 2026 section - Maintains 5-item limit for regular news items - Updates add-news command to handle year sections - Special announcements now excluded from 5-item count This structure makes the news system more scalable as we enter 2026. --- .claude/commands/add-news.md | 44 +++++++++++++++++++++++++++++------- News.md | 12 ++++++---- history.md | 6 +++++ 3 files changed, 50 insertions(+), 12 deletions(-) diff --git a/.claude/commands/add-news.md b/.claude/commands/add-news.md index d5f6ba7..f90a08b 100644 --- a/.claude/commands/add-news.md +++ b/.claude/commands/add-news.md @@ -8,21 +8,49 @@ Follow these steps: 2. Determine the appropriate month and year (ask if unclear) 3. Read both News.md and history.md files 4. Add the news item to history.md in the correct chronological position: + - Years are organized with `## Year` headings (e.g., `## 2026`, `## 2025`) - Years are sorted descending (newest first) - - Months within a year are in chronological order + - Create year section if it doesn't exist + - Months within a year are in chronological order (January at top) - Format: `- [news content]` 5. Add the same item to News.md: - - Find the correct month/year section (create if needed) + - Years are organized with `## Year` headings + - Find or create the correct year section + - Find or create the month subsection (### Month) - Insert after the month heading - - Preserve the pinned Durham announcement (no month header) -6. Count non-pinned news items in News.md -7. If more than 5 items exist, remove the oldest ones + - The Durham announcement is a special item under the `## 2025` heading +6. Count regular news items in News.md (items that start with "- ") +7. If more than 5 regular news items exist, remove the oldest ones + - Special announcements (like Durham) don't count toward the 5-item limit + - Only remove items from the oldest months, preserving year structure 8. Ensure proper spacing between sections 9. Save both files Important formatting: +- Year headings: `## 2026`, `## 2025`, etc. +- Month headings: `### January`, `### December`, etc. - News items start with "- " -- Leave blank lines between different news items -- The pinned item has no "### Month" header above it -- Month headers use format: ### Month (e.g., ### May) +- Leave blank lines between different sections +- Special announcements (like Durham) use `### ` format +- Special announcements don't count toward the 5-item limit + +Structure example: + +```markdown +## 2026 + +### January + +- [News item] + +## 2025 + +### + +[Announcement content] + +### December + +- [News item] +``` diff --git a/News.md b/News.md index 39747af..9a80b8f 100644 --- a/News.md +++ b/News.md @@ -1,3 +1,11 @@ +## 2026 + +### January + +- [Díaz, D., Bhargava, A. S., Walz, F., Sharifi, A., Summaly, S., Berger, R., Kappl, M., Butt, H.-J., Lohse, D., Willers, T., Sanjay, V., & Vollmer, D. Stood-up Drop to Determine Receding Contact Angles. Soft Matter, 22, 657-667 (2026).](/research#21) + +## 2025 + ### CoMPhy Lab is Moving to Durham University!
@@ -28,7 +36,3 @@ Starting July 1st, 2025, the CoMPhy Lab will be relocating to D ### August - [Mclauchlan, J., Walker, J. S., Sanjay, V., Jalaal, M., Reid, J. P., Squires, A. M., & Souslov, A. Bouncing microdroplets on hydrophobic surfaces. Proc. Natl. Acad. Sci., 122, e2507309122 (2025).](/research#19) - -### July - -- Saumili Jana received the award for best master's thesis from IIT Kharagpur. Thesis: Retract or Collapse? The Role of Viscosity and Viscoelasticity on Bubble Dynamics diff --git a/history.md b/history.md index 5b0a7ff..be9e205 100644 --- a/history.md +++ b/history.md @@ -5,6 +5,12 @@ title: History # History +## 2026 + +### January + +- [Díaz, D., Bhargava, A. S., Walz, F., Sharifi, A., Summaly, S., Berger, R., Kappl, M., Butt, H.-J., Lohse, D., Willers, T., Sanjay, V., & Vollmer, D. Stood-up Drop to Determine Receding Contact Angles. Soft Matter, 22, 657-667 (2026).](/research#21) + ## 2025 ### CoMPhy Lab is Moving to Durham University! From 4007425f332a8be11f20aab07cf7087a4c4c8ae6 Mon Sep 17 00:00:00 2001 From: Vatsal Sanjay Date: Fri, 23 Jan 2026 21:40:15 +0000 Subject: [PATCH 7/9] Update location to Durham University and remove duplicate email badge Changes to aboutCoMPhy.md: - Update location badge from Physics of Fluids to Durham University - Change map link to Durham campus location - Remove mailto badge to avoid duplicate email display - Keep two email containers with envelope and copy functionality --- aboutCoMPhy.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/aboutCoMPhy.md b/aboutCoMPhy.md index a846ab8..d938a52 100644 --- a/aboutCoMPhy.md +++ b/aboutCoMPhy.md @@ -24,9 +24,8 @@ Feel free to contact us for discussions about our work or anything else related ### Location & Website -[![Location](https://img.shields.io/badge/-Physics%20of%20Fluids-4285F4?style=flat&logo=googlemaps&logoColor=white)](https://maps.app.goo.gl/jSTCYnfcndF1uZPV8) +[![Location](https://img.shields.io/badge/-Durham%20University-4285F4?style=flat&logo=googlemaps&logoColor=white)](https://maps.app.goo.gl/btdPViKxEoXFmVxM9) [![Website](https://img.shields.io/badge/-comphy--lab.org-4285F4?style=flat&logo=googlechrome&logoColor=white)](http://www.comphy-lab.org) -[![Email](https://img.shields.io/badge/-mailto:vatsal.sanjay@comphy--lab.org-EA4335?style=flat&logo=gmail&logoColor=white)](mailto:vatsal.sanjay@comphy-lab.org)