Commit Graph

5057 Commits

Author SHA1 Message Date
stanig2106 3fda5649c3 rebrand: Workavia Mail (tier 1+2+3+4)
Build Docker images with Sentry / Build release image with Sentry (push) Failing after 1m59s
Release / Release (android, ubuntu-latest) (push) Failing after 38m31s
Release / Release (ios, macos-14) (push) Has been cancelled
Integration tests / Run integration tests for mobile apps (push) Failing after 15s
Build dev binaries / Build app (ios, macos-14) (push) Waiting to run
Build dev binaries / Build app (android, ubuntu-latest) (push) Failing after 34m13s
Tier 1+2 - web/UI user-facing:
- Replace all visible "Twake Mail" / "Linagora" with "Workavia Mail"
- Swap 3 logo SVGs (icon kept, wordmark replaced via SVG <text>)
- Splash: replace icon_twp.png with HTML <div>Workavia</div>
- Remove power_by_linagora.svg, replace with AGPL SourceLinkWidget
- Patch web/index.html, manifest.json, login/logout-callback HTMLs
- Patch all 16 ARB locales + scribe ARB + app_localizations.dart
- Patch 4 web/i18n/*.json (FR/EN/DE/VI smart banner titles)
- App grid reduced to "Mail" + "Calendar"
- User-Agent: Twake-Mail -> Workavia-Mail

Tier 3+4 - mobile native:
- Bundle ID: com.linagora.{android,ios}.teammail -> com.workavia.mail
- URL schemes consolidated: teammail.mobile/twakemail.mobile -> workaviamail.mobile
- Android: applicationId, namespace, AndroidManifest, strings.xml
- Android: move Kotlin sources com.linagora.android.tmail -> com.workavia.mail
- Android: empty branding.xml + android12branding.xml (vector text not patchable)
- iOS: Info.plist (CFBundleDisplayName/Name, schemes), Runner.entitlements
- iOS: TwakeMailNSE + TeamMailShareExtension entitlements + Info.plist
- iOS: Runner.xcodeproj (12x PRODUCT_BUNDLE_IDENTIFIER, 9x APP_GROUP_ID)
- iOS: TokenRefreshManager.swift redirect URLs
- iOS: fastlane Appfile + Matchfile
- Dart: oidc_constant, app_config keychain, notification MethodChannel

Known follow-ups (require user action):
- Apple Team ID KUT463DS29 (still Linagora) -> needs Workavia team for App Store
- Android branding.xml emptied: need PNG/path-converted wordmark for splash
- iOS sub-bundle paths (TwakeMailNSE/, TeamMailShareExtension/) on disk unchanged
- iOS App Store URL emptied; Play Store ID points to com.workavia.mail
v0.28.4-rc01-workavia.1
2026-04-29 18:12:55 +02:00
Dat H. Pham 97a8d0d95c Bump version to v0.28.4-rc01 2026-04-22 10:52:57 +07:00
dab246 330c8cbaf5 TF-4269 Apply PR review: breadcrumbs, log error details, and code cleanup for NSE Sentry integration
- Replace capture(message:) with addBreadcrumb(level: .warning) in NotificationService for non-error diagnostic checkpoints
- Add addBreadcrumb method to SentryManager with category/level support
- Include error details in KeychainController SentryConfig decode failure log
- Split combined guard into two separate guards to distinguish nil state vs unchanged state
- Remove dead do-catch block in onComplete closure; use errors.forEach to capture real errors
- Translate Vietnamese doc comment to English in SentryManager
2026-04-22 09:00:56 +07:00
dab246 f335871513 Bump version to v0.28.3-rc10 2026-04-21 15:15:55 +07:00
dab246 99b68d1fc5 TF-4269 Fix Sentry release version sync across platforms
Use --dart-define=SENTRY_RELEASE=<full-tag> in Fastlane so the app
reports the same version string to Sentry as CI uses when uploading
symbols, bypassing iOS CFBundleShortVersionString stripping.

- Android Fastfile: add --dart-define=SENTRY_RELEASE (build-name unchanged)
- iOS Fastfile: pass DART_DEFINES via xcargs (increment_version_number unchanged)
- Dart: read SENTRY_RELEASE dart-define first, fall back to PackageInfo.version
- NSE/Web unaffected: NSE reads from Keychain, Web falls back to PackageInfo
2026-04-21 15:15:32 +07:00
dab246 be7c39018b Bump version to v0.28.3-rc09
Signed-off-by: dab246 <tdvu@linagora.com>
2026-04-21 13:19:07 +07:00
dab246 b98c76e72a TF-4269 Fix Sentry
release version: keep full version including -rc suffix

      Use full pubspec version (e.g. 0.28.3-rc08) as SENTRY_RELEASE for both
      Android and iOS, matching the version the app reports at runtime.
      Validation still compares base versions only (strips -rc suffix) to
      allow rc tags to match the base version in pubspec.
2026-04-21 13:18:36 +07:00
dab246 f81ba99c77 Bump version to v0.28.3-rc08
Signed-off-by: dab246 <tdvu@linagora.com>
2026-04-21 12:18:25 +07:00
dab246 37dc22af17 TF-4269 Fix Sentry dSYM upload: find xcarchive via find instead of gym_archive_path.txt
lane_context[XCODEBUILD_ARCHIVE] was unreliable — replace with find on
~/Library/Developer/Xcode/Archives to locate the Runner xcarchive directly.
2026-04-21 12:17:46 +07:00
dab246 149ce08f9b Bump version to v0.28.3-rc07
Signed-off-by: dab246 <tdvu@linagora.com>
2026-04-21 11:52:20 +07:00
dab246 bab9d4f24c TF-4269 Integrate Sentry into iOS NSE and automate dSYM upload in CI 2026-04-21 11:51:36 +07:00
dab246 4505c50302 Fix iOS build: bump IPHONEOS_DEPLOYMENT_TARGET to 14.0 for all targets
receive_sharing_intent requires iOS 14.0+. Flutter 3.38.9 upgrade
raised minimum deployment target, so all targets must be consistent
with Podfile's platform :ios, '14.0'.
2026-04-21 11:44:37 +07:00
Dat Dang e3dfadce34 Upgrade Patrol to 4.5.0 (#4446) 2026-04-17 20:50:22 +07:00
Dat Dang 77e2381ca9 Upgrade Flutter to 3.38.9 (#4455) 2026-04-17 17:39:29 +07:00
Dat Vu bfe51749aa docs: add ADRs for Patrol web integration test — setup, architecture, migration (#4452) 2026-04-17 17:38:35 +07:00
Dat H. Pham 51e3c218d0 Bump version to v0.28.3-rc01 2026-04-17 17:36:07 +07:00
dab246 cb41b5690b TF-4308 Add E2E tests for ChooseLabelModal and NoLabelYetWidget
Signed-off-by: dab246 <tdvu@linagora.com>
2026-04-17 17:09:24 +07:00
Dat Vu a693ceb456 [Part 2] TF-4308 Add Create new label button in ChooseLabelModal (#4457) 2026-04-17 16:51:49 +07:00
dab246 a80de79537 TF-4301 Deduping before append label to list
Signed-off-by: dab246 <tdvu@linagora.com>
2026-04-17 11:58:53 +07:00
dab246 5938df395c TF-4301 Ensure that CreateNewLabelInteractor and EditLabelInteractor are always non-null before using them.
Signed-off-by: dab246 <tdvu@linagora.com>
2026-04-17 11:58:53 +07:00
dab246 8ac68ed1a5 TF-4301 Replace LabelModalMixin with direct methods in LabelController 2026-04-17 11:58:53 +07:00
dab246 2fd890f488 TF-4301 Block barrier dismissal while label creation is in progress
Wrap CreateNewLabelModal with PopScope(canPop: false) while the
creation request is in flight so that tapping the barrier
(barrierDismissible: true) cannot dispose the modal and cancel
the stream subscription before the result is delivered.
2026-04-17 11:58:53 +07:00
dab246 660c4f40e2 TF-4301 Address code review comments on label feature
- Make LabelModalMixin interactor getters non-nullable; remove force-unwraps at call sites
- Show positiveLabel and add semanticLabel in progressing button for accessibility
- Use timestamp-based label name in E2E scenario to prevent flakiness on reused accounts
- Guard labelAs action with isLabelAvailable check in SingleEmailController
- Don't pop back on label creation failure so users can retry without losing context
- Block modal dismissal while label creation request is in flight
- Null-guard email.id before toggling label in ThreadView::onCreateANewLabelAction
- Log stackTrace and rethrow in DialogRouter to distinguish errors from user cancel
2026-04-17 11:58:53 +07:00
dab246 232987ae0c TF-4301 Extract onMoreActionClick callback into dedicated method in ThreadView 2026-04-17 11:58:53 +07:00
dab246 1b62990f28 TF-4301 Add E2E tests for label creation and tagging from email view 2026-04-17 11:58:53 +07:00
dab246 190ccc7bc3 TF-4301 Add "Create a new label" button in Label As menus and wire up tagging in email view 2026-04-17 11:58:53 +07:00
dab246 061793846e fixup! TF-4308 Add NoLabelYetWidget for choose label modal
Signed-off-by: dab246 <tdvu@linagora.com>
2026-04-17 10:22:32 +07:00
dab246 35b46ff21b TF-4308 Add NoLabelYetWidget for choose label modal
Signed-off-by: dab246 <tdvu@linagora.com>
2026-04-17 10:22:32 +07:00
Dat Vu c5eb4a011d Cherry pick commit fix issue #4292 to master (#4454)
* Add folder info when open mail list from Label

(cherry picked from commit de0bb4ee02030ca90126766a8713a6826d791acd)

* Add unit test for `hasMailboxLabel` function in BaseEmailItemTile mixin

(cherry picked from commit 18f8d1847acccd6f95006b93903f0caa6c0408df)

* TF-4292 Add E2E test for test case `Add folder info when open mail list from Label` on mobile

(cherry picked from commit 1c209e333510db161522e4449ad7fb2e5d28399f)
2026-04-16 15:45:45 +07:00
Dat Dang 6fc88f780c TW-4308 Add labels for several messages part 2 (#4431)
Add ChooseLabelModal, delegate, and update label UI components

Wire add-labels action across Thread, Search, and Dashboard
2026-04-15 14:25:37 +07:00
Dang Dat 77c2ef745f TF-4308 add domain state, interactor, model extensions, and localization 2026-04-14 17:16:10 +07:00
Dang Dat 979ba0f671 TF-4308 add data layer for addListLabelToListEmails 2026-04-14 17:16:10 +07:00
Dat Vu 1d594804b5 TF-4268 Automate Sentry symbol upload for Android release builds (#4442) 2026-04-14 12:32:03 +07:00
Dat Vu 16376fccb4 TF-4343 Fix load Sentry from Sentry CDN (#4348) 2026-04-14 11:59:27 +07:00
dab246 eeaab49e93 TF-4268 Cache Sentry config and user for FCM background re-initialization
Signed-off-by: dab246 <tdvu@linagora.com>
2026-04-10 16:05:02 +07:00
Dat Vu cb5d43630a TF-4284 Fix refreshing causes "virtual mailboxes" to be hidden (#4290) 2026-04-10 15:29:04 +07:00
Dat Vu c9e2e5db80 TF-4358 Remove mail in trash by default in search result (#4361) 2026-04-10 15:15:53 +07:00
Dat Vu bc707b2612 fix: Update pubspec.lock to resolve stale worker_manager git ref (#4447)
Signed-off-by: dab246 <tdvu@linagora.com>
2026-04-10 12:42:24 +07:00
Dat Dang 61530b61c6 Reduce worker_manager memory allocation (#4435) 2026-04-09 18:26:19 +07:00
dab246 dd77b2d53a fixup! TF-4268 Initialize Sentry from Linagora Ecosystem configuration
Signed-off-by: dab246 <tdvu@linagora.com>
2026-04-09 14:16:41 +07:00
dab246 d2566dd9aa TF-4268 Initialize Sentry from Linagora Ecosystem configuration 2026-04-09 14:16:41 +07:00
dab246 c9ec1c2820 TF-4268 Improve SentryConfig and SentryManager: sampling, frames tracking, non-blocking capture 2026-04-09 14:16:41 +07:00
dab246 2a666056c2 TF-4268 Refactor app runner: split web/mobile runners, add platform error handlers 2026-04-09 14:16:41 +07:00
Dat Vu 78e76b5aac docs: ADR-0076 - Reduce Sentry Noise with Targeted Error Reporting (#4433) 2026-04-09 09:18:45 +07:00
Dat Vu c6b83d7a09 ADR-0072: Prevent notification storm on Android (#4381) 2026-04-09 09:18:09 +07:00
Dat Vu 20f59da386 TF-4425 Fix load more not triggered on iOS 18 when fast scrolling to bottom (#4428) 2026-04-08 10:06:49 +07:00
dab246 2a3325ab7a TF-4265 Add integration test for attachment reminder on mobile 2026-04-07 13:20:25 +07:00
dab246 74c0c75023 TF-4265 Refactor: Move Regex pattern generation to Main Thread to leverage static caching and reduce Isolate initialization overhead. 2026-04-07 13:20:25 +07:00
dab246 55e27c78ed TF-4265 Additional config for include and exclude keywords 2026-04-07 13:20:25 +07:00
dab246 42fb24e6e5 TF-4265 Add include list to support custom keywords detection 2026-04-07 13:20:25 +07:00