Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
84f8a4b
refactor(ui): standardise shared layout and design system
simonprovost Sep 29, 2026
0b621ee
feat(team): add structured appointments and profile affiliations
simonprovost Sep 29, 2026
5cc23b0
refactor(content): move presentations into community events
simonprovost Sep 29, 2026
e0b602f
feat(homepage): rebuild the laboratory homepage
simonprovost Sep 29, 2026
4a649de
feat(pages): refresh research and community pages
simonprovost Sep 29, 2026
8c1b243
feat(seo): pre-render pages and validate route metadata
simonprovost Sep 29, 2026
40c4c43
chore(cleanup): remove retired views and unused assets
simonprovost Sep 29, 2026
70ba171
feat(home): refine hero composition and wavy frames
simonprovost Oct 1, 2026
4280ad7
feat(home): reveal pause control on hover
simonprovost Oct 1, 2026
b08935b
feat(community): show sourced dates and event details in sidebars
simonprovost Oct 1, 2026
e4a8ab4
refactor(content): keep event authors in the researchers sidebar
simonprovost Oct 1, 2026
b0d9b3b
refactor(community): replace photo spheres with inline images
simonprovost Oct 1, 2026
199d756
chore(issues): update content submission templates
simonprovost Oct 1, 2026
94aeb39
feat(nav): replace the GitHub menu with GitHub and ecosystem shortcuts
simonprovost Oct 2, 2026
1f261b7
feat(home): rework the hero entrance and carry the wordmark into the …
simonprovost Oct 2, 2026
588735f
fix(footer): keep animations from overflowing the page bottom
simonprovost Oct 2, 2026
70e0f15
feat(home): spotlight ecosystem cards beside a liquid glass stats stain
simonprovost Oct 2, 2026
a607e7a
fix(courses): retitle MDPH 610 and redirect its previous address
simonprovost Oct 2, 2026
2ee9110
fix(home): tint the Dia toolbar with the hero blue instead of the raw…
simonprovost Oct 2, 2026
23a8635
feat(seo): tint the homepage browser bar teal
simonprovost Oct 2, 2026
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
43 changes: 27 additions & 16 deletions .github/ISSUE_TEMPLATE/add_event.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ body:

<em>Feeds <code>src/data/events.json</code> and <code>src/content/community/events/&lt;slug&gt;.md</code>.</em>

Events are grouped by year → month. Only `title`, `slug`, and `contributors` are stored in `events.json`; everything else (kind, dates, time, location, registration, description) goes into the markdown body.
Events are grouped by year → month. Event details (kind, dates, venue) are stored in `events.json` and displayed in the right-hand sidebar alongside contributors. The location field supplies the sidebar venue. The Markdown body holds time, registration, links, description, abstract, agenda, and media. Talks and posters belong here, not in the publication form.

