From c1b1ff7c961a2ce71049a6b3af684c5e2eb71a78 Mon Sep 17 00:00:00 2001 From: Esteban Carisimo <32495768+estcarisimo@users.noreply.github.com> Date: Mon, 28 Sep 2026 19:13:47 -0500 Subject: [PATCH 1/5] Add publication topics, AGENTS.md, and American English; drop the contact e-mail Publication topics (as on estcarisimo.github.io, but trilingual): - New _data/publication_topics.yml with 18 topics (complex networks, k-core decomposition, visualization, community detection, graph theory, Internet measurement, Internet topology, IXPs, Latin America, traffic & latency, routing & protocols, IETF standards, wireless & multi-robot networks, media & opinion, human mobility & behavior, biological & physical systems, optical networks & security, engineering education), labels in ES/EN/FR. - 87 of 89 entries in conexdat.bib tagged with `topics = {...}`; the two untagged ones are 1990s instrumentation papers that fit no topic. - The filter bar gets a labeled Topics row next to the People row; topic, person and free-text filters combine, and deep links like /publications/#topic=latam&q=Carisimo work. Every entry shows its topic chips; on research-area pages they link to the filtered publications page in the current language. - Selected chips now meet contrast (navy/white in light mode, celeste/deep navy in dark mode; the old white-on-celeste was 2.4:1). Contact: no e-mail anywhere (group decision). The contact page points to the director and the CoNexDat GitHub organization; the Scholar link, which is not a contact channel, is gone. The dead electronica.fi.uba.ar subdomain (no DNS) is replaced by the department page on fi.uba.ar, and faculty links use HTTPS. Conventions: - AGENTS.md (with CLAUDE.md including it), following the other CoNexDat repositories: layout, Ruby 3.3 commands, American English, three-language lock-step, no e-mail, no links into cnet.fi.uba.ar, the polyglot and inline-script pitfalls, and the PR workflow. - American English across English content, comments and names (modeling, behavior, visualize, analyze, utilization, toward, gray, normalize, ...). Paper titles and proper names are kept as published. - PR template and CONTRIBUTING gain the language, e-mail and topics rules. - Repository docs (AGENTS, CLAUDE, CONTRIBUTING, CODE_OF_CONDUCT, SECURITY) and _scripts/ are excluded from the build; they were being published at the site root. - Dependabot ignores jekyll-sass-converter 3.x (dart-sass breaks the theme). - CI now also checks topic markup, the absence of mailto: links, and that repository docs are not published. Co-Authored-By: Claude Opus 5.5 --- .github/PULL_REQUEST_TEMPLATE.md | 3 + .github/dependabot.yml | 5 + .github/workflows/build.yml | 12 ++ AGENTS.md | 118 +++++++++++++ CLAUDE.md | 26 +++ CONTRIBUTING.md | 31 +++- Gemfile | 2 +- README.md | 11 +- _bibliography/conexdat.bib | 261 +++++++++++++++++++---------- _config.yml | 16 +- _data/projects.yml | 8 +- _data/publication_topics.yml | 45 +++++ _data/research_areas.yml | 14 +- _includes/publications-filter.html | 47 ++++-- _layouts/bib_entry.html | 23 ++- _pages/contact.en.md | 15 +- _pages/contact.fr.md | 15 +- _pages/contact.md | 15 +- _pages/home.en.md | 8 +- _pages/home.fr.md | 8 +- _pages/home.md | 8 +- _sass/_conexdat.scss | 75 ++++++++- _scripts/normalize_venues.py | 8 +- assets/js/publications.js | 104 ++++++++---- 24 files changed, 678 insertions(+), 200 deletions(-) create mode 100644 AGENTS.md create mode 100644 CLAUDE.md create mode 100644 _data/publication_topics.yml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 87e9232..3ff9d04 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -7,4 +7,7 @@ - [ ] ES / EN / FR kept in lock-step (`.md` + `.en.md` + `.fr.md`, or the `es:` / `en:` / `fr:` columns) - [ ] `bundle exec jekyll build` passes locally (or the **Build site** check is green) - [ ] New external links verified to open the intended page +- [ ] English text, code, comments and names use American English (see AGENTS.md) +- [ ] No e-mail addresses and no new links into `cnet.fi.uba.ar` +- [ ] New publications carry `topics = {…}` from `_data/publication_topics.yml` - [ ] Screenshots attached for visual changes diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3b51399..4b01b58 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,6 +4,11 @@ updates: directory: "/" schedule: interval: monthly + ignore: + # Pinned to 2.x on purpose: the academicpages partials do not compile under + # dart-sass (jekyll-sass-converter 3.x). See the Gemfile and AGENTS.md. + - dependency-name: jekyll-sass-converter + update-types: ["version-update:semver-major"] groups: jekyll: patterns: ["*"] diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3cb409f..b88c40b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,4 +40,16 @@ jobs: grep -q 'href="/en/" title="English"' _site/index.html grep -q 'href="/" title="Español"' _site/en/index.html grep -q 'href="/fr/" title="Français"' _site/en/index.html + # Publication topics: chips in the bar, and space-separated ids on + # entries (the filter splits on whitespace). + grep -q 'data-topic="latam"' _site/publications/index.html + grep -Eq 'data-topics="[a-z-]+ +[a-z-]+' _site/en/publications/index.html + # Group decision: no e-mail addresses anywhere on the site. + if grep -rl 'mailto:' _site --include='*.html'; then + echo "::error::mailto: link found (the site publishes no e-mail addresses)"; exit 1 + fi + # Repository docs must not be published with the site. + for f in AGENTS.md CLAUDE.md CONTRIBUTING.md CODE_OF_CONDUCT.md SECURITY.md; do + test ! -e "_site/$f" + done echo "OK: $(find _site -name '*.html' | wc -l) HTML files" diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..e399935 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,118 @@ +# AGENTS.md — CoNexDat website + +Instructions for AI coding agents (Claude Code, Copilot, Codex, Cursor, ...) working in +this repository. `CLAUDE.md` includes this file. Humans: see `CONTRIBUTING.md`. + +## What this project is + +The public website of CoNexDat, the Complex Networks and Data Communication Group at +the School of Engineering of the University of Buenos Aires (FIUBA), directed by +J. Ignacio Alvarez-Hamelin. It is a static Jekyll 4 site built on the academicpages +template, trilingual (Spanish default, English, French) through jekyll-polyglot, with +publications rendered from BibTeX by jekyll-scholar. GitHub Actions builds it and +publishes `_site/` to the `gh-pages` branch, served at . +It replaces the legacy site at `cnet.fi.uba.ar`, which is being retired. + +## Layout + +``` +_config.yml site, polyglot and scholar settings; cnet.highlighted_authors +_config.dev.yml local overrides (url: http://localhost:4000); required for previews +_pages/.md Spanish page; .en.md and .fr.md are the translations +_data/ + members.yml people, by category (current, external, former-inhouse, ...) + projects.yml funded projects + research_areas.yml research areas: home cards + /research// pages + highlights.yml home-page project cards + publication_topics.yml publication topics (labels), trilingual + theses.yml, navigation.yml, ui-text.yml +_news/ one file per news item and language (inline, no pages) +_bibliography/conexdat.bib THE publication list (other .bib files are unused sources) +_layouts/bib_entry.html how one publication renders (buttons, highlighting, topic chips) +_includes/ masthead (language switcher), people/projects/theses lists, + publications-filter.html, research-area.html +assets/js/publications.js search / topic / person filter on /publications/ +_sass/_conexdat.scss all site-specific styles (colors, cards, chips, dark mode) +.github/workflows/ build.yml (PR check "Build site"), deploy.yml (push to main) +``` + +## Commands + +```bash +export PATH="/usr/local/opt/ruby@3.3/bin:$PATH" # macOS/Homebrew; Ruby 3.3 only +bundle install +bundle exec jekyll serve --livereload --config _config.yml,_config.dev.yml # preview +JEKYLL_ENV=production bundle exec jekyll build # what CI runs +``` + +Ruby 3.3 is required: the system Ruby is too old for Bundler 4, and Ruby 4 cannot +compile the `sassc` native gem. A full build takes about 30 seconds. The repeated +"Error reading file _layouts/single" warnings are a harmless polyglot quirk. To preview +a finished build without Jekyll, serve `_site/` on **port 4000**; the dev config +hard-codes that origin for CSS and assets. + +## Conventions + +- **American English everywhere** (mandatory) for English text: the `.en.md` pages, the + `en:` values in `_data/`, English news, this file, README, CONTRIBUTING, commit + messages, PR descriptions, and every code comment, identifier, CSS class and + JavaScript name (`color`, `gray`, `center`, `behavior`, `modeling`, `analyze`, + `visualize`, `normalize`, `organization`, `toward`, `inquiry`). Spanish and French + content stays in correct Spanish and French. Exceptions: proper names and published + paper titles in the bibliography are kept exactly as published. +- **Three languages in lock-step.** Every content change updates Spanish, English and + French together: the three `.md` files of a page, or the `es:` / `en:` / `fr:` keys of + the same YAML entry. Never ship a page or entry in one language only. +- **No e-mail addresses anywhere on the site** (group decision, September 2026). The + contact page points to the director and to . Do not add + `mailto:` links, and keep `author.email` in `_config.yml` empty. +- **Do not link into `cnet.fi.uba.ar`.** Unknown paths there silently serve the legacy + home page, so a link can look alive and still be wrong. Pages that still exist there + and may be linked: `netscix23/`, `SnailVis/`, `PIT/…`, `PaD/`. Otherwise use the + project's new home (TiX: , LaNet-vi: + , TMA2018: ) or a + Wayback Machine snapshot. Check with `grep -rn cnet.fi.uba.ar _data _pages _news`. +- **Verify every new external link** with `curl -sIL` and read where it lands: a 200 on + a home page, a sign-in wall or a parked domain is a broken link. +- **Publications**: add entries to `_bibliography/conexdat.bib` with a + `topics = {id1, id2}` field using ids from `_data/publication_topics.yml` (add a new + topic there, in three languages, only when no existing one fits). Prefer a bare DOI + (`10.xxxx/…`), `eprint` + `archiveprefix = {arXiv}` for preprints, and check the key is + not already present: the group's own exports contain duplicates. +- Internal links are written without language prefix (`/projects/`); polyglot adds + `/en/` or `/fr/`. Do not hard-code `https://conexdat.github.io/...` in content. +- Commit messages and PR descriptions in American English, imperative subject line. + +## Things that are easy to get wrong + +- **Language switcher.** Polyglot rewrites every `href="/…"` on EN and FR pages into the + current language, which breaks hand-written ES | EN | FR links. The masthead writes them + as `ferh="/en/…"`, which polyglot turns back into `href` untouched. Do not rename the + attribute. The `Build site` workflow greps the output for the expected hrefs. +- **No `//` comments inside inline `