Conversation
There was a problem hiding this comment.
Pull request overview
Adds a custom meetings landing-page intro card to the Docusaurus blog list for /meetings, and adjusts global styling to make meeting excerpts more scannable on the index.
Changes:
- Overrides
BlogListPageto conditionally render a newMeetingIndexCardon the meetings route. - Introduces
MeetingIndexCardwith participation links and a computed “next meeting” display string. - Adds CSS to clamp meeting excerpt length and hide
<details>content on blog list pages.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| src/theme/BlogListPage/index.tsx | Conditionally inserts the meetings intro card at the top of the /meetings blog list page. |
| src/components/MeetingIndexCard.tsx | New intro card UI + timezone/next-meeting calculation helpers. |
| src/css/custom.scss | Adds global blog list excerpt clamping and hides <details> blocks on blog list pages. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Update MeetingIndexCard to make the fallback schedule string independent of an arbitrary calendar date so it always displays the configured Thursday meeting weekday while still formatting the time and timezone label via Intl. Adjust getNextMeetingDate to treat a meeting later on the current Thursday as the next upcoming meeting instead of always skipping to the following week. Simplify the component state setup by computing fallbackMeetingTime directly and changing the effect dependency array to [] so the code reflects the values the effect actually uses.
Update MeetingIndexCard so the fallback meeting string reuses the shared meeting-time formatter instead of building a separate Intl formatter inline. This keeps the fallback weekday fixed by configuration while centralizing the time and timezone display logic in the shared formatting path.
- The fallback string no longer derives the weekday from January 1 or `currentYear`, so it won’t drift off Thursday local. - `getNextMeetingDate()` no longer skips a meeting later on the same Thursday. - The `useEffect` dependency setup is cleaned up and no longer implies a dependency on fallbackMeetingTime.
Extract shared meeting schedule and time formatters in MeetingIndexCard and replace the inline fallback formatting logic with a named reference meeting date. This also fixes the build regression where formatMeetingTimeFallback referenced a missing helper during static generation of /meetings.
Replace the event-specific discord.gg link in MeetingIndexCard with the stable discord.com/invite/stellardev URL while keeping the event query parameter.
|
Funny enough re #2373 (comment), it looks like the official spec on the SDF site has this same problem: |
|
Thanks for this — I like the direction, and a proper intro on the meetings index is worth having. Some context on where my head is at before this lands: we already maintain five swizzled theme components in this repo, and each one adds re-verification work on every Docusaurus upgrade. So I'm being deliberately stingy about growing that surface. This one is a "wrap"-style swizzle, which is the supported kind, so it's not a dealbreaker — but I want to keep it as thin as possible. Concretely, three asks:
How does that sound? |
Co-authored-by: Codex <noreply@openai.com>
as before 0fc5221
The stock BlogListPage owns the entire BlogLayout, so rendering the card before it places the card outside the meetings content area. Wrapping BlogPostItems inserts the card directly above the meeting entries inside the existing main content column, while leaving the stock BlogListPage, metadata, sidebar, paginator, and structured data untouched. Co-authored-by: Codex <noreply@openai.com>
ElliotFriend
left a comment
There was a problem hiding this comment.
i'm gonna have a look at the code a little more thoroughly, but wanting to tag in @kaankacar to look over the actual verbiage.
| target="_blank" | ||
| rel="noreferrer noopener" | ||
| > | ||
| mailing list |
There was a problem hiding this comment.
i'm not sure if the mailing list sends out reminders anymore?
|
@JFWooten4 can you share a screenshot of what this intro box looks like on the page? |
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
|
Thanks @JFWooten4 for raising the participation point; it's a fair thing to bring up. To share how things work today: developer meetings are generally streamed on YouTube and X, while protocol discussions are intentionally hosted on Discord precisely because it's the easiest place for everyone to take part. In protocol discussions, anyone can request to speak, and we do our best to get everyone on stage. That said, if there's a specific topic or aspect of the process you'd like to see opened up further, I'd genuinely like to hear it. Happy to look into starting a dedicated discussion around it on Discord. |
|
On the PR itself: I pushed a small verbiage fix directly to your branch, swapped the mailing-list mention for follow links to @BuildOnStellar on X and our YouTube channel, both pulled into MEETINGS_INFO. With that, the wording looks good to me now. Thanks for the contribution! |
|
fyi, i've pulled in the newest changes from |
ElliotFriend
left a comment
There was a problem hiding this comment.
Thanks John — intro box is great and the copy's approved, so that's landing. 🙌
One change before merge: the timezone logic. The ~150 lines of hand-rolled TZ math is more than a one-line intro box needs — no date lib in the repo, two code paths building the same sentence, and the Intl-in-render fallback risks a hydration mismatch.
Can we swap it for a static string? The meeting's pinned to 20:00 UTC, so we can just state that — no DST math, correct year-round:
...archived discussions of open Stellar meetings, held Thursdays at 20:00 UTC. Anyone can attend...
(We can't hardcode Pacific instead — since it's UTC-anchored, Pacific drifts 1 PM PDT / 12 PM PST across DST. UTC is the only value that stays put.)
That drops schedule.ts to just the links and removes the useEffect.
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
| target="_blank" | ||
| rel="noreferrer noopener" | ||
| > | ||
| @BuildOnStellar |
There was a problem hiding this comment.
My regulators don't like Discord, though I agree this is a chat out of scope for this venue. Just to answer the question, I've had my hand up throughout the entirety of past meetings without being brought up to speak. This leaves most of the latest meetings as just a few SDF team members mimicking their developments and viewpoints, without outside community input.
| @BuildOnStellar | |
| BuildOnStellar |
For the display, I think it'd be a little cleaner without the @ prefix. We already explicitly follow this with "on X"—plus, it's a direct hyperlink. So there's no need to messy the view with a symbol that won't even be needed to copy over and find this username on the platform.
|
Good catch on Pacific Time swaying by an hour; I didn't realize the time was actually anchored in UTC from your end. The script has been adjusted accordingly, and it's a lot simpler now that we have a stable reference to the anchor (no placeholder object, week simulation, etc). I for one am not great at mentally converting time zones on the spot, so displaying in the user's local time was one of my main objectives with this PR. I've adjusted the element to only load once the user-side calculation completes, so there's no interim hydrated state to glitch around. It still falls back to the static reference, too. I've done that and the other changes; let me know if other improvements would help. |
Co-authored-by: Elliot Voris <elliot@voris.me>




