Repository navigation
Sync launches into native Google Calendars - #6
Merged
Merged
Conversation
Google refreshes subscribed ICS feeds only every 12-24h. A service account now writes the same events into native public calendars every publish run, diffed by launch id and a content hash, so changes show up within one run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
What
npm run sync: writes the same events as the ICS feeds into the 4 public Google Calendars via a service account (RS256 JWT withnode:crypto, plainfetch, no new dependency). Diff by launch id + content hash stored in private extended properties: insert, update in place, delete; events before the snapshot window are kept as history; events not written by launchcal are never touched.--dry-runand--calendar <id>=<googleCalendarId>for testing.publish.yml: newsyncjob afterbuild, using the snapshot artifact, in thegoogle-calendarenvironment (deployable frommainonly, holdsGOOGLE_SERVICE_ACCOUNT_KEY). A sync failure does not block the Pages deploy.Why
Google refreshes subscribed ICS feeds only every 12-24h; native calendars update within one 2h run.
Verification
listEventsassertions mutation-checked (all mutants killed). Independent review findings fixed or noted.all.ics(times, all-day tentative, free, text); re-run 0 changes; a time change updated the same Google event id; a removed launch was deleted; restore re-synced, then 0 changes.🤖 Generated with Claude Code