Skip to content

site: landing redesign + ancillary pages + brand footer + URL sweep#1313

Merged
sunt05 merged 13 commits intomasterfrom
sunt05/impecaable-design-site
Apr 19, 2026
Merged

site: landing redesign + ancillary pages + brand footer + URL sweep#1313
sunt05 merged 13 commits intomasterfrom
sunt05/impecaable-design-site

Conversation

@sunt05
Copy link
Copy Markdown

@sunt05 sunt05 commented Apr 19, 2026

Summary

Reshapes the public landing surface (suews.io) around the editorial-scientific register documented in the new .impeccable.md design context (also linked from CLAUDE.md). Net result: a quietly-confident scientific-instrument landing rather than a SaaS product page, three new editorial subpages, accessibility hygiene throughout, a team masthead with ORCID / Scholar / ResearchGate links for every contributor we could verify, a sweep of stale doc URLs that 404 today, and a new publications topic filter that ties the landing's Research applications cards to filtered entries in the Sphinx publications pages.

Auto-deploy implication. master deploys to suews.io via pages-deploy.yml. Recommend reviewing locally (or on a Pages preview) before merging.

Commits (13)

Landing + design context

  • docs: sweep stale /en/latest/ URLs to /stable/; fix Yiqing rename — 13 occurrences across README.md, SuPy modules, validation pipeline, plus a new project rule in .claude/rules/docs/conventions.md blocking the pattern in future PRs. acknowledgement.rst: Yuanyuan Liu → Yiqing Liu (the actual contributor).
  • site: add team, funding, dependencies pages with shared subpage.css — three editorial subpages sharing a neutrally-named class system (.subpage-* / .entry-*).
  • site(brand): adopt shared 4-link compact footer — brings /brand/* onto the Team · Funding · Dependencies · Brand footer used site-wide; also removes a previously-broken link to a non-existent showcase.html.
  • site(landing): redesign with a11y, motion hygiene, two-tier resources — two-tier resource cards, UMEP copy tightened to "provides a GUI for SUEWS", compact footer, raised --text-muted contrast, global :focus-visible, full prefers-reduced-motion block, contour-ring pulse stopped, decorative gradients removed. Stats bar preserved — evidence over assertion.
  • site: refresh subpage titles, reorganise funding, rehouse brand under shared chrome.

Team-page polish (added in review)

  • site(team): rename .team-* classes to shared .subpage-*/.entry-*bug fix. Page originally shipped with class names that subpage.css did not define; contributor cards were rendering with browser defaults. 16 classes remapped to match /funding/ and /dependencies/.
  • site(docs): refresh site/README.md for the new pages, stylesheets, and footer.
  • site(team): add ORCID links for five contributors (Matthew Paskin, Silvia Rognone, Vitor Lavor, Keisuke Nakao, Minttu P. Havu) — each verified by cross-checking ORCID record affiliation and publication topic against their SUEWS contribution area.
  • site(team): add ORCID + current affiliation for Shiho Onomura — verified via expanded ORCID search (Tokyo City University) and Google Scholar (tcu.ac.jp email, Onomura-Grimmond-Lindberg 2015 paper). Affiliation updated to reflect her move from Gothenburg.
  • site(team): link contributors without ORCID to Scholar / ResearchGate — Zhenkun Li (ResearchGate), Thomas Loridan (Scholar), Brian Offerle (Scholar). Each has no public ORCID (searched exhaustively) but maintains an active research profile; links carry a title attribute so the source is clear on hover / focus.
  • site(team): add contribution line for Xiaoxiong Xie — traced via git log (TMY fix 2020, ERA5 units fix 2021) and four RSL/FAI-related issues opened 2022–2025. v2020a → present.

Publications topic filter

