diff --git a/.github/workflows/sideload-apk.yml b/.github/workflows/sideload-apk.yml index f96133ee7c2..d6b290e1bfb 100644 --- a/.github/workflows/sideload-apk.yml +++ b/.github/workflows/sideload-apk.yml @@ -4,14 +4,14 @@ run-name: Build sideloadable debug APK on: workflow_dispatch: push: - branches: [dive-3575-apk] + branches: [dive-3578-rebrand] concurrency: group: sideload-apk-${{ github.ref }} cancel-in-progress: true permissions: - contents: read + contents: write jobs: apk: @@ -29,9 +29,28 @@ jobs: run: just mobile-build-android - name: Show APK output run: ls -la mobile/build/app/outputs/flutter-apk/ - - name: Upload APK + - name: Name the APK for the phone + run: | + set -euo pipefail + cp mobile/build/app/outputs/flutter-apk/app-debug.apk 5dive-${{ github.run_number }}.apk + ls -la 5dive-*.apk + - name: Upload APK (CI artifact, needs a GitHub login to fetch) uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: - name: buzz-debug-apk - path: mobile/build/app/outputs/flutter-apk/*.apk + name: fivedive-debug-apk + path: 5dive-*.apk if-no-files-found: error + # A CI artifact link is useless on a phone (it 302s to a login). Publish the + # same bytes as a prerelease asset so the download is anonymous. + - name: Publish as a prerelease asset + env: + GH_TOKEN: ${{ github.token }} + run: | + set -euo pipefail + tag="mobile-sideload-5dive-${{ github.run_number }}" + gh release create "$tag" "5dive-${{ github.run_number }}.apk" \ + --repo "${{ github.repository }}" \ + --prerelease \ + --title "5dive mobile (sideload debug) - $tag" \ + --notes "Debug APK of the 5dive-branded mobile app. Android only. applicationId com.fivedive.app - installs alongside any existing Buzz app." + gh release view "$tag" --repo "${{ github.repository }}" --json assets --jq '.assets[].url' diff --git a/mobile/README.md b/mobile/README.md index 6a7f38bdf27..e52a127beef 100644 --- a/mobile/README.md +++ b/mobile/README.md @@ -23,7 +23,7 @@ cd mobile && flutter run Debug builds produced from a git worktree get a unique app identifier keyed to the **worktree directory name** (`com.buzz.buzzMobile.` on iOS, -`xyz.block.buzz.mobile.` on Android) plus a display-only branch label +`com.fivedive.app.` on Android) plus a display-only branch label in the app name (`Buzz (my-branch)`, or a short SHA when the worktree is detached). Because the identifier follows the directory rather than the branch, one worktree keeps exactly one installed app — and its login state — diff --git a/mobile/android/app/build.gradle.kts b/mobile/android/app/build.gradle.kts index ca40ee16c69..8842aea042d 100644 --- a/mobile/android/app/build.gradle.kts +++ b/mobile/android/app/build.gradle.kts @@ -83,7 +83,7 @@ android { } defaultConfig { - applicationId = "xyz.block.buzz.mobile" + applicationId = "com.fivedive.app" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion @@ -91,7 +91,7 @@ android { versionCode = flutter.versionCode versionName = flutter.versionName testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - resValue("string", "app_name", "Buzz") + resValue("string", "app_name", "5dive") } signingConfigs { @@ -113,7 +113,7 @@ android { applicationIdSuffix = worktreeIdSuffix } if (worktreeLabel != null) { - resValue("string", "app_name", "Buzz ($worktreeLabel)") + resValue("string", "app_name", "5dive ($worktreeLabel)") } } release { diff --git a/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index d208067bfc8..4b58271462e 100644 Binary files a/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png index 4d6094a2e5f..ca8f80f489f 100644 Binary files a/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and b/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png index d208067bfc8..da5e3ee070a 100644 Binary files a/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and b/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/mobile/android/app/src/main/res/mipmap-hdpi/launch_image.png b/mobile/android/app/src/main/res/mipmap-hdpi/launch_image.png index a455bf3a5d0..eb62971f738 100644 Binary files a/mobile/android/app/src/main/res/mipmap-hdpi/launch_image.png and b/mobile/android/app/src/main/res/mipmap-hdpi/launch_image.png differ diff --git a/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 5689f03941e..7c298575007 100644 Binary files a/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png index 1f13b223a68..d53a1590c6f 100644 Binary files a/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and b/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png index 5689f03941e..5f3d1541386 100644 Binary files a/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and b/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/mobile/android/app/src/main/res/mipmap-mdpi/launch_image.png b/mobile/android/app/src/main/res/mipmap-mdpi/launch_image.png index 693a977f0d5..40b85016409 100644 Binary files a/mobile/android/app/src/main/res/mipmap-mdpi/launch_image.png and b/mobile/android/app/src/main/res/mipmap-mdpi/launch_image.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index d3f0d129f0a..8bcb29d0b5b 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png index c99da7935d7..3b877b44b13 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and b/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png index d3f0d129f0a..021def915b2 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and b/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xhdpi/launch_image.png b/mobile/android/app/src/main/res/mipmap-xhdpi/launch_image.png index bb2e93b3854..c43ed19c3b7 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xhdpi/launch_image.png and b/mobile/android/app/src/main/res/mipmap-xhdpi/launch_image.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 50252891ab9..daa4628a93b 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png index a6f183b68ea..fb45af6b892 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and b/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png index 50252891ab9..101ca3fc383 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and b/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xxhdpi/launch_image.png b/mobile/android/app/src/main/res/mipmap-xxhdpi/launch_image.png index 384d0dc9ded..835728272f8 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xxhdpi/launch_image.png and b/mobile/android/app/src/main/res/mipmap-xxhdpi/launch_image.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 19603f8913f..95ca4e00550 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png index 2e58de23cc0..60c031afecd 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and b/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png index 19603f8913f..f83be66f129 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and b/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/mobile/android/app/src/main/res/mipmap-xxxhdpi/launch_image.png b/mobile/android/app/src/main/res/mipmap-xxxhdpi/launch_image.png index 935e5ba93a8..444101dec6c 100644 Binary files a/mobile/android/app/src/main/res/mipmap-xxxhdpi/launch_image.png and b/mobile/android/app/src/main/res/mipmap-xxxhdpi/launch_image.png differ diff --git a/mobile/android/app/src/main/res/values/ic_launcher_background.xml b/mobile/android/app/src/main/res/values/ic_launcher_background.xml index 4efb408f52c..d0910421b8e 100644 --- a/mobile/android/app/src/main/res/values/ic_launcher_background.xml +++ b/mobile/android/app/src/main/res/values/ic_launcher_background.xml @@ -1,4 +1,4 @@ - #000 + #1A1A1F \ No newline at end of file diff --git a/mobile/assets/images/5dive-mark.png b/mobile/assets/images/5dive-mark.png new file mode 100644 index 00000000000..d5b92aa59d9 Binary files /dev/null and b/mobile/assets/images/5dive-mark.png differ diff --git a/mobile/ios/Flutter/Debug.xcconfig b/mobile/ios/Flutter/Debug.xcconfig index 1f35905051e..87b832e0ab6 100644 --- a/mobile/ios/Flutter/Debug.xcconfig +++ b/mobile/ios/Flutter/Debug.xcconfig @@ -6,7 +6,7 @@ // `mobile/ios/Flutter/AppOverrides.xcconfig` containing // `BUNDLE_IDENTIFIER = your.app.id` (gitignored). BUNDLE_IDENTIFIER = com.buzz.buzzMobile -APP_DISPLAY_NAME = Buzz +APP_DISPLAY_NAME = 5dive // Worktree-aware debug identity (gitignored, written by // scripts/mobile-worktree-overrides.sh): a per-worktree bundle identifier diff --git a/mobile/ios/Flutter/Release.xcconfig b/mobile/ios/Flutter/Release.xcconfig index d287c5fb432..ad7d3d4d7d7 100644 --- a/mobile/ios/Flutter/Release.xcconfig +++ b/mobile/ios/Flutter/Release.xcconfig @@ -5,7 +5,7 @@ // enterprise-signed distribution) override these without patching tracked // files by writing `mobile/ios/Flutter/AppOverrides.xcconfig` (gitignored). BUNDLE_IDENTIFIER = com.buzz.buzzMobile -APP_DISPLAY_NAME = Buzz +APP_DISPLAY_NAME = 5dive CODE_SIGN_STYLE = Automatic CODE_SIGN_IDENTITY = iPhone Developer #include? "AppOverrides.xcconfig" diff --git a/mobile/ios/Runner/Info.plist b/mobile/ios/Runner/Info.plist index 80292ff8bb7..864129c9760 100644 --- a/mobile/ios/Runner/Info.plist +++ b/mobile/ios/Runner/Info.plist @@ -15,7 +15,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - Buzz + 5dive CFBundlePackageType APPL CFBundleShortVersionString diff --git a/mobile/lib/app.dart b/mobile/lib/app.dart index f2726b9f13a..d64c456952f 100644 --- a/mobile/lib/app.dart +++ b/mobile/lib/app.dart @@ -113,7 +113,7 @@ class App extends HookConsumerWidget { }); return MaterialApp( - title: 'Buzz', + title: '5dive', theme: AppTheme.light( colorScheme: lightScheme, topSectionGradient: buzzLightGradient, @@ -162,7 +162,7 @@ class _SplashScreen extends StatelessWidget { Widget build(BuildContext context) { return const Scaffold( body: Center( - child: BuzzLoadingIndicator(size: 56, semanticLabel: 'Starting Buzz'), + child: BuzzLoadingIndicator(size: 56, semanticLabel: 'Starting 5dive'), ), ); } diff --git a/mobile/lib/features/channels/compose_bar/camera_preview.dart b/mobile/lib/features/channels/compose_bar/camera_preview.dart index 1a06534d6e3..69653011aa4 100644 --- a/mobile/lib/features/channels/compose_bar/camera_preview.dart +++ b/mobile/lib/features/channels/compose_bar/camera_preview.dart @@ -313,7 +313,7 @@ String _cameraErrorMessage(Object error) { return switch (error.code) { 'CameraAccessDenied' || 'CameraAccessDeniedWithoutPrompt' || - 'CameraAccessRestricted' => 'Camera access is turned off for Buzz.', + 'CameraAccessRestricted' => 'Camera access is turned off for 5dive.', 'no-cameras' => 'Camera isn’t available on this device.', _ => 'Camera couldn’t start. Try again.', }; diff --git a/mobile/lib/features/channels/photo_library.dart b/mobile/lib/features/channels/photo_library.dart index 8a01de01e0f..1b09925cebb 100644 --- a/mobile/lib/features/channels/photo_library.dart +++ b/mobile/lib/features/channels/photo_library.dart @@ -39,7 +39,7 @@ class PhotoLibraryAccessException implements Exception { const PhotoLibraryAccessException(); @override - String toString() => 'Photo access is turned off for Buzz.'; + String toString() => 'Photo access is turned off for 5dive.'; } /// Provides the device photo library. Tests can override this with fixtures. diff --git a/mobile/lib/features/invites/invite_join_sheet.dart b/mobile/lib/features/invites/invite_join_sheet.dart index b0e0cb6f7b4..9e399e850cb 100644 --- a/mobile/lib/features/invites/invite_join_sheet.dart +++ b/mobile/lib/features/invites/invite_join_sheet.dart @@ -41,7 +41,7 @@ class InviteJoinSheet extends ConsumerWidget { Icon(LucideIcons.userPlus, size: 40, color: context.colors.primary), const SizedBox(height: Grid.sm), Text( - 'Join this Buzz community?', + 'Join this 5dive community?', style: context.textTheme.titleLarge, ), const SizedBox(height: Grid.xxs), diff --git a/mobile/lib/features/pairing/pairing_page.dart b/mobile/lib/features/pairing/pairing_page.dart index 7aabe8aed74..e941fd3ea9b 100644 --- a/mobile/lib/features/pairing/pairing_page.dart +++ b/mobile/lib/features/pairing/pairing_page.dart @@ -10,7 +10,7 @@ import 'package:lucide_icons_flutter/lucide_icons.dart'; import '../../shared/security/sensitive_action_authorizer.dart'; import '../../shared/theme/theme.dart'; import '../../shared/widgets/buzz_loading_indicator.dart'; -import '../../shared/widgets/tappable_flapping_bee.dart'; +import '../../shared/widgets/fivedive_mark.dart'; import 'pairing_provider.dart'; import 'pairing_qr_scanner.dart'; @@ -279,8 +279,8 @@ class _SasVerificationView extends StatelessWidget { Text( sendsIdentityToDesktop - ? 'This sends your full Buzz identity to the desktop\nand grants it permanent access. Only confirm a\ndesktop you trust and a recovery you started.' - : 'You are about to transfer your Buzz identity\nto this device. Only confirm if you initiated\nthis pairing from your desktop.', + ? 'This sends your full 5dive identity to the desktop\nand grants it permanent access. Only confirm a\ndesktop you trust and a recovery you started.' + : 'You are about to transfer your 5dive identity\nto this device. Only confirm if you initiated\nthis pairing from your desktop.', textAlign: TextAlign.center, style: context.textTheme.bodySmall?.copyWith( color: context.colors.onSurfaceVariant, diff --git a/mobile/lib/features/pairing/pairing_page/pairing_welcome_view.dart b/mobile/lib/features/pairing/pairing_page/pairing_welcome_view.dart index 49fc185133f..433a0aff9cd 100644 --- a/mobile/lib/features/pairing/pairing_page/pairing_welcome_view.dart +++ b/mobile/lib/features/pairing/pairing_page/pairing_welcome_view.dart @@ -50,14 +50,11 @@ class _PairingWelcomeView extends StatelessWidget { shape: BoxShape.circle, color: Color(0x4DFFFFFF), ), - child: const TappableFlappingBee( - width: 76, - color: _onboardingInk, - ), + child: const FiveDiveMark(height: 72, color: _onboardingInk), ), const SizedBox(height: Grid.sm), Text( - 'Welcome to Buzz', + 'Welcome to 5dive', textAlign: TextAlign.center, style: context.textTheme.headlineSmall?.copyWith( color: _onboardingInk, diff --git a/mobile/lib/features/settings/settings_page/connection_section.dart b/mobile/lib/features/settings/settings_page/connection_section.dart index 15cecdd4c67..31531db1d32 100644 --- a/mobile/lib/features/settings/settings_page/connection_section.dart +++ b/mobile/lib/features/settings/settings_page/connection_section.dart @@ -51,7 +51,7 @@ class _ConnectionSection extends ConsumerWidget { ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text( - 'Buzz did not return to the foreground. Try again.', + '5dive did not return to the foreground. Try again.', ), ), ); diff --git a/mobile/lib/shared/security/sensitive_action_authorizer.dart b/mobile/lib/shared/security/sensitive_action_authorizer.dart index b229f633302..abfaeaedc79 100644 --- a/mobile/lib/shared/security/sensitive_action_authorizer.dart +++ b/mobile/lib/shared/security/sensitive_action_authorizer.dart @@ -25,7 +25,7 @@ class LocalSensitiveActionAuthorizer implements SensitiveActionAuthorizer { Future authorizeIdentityAction({ required bool biometricOnly, }) => _authorize( - localizedReason: 'Confirm sending your Buzz identity to desktop', + localizedReason: 'Confirm sending your 5dive identity to desktop', biometricOnly: biometricOnly, ); diff --git a/mobile/lib/shared/widgets/fivedive_mark.dart b/mobile/lib/shared/widgets/fivedive_mark.dart new file mode 100644 index 00000000000..d4ec6324dc9 --- /dev/null +++ b/mobile/lib/shared/widgets/fivedive_mark.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; + +/// The 5dive mark, painted as a solid silhouette in [color]. +/// +/// The asset is an alpha mask cut from the same source art the launcher icons +/// are generated from, so the home screen and the onboarding hero show one +/// mark. It replaces upstream's tap-to-flutter bee on the welcome screen; the +/// bee itself still drives the pull-to-refresh indicator. +class FiveDiveMark extends StatelessWidget { + /// The rendered height of the mark. + /// + /// Width follows from the mark's 342:512 aspect ratio. + final double height; + + /// The color used for the mark's silhouette. + final Color color; + + const FiveDiveMark({required this.height, required this.color, super.key}); + + @override + Widget build(BuildContext context) { + return Image.asset( + 'assets/images/5dive-mark.png', + height: height, + color: color, + semanticLabel: '5dive', + ); + } +} diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index 2cc049c5fea..2429575c67e 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -57,6 +57,7 @@ flutter: uses-material-design: true assets: - assets/images/buzz-icon.png + - assets/images/5dive-mark.png # Generated by `just mobile-emoji-data` from the same emoji-mart dataset # desktop uses. Do not hand-edit. - assets/emoji/emoji-data.json diff --git a/mobile/test/features/channels/deep_link_dispatcher_test.dart b/mobile/test/features/channels/deep_link_dispatcher_test.dart index ea6bc226c21..78960218c34 100644 --- a/mobile/test/features/channels/deep_link_dispatcher_test.dart +++ b/mobile/test/features/channels/deep_link_dispatcher_test.dart @@ -225,7 +225,7 @@ void main() { expect(storage.loadCalls, 1); expect(pending.consumeCalls, 1); - expect(find.text('Join this Buzz community?'), findsOneWidget); + expect(find.text('Join this 5dive community?'), findsOneWidget); }); testWidgets('waits for an invite modal before preparing the next invite', ( @@ -263,7 +263,7 @@ void main() { expect(pending.consumeCalls, 1); expect(pending.current, same(second)); expect(container.read(inviteJoinProvider).invite, same(first)); - expect(find.text('Join this Buzz community?'), findsOneWidget); + expect(find.text('Join this 5dive community?'), findsOneWidget); await tester.tap(find.widgetWithText(OutlinedButton, 'Cancel')); await tester.pumpAndSettle(); @@ -271,7 +271,7 @@ void main() { expect(pending.consumeCalls, 2); expect(pending.current, isNull); expect(container.read(inviteJoinProvider).invite, same(second)); - expect(find.text('Join this Buzz community?'), findsOneWidget); + expect(find.text('Join this 5dive community?'), findsOneWidget); }); testWidgets('dispatches a queued channel after preparing an invite', ( @@ -308,7 +308,7 @@ void main() { expect(pending.consumeCalls, 1); expect(pending.current, same(channelLink)); - expect(find.text('Join this Buzz community?'), findsOneWidget); + expect(find.text('Join this 5dive community?'), findsOneWidget); expect(find.byType(_CapturedDestination), findsNothing); await tester.tap(find.widgetWithText(OutlinedButton, 'Cancel')); @@ -354,7 +354,7 @@ void main() { ); await tester.pumpAndSettle(); - expect(find.text('Join this Buzz community?'), findsOneWidget); + expect(find.text('Join this 5dive community?'), findsOneWidget); expect(inviteContainer.read(pendingDeepLinkProvider), isNull); final messageContainer = ProviderContainer( diff --git a/mobile/test/features/pairing/pairing_page_test.dart b/mobile/test/features/pairing/pairing_page_test.dart index 34b9f4cfb1c..19a5ec5a9a9 100644 --- a/mobile/test/features/pairing/pairing_page_test.dart +++ b/mobile/test/features/pairing/pairing_page_test.dart @@ -10,7 +10,7 @@ import 'package:buzz/shared/community/community.dart'; import 'package:buzz/shared/security/sensitive_action_authorizer.dart'; import 'package:buzz/shared/theme/theme.dart'; import 'package:buzz/shared/widgets/buzz_loading_indicator.dart'; -import 'package:buzz/shared/widgets/tappable_flapping_bee.dart'; +import 'package:buzz/shared/widgets/fivedive_mark.dart'; import '../../helpers/widget_helpers.dart'; @@ -23,8 +23,8 @@ void main() { WidgetHelpers.testable(child: const PairingPage()), ); - expect(find.byType(TappableFlappingBee), findsOneWidget); - expect(find.text('Welcome to Buzz'), findsOneWidget); + expect(find.byType(FiveDiveMark), findsOneWidget); + expect(find.text('Welcome to 5dive'), findsOneWidget); expect(find.text('Scan a QR code'), findsOneWidget); expect(find.text('Use pairing code'), findsOneWidget); expect(find.text('Connect'), findsNothing); @@ -340,7 +340,7 @@ void main() { ), ); - expect(find.textContaining('full Buzz identity'), findsOneWidget); + expect(find.textContaining('full 5dive identity'), findsOneWidget); expect(find.textContaining('permanent access'), findsOneWidget); expect(find.text('Codes Match'), findsOneWidget); }); diff --git a/mobile/test/features/settings/connection_section_test.dart b/mobile/test/features/settings/connection_section_test.dart index 2a197222ab5..2978474b1fb 100644 --- a/mobile/test/features/settings/connection_section_test.dart +++ b/mobile/test/features/settings/connection_section_test.dart @@ -86,7 +86,7 @@ void main() { expect(pairing.resetCalls, 1); expect(find.text('Identity recovery'), findsNothing); expect( - find.text('Buzz did not return to the foreground. Try again.'), + find.text('5dive did not return to the foreground. Try again.'), findsOneWidget, ); }); diff --git a/mobile/test/shared/security/sensitive_action_authorizer_test.dart b/mobile/test/shared/security/sensitive_action_authorizer_test.dart index 940b9f12eaf..966399f9b03 100644 --- a/mobile/test/shared/security/sensitive_action_authorizer_test.dart +++ b/mobile/test/shared/security/sensitive_action_authorizer_test.dart @@ -35,7 +35,7 @@ void main() { expect(result, DeviceAuthResult.success); verify( () => authentication.authenticate( - localizedReason: 'Confirm sending your Buzz identity to desktop', + localizedReason: 'Confirm sending your 5dive identity to desktop', authMessages: any(named: 'authMessages'), biometricOnly: false, sensitiveTransaction: true, diff --git a/mobile/test/widget_test.dart b/mobile/test/widget_test.dart index a72b34852a6..775f3f9e5ac 100644 --- a/mobile/test/widget_test.dart +++ b/mobile/test/widget_test.dart @@ -22,7 +22,7 @@ void main() { ), ); await tester.pump(); - expect(find.text('Welcome to Buzz'), findsOneWidget); + expect(find.text('Welcome to 5dive'), findsOneWidget); }); } diff --git a/scripts/mobile-worktree-clean.sh b/scripts/mobile-worktree-clean.sh index a64f52a0d16..66f1c26b67a 100755 --- a/scripts/mobile-worktree-clean.sh +++ b/scripts/mobile-worktree-clean.sh @@ -1,14 +1,14 @@ #!/usr/bin/env bash # Uninstalls stale worktree-suffixed Buzz debug builds from booted iOS # simulators and connected Android devices/emulators. Production installs -# (com.buzz.buzzMobile / xyz.block.buzz.mobile, no suffix) are never touched: +# (com.buzz.buzzMobile / com.fivedive.app, no suffix) are never touched: # only identifiers with a worktree suffix appended after the production id # are matched. Run `just mobile-clean` (or this script directly); pass # --dry-run to list what would be removed without uninstalling. set -euo pipefail ios_prefix="com.buzz.buzzMobile." -android_prefix="xyz.block.buzz.mobile." +android_prefix="com.fivedive.app." dry_run=0 if [[ "${1:-}" == "--dry-run" ]]; then diff --git a/scripts/mobile-worktree-overrides.sh b/scripts/mobile-worktree-overrides.sh index 176180db1e9..33126eb490e 100755 --- a/scripts/mobile-worktree-overrides.sh +++ b/scripts/mobile-worktree-overrides.sh @@ -78,7 +78,7 @@ cat > "$ios_overrides" < "$android_props" <$(APP_DISPLAY_NAME)' "$plist" \ && pass "Info.plist display name resolves from build settings" \ || fail "Info.plist CFBundleDisplayName must be \$(APP_DISPLAY_NAME)" grep -q 'android:label="@string/app_name"' "$manifest" \ && pass "Android manifest label resolves from resources" \ || fail "Android manifest label must be @string/app_name" -grep -q 'resValue("string", "app_name", "Buzz")' "$gradle" \ - && pass "Gradle default app_name stays Buzz" \ +grep -q 'resValue("string", "app_name", "5dive")' "$gradle" \ + && pass "Gradle default app_name stays 5dive" \ || fail "Gradle must declare the default app_name resValue" grep -q 'worktreeLabel.matches' "$gradle" \ && pass "Gradle validates the worktree label before use" \ @@ -208,9 +208,9 @@ case "$1 $2" in esac if [[ "$1" == "devices" ]]; then exit 0; fi if [[ "$3 $4 $5" == "shell pm list" ]]; then - printf 'package:xyz.block.buzz.mobile\n' - printf 'package:xyz.block.buzz.mobile.feature_work_1\n' - printf 'package:xyz.block.buzz.mobile.w_2fast\n' + printf 'package:com.fivedive.app\n' + printf 'package:com.fivedive.app.feature_work_1\n' + printf 'package:com.fivedive.app.w_2fast\n' printf 'package:com.android.settings\n' exit 0 fi @@ -221,10 +221,10 @@ chmod +x "$stub_bin/adb" # No xcrun stub: the iOS pass is skipped when xcrun is absent, which also # keeps this test honest on Linux CI. clean_out="$(PATH="$stub_bin:/usr/bin:/bin" bash "$clean_script" --dry-run)" -printf '%s\n' "$clean_out" | grep -q 'xyz\.block\.buzz\.mobile\.feature_work_1' \ +printf '%s\n' "$clean_out" | grep -q 'com\.fivedive\.app\.feature_work_1' \ && pass "cleanup targets worktree-suffixed Android installs" \ || fail "cleanup must list suffixed installs, got: $clean_out" -printf '%s\n' "$clean_out" | grep -q 'xyz\.block\.buzz\.mobile\.w_2fast' \ +printf '%s\n' "$clean_out" | grep -q 'com\.fivedive\.app\.w_2fast' \ && pass "cleanup targets letter-prefixed suffixed installs" \ || fail "cleanup must list w_-prefixed installs, got: $clean_out" printf '%s\n' "$clean_out" | grep -q 'mobile\.feature_work_1' || true