## linagora/tmail-flutter — v0.39.0…v0.39.1

_44 commits._

### Features
- **TF-4809 Part 3: Add web Sentry fallback and denied consent** (e6e9ed6)
- **TF-4809 Part 2: Add Sentry reporting preference** (68fbf71)
- **[QA] Add a twake-qa compatible QA environment** (3536f9f)

### Fixes
- **2509 Fix misleading link-policy test inputs and names** (be2c4b5)
- **Fix grammar in Profiles settings subtitle ('send an emails' -> 'send emails')** (1b2d3d3)
- **Fix grammar of permanent-delete toast messages** (3bfe474)
- **Fix 'has invited you in to a meeting' typo in English strings (#4931)** (1892e5f)

### Backend
- **Bump version to v0.39.1** (b596006)
- **Translate vi, ru, fr, mn** (fd1a803)
- **2509 Sanitize nested CSS at-rules and drop remote url() inside them (#4952)** (9aa422b)
- **TF-4809 Part 3: Align Sentry startup and reporting consent** (704ecd8)
- **TF-4809 Part 3: Restore web Sentry after consent is re-enabled** (5399267)
- **TF-4809 Part 3: Remove duplicate userOptInByDefault parsing in SentryConfigLinagoraEcosystem** (f7e4e95)
- **TF-4809 Part 3: Update keychain Sentry consent tests** (5fab739)
- **TF-4809 Part 3: Harden Sentry ecosystem consent handling** (eec2fba)
- **TF-4809 Part 3: Clarify Sentry reporting default** (8e50fc0)
- **TF-4809 Part 3: Simplify Sentry config JSON serialization** (6aa8c4e)
- **TF-4809 Part 3: Share Sentry ecosystem opt-in default with web** (6f3b757)
- **TF-4809 Part 3: Configure Sentry reporting default** (1e783fb)
- **TF-4809 Part 1-C: Apply consent in iOS notification extension (#4836)** (c0eb30d)
- **TF-4809 Part B: Reuse Sentry for unchanged FCM config** (65c31df)
- **TF-4809 Part B: Harden Sentry FCM consent** (e78120a)
- **TF-4809 Part B: Persist consent for FCM background** (fdda202)
- **TF-4809 Part A: Gate Sentry SDK lifecycle by consent** (9f3665e)
- **2509 Point sanitize_html back to linagora/dart-neats support_mail** (e53b0ed)
- **2509 Track dart-neats#6 branch for sanitize_html** (aa938f8)
- **2509 Pin sanitize_html to the allowLinkHref hook (dart-neats#6)** (3d19a47)
- **2509 Let ExternalLinkPolicy decide which link schemes survive sanitizing** (8615e7a)
- **2509 Declare webcal and geo schemes and report links no app can open** (9510b71)
- **2509 Cover the blocked-link callback in the iOS EML previewer dialog** (f30f7c6)
- **2509 Cover the blocked-link callback forwarded by the calendar event detail** (e28f4dd)
- **2509 Cover the blocked-link toast shown by BaseController** (04adcfa)
- **2509 Show the blocked-link toast in invite descriptions and HTML attachments** (d1990bc)
- **2509 Cover the noopener decision for links opened from the EML previewer** (770bd30)
- **2509 Cover the Android and iOS content viewers' external link guard** (7f05b9b)
- **2509 Pass and check the blocked-link callback in the previewer call-site test** (6be0fbc)
- **2509 Allow sms, webcal and geo links and warn when a link is refused** (aecb0fc)
- **2509 Gate every content-link launch through ExternalLinkPolicy only** (0eaa08f)
- **2509 Route AppUtils.launchLink and ICS conference links through the scheme allow-list** (f541de0)
- **2509 Restrict which links open externally from email content** (72cdf99)
- **2509 Restrict openApp deep links to allow-listed hosts and show a toast when refused** (96dd60b)
- **Use plural form for permanent-delete toast when a single message is deleted** (1716a5e)
- **Bump tmail-backend docker image to 1.0.21.2 (#4918)** (5141152)
- **2509 Require https for the openApp deep link's JMAP and identity provider URLs (#4919)** (71af403)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/linagora/tmail-flutter?utm_source=github-action)._