Ties the existing bib-keyword taxonomy in docs/source/assets/refs/refs-SUEWS.bib and refs-community.bib (controlled vocabulary: energy-balance, water-balance, radiation, storage-heat, anthropogenic-heat, building-energy, carbon-flux, model-infrastructure) to the landing's Research applications section, so readers can click a topic on suews.io and land on the Sphinx publications page pre-filtered to that slug.

  • docs(publications): add topic-based chip filter to publication pages — new Sphinx extension _ext/publications_topic_annotate.py reads both bib files at builder-inited and, on doctree-resolved, stamps each rendered bibliography <li> with pub-entry + pub-kw-<slug> classes (scoped by bibliography_key.docname to avoid sphinxcontrib-bibtex's per-doc id2/id3 collisions). New client-side widget _static/publications-filter.{js,css} renders a chip row above each bibliography, supports multi-select union, syncs ?topic=<slug>[,<slug>] via history.replaceState, respects aria-pressed / focus rings / prefers-reduced-motion, and shows an empty-state line when no entries match. related_publications.rst and community_publications.rst get a single .. raw:: html mount above the existing .. bibliography:: block — the list stays as one deduplicated flat list, not duplicated across per-topic subsections.
  • site: redesign landing Applications as slug-based cards linked to filtered publications — replaces the flat dot-bullet list with six .resource-card entries matching Resources visually. Each card is one bib slug with a paper count (9 papers, 10 papers, ...) drawn from the bib, and href="docs.suews.io/stable/related_publications.html?topic=<slug>". Accent tokens chosen to reflect the physical constituent of each topic (sky-blue for flux balance, water-blue for hydrology, sun-gold for radiation, energy-orange for anthropogenic heat, wave-blue for building energy, veg-green for carbon flux). The local-dev IIFE now also rewrites these hrefs to http://127.0.0.1:8000/... and prepends a gold LOCAL badge to the .card-meta line when running on localhost/127.0.0.1.

Contributor coverage on /team/

  • Linked to ORCID (15): Grimmond, Ting Sun, Lindberg, Järvi, Ward, Omidvar, Blunn, Yiqing Liu, Xiaoxiong Xie, Paskin, Rognone, Lavor, Nakao, Havu, Onomura.
  • Linked to Scholar / ResearchGate (3): Loridan, Offerle, Zhenkun Li — verified no public ORCID.
  • Unlinked (1): Yihao Tang — no public ORCID; no verified Scholar profile found yet.

Verified before merge

  • make test-smoke — 9 passed, 0 failed.
  • Publications filter end-to-end: make docs builds without new warnings; both related_publications.html (9 chips, 33 entries) and community_publications.html (3 chips, 1 entry with both energy-balance + water-balance tags) render the chip row with correct counts; clicking a chip filters the flat list and updates the URL; direct load with ?topic=carbon-flux pre-activates the chip and shows the 3 matching entries.
  • Localhost-rewriting JS in site/index.html is guarded by hostname === 'localhost' || '127.0.0.1'; production path stays at https://docs.suews.io, no dev banner, Applications cards route to docs.suews.io/stable/....
  • prefers-reduced-motion block in base.css covers all subpages and the new chip hover transition (zero inline animation declarations).
  • /en/latest/ sweep targeted only docs.suews.io host; other readthedocs hosts (supy.readthedocs.io, umep-docs.readthedocs.io) legitimately still use /en/latest/.

Test plan

  • Local browse (python -m http.server from site/): landing renders with two-tier resources, dev banner on localhost, six slug-based Application cards each showing N papers + gold LOCAL badge, footer links resolve, theme toggle works.
  • Subpage spot-check at /team/, /funding/, /dependencies/ — render correctly, footer matches, no console errors.
  • Team page: 19 contributor cards render with the shared entry styling; linked names in accent colour; hover titles show "Google Scholar profile" / "ResearchGate profile" on the three non-ORCID links.
  • Brand pages (/brand/, /brand/brand-workshop.html) still render with the new footer.
  • OS-level prefers-reduced-motion: reduce toggle kills contour-ring effect, card reveal on landing, and chip hover transition on publications pages.
  • Publications filter: make docs && make livehtml (or browse built HTML); chip row above each .. bibliography::, multi-select union works, URL ?topic=<slug>[,<slug>] round-trips correctly, "All" clears, empty-state shows when no matches.
  • Landing → docs deep-link: click each of the six Application cards on localhost; lands on http://127.0.0.1:8000/related_publications.html?topic=<slug> with the matching chip active and list filtered.
  • After merge: pages-deploy.yml green; https://suews.io/team/ etc. return 200; https://docs.suews.io 302→/stable/; Lighthouse a11y green.

Out of scope (follow-ups in .context/todos.md)

  • Yihao Tang: no verified ORCID or Scholar profile; leave unlinked for now.
  • Full CITATION.cffacknowledgement.rst reconciliation (per earlier decision, only the Yiqing rename was in scope).
  • Funding page: Option A (project-led entries) redesign proposed but not yet implemented — grant column misalignment remains.
  • Mobile breakpoint spot-check.
  • Client-side multi-slug chip state on the publications page does not currently collapse to ?topic= when the full slug set is selected; minor cosmetic.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 19, 2026

CI Build Plan

Changed Files

Python source (4 files)

  • src/supy/_check.py
  • src/supy/_load.py
  • src/supy/data_model/validation/pipeline/orchestrator.py
  • src/supy/data_model/validation/pipeline/phase_b_rules/physics_rules.py

Utility modules (1 file)

  • src/supy/util/_io.py

Documentation (10 files)

  • docs/README.md
  • docs/source/_ext/publications_topic_annotate.py
  • docs/source/_static/publications-filter.css
  • docs/source/_static/publications-filter.js
  • docs/source/acknowledgement.rst
  • docs/source/community_publications.rst
  • docs/source/conf.py
  • docs/source/related_publications.rst
  • src/supy/data_model/validation/pipeline/orchestrator.py
  • src/supy/data_model/validation/pipeline/phase_b_rules/physics_rules.py

Static site (10 files)

  • site/README.md
  • site/brand/brand-workshop.html
  • site/brand/index.html
  • site/css/base.css
  • site/css/subpage.css
  • site/css/tokens.css
  • site/dependencies/index.html
  • site/funding/index.html
  • site/index.html
  • site/team/index.html

Build Configuration

Configuration
Platforms Linux x86_64
Python 3.9
Test tier standard (all except slow)
PR status Ready (standard matrix)

Rationale

  • Python source changed -> single-platform build
  • Utility modules changed -> single-platform build

Updated by CI on each push. See path-filters.yml for category definitions.

@github-actions
Copy link
Copy Markdown

Preview Deployed

Content Preview URL
Site https://suews.io/preview/pr-1313/
Docs https://suews.io/preview/pr-1313/docs/

Note

This preview is ephemeral. It will be lost when:

  • Another PR with site/ or docs/ changes is pushed
  • Changes are merged to master
  • A manual workflow dispatch runs

To restore, push any commit to this PR.

sunt05 added 5 commits April 19, 2026 11:19
The docs.suews.io site no longer serves at /en/latest/* (returns 404).
Production now lives at /stable/<page>.html and dev at /latest/.
Sweep all 13 occurrences across README, supy modules, and validation
pipeline to use /stable/. Add a project doc-conventions rule so the
pattern can be blocked in future PRs.

Also fix the contributor entry: Yuanyuan Liu was a typo for Yiqing
Liu (the actual contributor); rename in acknowledgement.rst.
Adds three editorial-register subpages to suews.io:

- /team/ — masthead of 19 contributors grouped Lead / Major / Other,
  ordered per CITATION.cff with ORCID-linked names highlighted.
  Institutional attribution moved here from the old footer.
- /funding/ — 23 grants in four sections (European, UK research
  councils, international, institutional) with D/O tagging.
- /dependencies/ — six Fortran libraries with sources, purposes, and
  licence notes; pyproject.toml link for Python deps.

site/css/subpage.css introduces neutrally-named .subpage-* / .entry-*
classes shared across all three pages so future subpages can reuse
without touching the team page's existing inline classes.
Brand pages still carried the old 2-link "Home / Brand Workshop"
footer, which felt orphaned now that the rest of the site uses the
compact Team / Funding / Dependencies / Brand nav. Sweep the new
footer onto both brand pages for consistency.

brand/index.html uses the shared .footer / .footer-nav classes from
base.css. brand-workshop.html is self-contained (does not load
base.css) so the footer is inline-styled to match the same compact
aesthetic using the workshop's own --text-secondary / --text-muted
/ --border tokens.

Side benefit: brand-workshop.html previously linked to the
non-existent showcase.html — that broken link is gone.
Landing page rebuilt around the editorial-scientific register
captured in the new .impeccable.md design context (also added to
CLAUDE.md). Treats SUEWS as a quietly-confident scientific
instrument rather than a SaaS product page.

Resource cards are now in two tiers — Use SUEWS (Install /
Documentation / Community) and Explore further (Source / Schema /
UMEP) — each card carries a physics-mapped accent colour that ties
back to the model's components (sun, water, vegetation, urban
fabric). UMEP copy tightened to "provides a GUI for SUEWS" rather
than the misleading "couples".

Footer collapsed to two rows: a compact uppercase nav with dot
separators (Team / Funding / Dependencies / Brand) and a single
copyright line. Institutional attribution moved to /team/.

Accessibility hygiene applied throughout:
- Raised --text-muted contrast on both dark and light themes (was
  borderline for small text against the editorial background).
- Added global :focus-visible outlines so keyboard navigation is
  visible on cards, links, and the theme toggle.
- Added a prefers-reduced-motion block in base.css that suppresses
  the contour-ring pulse, wave undulation, sun glow, and staggered
  card reveals when the user has requested less motion.
- Stopped the contour-ring pulse loop unconditionally (rings remain
  static — they're the signature, the motion was decorative
  competing with the wave + sun glow).
- Removed bounce easing on the scroll indicator.
- Removed decorative gradient stripes on resource cards and the
  double-gradient halo on the Applications box.

Stats bar (15+ / 200+ / 20+) preserved in its absolute-positioned
JetBrains Mono treatment — evidence over assertion is the rule for
this register.
site/README.md only documented index.html and pointed to a
non-existent showcase.html. Rewrites to reflect the current shape:
landing + team/funding/dependencies subpages, the three
stylesheets (tokens / base / subpage), the shared compact footer,
local-dev banner behaviour, and the auto-deploy trigger.
@sunt05 sunt05 force-pushed the sunt05/impecaable-design-site branch from 4f9c431 to 23ea290 Compare April 19, 2026 10:20
The team page shipped with class names (team-header, team-person-*,
team-group-*, etc.) that subpage.css does not define — the page was
rendering with browser defaults for the contributor cards.

Rename all 16 team-* class names to their subpage.css equivalents
(subpage-header, subpage-group-*, subpage-list, entry,
entry-name/subtitle/tag/detail/meta) so the masthead picks up the
shared editorial layout used by /funding/ and /dependencies/.

Pure HTML rename — no style or markup-structure changes; subpage.css
itself is unchanged.
Added ORCID links for Matthew Paskin, Silvia Rognone, Vitor Lavor,
Keisuke Nakao, and Minttu P. Havu — verified by cross-checking
each ORCID record's affiliation and publication topic against
their SUEWS contribution area.

Five remaining contributors (Zhenkun Li, Yihao Tang, Shiho Onomura,
Thomas Loridan, Brian Offerle) have no public ORCID matching their
SUEWS work and are left without a link.
Verified via expanded ORCID search (returns Tokyo City University)
and her Google Scholar profile (tcu.ac.jp email, co-authored on
the 2015 Onomura-Grimmond-Lindberg meteorological-forcing paper
and the UMEP integrated-tool paper). Updated affiliation to reflect
her move from Gothenburg to Tokyo City University.
Three contributors have no public ORCID (verified by ORCID expanded
search returning 0 hits and Crossref showing no ORCID attached to
any of their papers):

- Zhenkun Li -> ResearchGate (Shanghai Climate Centre)
- Thomas Loridan -> Google Scholar (now at Reask, catastrophe
  modelling; previously King's College London)
- Brian Offerle -> Google Scholar (now at FluxSense Sweden;
  previously Indiana / Gothenburg)

Each link carries a title attribute naming the source so the target
is clear to sighted users on hover and screen reader users on focus.
Traced via git log: two direct commits (TMY radiation fix 2020-05-10,
ERA5 pressure/RH units fix 2021-11-22) in src/supy/util/ plus four
RSL/FAI-related issues opened between 2022 and 2025. Versions span
v2020a through present.
@sunt05 sunt05 marked this pull request as draft April 19, 2026 19:56
… shared chrome

- brand: rewrite to use shared .subpage-* chrome; drop SaaS-style cards/CTAs
- team: shorten title, drop stale institutions, lede foregrounds the collaboration
- funding: shorten title, reorder sections to match lede, swap project/funder
  columns so the grant is prominent, fix D/D·O alignment, add NE/P018637/1
  code to the NERC IRF entry
- footer: separator restyled; legal line now "SUEWS Team"
- docs: acknowledgement.rst becomes a stub linking out to suews.io
sunt05 added 2 commits April 19, 2026 21:53
Reads keyword tags from refs-SUEWS.bib / refs-community.bib and stamps
each rendered bibliography <li> with pub-entry + pub-kw-<slug> classes
via a new Sphinx extension. A client-side chip row above each
bibliography lets readers filter the single flat list by topic
(multi-select, union semantics) and syncs ?topic=<slug>[,<slug>] into
the URL so external deep-links auto-apply a filter.

- _ext/publications_topic_annotate.py: scoped citation_id -> key lookup
  via sphinxcontrib-bibtex's BibtexDomain, keyed by bibliography
  docname to avoid cross-page id collisions.
- _static/publications-filter.{js,css}: chip rendering, multi-select,
  empty-state, URL sync, aria-pressed, prefers-reduced-motion.
- related_publications.rst / community_publications.rst: .. raw:: html
  mount above the existing .. bibliography:: block; updated note to
  explain the filter and deep-link format.
- conf.py: register the extension and load the JS/CSS site-wide.
…tered publications

Replaces the flat 6-item dot-bullet list with six .resource-card
entries matching the Resources section visually. Each card targets
one bib keyword slug (energy-balance / water-balance / radiation /
anthropogenic-heat / building-energy / carbon-flux) and deep-links to
related_publications.html?topic=<slug>, which the docs chip filter
reads on load.

- Card chrome reuses existing .resource-card / .resource-grid /
  .section-header / .resource-tier-label, with accent tokens chosen to
  reflect the physical constituent of each topic (sky-blue for flux
  balance, water-blue for hydrology, sun-gold for radiation, etc.).
- Adds .card-meta rule for the "N papers" caption in the same
  uppercase-tracked register as .resource-tier-label.
- Removes obsolete .applications-box / .applications-grid / .app-item
  / .app-bullet rules and markup (~60 lines).
- Local-dev IIFE extended: when running on localhost/127.0.0.1,
  rewrites the six Applications hrefs from docs.suews.io/stable/... to
  http://127.0.0.1:8000/... and prepends a gold LOCAL badge to each
  .card-meta so the routing override is visible.
@sunt05 sunt05 marked this pull request as ready for review April 19, 2026 21:06
@sunt05 sunt05 enabled auto-merge April 19, 2026 21:06
@sunt05 sunt05 added this pull request to the merge queue Apr 19, 2026
Merged via the queue into master with commit 02ce7d1 Apr 19, 2026
28 checks passed
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