* feat: set up UserAuditLog
* refactor: extract payment callbacks into their own files + handle subscription user_audit_log
* feat: handle account linking for user audit log
* chore: user_audit_log for mailboxes
* chore: user_audit_log for custom domains
* chore: user_audit_log for contacts
* chore: user_audit_log for directories
* fix: do not enforce cronjob being defined in choices + enable user deletion
* chore: user_audit_log for user deletion
* refactor: change emit_user_audit_log function to receive the full user object
* feat: add user_audit_log migration
* test: fix tests
* test: add some tests for user_audit_log
* fix: spf record verification user_audit_log
* chore: add missing index to user_audit_log.created_at
* chore: add missing index to alias_audit_log.created_at
* Only change the profile picture if data is sent
* Ensure email is sent
* re-use var
* Ensure email is given on login
* Remove arm from build images
* reverted login changes
* fix: improve MX and SPF domain handling
* fix: do not use get_instance function
* fix: legacy use of tuples instead of MxRecord
* refactor: rename partner custom domain variables
* chore: change max_retries to 10
* chore: only send custom domain deleted event if it is not a partner domain
* chore: newrelic events metric names rename
* chore: emit failed events metric
* chore: migration for contact.flags and custom_domain.pending_deletion
* chore: mark custom_domain as pending_deletion when deleting it
* chore: add event type to metric
* fix: scripts/new-migration to use poetry again
* chore: add migration to add custom_domain.partner_id
* chore: refactor create_custom_domain
* chore: allow to specify partner_id to custom_domain
* refactor: can_use_domain return cause
* refactor: remove intermediate result class
* Do not close session since it leads to orphan user object
* Redirect instead of render to avoid having to have a mailbox object
* On inital partner link/login trigger sync
* Update github action upload/artifact to v4
* Remove sys.exit used to test script locally
* Simplified script to update alias flags and note
* update contributing guide: replace rye by poetry and add a section for mac
* fix the bug where user can't choose "not selected" for the default alias domain
* ruff format
* remove trailing space
---------
Co-authored-by: Son NK <son@simplelogin.io>