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
This commit is contained in:
stanig2106
2026-04-29 18:12:55 +02:00
parent 97a8d0d95c
commit 3fda5649c3
57 changed files with 421 additions and 510 deletions
+30 -30
View File
@@ -1014,7 +1014,7 @@
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
APP_GROUP_ID = group.com.linagora.teammail;
APP_GROUP_ID = group.com.workavia.mail;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ENABLE_MODULES = YES;
@@ -1032,10 +1032,10 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = tmail.development.profile;
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.linagora.ios.teammail";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.workavia.mail";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
@@ -1156,7 +1156,7 @@
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
APP_GROUP_ID = group.com.linagora.teammail;
APP_GROUP_ID = group.com.workavia.mail;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ENABLE_MODULES = YES;
@@ -1174,10 +1174,10 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = tmail.development.profile;
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.linagora.ios.teammail";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.workavia.mail";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
@@ -1190,7 +1190,7 @@
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
APP_GROUP_ID = group.com.linagora.teammail;
APP_GROUP_ID = group.com.workavia.mail;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ENABLE_MODULES = YES;
@@ -1208,10 +1208,10 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = tmail.distribution.profile;
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.linagora.ios.teammail";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.workavia.mail";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
@@ -1222,7 +1222,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 07753111B751BFDB3187FE6F /* Pods-TeamMailShareExtension.debug.xcconfig */;
buildSettings = {
APP_GROUP_ID = group.com.linagora.teammail;
APP_GROUP_ID = group.com.workavia.mail;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_ENABLE_OBJC_WEAK = YES;
@@ -1250,10 +1250,10 @@
MARKETING_VERSION = 1.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail.TeamMailShareExtension;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail.TeamMailShareExtension;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = tmail.share.ext.development.profile;
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.linagora.ios.teammail.TeamMailShareExtension";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.workavia.mail.TeamMailShareExtension";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_EMIT_LOC_STRINGS = YES;
@@ -1267,7 +1267,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = BC08294F5AE09BF8CC592AD1 /* Pods-TeamMailShareExtension.release.xcconfig */;
buildSettings = {
APP_GROUP_ID = group.com.linagora.teammail;
APP_GROUP_ID = group.com.workavia.mail;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_ENABLE_OBJC_WEAK = YES;
@@ -1294,10 +1294,10 @@
);
MARKETING_VERSION = 1.0;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail.TeamMailShareExtension;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail.TeamMailShareExtension;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = tmail.share.ext.distribution.profile;
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.linagora.ios.teammail.TeamMailShareExtension";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.workavia.mail.TeamMailShareExtension";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
@@ -1309,7 +1309,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 1FB76FA91BBCB2BF7B08705B /* Pods-TeamMailShareExtension.profile.xcconfig */;
buildSettings = {
APP_GROUP_ID = group.com.linagora.teammail;
APP_GROUP_ID = group.com.workavia.mail;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_ENABLE_OBJC_WEAK = YES;
@@ -1336,10 +1336,10 @@
);
MARKETING_VERSION = 1.0;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail.TeamMailShareExtension;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail.TeamMailShareExtension;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = tmail.share.ext.development.profile;
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.linagora.ios.teammail.TeamMailShareExtension";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.workavia.mail.TeamMailShareExtension";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
@@ -1372,7 +1372,7 @@
MARKETING_VERSION = 1.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail.TwakeMailTests;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail.TwakeMailTests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -1410,7 +1410,7 @@
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail.TwakeMailTests;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail.TwakeMailTests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -1446,7 +1446,7 @@
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail.TwakeMailTests;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail.TwakeMailTests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -1462,7 +1462,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 5E35AF242935B79C2DCACB65 /* Pods-TwakeMailNSE.debug.xcconfig */;
buildSettings = {
APP_GROUP_ID = group.com.linagora.teammail;
APP_GROUP_ID = group.com.workavia.mail;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@@ -1493,10 +1493,10 @@
MARKETING_VERSION = 1.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail.TwakeMailNSE;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail.TwakeMailNSE;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = tmail.nse.development.profile;
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.linagora.ios.teammail.TwakeMailNSE";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.workavia.mail.TwakeMailNSE";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
SWIFT_EMIT_LOC_STRINGS = YES;
@@ -1510,7 +1510,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6B7C6E49525344DE515F7373 /* Pods-TwakeMailNSE.release.xcconfig */;
buildSettings = {
APP_GROUP_ID = group.com.linagora.teammail;
APP_GROUP_ID = group.com.workavia.mail;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@@ -1540,10 +1540,10 @@
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail.TwakeMailNSE;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail.TwakeMailNSE;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = tmail.nse.distribution.profile;
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.linagora.ios.teammail.TwakeMailNSE";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.workavia.mail.TwakeMailNSE";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
@@ -1555,7 +1555,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = AF31502A83CA492E27C36A7B /* Pods-TwakeMailNSE.profile.xcconfig */;
buildSettings = {
APP_GROUP_ID = group.com.linagora.teammail;
APP_GROUP_ID = group.com.workavia.mail;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@@ -1585,10 +1585,10 @@
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.linagora.ios.teammail.TwakeMailNSE;
PRODUCT_BUNDLE_IDENTIFIER = com.workavia.mail.TwakeMailNSE;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = tmail.nse.development.profile;
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.linagora.ios.teammail.TwakeMailNSE";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.workavia.mail.TwakeMailNSE";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
+3 -4
View File
@@ -9,7 +9,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Twake Mail</string>
<string>Workavia Mail</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
@@ -17,7 +17,7 @@
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Twake Mail</string>
<string>Workavia Mail</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
@@ -32,8 +32,7 @@
<key>CFBundleURLSchemes</key>
<array>
<string>ShareMedia-$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<string>teammail.mobile</string>
<string>twakemail.mobile</string>
<string>workaviamail.mobile</string>
<string>mailto</string>
</array>
</dict>
+2 -2
View File
@@ -6,11 +6,11 @@
<string>development</string>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.linagora.teammail</string>
<string>group.com.workavia.mail</string>
</array>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.linagora.ios.teammail.shared</string>
<string>$(AppIdentifierPrefix)com.workavia.mail.shared</string>
</array>
</dict>
</plist>
+2 -2
View File
@@ -6,11 +6,11 @@
<string>development</string>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.linagora.teammail</string>
<string>group.com.workavia.mail</string>
</array>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.linagora.ios.teammail.shared</string>
<string>$(AppIdentifierPrefix)com.workavia.mail.shared</string>
</array>
</dict>
</plist>
@@ -4,7 +4,7 @@
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.linagora.teammail</string>
<string>group.com.workavia.mail</string>
</array>
</dict>
</plist>
@@ -3,9 +3,9 @@ import Alamofire
class TokenRefreshManager {
private let MOBIE_CLIENT_ID = "teammail-mobile"
private let MOBIE_REDIRECT_URL = "teammail.mobile://oauthredirect"
private let MOBIE_REDIRECT_URL = "workaviamail.mobile://oauthredirect"
private let OIDC_SCOPES = ["openid", "profile", "email", "offline_access"]
private let TWP_MOBIE_REDIRECT_URL = "twakemail.mobile://redirect"
private let TWP_MOBIE_REDIRECT_URL = "workaviamail.mobile://redirect"
private let GRANT_TYPE = "grant_type"
private let REFRESH_TOKEN = "refresh_token"
+2 -2
View File
@@ -3,9 +3,9 @@
<plist version="1.0">
<dict>
<key>keychainAccessGroupIdentifier</key>
<string>KUT463DS29.com.linagora.ios.teammail.shared</string>
<string>KUT463DS29.com.workavia.mail.shared</string>
<key>baseBundleIdentifier</key>
<string>com.linagora.ios.teammail</string>
<string>com.workavia.mail</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
+2 -2
View File
@@ -4,11 +4,11 @@
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.linagora.teammail</string>
<string>group.com.workavia.mail</string>
</array>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.linagora.ios.teammail.shared</string>
<string>$(AppIdentifierPrefix)com.workavia.mail.shared</string>
</array>
</dict>
</plist>
+1 -1
View File
@@ -1,4 +1,4 @@
app_identifier("com.linagora.ios.teammail") # The bundle identifier of your app
app_identifier("com.workavia.mail") # The bundle identifier of your app
# For more information about the Appfile, see:
+1 -1
View File
@@ -4,7 +4,7 @@ storage_mode("git")
type("development") # The default type, can be: appstore, adhoc, enterprise or development
app_identifier(["com.linagora.ios.teammail", "com.linagora.ios.teammail.TeamMailShareExtension", "com.linagora.ios.teammail.TwakeMailNSE"])
app_identifier(["com.workavia.mail", "com.workavia.mail.TeamMailShareExtension", "com.workavia.mail.TwakeMailNSE"])
# username("user@fastlane.tools") # Your Apple Developer Portal username
# For all available options run `fastlane match --help`