See [`src/content/_templates/event.md`](https://github.com/simonprovost/medomicslab/blob/main/src/content/_templates/event.md) for the markdown skeleton.
See [`src/content/_templates/event.md`](https://github.com/MEDomicsLab/MEDomicsLab-website/blob/main/src/content/_templates/event.md) for the markdown skeleton.
- type: checkboxes
id: checks
attributes:
Expand All @@ -45,22 +45,24 @@ body:
id: slug
attributes:
label: "Suggested slug"
description: Lowercase, hyphenated. Often prefixed with the date.
description: Lowercase, hyphenated. Prefix with a date only when it is known.
placeholder: "2024-08-20-msc-mall"
validations:
required: true
- type: dropdown
id: kind
attributes:
label: "Event kind"
description: Also decides the event's filter category on the Events page (talks and posters → Presentations, defenses → Thesis Defenses, and so on).
options:
- "Thesis defense (Ph.D.)"
- "Thesis defense (M.Sc.)"
- "Thesis defense (PhD)"
- "Thesis defense (MSc)"
- "Symposium"
- "Workshop"
- "Invited talk"
- "Conference talk / poster"
- "Lab meeting / seminar"
- "Lab life / social"
- "Outreach"
- "Other"
validations:
Expand All @@ -69,15 +71,23 @@ body:
id: start-date
attributes:
label: "Start date"
description: ISO `YYYY-MM-DD`. Determines year/month grouping.
description: Optional. ISO `YYYY-MM-DD`, only when explicitly stated in the source text, title, or images. Leave unknown dates blank and supply a listing month below.
placeholder: "2024-08-20"
validations:
required: true
required: false
- type: input
id: listing-month
attributes:
label: "Listing month"
description: Required when the start date is unknown. Use `YYYY-MM` to choose the timeline group; this does not create a sidebar date. If a start date is supplied, its month is used.
placeholder: "2024-08"
validations:
required: false
- type: input
id: end-date
attributes:
label: "End date"
description: Optional. ISO `YYYY-MM-DD`. Required for multi-day events.
description: Optional. ISO `YYYY-MM-DD`, only when explicitly known. Requires a start date and must be on or after it.
placeholder: "2024-08-22"
validations:
required: false
Expand All @@ -92,15 +102,15 @@ body:
id: location
attributes:
label: "Location"
description: Physical venue and/or virtual link.
placeholder: "Université de Sherbrooke, room D7-1010 — and on Zoom"
description: Optional. Only give a venue explicitly named in the source. Put meeting and registration links in the description below.
placeholder: "Université de Sherbrooke, room D7-1010 (hybrid)"
validations:
required: true
required: false
- type: input
id: contributors
attributes:
label: "Contributors / speakers"
description: Comma-separated. Saved as a `contributors` array in `events.json`. Use `team.json` spelling for lab members so cross-links work.
description: Comma-separated. Saved as a `contributors` array in `events.json`. Use `team.json` spelling for lab members so cross-links work. These names appear in the Researchers sidebar; do not repeat them in an Authors section.
placeholder: "Mahdi Loutfi"
validations:
required: true
Expand All @@ -109,17 +119,17 @@ body:
attributes:
label: "Short blurb"
description: Optional. The events listing shows the title only; if provided, this becomes the opening paragraph of the markdown file.
placeholder: "Mahdi Loutfi's M.Sc. thesis defense."
placeholder: "Mahdi Loutfi's MSc thesis defense."
validations:
required: false
- type: textarea
id: body
attributes:
label: "Full description (Markdown)"
description: |
Saved to `src/content/community/events/<slug>.md`. Supports inline HTML and `<dome-gallery album="…" />`.
Saved to `src/content/community/events/<slug>.md`. Supports inline HTML and standard Markdown images. Put each photo in its own paragraph for full-width images with rounded corners.
Markdown image links such as `![description](https://example.com/image.jpg)` remain externally hosted: use stable, public URLs only. They are not copied or optimized by this form.
placeholder: "Abstract, agenda, speaker bios, registration link, etc."
placeholder: "Abstract, agenda, speaker bios, etc. Available date, type, venue, and contributors appear automatically in the sidebar."
validations:
required: true
- type: input
Expand All @@ -134,13 +144,14 @@ body:
attributes:
label: "Images / attachments for maintainer review"
description: |
Attach files a maintainer should review. They are not automatically copied to the repository or published; a maintainer will add approved assets to the PR. For a gallery, include the intended album name.
Attach files a maintainer should review. They are not automatically copied to the repository or published; a maintainer will add approved assets to the PR. Include descriptive alt text and the intended photo order.
validations:
required: false
- type: dropdown
id: related
attributes:
label: "Companion content to publish?"
description: For maintainer review. Submit a separate form for each companion entry; these selections do not create it automatically.
multiple: true
options:
- "News post announcing the event"
Expand Down
58 changes: 52 additions & 6 deletions .github/ISSUE_TEMPLATE/add_news.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ body:

News items are grouped by year → month. The listing card shows the title only — all prose lives in the markdown file.

See [`src/content/_templates/news.md`](https://github.com/simonprovost/medomicslab/blob/main/src/content/_templates/news.md) for the markdown skeleton.
See [`src/content/_templates/news.md`](https://github.com/MEDomicsLab/MEDomicsLab-website/blob/main/src/content/_templates/news.md) for the markdown skeleton.
- type: checkboxes
id: checks
attributes:
Expand All @@ -45,23 +45,68 @@ body:
id: slug
attributes:
label: "Suggested slug"
description: Lowercase, hyphenated, prefixed by ISO date. Becomes `/community/news/<slug>`.
description: Lowercase, hyphenated. An ISO date prefix is optional. Becomes `/community/news/<slug>`.
placeholder: "2025-03-04-post-longitudinal-oym-article"
validations:
required: true
- type: dropdown
id: category
attributes:
label: "Category"
description: Drives the filter on the News page. Saved as `category` in `news.json`.
options:
- "Publications"
- "Thesis Defenses"
- "Awards"
- "Milestones"
- "Conferences"
- "Other"
validations:
required: true
- type: input
id: date
attributes:
label: "Publish date"
description: ISO `YYYY-MM-DD`. Determines year/month grouping.
description: ISO `YYYY-MM-DD`. The planned website publish date determines the timeline group only; it is not displayed as the date of the reported news or event.
placeholder: "2025-03-04"
validations:
required: true
- type: input
id: display-date
attributes:
label: "Date to display"
description: Optional. Exact publication, milestone, or event date in `YYYY-MM-DD`, only when explicitly stated in the source text, title, or images. Leave blank when unknown; do not infer it from a filename or DOI.
placeholder: "2026-08-27"
validations:
required: false
- type: input
id: event-end-date
attributes:
label: "Event end date"
description: Optional, for a multi-day event. ISO `YYYY-MM-DD`. Requires a date to display and must be on or after it.
validations:
required: false
- type: input
id: event-kind
attributes:
label: "Event kind"
description: Optional, for news about an event. Displayed as Type in the sidebar.
placeholder: "Thesis defense (MSc), Community of practice, Workshop"
validations:
required: false
- type: input
id: event-venue
attributes:
label: "Event venue"
description: Optional. Only give a venue explicitly named in the source. Keep event and slide-deck links in the Markdown body.
placeholder: "Mila, Montréal"
validations:
required: false
- type: input
id: contributors
attributes:
label: "Contributors / people involved"
description: Comma-separated. Saved as a `contributors` array in `news.json`. Use `team.json` spelling for lab members so cross-links work.
description: Comma-separated. Saved as a `contributors` array in `news.json`. Use `team.json` spelling for lab members so cross-links work. These names appear in the Researchers sidebar; do not repeat them in an Authors section.
placeholder: "Hakima Laribi, Nicolas Raymond, Martin Vallières"
validations:
required: true
Expand All @@ -72,9 +117,9 @@ body:
description: |
Saved to `src/content/community/news/<slug>.md` and referenced from `news.json` via the `markdown` field. The listing card has no blurb anymore, so the opening paragraph here is what readers see first. Supports standard Markdown plus:
- Inline HTML (rendered via `rehype-raw`)
- `<dome-gallery album="my-album-slug" />` to embed a 3D gallery (requires entries in `src/data/albums.js`)
- Standard Markdown images, one per paragraph, displayed at full width with rounded corners.
- External image Markdown such as `![description](https://example.com/image.jpg)`. These images are hotlinked, so use stable, public URLs only; they are not copied or optimized by this form.
placeholder: "Long-form announcement, paragraphs, links, images, etc."
placeholder: "Announcement, paragraphs, links, images, etc. Available dates, event details, and contributors appear in the sidebar."
validations:
required: true
- type: textarea
Expand All @@ -88,6 +133,7 @@ body:
id: related
attributes:
label: "Related content to publish alongside?"
description: For maintainer review. Submit a separate form for each companion entry; these selections do not create it automatically.
multiple: true
options:
- "New publication entry"
Expand Down
15 changes: 7 additions & 8 deletions .github/ISSUE_TEMPLATE/add_publication.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: "Add a new publication"
description: Request that a publication (paper, preprint, talk, poster…) be added to the lab's publications list.
description: Request that a publication (journal paper, conference paper, or preprint) be added to the lab's publications list.
title: "[PUB] - <publication title>"
labels:
- "content"
Expand All @@ -21,9 +21,9 @@ body:
</div>


Publications are grouped by year. The maintainer derives the slug from the title and adds it explicitly to `publications.json` — you do not need to provide one.
Publications are grouped by year. The automation derives the slug from the title and display year and saves it in `publications.json` — you do not need to provide one.

See [`src/content/_templates/publication.md`](https://github.com/simonprovost/medomicslab/blob/main/src/content/_templates/publication.md) for the markdown skeleton.
See [`src/content/_templates/publication.md`](https://github.com/MEDomicsLab/MEDomicsLab-website/blob/main/src/content/_templates/publication.md) for the markdown skeleton.
- type: checkboxes
id: checks
attributes:
Expand Down Expand Up @@ -62,12 +62,11 @@ body:
id: type
attributes:
label: "Type"
description: Must be one of the four values supported by `publications.schema.json`.
description: Must be one of the three values supported by `publications.schema.json`. Talks and posters are events now; file them with the "Add an event" form instead.
options:
- "Journal Papers"
- "Conference Papers"
- "Preprints"
- "Presentations"
validations:
required: true
- type: input
Expand Down Expand Up @@ -97,23 +96,23 @@ body:
id: redirect
attributes:
label: "Direct redirect?"
description: If checked by the maintainer, the publication card links straight to the primary link instead of opening a detail page on the site. Leave blank for the default behaviour.
description: Enter yes to link the publication card directly to the primary link. Leave blank or enter no to open its detail page.
placeholder: "yes / no — optional"
validations:
required: false
- type: textarea
id: abstract
attributes:
label: "Abstract / summary (Markdown)"
description: Will be saved to `src/content/publications/<slug>.md` and referenced from `publications.json` via the `markdown` field. Follow the structure in [`src/content/_templates/publication.md`](https://github.com/simonprovost/medomicslab/blob/main/src/content/_templates/publication.md). Markdown image links remain externally hosted, so use stable, public URLs only; they are not copied or optimized by this form.
description: Will be saved to `src/content/publications/<slug>.md` and referenced from `publications.json` via the `markdown` field. Follow the structure in [`src/content/_templates/publication.md`](https://github.com/MEDomicsLab/MEDomicsLab-website/blob/main/src/content/_templates/publication.md). Markdown image links remain externally hosted, so use stable, public URLs only; they are not copied or optimized by this form.
placeholder: "Paste the abstract or a short summary."
validations:
required: false
- type: textarea
id: bibtex
attributes:
label: "BibTeX (optional)"
description: For maintainers who want to enrich the markdown page later.
description: Optional. Saved as a BibTeX section in the publication detail page.
render: bibtex
validations:
required: false
Expand Down
21 changes: 15 additions & 6 deletions .github/ISSUE_TEMPLATE/add_team_member.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ body:
</div>


Please fill **every required** field. Optional fields can be left blank — we'll skip them in the JSON. The maintainer will create the entry, generate avatar variants, and open the PR.
Please fill **every required** field. Optional fields can be left blank — we'll skip them in the JSON. The automation creates the entry, generates avatar variants, and opens a draft PR for maintainer review.

Only `name`, `position`, `slug`, and `image` are required by the schema; everything else is optional.
This form also requires a cohort, biography, expertise, and portrait so the new profile is ready to review. Leave optional fields blank.
- type: checkboxes
id: checks
attributes:
Expand Down Expand Up @@ -65,7 +65,7 @@ body:
attributes:
label: "Position"
description: Short title shown under the name on listing and detail pages. Stored as the `position` field in `team.json`.
placeholder: 'e.g. "Ph. D. Computer science" or "Associate Professor, Department of Oncology"'
placeholder: 'e.g. "PhD Computer science" or "Associate Professor, Department of Oncology"'
validations:
required: true
- type: input
Expand Down Expand Up @@ -101,8 +101,8 @@ body:
description: |
One per line, in the format `course | institution | year`. Most recent first.
placeholder: |
Ph.D. Computer Science | Université de Sherbrooke | 2024
M.Sc. Medical Physics | McGill University | 2020
PhD Computer Science | Université de Sherbrooke | 2024
MSc Medical Physics | McGill University | 2020
validations:
required: false
- type: input
Expand All @@ -113,6 +113,15 @@ body:
placeholder: "Optional"
validations:
required: false
- type: textarea
id: affiliations
attributes:
label: "Affiliations"
description: Optional. One per line in the format `role | organization | official URL` (URL is optional). These appear on the member's profile.
placeholder: |
Associate Member | Dept. of Biomedical Engineering, McGill University | https://www.mcgill.ca/bme/
validations:
required: false
- type: markdown
attributes:
value: "### Social / academic links (all optional)"
Expand Down Expand Up @@ -156,7 +165,7 @@ body:
id: photo
attributes:
label: "Portrait photo"
description: Attach a square JPG, PNG, WebP, or AVIF image under 10 MB and at least 512×512px. Direct URLs must be stable and public. Responsive variants (80/128/160/256 × avif/webp/jpg) will be generated automatically.
description: Attach a square JPG, PNG, WebP, or AVIF image under 10 MB and at least 512×512px. Direct URLs must be stable and public. Responsive variants (80/128/160/256 × AVIF/WebP with JPG or PNG fallback) will be generated automatically.
validations:
required: true
- type: textarea
Expand Down
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ body:
attributes:
label: "Affected page / URL"
description: Which page is broken? Paste the full URL or the route (e.g. `/publications/leveraging-patients-...-2025`).
placeholder: "https://medomics.app/team/martin-vallieres"
placeholder: "https://medomicslab.com/team/martin-vallieres"
validations:
required: true
- type: textarea
Expand Down Expand Up @@ -90,7 +90,7 @@ body:
attributes:
label: "Where did this happen?"
options:
- "Production (medomics.app)"
- "Production (medomicslab.com)"
- "Local dev (`npm run dev`)"
- "Local preview (`npm run preview`)"
- "PR preview deployment"
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: 💬 Lab website
url: https://medomics.app/
url: https://medomicslab.com/
about: Browse the live MEDomicsLab site before opening an issue.
3 changes: 1 addition & 2 deletions .github/ISSUE_TEMPLATE/feature_request.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ body:
attributes:
label: "Proposed solution"
description: Describe the feature. Include user flow, UI ideas, accessibility considerations, and which files/components you think it touches.
placeholder: "Add a sticky year filter at the top of `/publications` using `MotionHighlight`. Affects `PublicationsPage.jsx`."
placeholder: "Add a sticky year filter at the top of `/publications` that stays accessible on mobile."
validations:
required: true
- type: textarea
Expand Down Expand Up @@ -79,7 +79,6 @@ body:
- "Community — News"
- "Community — Events"
- "Community — Courses"
- "Visions"
- "Layout / navigation / footer"
- "Theme / design tokens"
- "Performance / accessibility / SEO"
Expand Down
Loading
Loading