The Events extension tab (Step 12): a month calendar of project
events (meetings, milestones, reviews) + a server-rendered upcoming
list, mounted by the hub via live_render with the extension-tab
session contract (no handle_params/3; same trust model as every
contributed tab — see ProjectWhiteboardsLive).
Phoenix-first: the calendar grid, the upcoming list, create, and delete
all render/work server-side. Times are UTC (matches the module's
scheduling frame); all_day events render as month bars, timed events
as chips with an HH:MM prefix.