Skip to content

[fix][meetup] Give each group its own timezone in a multi-group run - #4

Merged
duxi90 merged 1 commit into
mainfrom
fix/per-group-timezone
Aug 18, 2026
Merged

duxi90 merged 1 commit into
mainfrom
fix/per-group-timezone

Conversation

@duxi90

@duxi90 duxi90 commented Aug 18, 2026

Copy link
Copy Markdown
Member

Description

  • groupTimezones (keyed by group urlname, like groupHosts) puts the zone on
    GroupTarget, so createMeetupDrafts converts per group instead of once. One run now
    renders 16:00Z as 11:00 Chicago / 18:00 Belgrade / 12:00 Toronto — one instant, three
    wall clocks.
  • New list-groups command prints each configured group's name and the timezone Meetup
    holds for it, plus a paste-ready groupTimezones map, mirroring list-venues. A group
    that cannot be read is warned about rather than aborting the listing.
  • A partial multi-group failure now actually exits 1. process.exitCode = 1 was being
    overwritten by runMain(...).then(() => process.exit(0)), so those runs exited 0.

BREAKING: a multi-group run carrying only the shared timezone now throws, naming the
groups that need an entry. One wall time has no correct interpretation across several
zones, and failing loudly beats scheduling a talk at the wrong hour in front of an
audience. Single-group configs and narrowed runs (--groups cpp-serbia) still accept
timezone unchanged. This lands after 0.3.0, so it needs a 0.4.0 bump before the next tag.

Motivation

Cross-posting one session to a Pro network put it at a different instant in every group —
a talk at 16:00Z was created as 11:00 in Chicago (right), 11:00 in Belgrade (7h early) and
11:00 in Toronto (1h early) — because Meetup reads startDateTime as wall time in the
receiving group's own zone and accepts no offset.

Testing

Tested locally. Full CI chain green (build, lint, format:check, typecheck, spell, test),
125 tests — 11 new, covering per-group conversion, case-insensitive groupTimezones keys,
the multi-group refusal and the groups it names, the single-group and narrowed-run
exemptions, and both multi-group exit codes through the real bin. list-groups is untested
beyond typecheck: it needs live credentials. It is read-only, one groupByUrlname query
per group.

Checkup list

  • Labeled
  • Assigned to a project
  • Linked issue(s) (to close or track progress)
  • Documentation updated
  • Test coverage

Cross-posting one session to a Pro network put it at a different instant in
every group. Meetup reads startDateTime as wall time in the *receiving*
group's zone and accepts no offset, but createMeetupDrafts applied a single
`timezone` and sent the resulting wall time to all of them.

Caught on real drafts: a session at 2026-08-22T16:00:00Z was created as
11:00-05:00 in Chicago (right), 11:00+02:00 in Belgrade (7h early) and
11:00-04:00 in Toronto (1h early). Three different instants for one talk.

Config gains `groupTimezones`, keyed by group urlname like `groupHosts`, and
GroupTarget carries the resolved zone so createMeetupDrafts converts per
group rather than once. A run now renders 16:00Z as 11:00 Chicago / 18:00
Belgrade / 12:00 Toronto -- one instant, three wall clocks.

BREAKING: a multi-group run with only the shared `timezone` now throws,
naming the groups that need an entry. This is deliberate. The old behaviour
had no correct interpretation once more than one zone is involved, and
failing loudly beats scheduling a talk at the wrong hour in front of an
audience. Single-group configs are unaffected, and a narrowed run
(--groups cpp-serbia) still accepts the shared `timezone`.

Also adds a `list-groups` command that prints each configured group's
timezone as a paste-ready `groupTimezones` map, mirroring list-venues --
Meetup already knows every group's zone, so nobody should be hand-guessing
it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@duxi90 duxi90 added bug Something isn't working documentation Improvements or additions to documentation labels Aug 18, 2026
@duxi90
duxi90 merged commit b67812f into main Aug 18, 2026
2 checks passed
@duxi90
duxi90 deleted the fix/per-group-timezone branch August 18, 2026 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant