2026.10.14
This release includes 28 new features, 60 bug fixes and 4 improvements.
- **mailbox:** one list with Alla / Mottagna / Skickade instead of a Skickat tab
- **mailbox:** tag conversations with groups and with members who read the mailbox
- **booking:** the presentation shows more pictures with captions, and fact rows in the association's own words
- **discover:** the visitor guide says it is an AI
- **mailbox:** conversations are deleted 24 months after their last mail
- **privacy:** a daily purge-retention job ends what was kept forever
- **privacy:** the data export includes mail, payments, invoices, bookings, payroll and assistant threads
- **members:** a member the books point at can be anonymised instead of removed
- **bank-papers:** say the PDF carries the board's personnummer
- **legal:** a data processing agreement and one subprocessor list
- **legal:** acceptance of the terms, the privacy policy and the data processing agreement is recorded
- **security:** a security contact in SECURITY.md and /.well-known/security.txt
- **meetings:** participants are told before a meeting is transcribed
- **mail:** Sök i mejlen finds what the mails say, not only their subjects
- **booking:** a late cancellation pays back a share, and opening hours can be kept for members
- **booking:** "Bara för medlemmar" on the one-window opening hours, not only per day
- **booking:** a pass that never regains its host is called off and paid back; a cancelled paid place says it is refunded
- **events:** ask whether an event repeats inside the event, not with a second create button
- **legal:** new terms that match the price list and the Ping agreement
- **events:** tickets as one clear choice, with fields that say what they mean
- **accounting:** sent documents are stored exactly as sent and served from the stored bytes
- **accounting:** a systemdokumentation per association, versioned and in the hand-over
- **tenant:** leaving Asamla follows the PUB-avtal: an archive, a read-only state, deletion at keep-until
- **events:** picture, repetition and sales links on the event page say what they do
- **payments:** send aktiebolag their own Ping KYC agreement template
- **payments:** speak to aktiebolag as a company in the payments onboarding
- **payments:** fill in Ping's company KYC agreement for aktiebolag
- **payments:** receipts carry a number, Asamla's service fee as its own line with VAT, and donors can ask for one
- **mailbox:** draw the mailbox with Asamla's own patterns
- **events:** the event editor as settings rows, like the Boka & hyr editor
- **events:** the edit drawer gets the same settings rows as the event page
- **BREAKING:** **roles:** the member role no longer reads the books, invoicing or payments
- **mailbox:** let bookkeeping inbox aliases on asamla.com reach the inbox
- **mailbox:** scope drafts by association, let the address be chosen, tidy the screens
- **users:** a user row cannot be deleted over REST
- **privacy:** rate-limit counters with caller IPs are removed after two days
- **payroll:** only Asamla staff can switch Lön on while it is under test
- **access:** tenant scoping lifts for super-admins only in the Payload admin panel
- **privacy:** error reports to Sentry are scrubbed, and Speed Insights waits for consent
- **mcp-public:** each caller has its own day caps, asked before the shared ones
- **auth:** sign-in attempts are counted in the database, shared by every instance
- **privacy:** the privacy policy and the subprocessor list say files are stored in Stockholm
- **mail:** an address typed before the page finishes loading stays in Till
- **mail:** the 24-month retention keeps Dokument files and files a newer conversation carries
- **mail:** typecheck the mailbox against the regenerated payload types
- **mail:** hold a mail whose SPF fails when nothing else passes
- **mail:** every member who may read the mail is found, not the newest 500
- **mail:** a retried send no longer reports sent for a mail still queued; no Cc to the person answered
- **mail:** two notes added at once both stay
- **mail:** a report attached from the books is for the board, not every member
- **mail:** pnpm tool:inbound runs again
- **mail:** a forward with no words of its own previews as what it forwards
- **mail:** a refused attachment keeps its name on a phone
- **mail:** a file uploaded in the composer is for the board, not every member
- **api:** a savepoint opened from a REST request can read its own headers
- **booking:** an event respects a closed period, and a pass under an event has no places
- **events:** a room change keeps the old room until the new one is held, and a moved booking moves its event
- **mail:** a mail nothing could check waits under Väntar instead of passing as the sender's
- **booking:** a half Swish refund is booked as half, and the drivers walk late cancellations
- **booking:** a member's Avboka cancels instead of deleting, and both bookers see the late share first
- **booking:** the late-cancellation help no longer points at a field that is not there yet
- **events:** deleting a whole series no longer leaves one occurrence behind
- **events:** the date field shows the event's own day, and the lone Evenemang tab is gone
- **ai:** the credit banner no longer sells AI Pro
- **ai:** out-of-credits messages no longer tell people to upgrade
- **events:** the public event page prints the event's own day and times
- **booking:** the booking dialog's month fills the dialog, each day under its weekday
- **my-memberships:** stop logging the cookie header and user email
- **privacy:** public feed items carry no author, and linked events only what a stranger may see
- **privacy:** honour showContributors on the public crowdfunding page
- **discover:** a public post's page keeps the association's visibility gate
- **payments:** fill in the förening's address on the Ping KYC agreement
- **security:** another association's tenant record shows only its public fields
- **security:** a poll vote is the signed-in member's own, and touches nobody else's
- **security:** the Slack install only saves to the association whose admin started it
- **security:** a project's Drive document is created only in the caller's own association
- **security:** the legacy invites collection is closed to everyone but staff
- **security:** listing Slack channels and choosing the notification channel need an admin of the association
- **security:** member invite codes come from a secure random source
- **security:** the legacy-account check and reset are rate-limited and reveal nothing
- **security:** sessions are rechecked every five minutes, and a social login cannot join an unverified password account
- **org:** link crowdfunding campaigns to the page that exists
- **membership:** stop showing an arbitrary förening's plans at /membership
- **payments:** the pay page stops polling after five minutes, and status polls ask Ping at a bounded rate
- organization follows are readable and creatable only by their owner
- a join request is created only by its requester, pending and unanswered
- **notifications:** a notification is read only by its recipient
- **assistant:** gate the income reads on the role at the mount
- **roles:** rental presets read only what the member role reads
- **a11y:** icon-only buttons say what they do to screen readers and voice control
- **i18n:** the sign-in, forgot-password and reset screens speak the reader's language
- **i18n:** booking sessions, the privacy page, project funding and other screens go through the message catalogue