Skip to content

Calends 1.10.0

Choose a tag to compare

@imetn imetn released this 25 Oct 05:26
· 323 commits to main since this release

Calends 1.10 brings per-period receivables to shared plans and payments on behalf of others, with flexible collection, waivers and prepayments.

Highlights

  • Per-period receivables. Select exactly which periods a receipt settles, including nonconsecutive periods while earlier ones remain owed. One receipt can cover several periods, with its amount allocated in proportion to each period's dues.
  • Waivers and prepayments. Waive periods without counting them as income, or collect future periods early. Proxy prepayments enter recovered income and profit only once their charge date arrives. Upcoming periods expand progressively through Show more.
  • Unified member and receipt forms. Shared plans use one member form and one receipt form, with common fee, next-collection and seat controls. A period strip shows settled and unpaid periods and opens their receipt directly.
  • Clearer presentation. The date picker centers its month and year, uses one pair of month arrows and follows the interface language. Former shared-plan members collapse beneath a centered footer.

Fixes

  • The image proxy now fetches only public HTTPS addresses and checks every redirect hop, preventing access to private networks, including on Docker installations. Thanks to Vic Liu (@iamvicliu) for the address-checking work in PR #5.
  • Break-even proxy payments no longer show an average of negative zero per period.
  • Focus rings appear for keyboard navigation rather than mouse clicks or typing.
  • Privacy mode also masks member avatars in receipt tables.

Upgrading

  • Export a backup before upgrading. There are no new SQL migrations (the latest remains 0007), but the first ledger load converts legacy member receipts and proxy entries in place to per-period records and writes them back. Existing receipt amounts are retained; legacy collection restarts preserve the previous next-collection date and amount.
  • Refresh browser tabs that were already open after upgrading. If you restore an older backup, its legacy receivables are converted automatically on the next load.
  • Breaking change for external MCP clients: record_receivable no longer accepts index, entry, from/until or paid_until. Select periods with periods or count, and update/delete receipts or waivers by id. The existing tool also supports waive and proxy charge overrides through charged. save_share_member.paid_until now sets the opening settlement before record-keeping; use receipts for actual money. The tool catalogue remains at 32, with unchanged scopes and write-preview behavior.

Images

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

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

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