Skip to content

Replace ICS file with calendar links and clean up#499

Open
keunes wants to merge 15 commits into
masterfrom
calendar-changes
Open

Replace ICS file with calendar links and clean up#499
keunes wants to merge 15 commits into
masterfrom
calendar-changes

Conversation

@keunes
Copy link
Copy Markdown
Member

@keunes keunes commented May 10, 2026

Update the event system to replace the ICS file with direct links to add events to calendars.

Copy link
Copy Markdown
Member Author

@keunes keunes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To check: possibly update 'Community meeting' to 'Community call'; use page slug as default for recurring meeting calendar URLs; make feature request against Davis.

@keunes
Copy link
Copy Markdown
Member Author

keunes commented May 21, 2026

@ByteHamster on this point:

use page slug as default for recurring meeting calendar URLs

What do you think? It is definitely feasible. We can also get rid of the 'meeting room' front matter using similar logic. Both (calendar-path and meeting-room) can be set automatically based on the slug (file name) if the meeting/event is online and a) recurring or b) one-off and upcoming.

The downside is that it's less explicit:

  • In (the unlikely) case we have another recurring event, we need to remember to set up the redirect in the htaccess file with the same slug as the event file on the website.
  • For all new (one-off and recurring) events we need to remember to align the meeting room URL that we add in the calendar with the slug as the event file on the website.

I think that this is fine, though. In any case I would make these front matter fields optional, so we can still explicitly set them to something different if we want.

@ByteHamster
Copy link
Copy Markdown
Member

If it is unlikely that we add another recurring event, does it matter to have it filled in automatically? Making it explicit means that we need to remember less. An AI won't remember this either. If it's explicit in the code, there is less risk for things going wrong

@keunes keunes force-pushed the calendar-changes branch from 5db3940 to af50c85 Compare May 22, 2026 07:07
Copy link
Copy Markdown
Member Author

@keunes keunes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, thanks, makes sense - let's leave it explicit. Then the PR is ready to review.
Feature request against Davis to have event-specific subscription URLs: tchapi/davis#260

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the website’s events “add to calendar” flow by removing the generated /events.ics feed and replacing it with calendar subscription / direct .ics links via a new “Add to calendar” modal and updated event metadata.

Changes:

  • Replace the old ICS modal + /events.ics generation with a new “Add to calendar” modal and calendar link metadata (calendar-path, uid).
  • Update event link rendering/styling and the copy-to-clipboard helper to use an explicit event parameter and data-copy-url.
  • Add a Jekyll plugin to enforce stable permalinks for recurring events and introduce calendar_base_url configuration.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
events/index.html Switches to the new add-to-calendar modal include on the events overview page.
events.ics Removes the generated global ICS feed.
events-with-RDATE.ics Removes the alternative ICS feed variant.
assets/js/copy-url.js Updates clipboard copy helper to use event + data-copy-url.
_sass/_custom.scss Adds grid border styling for the event links block.
_plugins/recurring_events_permalink.rb Ensures recurring events get a non-date-based permalink when none is set.
_layouts/event.html Reworks event link visibility logic, adds calendar URL variables, switches to new modal include.
_includes/share.html Updates share “copy link” button to pass the click event and use data-copy-url.
_includes/ICS-modal.html Removes the old ICS modal implementation.
_includes/event-link-visible.html Introduces shared logic for whether each event link should be shown.
_includes/add-to-calendar-modal.html Adds the new add-to-calendar modal UI and buttons.
_i18n/en/general/events-add-calendar-modal.md Updates the modal body copy.
_i18n/en/general/event-sidebar.md Updates sidebar CTA to use the new calendar subscription URL + copy behavior.
_i18n/en/events/community-meeting.md Removes old community meeting copy file.
_i18n/en/events/community-call.md Adds new community call copy file.
_i18n/en.yml Updates/extends event calendar-related strings.
_events/needs-decision.md Updates event metadata for new calendar/link approach.
_events/community-meeting.md Removes the old recurring event definition.
_events/community-call.md Adds the renamed recurring event definition using new metadata.
_events/2026-01-31-fosdem.md Updates UID and location formatting for the new link scheme.
_events/2022-07-22-10 year anniversary.md Updates meeting-room format and reorders UID.
_events/0_A meeting template.md Updates the event template to reflect the new calendar/link fields and requirements.
_data/ics-timezones.yml Removes ICS timezone data (no longer needed after ICS feed removal).
_data/event-links.yml Replaces the ICS link entry with a calendar-path link and updates base URLs.
_config.yml Adds calendar_base_url configuration.
Comments suppressed due to low confidence (1)

_includes/add-to-calendar-modal.html:23

  • The "Download ICS" link is always rendered, but event_ics_url is only assigned when page.uid is present. On pages that include this modal without setting event_ics_url (e.g., the events index), this will produce an empty href. Wrap this link in a conditional (or provide a safe fallback URL) so the button is only shown when the URL is available.
        {% endcomment %}
        <a role="button" class="btn btn-primary" href="{{ event_ics_url }}">{% t events.general.download-ics %}</a>
      </div>

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread _includes/add-to-calendar-modal.html
Comment thread events/index.html Outdated
Comment thread assets/js/copy-url.js Outdated
console.log('Copy error')
});
};
navigator.clipboard.writeText(url);
Comment thread _i18n/en/general/events-add-calendar-modal.md Outdated
Comment thread _data/event-links.yml
Comment thread _events/community-call.md
@keunes keunes requested a review from ByteHamster May 23, 2026 14:24
Comment thread _data/event-links.yml
icon: calendar-plus
text: events.links.add-calendar
url: /events.ics
url: https://calendar.antennapod.org/
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be updated, I assume?

calendar-path:
# Required for recurring events. Path under https://calendar.antennapod.org, for example "community-call".
uid:
# Required for one-off events. Davis/Sabre event UID used to build the direct .ics download URL.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't we just use the same calendar link property for both instead of trying to be smart? That's a lot more explicit

Comment thread _events/community-call.md
---
title: Monthly community call ☎ 🎙
summary: Our monthly call to discuss anything AntennaPod (and beyond). Join us!
uid: 0718779a-5b92-48df-87e3-801e02154c06
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we have both uuid and path here?

Always want to have the latest community call dates and times in your calendar? Then copy the URL and add it as a remote calendar in your calendar app.

Hope to see you!
Want to download the calendar file of this gathering, or subscribe to all our calls and meetings? No newline at end of file
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gathering -> Event? That's what we call it in the menu

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the explanation that you can add the url to the calendar app was useful. I assume not many people know what to do with a calendar link, and without the text they don't really have a pointer where to start

@@ -0,0 +1,17 @@
module Jekyll
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand why we need custom code here. Don't we get those links automatically? On the old site we had the same links without needing ruby code

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.

3 participants