hypercal 2.2.3
Select several events and act on them at once, a restyled event card and
editor, an admin dashboard, instances that keep accounts apart, Android
widgets and shortcuts, a rebuilt Firefox extension, and a much wider MCP
endpoint.
**Selecting several events.** In week, day, month and schedule, Ctrl-click
(⌘-click on a Mac) events to select them, or Shift-click a run of them. A bar
then moves them to another calendar, recolours, tags, deletes or exports them
as one .ics file. In week and day, Shift with the arrow keys moves the whole
selection in time. Each change is one step for Undo, and repeating events ask
once which occurrences to change. Search results can be selected the same
way, and "Select all N results" reaches the ones not loaded yet. Deleting
more than 20 events asks you to type how many first.
**Tags.** Give an event tags in the editor. They travel in .ics files as
`CATEGORIES`, and search filters by them. Database migration 0040 adds the
column.
**Event card and editor.** Hovering or clicking an event shows one card with
Edit, Delete, More and Close on top, then the time, how it repeats, location,
description, attachments, reminders and calendar. The editor puts date and
time on one line, has an "All day" checkbox and a Repeat dropdown worded
from the start date ("Weekly on Wednesday"). Its More menu adds Duplicate,
Copy, Export and Share, and Ctrl+D and Ctrl+C work inside it. Context menus
gain icons, shortcut hints and a colour grid, and the sidebar, account menu,
search and command palette are restyled.
**Admin dashboard.** Administration moves out of Settings into a page of its
own, for admins only, from the account menu:
- An overview with accounts, activity, storage, signups per month, the
accounts storing the most, and the server's memory, CPU and uptime.
- Users as a sortable table or cards, with search and filters. Open an
account for its storage and counts, deactivate or reactivate it, or sign
it out everywhere.
- A deactivated account cannot sign in by any path (password, passkey,
CalDAV, MCP, extension), and its feeds, reminders and push notifications
stop.
- Maintenance lists the database snapshots, takes one on demand and
downloads them.
Database migration 0039 adds the deactivated and last-seen columns.
**Keeping accounts apart.** A new instance switch, "Keep accounts apart",
for an instance whose users must not be linked. While it is on, shares,
invitations, attendees, free/busy and the user directory are switched off on
the server, and the app hides them. Existing shares are kept and come back
when it is turned off. `ISOLATED_USERS=1` holds it on from the deployment.
**Android.** Agenda and Week widgets for the home screen, launcher shortcuts
(New event, Today, Search, and the next event) and a quick-settings tile for
a new event. The widgets keep no wake lock and blank out after sign-out.
Drawers and full-screen pages no longer slip under the system bars.
**Firefox extension.** Rebuilt in Material 3 with hypercal's themes. It adds
Agenda, Day, Month and Tasks views, event details with RSVP, edit, delete and
undo, tasks, search, an invitations inbox, quick add (Alt+Shift+N), and
reminders that wait in the popup with Snooze and Dismiss.
**MCP.** Besides events, the endpoint now covers tasks, attendees and RSVP,
attachments (read only), calendars, contacts and availability, plus agenda
resources and workflow prompts. App passwords can limit MCP to chosen areas,
each off, read, or read and change. A password with areas works on /mcp
alone. Older passwords keep exactly what they had. Database migration 0041
adds the columns.
**Fixed.**
- The Repeat editor's preview no longer drops a date that falls in the hour
the clocks skip.
- The server refuses JSON request bodies with more than 200,000 values
before validating them. This works around CVE-2023-54404 in zod, for which
no fixed release exists yet, where one large request could exhaust the
server's memory.