Skip to content

Calends 1.12.1

Choose a tag to compare

@imetn imetn released this 26 Oct 16:49
· 324 commits to main since this release

Calends 1.12.1 is the first official release in the 1.12 series, including all changes since 1.11.0. It redesigns shared-plan member collections and people profiles, adds lifecycle reports for selections, and makes incomplete currency conversions explicit.

Highlights

  • Shared-plan member sheet. Every member opens the same sheet, with identity, collection and seat details in order. A monthly period grid joins multi-month periods and highlights the full period on hover. Tap a settled cell for receipt details, editing, deletion or copying; collect an unpaid period directly, prepay the next period, or use the Waive action.
  • People profiles and custom colors. Profile details come first, with compact linked-plan rows showing status and collections. Choose one of eight colors or any custom #RRGGBB color; avatars, lists and save_person.color support it.
  • Selection lifecycle reports. See lifetime spending, duration, stops and losses alongside a mini timeline, cash chart and events, and copy the report as an image. Timelines fit the selected subscriptions and stop active tracks at the next period end.
  • Missing exchange rates. Unconverted amounts stay in their original currency; totals retain the known portion alongside unconverted amounts, and unavailable ratios stay hidden. MCP and reminders return null with an incomplete marker instead of treating missing rates as zero.

Fixes

  • Opening a member who owes now places the automatic collection form above the member sheet, with working controls and focus; closing returns to the member sheet.
  • Changing a plan's collection date preserves existing members' historical anchor and receipts, then starts their new rhythm from the new date.
  • Collections starting on days 29–31 return to the original day after short months instead of drifting permanently to the 28th.
  • Removing a member's exemption waives unsettled periods before the fee's effective date, avoiding retroactive billing of the exempt span.
  • Paused shared plans stop generating dues from the pause date, keeping grids, status and expected income consistent.
  • First-period exit refunds are capped at actual overcollection; departed members' paid-through dates consistently retain the coverage paid for.
  • Receipt copying rejects incompatible member billing periods before saving.
  • Hardened one-time challenges, visitor rate limiting, calendar-token comparisons, ICS text and remote-image URL checks, including encoded private addresses. Docker disables the local explorer and blocks /cdn-cgi/.
  • Backup restores and roster writes are transactional; reminder delivery uses a ten-minute lease. Failed client writes reload the server snapshot, errors and uncached offline states show a recoverable page, and Worker language state is isolated per request.
  • Interrupted assistant replies can be retried, leaving the page stops streaming, and conversations are limited by byte size. MCP batches run in order and destructive tools require an ID or full name.

Upgrading

1.12.0 images were published briefly with a dialog-stacking bug when opening a member who owes; use 1.12.1.

There are no new SQL migrations (the latest remains 0007). There is one automatic read-time data conversion: recorded receipt, waiver and opening-settlement period keys for shared-plan members with collection anchors on days 29–31 are aligned to the corrected month-end schedule and written back when the ledger loads. No manual action is required; back up your ledger before upgrading and retain your existing configuration and data volume.

Refresh browser tabs already open after upgrading. External MCP clients should account for the changed set_share.collect_from behavior: existing members retain their original anchor and begin the new rhythm from the new date. save_person.color now also accepts #RRGGBB. Read tools expose calendar-month and list-selection reports, and set_status supports edit for existing stop details. The catalogue still contains 34 tools.

Images

Multi-architecture images (linux/amd64, linux/arm64) are available from Docker Hub and GitHub Container Registry:

docker pull xizozhe/calends:1.12.1
docker pull ghcr.io/imetn/calends:1.12.1

The 1.12 tags follow this release series; latest follows main.