Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .github/workflows/content-rules-checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Content Rules Checks

on:
pull_request:
branches: ["main"]
paths:
- "history.md"
- "_research/index.md"
- "CLAUDE.md"
- "README.md"
- "scripts/validate-content-rules.sh"
paths-ignore:
- ".*/**/*.md"
- "**/.*/**/*.md"
push:
Comment on lines +6 to +15
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

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

The workflow runs scripts/validate-content-rules.sh, but the trigger won’t run when the rule docs it validates change (e.g. .opencode/commands/add-news.md / .opencode/commands/add-paper.md) because they are not included in paths, and the current paths-ignore patterns would exclude dot-directory markdown anyway. Add those files to paths and adjust/remove the paths-ignore entries so changes under .opencode/ still trigger this check.

Copilot uses AI. Check for mistakes.
branches: ["main"]
paths:
- "history.md"
- "_research/index.md"
- "CLAUDE.md"
- "README.md"
- "scripts/validate-content-rules.sh"
paths-ignore:
- ".*/**/*.md"
- "**/.*/**/*.md"

jobs:
content-rules:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Validate history and research content rules
run: bash scripts/validate-content-rules.sh
42 changes: 42 additions & 0 deletions .github/workflows/teaching-content-checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Teaching Content Checks

on:
pull_request:
branches: ["main"]
paths:
- "_teaching/**/*.md"
- ".markdownlint-cli2.jsonc"
- ".prettierrc.json"
- "package.json"
- "package-lock.json"
push:
branches: ["main"]
paths:
- "_teaching/**/*.md"
- ".markdownlint-cli2.jsonc"
- ".prettierrc.json"
- "package.json"
- "package-lock.json"

jobs:
markdown-quality:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"

- name: Install dependencies
run: npm ci

- name: Run markdownlint for teaching content
run: npx markdownlint-cli2 --config .markdownlint-cli2.jsonc "_teaching/**/*.md"

- name: Check prettier formatting for teaching content
run: npx prettier --check "_teaching/**/*.md"
2 changes: 1 addition & 1 deletion .opencode/commands/add-news.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Follow these steps:
- Years are organized with `## Year` headings (e.g., `## 2026`, `## 2025`)
- Years are sorted descending (newest first)
- Create year section if it doesn't exist
- Months within a year are in chronological order (January at top)
- Months within a year are in reverse chronological order (December at top)
- Format: `- [news content]`
5. Add the same item to News.md:
- Years are organized with `## Year` headings
Expand Down
2 changes: 1 addition & 1 deletion .opencode/commands/add-paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ Output (for paper [18]):
```markdown
<h3 id="18">[18] Bashkatov, A., Bürkle, F., Demirkır, Ç., Ding, W., <strong>Sanjay, V.</strong>, Babich, A., Yang, X., Mutschke, G., Czarske, J., Lohse, D., Krug, D., Büttner, L., & Eckert, K. Electrolyte droplet spraying in H2 bubbles during water electrolysis. Nat. Commun., 16, 4580 (2025).</h3>

<tags><span>Bubbles</span><span>Jets</span></tags>
<div class="tags"><span>Bubbles</span><span>Jets</span></div>

[![Nat. Commun.](https://img.shields.io/static/v1.svg?style=flat-square&label=Nat.%20Commun.&message=OA&color=orange)](https://doi.org/10.1038/s41467-025-59762-7)
[![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)
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ The website implements a sophisticated command palette system that requires coor
- Client-side JavaScript filtering with SEO-friendly static pages
- Pre-generated tag pages that redirect to filtered views
- Multiple URL variations for better SEO coverage
- Tags must be added to `_research/index.md` using `<tags><span>TagName</span></tags>` format
- Tags must be added to `_research/index.md` using `<div class="tags"><span>TagName</span></div>` format

## Essential Commands

Expand Down Expand Up @@ -68,7 +68,7 @@ Add to `_research/index.md` with this exact format:
```markdown
<h3 id="NUMBER">[NUMBER] Author1, A., **Author2, B.**, & Author3, C. Title. _Journal_, Volume, Pages (Year).</h3>

<tags><span>Tag1</span><span>Tag2</span><span>Featured</span></tags>
<div class="tags"><span>Tag1</span><span>Tag2</span><span>Featured</span></div>

