- Shipped
- 12 Agosti 2026, 22:13 UTC
- Author
- Kamo
- Commit
- c7cdd49
The account view can now say what has happened to an account and who is on it. - Every mutation on the account surface records history: create, field edits, soft delete, merge (which moves the loser's timeline onto the survivor rather than dropping it), addresses, notes, and the member add/remove/primary paths. GET customers/{uid}/history and /history/filters mirror the lead endpoints request for request, because one component in the internal site reads both. - getCustomerMembers returns what a member row needs to be rendered: the display name, avatar, job title, and isTeamMember. Both kinds of person belong on an account — the one paying is frequently not on the payroll — and without the flag the two read identically. - updateCustomerMembers accepts ids as strings (a unique_rowid() past MAX_SAFE_INTEGER arrives rounded otherwise), clears the primary member when the row being removed is theirs, and no longer mutates the orphanRemoval-mapped collection alongside the repository writes. - The directory search takes scope=all, over every member of the org rather than the staff list, and every row says which kind it is. The endpoint ratchet learns denyUnless: it loads the session and returns 401 without one, or 403 without the right, so a handler that opens with it has done strictly more than resolve a caller. Twenty baseline entries were only listed because the scan could not see the guard that was already there.