Right now, visitors landing on the Dev Meetings page are initially hit with a feed of past meetings. They have no way to clearly filter by tags in a click, understand the context of what they're seeing, or understand how to participate in these discussions. I think more ecosystem participation in these chats would help for many reasons.1
Since adding a static intro meeting doesn't work with Docusaurus, this creates a new card component, which I then insert at the header of the base meetings directory. It's much smaller than the normal entry page, as intended, with smaller than 1em text. I think it is still very reasonably sized and readable on mobile, while balancing against not taking up too much space.
An alternative implementation would be to put a disclaimer like this at the bottom of every developer meeting. This could have the added benefit of "advertising" tag-specific information such as the existing meetings which reference the Community Fund. There could be a consistent section explaining where viewers can learn more, which could be informally updated throughout the component rather than ad hoc on all the individual pages. But I will leave that for now.
Lastly, in an effort to make the index more readable, this modifies
src/css/custom.scssto provide a reasonable introductory clip-off of posts, rather than the entire meta description, which can get long for some existing meeting notes.Footnotes
For instance, more eyeballs on code could lead to better reviews of CAP implementations. The core team made known their intentions and implementations of the protocol: "use the 1-week grace period as a 'last call' in case some community members missed the discussion threads and protocol meeting and want to voice any concern." As someone who's helped avoid bugs through that process, I think it would help if new ecosystem members were more easily made aware of the process when browsing information about the network. ↩