hypercal 2.2.0

Scheduling polls: find a time with people who have no account. Also a calendar
that opens without the server, short events that move with the mouse, and
license notices in every bundle.

**Scheduling polls.** Open the account menu, then Scheduling polls, and
describe the times you can offer: a range of dates, which weekdays, one or
more time windows a day, and one or more slot lengths, back to back or every
15, 30 or 60 minutes, with an optional break. A preview grid shows every slot;
click one to leave it out, skip a whole day, or add a slot by hand. Whole-day
slots work too.

Then set the rules: yes/no or yes/maybe/no, one slot per person, a limit of
people per slot, a password, signed-in users only, a required email, who sees
the answers, hidden names, a closing date, and how long after closing to
delete everything.

Share the link or its QR code. People open it without an account, tap the
times that suit them in a list or a week grid, in their own time zone or the
poll's, and get a personal link to change their answers later. You see the
answers arrive as a table, with a push notification for new ones, can export
them as CSV, and settle on a slot: it becomes an event in the calendar you
pick, encrypted if that calendar is, with optional invitations for people
who answered with an account. The poll page then shows the decided time with
an .ics file to add it to their own calendar.

Polls need a server reachable from outside, so the Android app on its own and
the desktop app in local mode don't offer them. An admin can switch them off
in Settings, Admin. Database migration 0034 adds four tables for them.

**Opens without the server.** In "connect to a server" mode, starting with no
network or with the server down showed a blank screen on Android and the
login screen in the browser. The app now opens from its last copy of your
account and calendars, says it is connecting, and keeps retrying.

**Fixed.**

- Short events can be moved with the mouse again. Their resize bands covered
  the whole card.
- The desktop app opens .ics files into a connected server too, and an
  address that does not answer is now an error in the chooser instead of a
  saved dead end.

**License notices.** The web app, the Android app, the desktop app and the
extension each ship a THIRD-PARTY-NOTICES.txt with the license texts of what
they bundle, and builds refuse a dependency outside the license allowlist.
A modified instance can point the About dialog at its own source with
SOURCE_URL.

**Store listing.** The Android and F-Droid description now leads with what
the app does well and says it works on its own as well as with a server.