[![Badge](https://img.shields.io/static/v1.svg?style=flat-square&label=LABEL&message=MESSAGE&color=COLOR)](URL)
```
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ A static website for the Computational Multiphase Physics Laboratory, built with
```markdown
<h3 id="NUMBER">[NUMBER] Author1, A., **Author2, B.**, & Author3, C. Title. _Journal_, Volume, Pages (Year).</h3>

<tags><span>Tag1</span><span>Tag2</span><span>Featured</span></tags>
<div class="tags"><span>Tag1</span><span>Tag2</span><span>Featured</span></div>

[![Badge1](https://img.shields.io/static/v1.svg?style=flat-square&label=LABEL&message=MESSAGE&color=COLOR)](URL)
[![Badge2](https://img.shields.io/static/v1.svg?style=flat-square&label=LABEL&message=MESSAGE&color=COLOR)](URL)
Expand Down Expand Up @@ -429,7 +429,7 @@ The search functionality includes content from our external blog at blogs.comphy
Research papers can be tagged with multiple topics. Tags are defined in the markdown files using the following format:

```html
<tags><span>Tag1</span><span>Tag2</span></tags>
<div class="tags"><span>Tag1</span><span>Tag2</span></div>
```

These tags are:
Expand Down
3 changes: 2 additions & 1 deletion _layouts/history.html
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
</script>

<!-- JavaScript dependencies -->
<script defer src="/assets/js/utils.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/fuse.js@6.6.2"></script>
<script defer src="/assets/js/main.js"></script>
Expand Down Expand Up @@ -314,4 +315,4 @@
</script>

</body>
</html>
</html>
17 changes: 7 additions & 10 deletions _layouts/research.html
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@
}
</script>

<!-- Core utilities (must load first) -->
<script defer src="/assets/js/utils.js"></script>

<!-- Command palette (implementation in assets/js/command-palette.js) -->
<script defer src="/assets/js/command-palette.js"></script>

Expand Down Expand Up @@ -274,12 +277,6 @@ <h3>Contents</h3>
</footer>
</div>

<!-- Core scripts -->
<script defer src="/assets/js/main.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<!-- Search dependencies -->
<script defer src="https://cdn.jsdelivr.net/npm/fuse.js@6.6.2"></script>

<script>
document.addEventListener('DOMContentLoaded', function() {
// Generate table of contents
Expand Down Expand Up @@ -419,7 +416,7 @@ <h3>Contents</h3>
}

// Handle tag filtering
const allTags = document.querySelectorAll('tags span');
const allTags = document.querySelectorAll('.tags span');
const paperContainers = document.querySelectorAll('.paper-container');
let activeTag = null;

Expand All @@ -429,7 +426,7 @@ <h3>Contents</h3>

// Function to highlight matching tags
const updateMatchingTags = (tagText, shouldHighlight) => {
document.querySelectorAll('tags span').forEach(tag => {
document.querySelectorAll('.tags span').forEach(tag => {
if (tag.textContent === tagText) {
// First remove any active class
tag.classList.remove('active');
Expand Down Expand Up @@ -470,7 +467,7 @@ <h3>Contents</h3>

// Filter papers
paperContainers.forEach(container => {
const containerTags = container.querySelector('tags');
const containerTags = container.querySelector('.tags');
if (containerTags && containerTags.textContent.includes(tagText)) {
container.classList.remove('hidden');
} else {
Expand Down Expand Up @@ -519,4 +516,4 @@ <h3>Contents</h3>

<!-- Command palette functionality is now implemented in command-palette.js -->
</body>
</html>
</html>
5 changes: 2 additions & 3 deletions _layouts/teaching.html
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
</script>

<!-- JavaScript dependencies -->
<script defer src="/assets/js/utils.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/fuse.js@6.6.2"></script>
<script defer src="/assets/js/main.js"></script>
Expand Down Expand Up @@ -129,8 +130,6 @@
})();
</script>

<script defer src="/assets/js/command-palette.js"></script>

<script>
// Check if we're on localhost
if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
Expand Down Expand Up @@ -318,4 +317,4 @@
</script>

</body>
</html>
</html>
6 changes: 0 additions & 6 deletions _layouts/team.html
Original file line number Diff line number Diff line change
Expand Up @@ -398,12 +398,6 @@ <h2 class="map-heading">Team, collaborators, and Conference visits</h2>
</div> <!-- end ss-go-top -->
</footer>

<!-- Core scripts -->
<script defer src="/assets/js/main.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<!-- Search dependencies -->
<script defer src="https://cdn.jsdelivr.net/npm/fuse.js@6.6.2"></script>

<script>
document.addEventListener('DOMContentLoaded', () => {
// Add IDs to all h2 headings that don't have them
Expand Down
Loading
Loading