Open
Conversation
Adds Twitch (twitch.tv/github) and Bluesky (bsky.app/profile/github.com) icons to the footer social links, following the existing pattern. - Created SVG icon components for Twitch and Bluesky in public/icons/ - Added i18n strings for URLs and aria-labels in commons.json - Updated Footer.jsx with new imports and link entries Closes github#269 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Roll over all 2025 references to 2026 (theme TBD) - Fix hero section text/button overlap on mobile (github#259) - Fix horizontal scroll on medium screens (github#250) - Add responsive breakpoints for schedule page - Clarify README: use npm run dev, add Node version requirement (github#272, github#297) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Change overflow-x: hidden to overflow-x: clip on layout__content so position: sticky on the header works correctly (hidden creates an implicit scroll container that breaks sticky positioning) - Add box-sizing: border-box to event cards for consistent sizing - Make markdown-rendered <p> tags inline inside line-clamped text so -webkit-line-clamp works correctly with rendered descriptions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Filter by event type with multi-select chip buttons (All clears filters) - Group events by date with visible section headers - Jump-to-date buttons that scroll to the target date group - Sticky filter bar stays visible while scrolling - Empty state message when no events match filters Fixes github#244 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- api/events.js: Add explicit handling for 'TBD' and 'all-day' time
values in frontmatter. Add timeDisplay field ('specific', 'tbd',
'all-day') to formatEventDateTime output.
- DateTimeChip: Show clean 'TBD' or 'All Day' label without PT
conversion row when times aren't specific.
- EventDetail: Show date range chip for multi-day events.
- EventsList: Pass timeDisplay prop; use dash separator in date range.
- useIncomingEvents: Multi-day events remain 'upcoming' until endDate
passes.
- CONTRIBUTING.md: Document optional UTCStartTime/UTCEndTime and
endDate fields.
- commons.json: Add 'message:all-day' i18n literal.
Fixes github#245, fixes github#242
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ue template - Move 38 event files from content/events/ to content/2025/events/ - Create pages/2025/schedule/ routing for archived 2025 events - Fix bug: pages/2023/ and pages/2024/ incorrectly referenced 2022 events - Add iCalendar/ICS feed generation at build time (github#88) - Add skip-to-content link, ARIA landmarks, heading hierarchy, focus styles (github#64) - Update issue template: times optional for TBD/all-day, add workshop type - Empty content/events/ ready for 2026 submissions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add cross-env for Windows-compatible NODE_ENV in build script (github#272) - Footer social icons now wrap on narrow screens instead of overflowing Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This reverts commit f672c98.
- Schedule page shows 'coming soon' message when no events exist - Library page shows empty state message when no resources - Theme changed to 'Coming Soon' placeholder until 2026 theme is decided - Removed Council import from homepage (no council for 2026) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
New /ships page showing curated GitHub changelog entries relevant to maintainers. Data is managed via content/ships/ships.json. Includes 9 initial ships (Issues, Pull Requests, Copilot, Repository Management). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Ships tests: validate required fields, date format, URL format, description length - Event parsing tests: TBD defaults, all-day handling, multi-day endDate, validation errors Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add box-sizing, overflow-wrap, word-break for long titles - Add min-width: 0 on cards to prevent grid blowout Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove yarn.lock (project uses npm) - Remove smoothscroll-polyfill (unnecessary in modern browsers) - Fix next.config.js: add outputFileTracingRoot - Fix package.json: start script uses serve for static export - Fix all title tag warnings across 11 pages (template literals) - Fix img lint warnings in Offers.jsx - Fix archived year pages (2023/2024) to reference correct content - Update CONTRIBUTING.md example to 2026 - Add previous-years note to news page Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Updates the Maintainer Month website for the 2026 rollout, including new site features (Ships page, ICS export), accessibility/responsiveness improvements, and year-based routing/archiving for prior schedules and events.
Changes:
- Adds a new “Ships” page fed by
content/ships/ships.jsonand includes supporting styles/tests. - Improves schedule UX (filtering, date grouping, empty states) and introduces build-time ICS generation.
- Rolls site copy/routing forward to 2026 while adding archived schedule routes and moving 2025 event content into
content/2025/events/.
Reviewed changes
Copilot reviewed 64 out of 104 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/ships.test.js | Validates ships JSON schema/constraints. |
| tests/events.test.js | Updates event parsing expectations (incl. timeDisplay). |
| tests/event-parsing.test.js | Adds coverage for TBD/all-day times and multi-day endDate parsing. |
| styles/styles.scss | Registers Ships component stylesheet. |
| styles/base.scss | Adds skip-link and screen-reader-only utilities; improves focus outline. |
| public/maintainer-month-2026.ics | Adds an ICS file placeholder in public/. |
| public/icons/twitch.js | Adds Twitch icon component. |
| public/icons/rocket.js | Adds Rocket icon for Ships nav entry. |
| public/icons/bluesky.js | Adds Bluesky icon component. |
| pages/ships.js | Adds /ships page that renders ships data. |
| pages/security-challenge.js | Updates Security Challenge page copy/meta tags for 2026. |
| pages/schedule/index.js | Updates schedule meta title and adds build-time ICS generation. |
| pages/schedule/[slug].js | Simplifies event detail <title> construction. |
| pages/partner-pack.js | Updates partner-pack messaging for 2026 partner outreach. |
| pages/news.js | Adds a “previous years” notice above existing news list. |
| pages/_app.js | Removes smoothscroll-polyfill usage. |
| pages/2025/schedule/index.js | Adds archived 2025 schedule index route. |
| pages/2025/schedule/[slug].js | Adds archived 2025 event detail routes. |
| pages/2024/schedule/index.js | Fixes 2024 schedule to load 2024 events. |
| pages/2024/schedule/[slug].js | Fixes 2024 schedule paths and slug parsing to use 2024 events. |
| pages/2024/index.js | Fixes 2024 home schedule link and data sources. |
| pages/2023/schedule/index.js | Fixes 2023 schedule to load 2023 events. |
| pages/2023/schedule/[slug].js | Fixes 2023 schedule paths and slug parsing to use 2023 events. |
| pages/2023/index.js | Fixes 2023 home schedule link and data sources. |
| pages/2022/schedule/index.js | Simplifies 2022 schedule <title> construction. |
| pages/2022/schedule/[slug].js | Simplifies 2022 event detail <title> construction. |
| package.json | Adds ics + cross-env, updates start for static output. |
| package-lock.json | Locks new dependencies for ICS/build script changes. |
| next.config.js | Sets outputFileTracingRoot for workspace/root warnings. |
| content/ships/ships.json | Adds curated “Ships” data entries. |
| content/partner-pack/offers/jsconf.md | Updates partner offer headline year. |
| content/partner-pack/offers/bootdev.md | Updates partner offer link year. |
| content/partner-pack/index.md | Updates partner pack title/meta for 2026. |
| content/home/5-events.md | Updates “Upcoming events” header year. |
| content/home/2-about.md | Updates theme placeholder copy for 2026. |
| content/home/1-hero.md | Updates hero date to May 2026. |
| content/events/2025-05-30-Effection.md | Removes old event file from prior location (archival move). |
| content/commons.json | Updates global literals (2026 copy, new nav label, ICS strings, all-day/TBD strings). |
| content/2025/events/pycon-us-2025.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-30-effection.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-30-Libre-Sign.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-28-Deskree.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-27-CRA.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-26-Cultivating-Design.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-24-FSF-40-Chennai.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-24-FOSS-Meetup-Lucknow.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-24-FOSS-Meetup-Bengaluru.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-23-nuxt-ai.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-23-Build-CLI.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-21-kotlinconf.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-21-OSI.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-21-NGINX.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-19-Swift-Craft.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-19-05F5.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-17-FOSS-City-Meetup-Kanpur.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-16-supermemoryai.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-16-Querido-Diario.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-16-Open-Source-European-Commission.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-16-Cyber-Security.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-14-CloudFoundry.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-13-RustWeek.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-10-FOSS-United-Hyderabad.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-09-whopays.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-09-convex.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-09-Localization.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-09-Diciotech.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-07-PyTorch.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-06-OS-Pledge.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-06-Licensing-SBOMs.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-06-Innersource-China.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-06-GOSIM-AI.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-02-typewind.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-02-NPCI.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-02-Cookie-Cutter.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-01-OpenSearch.md | Adds archived 2025 event markdown. |
| content/2025/events/2025-05-01-OpenPath.md | Adds archived 2025 event markdown. |
| components/ships/ships.scss | Adds Ships page styling. |
| components/ships/Ships.jsx | Adds Ships list UI. |
| components/partner-pack/offers/Offers.jsx | Adds lint suppressions for <img> usage. |
| components/library-links/LibraryLinks.jsx | Adds empty-state rendering for library links. |
| components/layout/layout.scss | Prevents horizontal overflow and adjusts main focus styling. |
| components/layout/Layout.jsx | Adds skip-to-content link and ARIA landmark attributes. |
| components/home/hero/hero.scss | Fixes hero overflow/spacing for responsive layouts. |
| components/home/get-involved/ExampleCard.jsx | Fixes heading hierarchy (h2 -> h3). |
| components/home/events/useIncomingEvents.js | Keeps multi-day events “upcoming” until endDate passes. |
| components/home/events/Events.jsx | Removes unused Council import and commented render. |
| components/home/council/Council.jsx | Updates advisory council title year. |
| components/home/about/About.jsx | Updates theme heading/copy for 2026. |
| components/header/Header.jsx | Adds Ships nav item and improves nav accessibility labeling. |
| components/footer/footer.scss | Enables wrapping/centering for social icons row. |
| components/footer/Footer.jsx | Adds Twitch/Bluesky footer links and contentinfo landmark. |
| components/events-list/events-list.scss | Adds sticky filters, empty states, and grid/layout fixes. |
| components/events-list/EventsList.jsx | Implements filtering + date grouping + ICS download CTA. |
| components/event-detail/event-detail.scss | Adds wrapper styling for linked titles. |
| components/event-detail/EventDetail.jsx | Adds multi-day date chip + timeDisplay support + heading wrapper. |
| components/date-time-chip/DateTimeChip.jsx | Adds TBD/all-day rendering and uses timeDisplay. |
| components/chip/chip.scss | Prevents chip overflow with ellipsis. |
| common/routes.js | Adds /ships route constant. |
| api/events.js | Adds all-day/TBD parsing + timeDisplay; supports endDate. |
| api/calendar.js | Adds ICS generation utility. |
| README.md | Updates year + improves local dev/build instructions. |
| Participation.md | Updates year/theme section headings. |
| CONTRIBUTING.md | Updates examples and documents optional times + endDate behavior. |
| .github/ISSUE_TEMPLATE/add-to-calendar.yml | Makes times optional and adds workshop event type. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
55
to
+60
| export async function getStaticProps() { | ||
| const events = parseEvents(getEvents()) | ||
|
|
||
| const icsContent = generateICS(events) | ||
| const icsPath = path.join(process.cwd(), 'public', 'maintainer-month-2026.ics') | ||
| fs.writeFileSync(icsPath, icsContent, 'utf-8') |
Comment on lines
1
to
4
| import { useEffect } from 'react' | ||
| import fs from 'fs' | ||
| import path from 'path' | ||
| import Head from 'next/head' |
Comment on lines
7
to
31
| @@ -14,19 +14,20 @@ | |||
| "dayjs": "^1.11.10", | |||
| "fathom-client": "^3.6.0", | |||
| "gray-matter": "^4.0.3", | |||
| "ics": "^3.8.1", | |||
| "jimp": "^1.6.0", | |||
| "markdown-it": "^14.1.1", | |||
| "marked": "^15.0.11", | |||
| "next": "^15.0.8", | |||
| "react": "18.2.0", | |||
| "react-dom": "18.2.0", | |||
| "smoothscroll-polyfill": "^0.4.4" | |||
| "react-dom": "18.2.0" | |||
| }, | |||
| "devDependencies": { | |||
| "@babel/preset-env": "^7.23.3", | |||
| "@testing-library/jest-dom": "^6.1.4", | |||
| "@testing-library/react": "^14.1.0", | |||
| "babel-jest": "^29.7.0", | |||
| "cross-env": "^10.1.0", | |||
| "eslint": "8.53.0", | |||
Comment on lines
6
to
10
| "dev": "next dev", | ||
| "build": "NODE_ENV=production next build", | ||
| "start": "next start", | ||
| "build": "cross-env NODE_ENV=production next build", | ||
| "start": "npx serve out", | ||
| "lint": "next lint", | ||
| "test": "jest" |
| ## Getting Started | ||
|
|
||
| ### Installation | ||
| Requires [Node.js](https://nodejs.org/) v18.18 or later. |
Comment on lines
+13
to
+32
| if (!ships || ships.length === 0) { | ||
| return ( | ||
| <section className="ships"> | ||
| <p className="ships__empty"> | ||
| No ships listed yet. Check back soon! | ||
| </p> | ||
| </section> | ||
| ) | ||
| } | ||
|
|
||
| const sorted = [...ships].sort( | ||
| (a, b) => new Date(b.date) - new Date(a.date) | ||
| ) | ||
|
|
||
| return ( | ||
| <section className="ships"> | ||
| <div className="ships__intro"> | ||
| <h2 className="ships__heading">Recent ships for maintainers</h2> | ||
| <p className="ships__subtitle">GitHub features and updates that make maintaining open source projects easier. Shipped recently or coming soon.</p> | ||
| </div> |
| <p | ||
| className="events-list__text" | ||
| dangerouslySetInnerHTML={{ | ||
| __html: md().render(event.description || ''), |
Comment on lines
+4
to
7
| headline: "Unlock early bird pricing for JSConf North America 2026!" | ||
| description: "Maintainers can access a special discounted ticket rate — available in limited quantities for Maintainer Month." | ||
| secondaryCta: "Use code: JSCONF25GITMAIN" | ||
| ctaText: "Learn more" |
Comment on lines
146
to
149
| formattedStartTime = { | ||
| utc: formattedUTCStartTime, | ||
| pt: formattedPTStartTime, | ||
| utc: UTCStartTime.format('HH:mm a'), | ||
| pt: PTStartTime.format('HH:mm a'), | ||
| } |
Comment on lines
+23
to
+29
| const icsEvent = { | ||
| title: event.title, | ||
| description: event.description || '', | ||
| location: event.location || '', | ||
| url: event.linkUrl || '', | ||
| calName: 'Maintainer Month 2026', | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Maintainer Month 2026 Site Update
Comprehensive refresh of the Maintainer Month site for 2026. Addresses 11 of 12 open issues, adds new features, and cleans up the codebase.
Year rollover
content/2025/events/pages/2025/schedule/routing for archived eventsIssues addressed
yarnon Windows 11 #272 / Improvements to README #297 — Improved README (npm run dev, Node version, Windows cross-env fix)New features
/ships) — Curated GitHub changelog entries relevant to maintainers, managed viacontent/ships/ships.jsonSite cleanup
yarn.lock(project uses npm)smoothscroll-polyfill(unnecessary in modern browsers)next.config.jsworkspace root warningnpm startto work with static exportNot addressed
Testing
Closes #269, closes #259, closes #250, closes #272, closes #297, closes #245, closes #242, closes #244, closes #87, closes #88, closes #64