From 26a7d004d2477467c0bc3b547b2abcb4ac99fcee Mon Sep 17 00:00:00 2001
From: Wes <wesbillman@users.noreply.github.com>
Date: Wed, 10 Jun 2026 14:21:38 -0600
Subject: [PATCH] Rename mobile app to Buzz

Rename the Flutter package, app display names, bundle/application IDs,
platform package/channel names, persisted keys, pairing scheme text, assets,
and tests from Sprout to Buzz within the mobile app.

Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
---
 mobile/.env.json.example                      |   4 +-
 mobile/README.md                              |   4 +-
 mobile/android/app/build.gradle.kts           |   4 +-
 .../android/app/src/main/AndroidManifest.xml  |   2 +-
 .../buzz_mobile}/MainActivity.kt              |   4 +-
 .../src/main/res/mipmap-hdpi/ic_launcher.png  | Bin 3503 -> 6085 bytes
 .../mipmap-hdpi/ic_launcher_foreground.png    | Bin 1761 -> 7161 bytes
 .../res/mipmap-hdpi/ic_launcher_round.png     | Bin 3503 -> 6085 bytes
 .../src/main/res/mipmap-hdpi/launch_image.png | Bin 307829 -> 19245 bytes
 .../src/main/res/mipmap-mdpi/ic_launcher.png  | Bin 2219 -> 3912 bytes
 .../mipmap-mdpi/ic_launcher_foreground.png    | Bin 1299 -> 5015 bytes
 .../res/mipmap-mdpi/ic_launcher_round.png     | Bin 2219 -> 3912 bytes
 .../src/main/res/mipmap-mdpi/launch_image.png | Bin 138205 -> 12626 bytes
 .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 5318 -> 8222 bytes
 .../mipmap-xhdpi/ic_launcher_foreground.png   | Bin 2167 -> 9385 bytes
 .../res/mipmap-xhdpi/ic_launcher_round.png    | Bin 5318 -> 8222 bytes
 .../main/res/mipmap-xhdpi/launch_image.png    | Bin 499424 -> 26692 bytes
 .../main/res/mipmap-xxhdpi/ic_launcher.png    | Bin 9103 -> 12439 bytes
 .../mipmap-xxhdpi/ic_launcher_foreground.png  | Bin 3082 -> 14196 bytes
 .../res/mipmap-xxhdpi/ic_launcher_round.png   | Bin 9103 -> 12439 bytes
 .../main/res/mipmap-xxhdpi/launch_image.png   | Bin 1074051 -> 42160 bytes
 .../main/res/mipmap-xxxhdpi/ic_launcher.png   | Bin 13984 -> 16352 bytes
 .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 3935 -> 19245 bytes
 .../res/mipmap-xxxhdpi/ic_launcher_round.png  | Bin 13984 -> 16352 bytes
 .../main/res/mipmap-xxxhdpi/launch_image.png  | Bin 1689596 -> 63760 bytes
 mobile/ios/Flutter/Debug.xcconfig             |   2 +-
 mobile/ios/Flutter/Release.xcconfig           |   2 +-
 mobile/ios/Runner.xcodeproj/project.pbxproj   |  12 ++--
 mobile/ios/Runner/AppDelegate.swift           |   2 +-
 .../Icon-App-1024x1024@1x.png                 | Bin 341095 -> 47018 bytes
 .../AppIcon.appiconset/Icon-App-20x20@1x.png  | Bin 689 -> 1629 bytes
 .../AppIcon.appiconset/Icon-App-20x20@2x.png  | Bin 1769 -> 3279 bytes
 .../AppIcon.appiconset/Icon-App-20x20@3x.png  | Bin 2952 -> 5007 bytes
 .../AppIcon.appiconset/Icon-App-29x29@1x.png  | Bin 1115 -> 2335 bytes
 .../AppIcon.appiconset/Icon-App-29x29@2x.png  | Bin 2833 -> 4832 bytes
 .../AppIcon.appiconset/Icon-App-29x29@3x.png  | Bin 4831 -> 7427 bytes
 .../AppIcon.appiconset/Icon-App-40x40@1x.png  | Bin 1769 -> 3279 bytes
 .../AppIcon.appiconset/Icon-App-40x40@2x.png  | Bin 4330 -> 6809 bytes
 .../AppIcon.appiconset/Icon-App-40x40@3x.png  | Bin 7254 -> 10249 bytes
 .../AppIcon.appiconset/Icon-App-60x60@2x.png  | Bin 7254 -> 10249 bytes
 .../AppIcon.appiconset/Icon-App-60x60@3x.png  | Bin 13516 -> 15306 bytes
 .../AppIcon.appiconset/Icon-App-76x76@1x.png  | Bin 4025 -> 6401 bytes
 .../AppIcon.appiconset/Icon-App-76x76@2x.png  | Bin 10262 -> 12996 bytes
 .../Icon-App-83.5x83.5@2x.png                 | Bin 12184 -> 14229 bytes
 .../LaunchImage.imageset/LaunchImage.png      | Bin 60230 -> 7438 bytes
 .../LaunchImage.imageset/LaunchImage@2x.png   | Bin 193827 -> 14697 bytes
 .../LaunchImage.imageset/LaunchImage@3x.png   | Bin 452746 -> 22744 bytes
 mobile/ios/Runner/Info.plist                  |   8 +--
 mobile/lib/app.dart                           |   2 +-
 .../agent_activity/observer_models.dart       |   4 +-
 .../agent_activity/transcript_builder.dart    |  60 +++++++++---------
 .../channel_mutes/channel_mutes_storage.dart  |   2 +-
 .../channel_sections_storage.dart             |   3 +-
 .../channel_stars/channel_stars_storage.dart  |   2 +-
 .../lib/features/channels/emoji_picker.dart   |   2 +-
 .../read_state/read_state_storage.dart        |  11 ++--
 .../features/channels/timeline_message.dart   |   2 +-
 .../features/custom_emoji/custom_emoji.dart   |   2 +-
 mobile/lib/features/pairing/pairing_page.dart |   8 +--
 .../features/pairing/pairing_provider.dart    |   8 +--
 mobile/lib/shared/relay/media_upload.dart     |   4 +-
 mobile/lib/shared/relay/nostr_filters.dart    |   2 +-
 mobile/lib/shared/relay/nostr_models.dart     |   4 +-
 mobile/lib/shared/relay/relay_client.dart     |   2 +-
 mobile/lib/shared/relay/relay_provider.dart   |   4 +-
 mobile/lib/shared/theme/accent_colors.dart    |   2 +-
 mobile/lib/shared/theme/color_scheme.dart     |   4 +-
 mobile/lib/shared/theme/theme_provider.dart   |   6 +-
 .../shared/workspace/workspace_storage.dart   |  12 ++--
 mobile/pubspec.yaml                           |   4 +-
 .../features/activity/activity_page_test.dart |  16 ++---
 .../features/activity/feed_item_test.dart     |   2 +-
 .../observer_subscription_test.dart           |   8 +--
 .../transcript_builder_test.dart              |  12 ++--
 .../channels/channel_detail_page_test.dart    |  24 +++----
 .../channel_management_provider_test.dart     |   4 +-
 .../channel_messages_provider_test.dart       |   4 +-
 .../channel_stars_storage_test.dart           |   2 +-
 .../test/features/channels/channel_test.dart  |   2 +-
 .../features/channels/channels_page_test.dart |  14 ++--
 .../channels/channels_provider_test.dart      |   6 +-
 .../features/channels/compose_bar_test.dart   |  12 ++--
 .../channels/date_formatters_test.dart        |   2 +-
 .../channels/message_content_test.dart        |  14 ++--
 .../features/channels/message_media_test.dart |   2 +-
 .../read_state/read_state_format_test.dart    |   4 +-
 .../read_state/read_state_manager_test.dart   |   6 +-
 .../read_state/read_state_time_test.dart      |   2 +-
 .../channels/timeline_message_test.dart       |   6 +-
 .../unread_badge_provider_test.dart           |   8 +--
 .../custom_emoji/custom_emoji_test.dart       |   4 +-
 .../features/forum/forum_models_test.dart     |   2 +-
 .../features/forum/forum_widgets_test.dart    |  22 +++----
 .../features/pairing/pairing_page_test.dart   |   6 +-
 .../pairing/pairing_provider_test.dart        |  20 ++++--
 .../profile/presence_cache_provider_test.dart |   4 +-
 .../pulse/compose_note_page_test.dart         |  12 ++--
 mobile/test/helpers/widget_helpers.dart       |   2 +-
 .../test/shared/relay/media_upload_test.dart  |   4 +-
 .../test/shared/relay/nostr_models_test.dart  |   2 +-
 .../test/shared/relay/relay_session_test.dart |   2 +-
 .../shared/widgets/filter_chip_bar_test.dart  |   4 +-
 .../workspace/workspace_provider_test.dart    |   6 +-
 .../workspace/workspace_storage_test.dart     |  28 ++++----
 mobile/test/widget_test.dart                  |   8 +--
 105 files changed, 239 insertions(+), 231 deletions(-)
 rename mobile/android/app/src/main/kotlin/com/{sprout/sprout_mobile => buzz/buzz_mobile}/MainActivity.kt (98%)

diff --git a/mobile/.env.json.example b/mobile/.env.json.example
index cfbbe0776a..7960d5bf12 100644
--- a/mobile/.env.json.example
+++ b/mobile/.env.json.example
@@ -1,4 +1,4 @@
 {
-  "SPROUT_RELAY_URL": "http://localhost:3000",
-  "SPROUT_DEV_PUBKEY": "<your-hex-pubkey-here>"
+  "BUZZ_RELAY_URL": "http://localhost:3000",
+  "BUZZ_DEV_PUBKEY": "<your-hex-pubkey-here>"
 }
diff --git a/mobile/README.md b/mobile/README.md
index ff85049ac0..d1f455e7f8 100644
--- a/mobile/README.md
+++ b/mobile/README.md
@@ -1,6 +1,6 @@
-# Sprout Mobile
+# Buzz Mobile
 
-Flutter mobile client for Sprout.
+Flutter mobile client for Buzz.
 
 ## Setup
 
diff --git a/mobile/android/app/build.gradle.kts b/mobile/android/app/build.gradle.kts
index 255e4daf51..467fa22326 100644
--- a/mobile/android/app/build.gradle.kts
+++ b/mobile/android/app/build.gradle.kts
@@ -6,7 +6,7 @@ plugins {
 }
 
 android {
-    namespace = "com.sprout.sprout_mobile"
+    namespace = "com.buzz.buzz_mobile"
     compileSdk = flutter.compileSdkVersion
     ndkVersion = flutter.ndkVersion
 
@@ -21,7 +21,7 @@ android {
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
-        applicationId = "com.sprout.sprout_mobile"
+        applicationId = "com.buzz.buzz_mobile"
         // 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
diff --git a/mobile/android/app/src/main/AndroidManifest.xml b/mobile/android/app/src/main/AndroidManifest.xml
index f386b412b6..c362edc926 100644
--- a/mobile/android/app/src/main/AndroidManifest.xml
+++ b/mobile/android/app/src/main/AndroidManifest.xml
@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android">
     <uses-permission android:name="android.permission.CAMERA" />
     <application
-        android:label="Sprout"
+        android:label="Buzz"
         android:name="${applicationName}"
         android:icon="@mipmap/ic_launcher">
         <activity
diff --git a/mobile/android/app/src/main/kotlin/com/sprout/sprout_mobile/MainActivity.kt b/mobile/android/app/src/main/kotlin/com/buzz/buzz_mobile/MainActivity.kt
similarity index 98%
rename from mobile/android/app/src/main/kotlin/com/sprout/sprout_mobile/MainActivity.kt
rename to mobile/android/app/src/main/kotlin/com/buzz/buzz_mobile/MainActivity.kt
index a1081be852..f6c48f3dc1 100644
--- a/mobile/android/app/src/main/kotlin/com/sprout/sprout_mobile/MainActivity.kt
+++ b/mobile/android/app/src/main/kotlin/com/buzz/buzz_mobile/MainActivity.kt
@@ -1,4 +1,4 @@
-package com.sprout.sprout_mobile
+package com.buzz.buzz_mobile
 
 import android.graphics.Bitmap
 import android.graphics.BitmapFactory
@@ -222,7 +222,7 @@ class MainActivity : FlutterActivity() {
     }
 
     companion object {
-        private const val MEDIA_UPLOAD_CHANNEL = "sprout/media_upload"
+        private const val MEDIA_UPLOAD_CHANNEL = "buzz/media_upload"
         private const val SANITIZE_IMAGE_FOR_UPLOAD_METHOD = "sanitizeImageForUpload"
         private const val TRANSCODE_IMAGE_TO_JPEG_METHOD = "transcodeImageToJpeg"
         private const val TRANSCODE_VIDEO_TO_MP4_METHOD = "transcodeVideoToMp4"
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 fc9b06a4a5c9c8edef6ba17f91638d430f8c79b2..e7d0dcc849ee9e0100e331d521828ff15835e865 100644
GIT binary patch
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 276bc96257374306c2c1f819847d8ec958d2aab9..acd83203bd14ba150444ddacdd608bfff1660e77 100644
GIT binary patch
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 fc9b06a4a5c9c8edef6ba17f91638d430f8c79b2..e7d0dcc849ee9e0100e331d521828ff15835e865 100644
GIT binary patch
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 d930d7a26739d4ffcf14d352fdabf00ecf0a1141..6d5e300a5ebd687e0d4e249306cf81f1ab9577f4 100644
GIT binary patch
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 d77d3011ea09d78bcac462e6e16d444aa2ad53f6..2a9e8378398c6ebee80c323afce84bf4e0ca66e1 100644
GIT binary patch
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 0ce6fe0da7166b7874468d21249f218234881ea6..7555097b253cfe74ec68bf010f6a721460528463 100644
GIT binary patch
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 d77d3011ea09d78bcac462e6e16d444aa2ad53f6..2a9e8378398c6ebee80c323afce84bf4e0ca66e1 100644
GIT binary patch
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 f723cd7cdb6c2b0d59904f483f7bd51f5b0ee175..925b886e13df517deb86da9b947c7272bc8c450b 100644
GIT binary patch
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 c8b79311ad8a7e583fc3348d71ef481156a0fd7e..c55a18a4125a2d4597cc54ba95333b19206bee16 100644
GIT binary patch
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 8ad065422d50472d67a18583b43e4ac4c6bd7e2c..aed40839b1d49f0bfd251299808c223fc27ae85d 100644
GIT binary patch
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 c8b79311ad8a7e583fc3348d71ef481156a0fd7e..c55a18a4125a2d4597cc54ba95333b19206bee16 100644
GIT binary patch
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 2b4c71e5174fc3bdc4453c7da89bcd91b2b75a12..1357a5d90adbab0c5bfe85896a730b0cb94e42f4 100644
GIT binary patch
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 a03c692d55061c6659eaddb17534476d6c877f9c..dbb5f13c56a20f0fe9a4b6618ab0e6e762ade10d 100644
GIT binary patch
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 a194a3f8e2b2f7288a1d2405c45078a93eb05b10..72b2a1ed768729445fc5bad6bdce2bf42e71afa9 100644
GIT binary patch
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 a03c692d55061c6659eaddb17534476d6c877f9c..dbb5f13c56a20f0fe9a4b6618ab0e6e762ade10d 100644
GIT binary patch
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 01b102422781159e8cb340db8d4f8bbb45c20e8a..d96f06f217798e03c79aae37b975d1d8fb45e5a7 100644
GIT binary patch
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 284c85f618102c50075341c57280bcbfdeaaf62d..f0c93836fb56cca30c075f0d4fd3f9cee73b25a1 100644
GIT binary patch
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 a7397c296436ba3a7510bf9f20c349cc6c010d5d..fd51d4742834cb435ad2ccfcc05cfc2ba3128dfa 100644
GIT binary patch
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 284c85f618102c50075341c57280bcbfdeaaf62d..f0c93836fb56cca30c075f0d4fd3f9cee73b25a1 100644
GIT binary patch
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 ffa87453cd1415d178886acc4aafd0c3c70b4bf0..325bf2fdcd68dd5610016b0519ddc33646bbdde3 100644
GIT binary patch
diff --git a/mobile/ios/Flutter/Debug.xcconfig b/mobile/ios/Flutter/Debug.xcconfig
index e18fefd80e..70d2be7ce4 100644
--- a/mobile/ios/Flutter/Debug.xcconfig
+++ b/mobile/ios/Flutter/Debug.xcconfig
@@ -5,5 +5,5 @@
 // without patching tracked files by writing
 // `mobile/ios/Flutter/AppOverrides.xcconfig` containing
 // `BUNDLE_IDENTIFIER = your.app.id` (gitignored).
-BUNDLE_IDENTIFIER = com.sprout.sproutMobile
+BUNDLE_IDENTIFIER = com.buzz.buzzMobile
 #include? "AppOverrides.xcconfig"
diff --git a/mobile/ios/Flutter/Release.xcconfig b/mobile/ios/Flutter/Release.xcconfig
index 860e920a90..616df87624 100644
--- a/mobile/ios/Flutter/Release.xcconfig
+++ b/mobile/ios/Flutter/Release.xcconfig
@@ -4,7 +4,7 @@
 // Defaults for the iOS Release build. Internal/custom builds (e.g. an
 // enterprise-signed distribution) override these without patching tracked
 // files by writing `mobile/ios/Flutter/AppOverrides.xcconfig` (gitignored).
-BUNDLE_IDENTIFIER = com.sprout.sproutMobile
+BUNDLE_IDENTIFIER = com.buzz.buzzMobile
 CODE_SIGN_STYLE = Automatic
 CODE_SIGN_IDENTITY = iPhone Developer
 #include? "AppOverrides.xcconfig"
diff --git a/mobile/ios/Runner.xcodeproj/project.pbxproj b/mobile/ios/Runner.xcodeproj/project.pbxproj
index 27c18a863f..75594e1870 100644
--- a/mobile/ios/Runner.xcodeproj/project.pbxproj
+++ b/mobile/ios/Runner.xcodeproj/project.pbxproj
@@ -483,7 +483,7 @@
 					"@executable_path/Frameworks",
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER)";
-				PRODUCT_NAME = Sprout;
+				PRODUCT_NAME = Buzz;
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
 				SWIFT_VERSION = 5.0;
 				VERSIONING_SYSTEM = "apple-generic";
@@ -504,7 +504,7 @@
 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 				SWIFT_VERSION = 5.0;
-				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Sprout.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Sprout";
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Buzz.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Buzz";
 			};
 			name = Debug;
 		};
@@ -520,7 +520,7 @@
 				PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER).RunnerTests";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_VERSION = 5.0;
-				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Sprout.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Sprout";
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Buzz.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Buzz";
 			};
 			name = Release;
 		};
@@ -536,7 +536,7 @@
 				PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER).RunnerTests";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_VERSION = 5.0;
-				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Sprout.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Sprout";
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Buzz.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Buzz";
 			};
 			name = Profile;
 		};
@@ -665,7 +665,7 @@
 					"@executable_path/Frameworks",
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER)";
-				PRODUCT_NAME = Sprout;
+				PRODUCT_NAME = Buzz;
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 				SWIFT_VERSION = 5.0;
@@ -688,7 +688,7 @@
 					"@executable_path/Frameworks",
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER)";
-				PRODUCT_NAME = Sprout;
+				PRODUCT_NAME = Buzz;
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
 				SWIFT_VERSION = 5.0;
 				VERSIONING_SYSTEM = "apple-generic";
diff --git a/mobile/ios/Runner/AppDelegate.swift b/mobile/ios/Runner/AppDelegate.swift
index 464168c6b9..9fe13485c4 100644
--- a/mobile/ios/Runner/AppDelegate.swift
+++ b/mobile/ios/Runner/AppDelegate.swift
@@ -18,7 +18,7 @@ import UserNotifications
   func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) {
     GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)
     mediaUploadChannel = FlutterMethodChannel(
-      name: "sprout/media_upload",
+      name: "buzz/media_upload",
       binaryMessenger: engineBridge.applicationRegistrar.messenger()
     )
     mediaUploadChannel?.setMethodCallHandler { [weak self] call, result in
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
index c846d17e08df6caef30eeebc10846741d69a2e98..0042365282cce07bb6603f361c37eacadb3a16b1 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
index 3e4ba6d3e3dffffd8f7de384819191a5e517f9d9..b98e9e0ad7e9e98efea58e22e1666a57647e3f3f 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
index ae40e0694a896cd138bf9d1a19421a0c3947bdcc..692cdb0eccfd598a567f285970f1632f0d16fa4b 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
index 55106e00e8002bf311b2e5e185f1bf162576e6a4..1e112caaa5b63d4942474aa386834d09146ce904 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
index aefc639279f732c0f01201a6a50da8fe6f2877fe..586947b8f0da2711fa543397f605fb419a5ca9c4 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
index 0eecabbdfeb17527d53c87c265a72dd5dd8c79b9..21275be38f5a5dda33769f54013224cdea97ae71 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
index 446dc938c90aeaa55b8e0a749e9a4130f62e8491..297b974cd7318bd3921600a76ecec638eaa99991 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
index ae40e0694a896cd138bf9d1a19421a0c3947bdcc..a93e267841fc6e30150df6957f69479bb4cf23f8 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
index ef76bdf93e8cf80a0a1d4c8fecac9454cdf96570..346d02093e22cf732e9b651ad354069391ee6388 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
index 11f5f1d49d554024d76a2a933c8107be86067561..007e7abe8405e35a93a75e8a1a64787386449a6b 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
index 11f5f1d49d554024d76a2a933c8107be86067561..007e7abe8405e35a93a75e8a1a64787386449a6b 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
index 81c3a5dfe58a375f2869f9661c8058ca3232d678..6376965e95be7a6183e4ab2d3ddcdaeac7379358 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
index ab636803652a82259fb4e46a12a8ac4ff1205472..e2bf4fe11236b38a32f145a79f24310b3ab1f195 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
index cde533c2e79f34ffafc0b42bb5164552ec7e5c56..b6c4e79c97a2be1e17cf70ec33f7ebb507a70584 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/mobile/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
index 3b2620a798464fd943d7bc32f3924fda436165eb..ba40c0c6e0a1827a06e96b370fdea95970b7b900 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
index 4a1e7f031e0c3329f66f95f62042f98ba065f262..f9d201e94b85ba1fe0df2cb256b6e993d363fb4e 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
index a9a44dbf9cf27a309460977220cb66f89968ea1f..483cc9000ececa171e4335227729c482cbfe6a90 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
index 458cb77025f3532c298cafc462f0641c33190956..63e826e8d48ac0ed66de7aa7265c949ff0ab5e55 100644
GIT binary patch
diff --git a/mobile/ios/Runner/Info.plist b/mobile/ios/Runner/Info.plist
index 04690ded61..2db2be9ed6 100644
--- a/mobile/ios/Runner/Info.plist
+++ b/mobile/ios/Runner/Info.plist
@@ -7,7 +7,7 @@
 	<key>CFBundleDevelopmentRegion</key>
 	<string>$(DEVELOPMENT_LANGUAGE)</string>
 	<key>CFBundleDisplayName</key>
-	<string>Sprout</string>
+	<string>Buzz</string>
 	<key>CFBundleExecutable</key>
 	<string>$(EXECUTABLE_NAME)</string>
 	<key>CFBundleIdentifier</key>
@@ -15,7 +15,7 @@
 	<key>CFBundleInfoDictionaryVersion</key>
 	<string>6.0</string>
 	<key>CFBundleName</key>
-	<string>Sprout</string>
+	<string>Buzz</string>
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
@@ -27,9 +27,9 @@
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
 	<key>NSCameraUsageDescription</key>
-	<string>Sprout needs camera access to scan QR codes for device pairing.</string>
+	<string>Buzz needs camera access to scan QR codes for device pairing.</string>
 	<key>NSPhotoLibraryUsageDescription</key>
-	<string>Sprout needs photo library access so you can attach images to messages.</string>
+	<string>Buzz needs photo library access so you can attach images to messages.</string>
 	<key>UIApplicationSceneManifest</key>
 	<dict>
 		<key>UIApplicationSupportsMultipleScenes</key>
diff --git a/mobile/lib/app.dart b/mobile/lib/app.dart
index 1c6c974a9f..c9e1aeaa1d 100644
--- a/mobile/lib/app.dart
+++ b/mobile/lib/app.dart
@@ -59,7 +59,7 @@ class App extends HookConsumerWidget {
     });
 
     return MaterialApp(
-      title: 'Sprout',
+      title: 'Buzz',
       theme: AppTheme.light(colorScheme: lightScheme),
       darkTheme: AppTheme.dark(colorScheme: darkScheme),
       themeMode: effectiveMode,
diff --git a/mobile/lib/features/channels/agent_activity/observer_models.dart b/mobile/lib/features/channels/agent_activity/observer_models.dart
index 9294a382b9..b1cc8fe22c 100644
--- a/mobile/lib/features/channels/agent_activity/observer_models.dart
+++ b/mobile/lib/features/channels/agent_activity/observer_models.dart
@@ -127,7 +127,7 @@ class ToolItem extends TranscriptItem {
   final String id;
   String title;
   String toolName;
-  String? sproutToolName;
+  String? buzzToolName;
   ToolStatus status;
   Map<String, dynamic> args;
   String result;
@@ -139,7 +139,7 @@ class ToolItem extends TranscriptItem {
     required this.id,
     required this.title,
     required this.toolName,
-    this.sproutToolName,
+    this.buzzToolName,
     required this.status,
     required this.args,
     required this.result,
diff --git a/mobile/lib/features/channels/agent_activity/transcript_builder.dart b/mobile/lib/features/channels/agent_activity/transcript_builder.dart
index aeaa1695da..38f35901b2 100644
--- a/mobile/lib/features/channels/agent_activity/transcript_builder.dart
+++ b/mobile/lib/features/channels/agent_activity/transcript_builder.dart
@@ -3,10 +3,10 @@ import 'dart:convert';
 import 'observer_models.dart';
 
 // ---------------------------------------------------------------------------
-// Sprout tool catalogs
+// Buzz tool catalogs
 // ---------------------------------------------------------------------------
 
-const _sproutReadTools = <String>{
+const _buzzReadTools = <String>{
   'get_messages',
   'get_channel_history',
   'get_thread',
@@ -27,7 +27,7 @@ const _sproutReadTools = <String>{
   'get_contact_list',
 };
 
-const _sproutWriteTools = <String>{
+const _buzzWriteTools = <String>{
   'send_message',
   'send_diff_message',
   'edit_message',
@@ -61,12 +61,12 @@ const _sproutWriteTools = <String>{
   'set_contact_list',
 };
 
-final _sproutToolNames = <String>{..._sproutReadTools, ..._sproutWriteTools};
+final _buzzToolNames = <String>{..._buzzReadTools, ..._buzzWriteTools};
 
-final _sproutToolNamesByLength = _sproutToolNames.toList()
+final _buzzToolNamesByLength = _buzzToolNames.toList()
   ..sort((a, b) => b.length.compareTo(a.length));
 
-final _sproutToolTitleAliases = <(RegExp, String)>[
+final _buzzToolTitleAliases = <(RegExp, String)>[
   (RegExp(r'\bsending message to channel\b'), 'send_message'),
   (RegExp(r'\bretrieving recent messages from channel\b'), 'get_messages'),
   (RegExp(r'\bgetting channel details\b'), 'get_channel'),
@@ -119,12 +119,12 @@ String _normalizeToolNameText(String value) {
       .replaceAll(RegExp(r'^_+|_+$'), '');
 }
 
-String? _findSproutToolName(String value, bool includeShortNames) {
-  final alias = _findSproutToolAlias(value);
+String? _findBuzzToolName(String value, bool includeShortNames) {
+  final alias = _findBuzzToolAlias(value);
   if (alias != null) return alias;
 
   final normalized = _normalizeToolNameText(value);
-  for (final name in _sproutToolNamesByLength) {
+  for (final name in _buzzToolNamesByLength) {
     if ((!includeShortNames && name.length < 8) || !normalized.contains(name)) {
       continue;
     }
@@ -133,13 +133,13 @@ String? _findSproutToolName(String value, bool includeShortNames) {
   return null;
 }
 
-String? _findSproutToolAlias(String value) {
+String? _findBuzzToolAlias(String value) {
   final normalizedPhrase = value
       .trim()
       .toLowerCase()
       .replaceAll(RegExp(r'[_-]+'), ' ')
       .replaceAll(RegExp(r'\s+'), ' ');
-  for (final (pattern, name) in _sproutToolTitleAliases) {
+  for (final (pattern, name) in _buzzToolTitleAliases) {
     if (pattern.hasMatch(normalizedPhrase)) return name;
   }
   return null;
@@ -159,12 +159,12 @@ bool _isGenericToolTitle(String value) {
 }
 
 String _normalizeToolName(String title) {
-  final knownName = _findSproutToolName(title, true);
+  final knownName = _findBuzzToolName(title, true);
   if (knownName != null) return knownName;
 
   final normalized = _normalizeToolNameText(
     title,
-  ).replaceAll(RegExp(r'^sprout_'), '');
+  ).replaceAll(RegExp(r'^buzz_'), '');
   return RegExp(r'[a-z][a-z0-9_]+').firstMatch(normalized)?[0] ?? normalized;
 }
 
@@ -235,7 +235,7 @@ _parsePromptText(String text) {
 
   PromptSection? eventSection;
   for (final section in sections) {
-    if (section.title.toLowerCase().startsWith('sprout event')) {
+    if (section.title.toLowerCase().startsWith('buzz event')) {
       eventSection = section;
       break;
     }
@@ -250,7 +250,7 @@ _parsePromptText(String text) {
     userText: eventContent,
     userTitle: eventKind != null && eventKind.isNotEmpty
         ? _titleCase(eventKind)
-        : 'Sprout event',
+        : 'Buzz event',
   );
 }
 
@@ -324,16 +324,16 @@ Map<String, dynamic> _extractToolArgs(Map<String, dynamic> update) {
   return const {};
 }
 
-({String title, String toolName, String? sproutToolName}) _extractToolIdentity(
+({String title, String toolName, String? buzzToolName}) _extractToolIdentity(
   Map<String, dynamic> update,
 ) {
   final candidates = _collectToolNameCandidates(update);
   String? knownName;
   for (final c in candidates) {
-    knownName = _findSproutToolName(c, true);
+    knownName = _findBuzzToolName(c, true);
     if (knownName != null) break;
   }
-  knownName ??= _findSproutToolName(_safeJsonEncode(update), false);
+  knownName ??= _findBuzzToolName(_safeJsonEncode(update), false);
   String? firstSpecific;
   for (final candidate in candidates) {
     if (!_isGenericToolTitle(candidate)) {
@@ -346,7 +346,7 @@ Map<String, dynamic> _extractToolArgs(Map<String, dynamic> update) {
   return (
     title: title,
     toolName: knownName ?? _normalizeToolName(firstSpecific ?? title),
-    sproutToolName: knownName,
+    buzzToolName: knownName,
   );
 }
 
@@ -529,7 +529,7 @@ List<TranscriptItem> buildTranscript(List<ObserverFrame> events) {
     String id,
     String title,
     String toolName,
-    String? sproutToolName,
+    String? buzzToolName,
     ToolStatus status,
     Map<String, dynamic> args,
     String result,
@@ -537,16 +537,16 @@ List<TranscriptItem> buildTranscript(List<ObserverFrame> events) {
     String timestamp,
   ) {
     final existing = itemsById[id];
-    final canonicalSproutToolName =
-        sproutToolName ?? _findSproutToolName(toolName, true);
+    final canonicalBuzzToolName =
+        buzzToolName ?? _findBuzzToolName(toolName, true);
     if (existing is ToolItem) {
       if (!_isGenericToolTitle(title)) {
         existing.title = title;
       }
-      if (canonicalSproutToolName != null) {
-        existing.sproutToolName = canonicalSproutToolName;
-        existing.toolName = canonicalSproutToolName;
-      } else if (existing.sproutToolName == null &&
+      if (canonicalBuzzToolName != null) {
+        existing.buzzToolName = canonicalBuzzToolName;
+        existing.toolName = canonicalBuzzToolName;
+      } else if (existing.buzzToolName == null &&
           !_isGenericToolTitle(toolName)) {
         existing.toolName = toolName;
       }
@@ -560,8 +560,8 @@ List<TranscriptItem> buildTranscript(List<ObserverFrame> events) {
     final item = ToolItem(
       id: id,
       title: title,
-      toolName: canonicalSproutToolName ?? toolName,
-      sproutToolName: canonicalSproutToolName,
+      toolName: canonicalBuzzToolName ?? toolName,
+      buzzToolName: canonicalBuzzToolName,
       status: status,
       args: args,
       result: result,
@@ -688,7 +688,7 @@ List<TranscriptItem> buildTranscript(List<ObserverFrame> events) {
         'tool:$toolId',
         identity.title,
         identity.toolName,
-        identity.sproutToolName,
+        identity.buzzToolName,
         _normalizeToolStatus(_asString(update['status']) ?? 'executing'),
         _extractToolArgs(update),
         _extractToolResult(update),
@@ -708,7 +708,7 @@ List<TranscriptItem> buildTranscript(List<ObserverFrame> events) {
         'tool:$toolId',
         identity.title,
         identity.toolName,
-        identity.sproutToolName,
+        identity.buzzToolName,
         status,
         _extractToolArgs(update),
         _extractToolResult(update),
diff --git a/mobile/lib/features/channels/channel_mutes/channel_mutes_storage.dart b/mobile/lib/features/channels/channel_mutes/channel_mutes_storage.dart
index 1faccb55ad..28e7f50e19 100644
--- a/mobile/lib/features/channels/channel_mutes/channel_mutes_storage.dart
+++ b/mobile/lib/features/channels/channel_mutes/channel_mutes_storage.dart
@@ -2,7 +2,7 @@ import 'dart:convert';
 
 import 'package:shared_preferences/shared_preferences.dart';
 
-String channelMutesKey(String pubkey) => 'sprout.channel-mutes.v1:$pubkey';
+String channelMutesKey(String pubkey) => 'buzz.channel-mutes.v1:$pubkey';
 
 class ChannelMuteEntry {
   final bool muted;
diff --git a/mobile/lib/features/channels/channel_sections/channel_sections_storage.dart b/mobile/lib/features/channels/channel_sections/channel_sections_storage.dart
index 47011941c0..6aa9d0eefe 100644
--- a/mobile/lib/features/channels/channel_sections/channel_sections_storage.dart
+++ b/mobile/lib/features/channels/channel_sections/channel_sections_storage.dart
@@ -2,8 +2,7 @@ import 'dart:convert';
 
 import 'package:shared_preferences/shared_preferences.dart';
 
-String channelSectionsKey(String pubkey) =>
-    'sprout.channel-sections.v1:$pubkey';
+String channelSectionsKey(String pubkey) => 'buzz.channel-sections.v1:$pubkey';
 
 class ChannelSection {
   final String id;
diff --git a/mobile/lib/features/channels/channel_stars/channel_stars_storage.dart b/mobile/lib/features/channels/channel_stars/channel_stars_storage.dart
index 2310ae4468..07d19bbd01 100644
--- a/mobile/lib/features/channels/channel_stars/channel_stars_storage.dart
+++ b/mobile/lib/features/channels/channel_stars/channel_stars_storage.dart
@@ -2,7 +2,7 @@ import 'dart:convert';
 
 import 'package:shared_preferences/shared_preferences.dart';
 
-String channelStarsKey(String pubkey) => 'sprout.channel-stars.v1:$pubkey';
+String channelStarsKey(String pubkey) => 'buzz.channel-stars.v1:$pubkey';
 
 class ChannelStarEntry {
   final bool starred;
diff --git a/mobile/lib/features/channels/emoji_picker.dart b/mobile/lib/features/channels/emoji_picker.dart
index 0b21797e0c..8b1c53532b 100644
--- a/mobile/lib/features/channels/emoji_picker.dart
+++ b/mobile/lib/features/channels/emoji_picker.dart
@@ -159,7 +159,7 @@ const emojiCategories = <({String label, IconData icon, List<String> emoji})>[
   ),
   (
     label: 'Nature',
-    icon: LucideIcons.sprout,
+    icon: LucideIcons.leaf,
     emoji: [
       '\u{1F331}',
       '\u{1F332}',
diff --git a/mobile/lib/features/channels/read_state/read_state_storage.dart b/mobile/lib/features/channels/read_state/read_state_storage.dart
index 1b388c32ee..6be7dd438d 100644
--- a/mobile/lib/features/channels/read_state/read_state_storage.dart
+++ b/mobile/lib/features/channels/read_state/read_state_storage.dart
@@ -8,18 +8,17 @@ import 'package:uuid/uuid.dart';
 import 'read_state_format.dart';
 import 'read_state_time.dart';
 
-const _clientIdKeyPrefix = 'sprout.nip-rs.client-id';
-const _slotIdKeyPrefix = 'sprout.nip-rs.slot-id';
+const _clientIdKeyPrefix = 'buzz.nip-rs.client-id';
+const _slotIdKeyPrefix = 'buzz.nip-rs.slot-id';
 const _uuid = Uuid();
 
-String localReadStateKey(String pubkey) =>
-    'sprout.channel-read-state.v2:$pubkey';
+String localReadStateKey(String pubkey) => 'buzz.channel-read-state.v2:$pubkey';
 
 String localPublishableContextKey(String pubkey) =>
-    'sprout.channel-read-state.publishable.v1:$pubkey';
+    'buzz.channel-read-state.publishable.v1:$pubkey';
 
 String localSourceCreatedAtKey(String pubkey) =>
-    'sprout.channel-read-state.source-created-at.v1:$pubkey';
+    'buzz.channel-read-state.source-created-at.v1:$pubkey';
 
 String clientIdKey(String pubkey) => '$_clientIdKeyPrefix:$pubkey';
 
diff --git a/mobile/lib/features/channels/timeline_message.dart b/mobile/lib/features/channels/timeline_message.dart
index b0e0e09eea..3bcbd4a7bf 100644
--- a/mobile/lib/features/channels/timeline_message.dart
+++ b/mobile/lib/features/channels/timeline_message.dart
@@ -212,7 +212,7 @@ List<TimelineMessage> formatTimeline(
   String? currentPubkey,
 }) {
   // 1. Collect deletion targets. Both kind:5 (NIP-09) and kind:9005
-  // (Sprout-native) are deletion markers; mirror desktop's behavior.
+  // (Buzz-native) are deletion markers; mirror desktop's behavior.
   final deletedIds = <String>{};
   for (final event in events) {
     if (event.kind != EventKind.deletion &&
diff --git a/mobile/lib/features/custom_emoji/custom_emoji.dart b/mobile/lib/features/custom_emoji/custom_emoji.dart
index c68c5659f2..d33a917d7e 100644
--- a/mobile/lib/features/custom_emoji/custom_emoji.dart
+++ b/mobile/lib/features/custom_emoji/custom_emoji.dart
@@ -29,7 +29,7 @@ class CustomEmoji {
 const int kindEmojiSet = 30030;
 
 /// d-tag for a member's own custom emoji set.
-const String customEmojiSetDTag = 'sprout:custom-emoji';
+const String customEmojiSetDTag = 'buzz:custom-emoji';
 
 final RegExp _shortcodeRe = RegExp(r'^[a-z0-9_-]+$');
 
diff --git a/mobile/lib/features/pairing/pairing_page.dart b/mobile/lib/features/pairing/pairing_page.dart
index 193257cf82..31ad8c8443 100644
--- a/mobile/lib/features/pairing/pairing_page.dart
+++ b/mobile/lib/features/pairing/pairing_page.dart
@@ -67,13 +67,13 @@ class PairingPage extends HookConsumerWidget {
 
                       // Branding
                       Icon(
-                        LucideIcons.sprout,
+                        LucideIcons.hexagon,
                         size: 64,
                         color: context.colors.primary,
                       ),
                       const SizedBox(height: Grid.xs),
                       Text(
-                        'Welcome to Sprout',
+                        'Welcome to Buzz',
                         style: context.textTheme.headlineSmall,
                       ),
                       const SizedBox(height: Grid.xxs),
@@ -123,7 +123,7 @@ class PairingPage extends HookConsumerWidget {
                       TextField(
                         controller: codeController,
                         decoration: const InputDecoration(
-                          hintText: 'nostrpair://... or sprout://...',
+                          hintText: 'nostrpair://... or buzz://...',
                           prefixIcon: Icon(LucideIcons.link),
                           isDense: true,
                         ),
@@ -284,7 +284,7 @@ class _SasVerificationView extends StatelessWidget {
         const SizedBox(height: Grid.lg),
 
         Text(
-          'You are about to transfer your Sprout identity\nto this device. Only confirm if you initiated\nthis pairing from your desktop.',
+          'You are about to transfer your Buzz 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_provider.dart b/mobile/lib/features/pairing/pairing_provider.dart
index ffc2cb274d..c854723090 100644
--- a/mobile/lib/features/pairing/pairing_provider.dart
+++ b/mobile/lib/features/pairing/pairing_provider.dart
@@ -75,7 +75,7 @@ class PairingNotifier extends Notifier<PairingState> {
     if (trimmed.startsWith('nostrpair://')) {
       return _pairNipAb(trimmed);
     }
-    // Legacy sprout:// flow.
+    // Legacy buzz:// flow.
     return _pairLegacy(trimmed);
   }
 
@@ -526,7 +526,7 @@ class PairingNotifier extends Notifier<PairingState> {
     );
   }
 
-  // ── Legacy sprout:// flow ───────────────────────────────────────────────
+  // ── Legacy buzz:// flow ───────────────────────────────────────────────
 
   Future<void> _pairLegacy(String rawInput) async {
     state = const PairingState(status: PairingStatus.connecting);
@@ -593,8 +593,8 @@ class PairingNotifier extends Notifier<PairingState> {
   Workspace _parseLegacyInput(String raw) {
     var payload = raw.trim();
 
-    if (payload.startsWith('sprout://')) {
-      payload = payload.substring('sprout://'.length);
+    if (payload.startsWith('buzz://')) {
+      payload = payload.substring('buzz://'.length);
     }
 
     final normalized = base64Url.normalize(payload);
diff --git a/mobile/lib/shared/relay/media_upload.dart b/mobile/lib/shared/relay/media_upload.dart
index ab2ed58d09..4e158b1eda 100644
--- a/mobile/lib/shared/relay/media_upload.dart
+++ b/mobile/lib/shared/relay/media_upload.dart
@@ -12,7 +12,7 @@ import 'package:pointycastle/digests/sha256.dart';
 import 'relay_provider.dart';
 
 const _mediaUploadPath = '/media/upload';
-const _mediaUploadPlatformChannelName = 'sprout/media_upload';
+const _mediaUploadPlatformChannelName = 'buzz/media_upload';
 const _sanitizeImageForUploadMethod = 'sanitizeImageForUpload';
 const _transcodeVideoToMp4Method = 'transcodeVideoToMp4';
 const _transcodeImageToJpegMethod = 'transcodeImageToJpeg';
@@ -298,7 +298,7 @@ class MediaUploadService {
 
     return nostr.Event.from(
       kind: _uploadAuthKind,
-      content: 'Upload sprout-media',
+      content: 'Upload buzz-media',
       tags: tags,
       secretKey: privkeyHex,
       verify: false,
diff --git a/mobile/lib/shared/relay/nostr_filters.dart b/mobile/lib/shared/relay/nostr_filters.dart
index 2a94614e5f..493f328af3 100644
--- a/mobile/lib/shared/relay/nostr_filters.dart
+++ b/mobile/lib/shared/relay/nostr_filters.dart
@@ -1,6 +1,6 @@
 import 'nostr_models.dart';
 
-/// Canonical [NostrFilter] constructors for common Sprout queries.
+/// Canonical [NostrFilter] constructors for common Buzz queries.
 ///
 /// Centralising filter shapes keeps relay queries consistent across providers
 /// and makes kind/tag conventions easy to audit.
diff --git a/mobile/lib/shared/relay/nostr_models.dart b/mobile/lib/shared/relay/nostr_models.dart
index f7cf7a5382..ca1dfb47e6 100644
--- a/mobile/lib/shared/relay/nostr_models.dart
+++ b/mobile/lib/shared/relay/nostr_models.dart
@@ -38,7 +38,7 @@ abstract final class EventKind {
   static const channelEventKinds = [
     deletion, // 5
     reaction, // 7
-    nip29DeleteEvent, // 9005 — Sprout-native deletion
+    nip29DeleteEvent, // 9005 — Buzz-native deletion
     ...channelMessageEventKinds,
     40001, // legacy pre-migration stream messages
     streamMessageEdit, // 40003
@@ -337,7 +337,7 @@ List<MemberEntry> membersFromEvent(NostrEvent event) {
   ];
 }
 
-/// Parse a Sprout command response from the relay's OK message content.
+/// Parse a Buzz command response from the relay's OK message content.
 ///
 /// Command kinds (e.g. 41010, 30620, 46020) return `"response:{...}"` in the
 /// OK message. Returns `null` if the message is not a command response or the
diff --git a/mobile/lib/shared/relay/relay_client.dart b/mobile/lib/shared/relay/relay_client.dart
index 2dfa25bfbb..975655a7a4 100644
--- a/mobile/lib/shared/relay/relay_client.dart
+++ b/mobile/lib/shared/relay/relay_client.dart
@@ -1,6 +1,6 @@
 import 'package:http/http.dart' as http;
 
-/// Lightweight HTTP context for talking to the Sprout relay.
+/// Lightweight HTTP context for talking to the Buzz relay.
 ///
 /// In the pure-nostr architecture, all data flow happens over the relay
 /// WebSocket. This client now exists only to provide a base URL (and a
diff --git a/mobile/lib/shared/relay/relay_provider.dart b/mobile/lib/shared/relay/relay_provider.dart
index 828e8bedef..030bcee508 100644
--- a/mobile/lib/shared/relay/relay_provider.dart
+++ b/mobile/lib/shared/relay/relay_provider.dart
@@ -28,12 +28,12 @@ class RelayConfig {
 /// Compile-time environment config via --dart-define.
 ///
 /// Run with:
-///   flutter run --dart-define=SPROUT_RELAY_URL=http://localhost:3000
+///   flutter run --dart-define=BUZZ_RELAY_URL=http://localhost:3000
 ///
 /// Or create a `.env.json` and use --dart-define-from-file=.env.json
 class Env {
   static const relayUrl = String.fromEnvironment(
-    'SPROUT_RELAY_URL',
+    'BUZZ_RELAY_URL',
     defaultValue: 'http://localhost:3000',
   );
 }
diff --git a/mobile/lib/shared/theme/accent_colors.dart b/mobile/lib/shared/theme/accent_colors.dart
index 9a2e740792..65f16fdd34 100644
--- a/mobile/lib/shared/theme/accent_colors.dart
+++ b/mobile/lib/shared/theme/accent_colors.dart
@@ -1,6 +1,6 @@
 import 'package:flutter/material.dart';
 
-/// Accent colors matching the desktop Sprout app.
+/// Accent colors matching the desktop Buzz app.
 class AccentColor {
   final String name;
   final Color light;
diff --git a/mobile/lib/shared/theme/color_scheme.dart b/mobile/lib/shared/theme/color_scheme.dart
index f9f7c80041..885446cc03 100644
--- a/mobile/lib/shared/theme/color_scheme.dart
+++ b/mobile/lib/shared/theme/color_scheme.dart
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
 
 import 'accent_colors.dart';
 
-// Catppuccin Latte (mauve accent) — matches Sprout desktop light theme
+// Catppuccin Latte (mauve accent) — matches Buzz desktop light theme
 const lightColorScheme = ColorScheme(
   brightness: Brightness.light,
   primary: Color(0xFF8839EF), // Latte Mauve
@@ -35,7 +35,7 @@ const lightColorScheme = ColorScheme(
   surfaceContainerHighest: Color(0xFFFFFFFF),
 );
 
-// Catppuccin Macchiato (mauve accent) — matches Sprout desktop dark theme
+// Catppuccin Macchiato (mauve accent) — matches Buzz desktop dark theme
 const darkColorScheme = ColorScheme(
   brightness: Brightness.dark,
   primary: Color(0xFFA875F5), // Macchiato Mauve (saturated)
diff --git a/mobile/lib/shared/theme/theme_provider.dart b/mobile/lib/shared/theme/theme_provider.dart
index cc3c1fb1a5..0d88d391b2 100644
--- a/mobile/lib/shared/theme/theme_provider.dart
+++ b/mobile/lib/shared/theme/theme_provider.dart
@@ -7,9 +7,9 @@ import 'adaptive_theme.dart';
 import 'color_scheme.dart';
 import 'theme_catalog.dart';
 
-const _themeModeKey = 'sprout_theme_mode';
-const _accentKey = 'sprout_accent_color';
-const _schemeKey = 'sprout_color_scheme';
+const _themeModeKey = 'buzz_theme_mode';
+const _accentKey = 'buzz_accent_color';
+const _schemeKey = 'buzz_color_scheme';
 
 /// Pre-loaded SharedPreferences instance, overridden in main().
 final savedPrefsProvider = Provider<SharedPreferences>(
diff --git a/mobile/lib/shared/workspace/workspace_storage.dart b/mobile/lib/shared/workspace/workspace_storage.dart
index ad89ca8536..d5982bf0f7 100644
--- a/mobile/lib/shared/workspace/workspace_storage.dart
+++ b/mobile/lib/shared/workspace/workspace_storage.dart
@@ -5,14 +5,14 @@ import 'package:flutter_secure_storage/flutter_secure_storage.dart';
 import 'workspace.dart';
 
 class WorkspaceStorage {
-  static const _keyWorkspaces = 'sprout_workspaces';
-  static const _keyActiveId = 'sprout_active_workspace_id';
+  static const _keyWorkspaces = 'buzz_workspaces';
+  static const _keyActiveId = 'buzz_active_workspace_id';
 
   // Legacy keys for migration.
-  static const _legacyRelayUrl = 'sprout_relay_url';
-  static const _legacyToken = 'sprout_token';
-  static const _legacyPubkey = 'sprout_pubkey';
-  static const _legacyNsec = 'sprout_nsec';
+  static const _legacyRelayUrl = 'buzz_relay_url';
+  static const _legacyToken = 'buzz_token';
+  static const _legacyPubkey = 'buzz_pubkey';
+  static const _legacyNsec = 'buzz_nsec';
 
   final FlutterSecureStorage _secure;
 
diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml
index d24514395a..cca5f31059 100644
--- a/mobile/pubspec.yaml
+++ b/mobile/pubspec.yaml
@@ -1,5 +1,5 @@
-name: sprout_mobile
-description: Sprout mobile client
+name: buzz
+description: Buzz mobile client
 publish_to: 'none'
 version: 0.3.16+1
 
diff --git a/mobile/test/features/activity/activity_page_test.dart b/mobile/test/features/activity/activity_page_test.dart
index bb4100cd26..6c77353ae1 100644
--- a/mobile/test/features/activity/activity_page_test.dart
+++ b/mobile/test/features/activity/activity_page_test.dart
@@ -4,14 +4,14 @@ import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:hooks_riverpod/misc.dart';
-import 'package:sprout_mobile/features/activity/activity_page.dart';
-import 'package:sprout_mobile/features/activity/activity_provider.dart';
-import 'package:sprout_mobile/features/activity/feed_item.dart';
-import 'package:sprout_mobile/features/channels/channel.dart';
-import 'package:sprout_mobile/features/channels/channels_provider.dart';
-import 'package:sprout_mobile/features/profile/user_cache_provider.dart';
-import 'package:sprout_mobile/features/profile/user_profile.dart';
-import 'package:sprout_mobile/shared/theme/theme.dart';
+import 'package:buzz/features/activity/activity_page.dart';
+import 'package:buzz/features/activity/activity_provider.dart';
+import 'package:buzz/features/activity/feed_item.dart';
+import 'package:buzz/features/channels/channel.dart';
+import 'package:buzz/features/channels/channels_provider.dart';
+import 'package:buzz/features/profile/user_cache_provider.dart';
+import 'package:buzz/features/profile/user_profile.dart';
+import 'package:buzz/shared/theme/theme.dart';
 
 void main() {
   Widget buildTestable({required List<Override> overrides}) {
diff --git a/mobile/test/features/activity/feed_item_test.dart b/mobile/test/features/activity/feed_item_test.dart
index f579f92721..db29520501 100644
--- a/mobile/test/features/activity/feed_item_test.dart
+++ b/mobile/test/features/activity/feed_item_test.dart
@@ -1,5 +1,5 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/activity/feed_item.dart';
+import 'package:buzz/features/activity/feed_item.dart';
 
 void main() {
   group('FeedItem.fromJson', () {
diff --git a/mobile/test/features/channels/agent_activity/observer_subscription_test.dart b/mobile/test/features/channels/agent_activity/observer_subscription_test.dart
index d90b8acf4a..da3c5f7444 100644
--- a/mobile/test/features/channels/agent_activity/observer_subscription_test.dart
+++ b/mobile/test/features/channels/agent_activity/observer_subscription_test.dart
@@ -4,10 +4,10 @@ import 'dart:convert';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:nostr/nostr.dart' as nostr;
-import 'package:sprout_mobile/features/channels/agent_activity/observer_models.dart';
-import 'package:sprout_mobile/features/channels/agent_activity/observer_subscription.dart';
-import 'package:sprout_mobile/shared/crypto/nip44.dart';
-import 'package:sprout_mobile/shared/relay/relay.dart';
+import 'package:buzz/features/channels/agent_activity/observer_models.dart';
+import 'package:buzz/features/channels/agent_activity/observer_subscription.dart';
+import 'package:buzz/shared/crypto/nip44.dart';
+import 'package:buzz/shared/relay/relay.dart';
 
 void main() {
   test('provider initializes without circular dependency error', () {
diff --git a/mobile/test/features/channels/agent_activity/transcript_builder_test.dart b/mobile/test/features/channels/agent_activity/transcript_builder_test.dart
index c71176e994..fd907353f9 100644
--- a/mobile/test/features/channels/agent_activity/transcript_builder_test.dart
+++ b/mobile/test/features/channels/agent_activity/transcript_builder_test.dart
@@ -1,6 +1,6 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/channels/agent_activity/observer_models.dart';
-import 'package:sprout_mobile/features/channels/agent_activity/transcript_builder.dart';
+import 'package:buzz/features/channels/agent_activity/observer_models.dart';
+import 'package:buzz/features/channels/agent_activity/transcript_builder.dart';
 
 void main() {
   test('aggregates assistant chunks until another item seals the message', () {
@@ -54,7 +54,7 @@ void main() {
     expect((items[2] as MessageItem).text, 'Done');
   });
 
-  test('normalizes sprout tool calls and applies result updates', () {
+  test('normalizes buzz tool calls and applies result updates', () {
     final items = buildTranscript([
       _updateFrame(
         seq: 1,
@@ -82,14 +82,14 @@ void main() {
     expect(items, hasLength(1));
     expect(items.single, isA<ToolItem>());
     final tool = items.single as ToolItem;
-    expect(tool.sproutToolName, 'send_message');
+    expect(tool.buzzToolName, 'send_message');
     expect(tool.toolName, 'send_message');
     expect(tool.status, ToolStatus.completed);
     expect(tool.args, {'content': 'hi'});
     expect(tool.result, 'posted #activity-test-channel');
   });
 
-  test('parses sprout prompt text into user message and metadata', () {
+  test('parses buzz prompt text into user message and metadata', () {
     final items = buildTranscript([
       ObserverFrame(
         seq: 1,
@@ -102,7 +102,7 @@ void main() {
             'prompt': [
               {
                 'content':
-                    '[Sprout event: stream message]\n'
+                    '[Buzz event: stream message]\n'
                     'Content: @claude can you do that again?\n\n'
                     '[Channel]\n'
                     '#activity-test-channel',
diff --git a/mobile/test/features/channels/channel_detail_page_test.dart b/mobile/test/features/channels/channel_detail_page_test.dart
index 9249879cea..58323b26e5 100644
--- a/mobile/test/features/channels/channel_detail_page_test.dart
+++ b/mobile/test/features/channels/channel_detail_page_test.dart
@@ -5,18 +5,18 @@ import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:lucide_icons_flutter/lucide_icons.dart';
-import 'package:sprout_mobile/features/channels/channel.dart';
-import 'package:sprout_mobile/features/channels/channel_detail_page.dart';
-import 'package:sprout_mobile/features/channels/channel_management_provider.dart';
-import 'package:sprout_mobile/features/channels/channel_messages_provider.dart';
-import 'package:sprout_mobile/features/channels/channel_typing_provider.dart';
-import 'package:sprout_mobile/features/channels/channels_provider.dart';
-import 'package:sprout_mobile/features/channels/read_state/read_state_provider.dart';
-import 'package:sprout_mobile/features/profile/profile_provider.dart';
-import 'package:sprout_mobile/features/profile/user_cache_provider.dart';
-import 'package:sprout_mobile/features/profile/user_profile.dart';
-import 'package:sprout_mobile/shared/relay/relay.dart';
-import 'package:sprout_mobile/shared/theme/theme.dart';
+import 'package:buzz/features/channels/channel.dart';
+import 'package:buzz/features/channels/channel_detail_page.dart';
+import 'package:buzz/features/channels/channel_management_provider.dart';
+import 'package:buzz/features/channels/channel_messages_provider.dart';
+import 'package:buzz/features/channels/channel_typing_provider.dart';
+import 'package:buzz/features/channels/channels_provider.dart';
+import 'package:buzz/features/channels/read_state/read_state_provider.dart';
+import 'package:buzz/features/profile/profile_provider.dart';
+import 'package:buzz/features/profile/user_cache_provider.dart';
+import 'package:buzz/features/profile/user_profile.dart';
+import 'package:buzz/shared/relay/relay.dart';
+import 'package:buzz/shared/theme/theme.dart';
 
 // ---------------------------------------------------------------------------
 // Test fixtures
diff --git a/mobile/test/features/channels/channel_management_provider_test.dart b/mobile/test/features/channels/channel_management_provider_test.dart
index 448318046b..f525f49990 100644
--- a/mobile/test/features/channels/channel_management_provider_test.dart
+++ b/mobile/test/features/channels/channel_management_provider_test.dart
@@ -1,6 +1,6 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/channels/channel_management_provider.dart';
-import 'package:sprout_mobile/shared/relay/relay.dart';
+import 'package:buzz/features/channels/channel_management_provider.dart';
+import 'package:buzz/shared/relay/relay.dart';
 
 /// Tests for [channelDetailsFromEvent].
 ///
diff --git a/mobile/test/features/channels/channel_messages_provider_test.dart b/mobile/test/features/channels/channel_messages_provider_test.dart
index 054b3084cc..265e074a25 100644
--- a/mobile/test/features/channels/channel_messages_provider_test.dart
+++ b/mobile/test/features/channels/channel_messages_provider_test.dart
@@ -2,8 +2,8 @@ import 'dart:async';
 
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:sprout_mobile/features/channels/channel_messages_provider.dart';
-import 'package:sprout_mobile/shared/relay/relay.dart';
+import 'package:buzz/features/channels/channel_messages_provider.dart';
+import 'package:buzz/shared/relay/relay.dart';
 
 void main() {
   test(
diff --git a/mobile/test/features/channels/channel_stars/channel_stars_storage_test.dart b/mobile/test/features/channels/channel_stars/channel_stars_storage_test.dart
index 32396db227..2dc683f787 100644
--- a/mobile/test/features/channels/channel_stars/channel_stars_storage_test.dart
+++ b/mobile/test/features/channels/channel_stars/channel_stars_storage_test.dart
@@ -1,5 +1,5 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/channels/channel_stars/channel_stars_storage.dart';
+import 'package:buzz/features/channels/channel_stars/channel_stars_storage.dart';
 
 /// Tests for [ChannelStarStore] parsing and [mergeStores] last-writer-wins.
 void main() {
diff --git a/mobile/test/features/channels/channel_test.dart b/mobile/test/features/channels/channel_test.dart
index cee5bd8ca8..9f36760861 100644
--- a/mobile/test/features/channels/channel_test.dart
+++ b/mobile/test/features/channels/channel_test.dart
@@ -1,5 +1,5 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/channels/channel.dart';
+import 'package:buzz/features/channels/channel.dart';
 
 void main() {
   group('Channel.fromJson', () {
diff --git a/mobile/test/features/channels/channels_page_test.dart b/mobile/test/features/channels/channels_page_test.dart
index 3b84d51d87..742e5d5688 100644
--- a/mobile/test/features/channels/channels_page_test.dart
+++ b/mobile/test/features/channels/channels_page_test.dart
@@ -2,13 +2,13 @@ import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:hooks_riverpod/misc.dart';
-import 'package:sprout_mobile/features/channels/channel.dart';
-import 'package:sprout_mobile/features/channels/channels_page.dart';
-import 'package:sprout_mobile/features/channels/channels_provider.dart';
-import 'package:sprout_mobile/features/channels/read_state/read_state_provider.dart';
-import 'package:sprout_mobile/features/profile/profile_provider.dart';
-import 'package:sprout_mobile/features/profile/user_profile.dart';
-import 'package:sprout_mobile/shared/theme/theme.dart';
+import 'package:buzz/features/channels/channel.dart';
+import 'package:buzz/features/channels/channels_page.dart';
+import 'package:buzz/features/channels/channels_provider.dart';
+import 'package:buzz/features/channels/read_state/read_state_provider.dart';
+import 'package:buzz/features/profile/profile_provider.dart';
+import 'package:buzz/features/profile/user_profile.dart';
+import 'package:buzz/shared/theme/theme.dart';
 
 void main() {
   Widget buildTestable({required List<Override> overrides}) {
diff --git a/mobile/test/features/channels/channels_provider_test.dart b/mobile/test/features/channels/channels_provider_test.dart
index a62df820c6..7b300ca7f1 100644
--- a/mobile/test/features/channels/channels_provider_test.dart
+++ b/mobile/test/features/channels/channels_provider_test.dart
@@ -1,9 +1,9 @@
 import 'package:flutter/widgets.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:sprout_mobile/features/channels/channel_management_provider.dart';
-import 'package:sprout_mobile/features/channels/channels_provider.dart';
-import 'package:sprout_mobile/shared/relay/relay.dart';
+import 'package:buzz/features/channels/channel_management_provider.dart';
+import 'package:buzz/features/channels/channels_provider.dart';
+import 'package:buzz/shared/relay/relay.dart';
 
 /// Tests for [ChannelsNotifier] in the pure-Nostr world.
 ///
diff --git a/mobile/test/features/channels/compose_bar_test.dart b/mobile/test/features/channels/compose_bar_test.dart
index a3f6681a84..d08771e60e 100644
--- a/mobile/test/features/channels/compose_bar_test.dart
+++ b/mobile/test/features/channels/compose_bar_test.dart
@@ -10,11 +10,11 @@ import 'package:http/testing.dart' as http_testing;
 import 'package:image_picker/image_picker.dart';
 import 'package:lucide_icons_flutter/lucide_icons.dart';
 import 'package:nostr/nostr.dart' as nostr;
-import 'package:sprout_mobile/features/channels/channel.dart';
-import 'package:sprout_mobile/features/channels/channel_management_provider.dart';
-import 'package:sprout_mobile/features/channels/compose_bar.dart';
-import 'package:sprout_mobile/shared/relay/relay.dart';
-import 'package:sprout_mobile/shared/theme/theme.dart';
+import 'package:buzz/features/channels/channel.dart';
+import 'package:buzz/features/channels/channel_management_provider.dart';
+import 'package:buzz/features/channels/compose_bar.dart';
+import 'package:buzz/shared/relay/relay.dart';
+import 'package:buzz/shared/theme/theme.dart';
 
 final _pngBytes = Uint8List.fromList([
   0x89,
@@ -96,7 +96,7 @@ final _apngBytes = Uint8List.fromList([
   0x00,
 ]);
 
-const _mediaUploadPlatformChannel = MethodChannel('sprout/media_upload');
+const _mediaUploadPlatformChannel = MethodChannel('buzz/media_upload');
 
 void _setMockMediaUploadPlatformHandler(
   Future<Object?> Function(MethodCall call)? handler,
diff --git a/mobile/test/features/channels/date_formatters_test.dart b/mobile/test/features/channels/date_formatters_test.dart
index 8ab571419e..5420e26bc7 100644
--- a/mobile/test/features/channels/date_formatters_test.dart
+++ b/mobile/test/features/channels/date_formatters_test.dart
@@ -1,5 +1,5 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/channels/date_formatters.dart';
+import 'package:buzz/features/channels/date_formatters.dart';
 
 /// Helper: build a unix-second timestamp from a local DateTime.
 int _ts(DateTime local) => local.millisecondsSinceEpoch ~/ 1000;
diff --git a/mobile/test/features/channels/message_content_test.dart b/mobile/test/features/channels/message_content_test.dart
index 869734fb2d..947c57e1ed 100644
--- a/mobile/test/features/channels/message_content_test.dart
+++ b/mobile/test/features/channels/message_content_test.dart
@@ -3,9 +3,9 @@ import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:hooks_riverpod/misc.dart';
 import 'package:lucide_icons_flutter/lucide_icons.dart';
-import 'package:sprout_mobile/features/channels/message_content.dart';
-import 'package:sprout_mobile/features/channels/media_viewer_page.dart';
-import 'package:sprout_mobile/shared/theme/theme.dart';
+import 'package:buzz/features/channels/message_content.dart';
+import 'package:buzz/features/channels/media_viewer_page.dart';
+import 'package:buzz/shared/theme/theme.dart';
 
 Widget _testable(Widget child, {List<Override> overrides = const []}) {
   return ProviderScope(
@@ -245,16 +245,14 @@ void main() {
       testWidgets('renders markdown link', (tester) async {
         await tester.pumpWidget(
           _testable(
-            const MessageContent(
-              content: 'Check [Sprout](https://example.com)',
-            ),
+            const MessageContent(content: 'Check [Buzz](https://example.com)'),
           ),
         );
 
         final allText = _allRichText(tester);
-        expect(allText, contains('Sprout'));
+        expect(allText, contains('Buzz'));
         // Should not show raw markdown syntax.
-        expect(allText, isNot(contains('[Sprout]')));
+        expect(allText, isNot(contains('[Buzz]')));
         expect(allText, isNot(contains('(https://example.com)')));
       });
 
diff --git a/mobile/test/features/channels/message_media_test.dart b/mobile/test/features/channels/message_media_test.dart
index 14342c8f53..b5ddf0ee7d 100644
--- a/mobile/test/features/channels/message_media_test.dart
+++ b/mobile/test/features/channels/message_media_test.dart
@@ -1,5 +1,5 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/channels/message_media.dart';
+import 'package:buzz/features/channels/message_media.dart';
 
 void main() {
   group('classifyMediaUrl', () {
diff --git a/mobile/test/features/channels/read_state/read_state_format_test.dart b/mobile/test/features/channels/read_state/read_state_format_test.dart
index ffeeab1969..d8aa65739e 100644
--- a/mobile/test/features/channels/read_state/read_state_format_test.dart
+++ b/mobile/test/features/channels/read_state/read_state_format_test.dart
@@ -1,8 +1,8 @@
 import 'dart:convert';
 
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/channels/read_state/read_state_format.dart';
-import 'package:sprout_mobile/shared/relay/nostr_models.dart';
+import 'package:buzz/features/channels/read_state/read_state_format.dart';
+import 'package:buzz/shared/relay/nostr_models.dart';
 
 void main() {
   group('read state event validation', () {
diff --git a/mobile/test/features/channels/read_state/read_state_manager_test.dart b/mobile/test/features/channels/read_state/read_state_manager_test.dart
index 6d32fd89f3..e4240a7c14 100644
--- a/mobile/test/features/channels/read_state/read_state_manager_test.dart
+++ b/mobile/test/features/channels/read_state/read_state_manager_test.dart
@@ -4,9 +4,9 @@ import 'dart:convert';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:nostr/nostr.dart' as nostr;
 import 'package:shared_preferences/shared_preferences.dart';
-import 'package:sprout_mobile/features/channels/read_state/read_state_format.dart';
-import 'package:sprout_mobile/features/channels/read_state/read_state_manager.dart';
-import 'package:sprout_mobile/shared/relay/relay.dart';
+import 'package:buzz/features/channels/read_state/read_state_format.dart';
+import 'package:buzz/features/channels/read_state/read_state_manager.dart';
+import 'package:buzz/shared/relay/relay.dart';
 
 void main() {
   test('dispose flushes a pending publish after marking disposed', () async {
diff --git a/mobile/test/features/channels/read_state/read_state_time_test.dart b/mobile/test/features/channels/read_state/read_state_time_test.dart
index 6179e6fddc..f6875aafe4 100644
--- a/mobile/test/features/channels/read_state/read_state_time_test.dart
+++ b/mobile/test/features/channels/read_state/read_state_time_test.dart
@@ -1,5 +1,5 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/channels/read_state/read_state_time.dart';
+import 'package:buzz/features/channels/read_state/read_state_time.dart';
 
 void main() {
   test('dateTimeToUnixSeconds converts DateTime values and nulls', () {
diff --git a/mobile/test/features/channels/timeline_message_test.dart b/mobile/test/features/channels/timeline_message_test.dart
index 720c5c84ba..f1b8fce960 100644
--- a/mobile/test/features/channels/timeline_message_test.dart
+++ b/mobile/test/features/channels/timeline_message_test.dart
@@ -1,8 +1,8 @@
 import 'dart:convert';
 
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/channels/timeline_message.dart';
-import 'package:sprout_mobile/shared/relay/relay.dart';
+import 'package:buzz/features/channels/timeline_message.dart';
+import 'package:buzz/shared/relay/relay.dart';
 
 // ---------------------------------------------------------------------------
 // Helpers
@@ -328,7 +328,7 @@ void main() {
       expect(result[0].content, 'keep');
     });
 
-    test('filters messages deleted via kind:9005 (Sprout-native)', () {
+    test('filters messages deleted via kind:9005 (Buzz-native)', () {
       // Agents emit kind:9005 deletes via the CLI. Mobile must mirror desktop
       // and treat 9005 as a deletion marker, otherwise agent-deleted messages
       // stay rendered until manual refresh.
diff --git a/mobile/test/features/channels/unread_badge/unread_badge_provider_test.dart b/mobile/test/features/channels/unread_badge/unread_badge_provider_test.dart
index 1c05ce94c5..0dd988f65e 100644
--- a/mobile/test/features/channels/unread_badge/unread_badge_provider_test.dart
+++ b/mobile/test/features/channels/unread_badge/unread_badge_provider_test.dart
@@ -2,10 +2,10 @@ import 'dart:async';
 
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:sprout_mobile/features/channels/channel.dart';
-import 'package:sprout_mobile/features/channels/channels_provider.dart';
-import 'package:sprout_mobile/features/channels/read_state/read_state_provider.dart';
-import 'package:sprout_mobile/features/channels/unread_badge/unread_badge_provider.dart';
+import 'package:buzz/features/channels/channel.dart';
+import 'package:buzz/features/channels/channels_provider.dart';
+import 'package:buzz/features/channels/read_state/read_state_provider.dart';
+import 'package:buzz/features/channels/unread_badge/unread_badge_provider.dart';
 
 /// Unit tests for [unreadBadgeProvider].
 ///
diff --git a/mobile/test/features/custom_emoji/custom_emoji_test.dart b/mobile/test/features/custom_emoji/custom_emoji_test.dart
index d57e10786c..4e9feb89f8 100644
--- a/mobile/test/features/custom_emoji/custom_emoji_test.dart
+++ b/mobile/test/features/custom_emoji/custom_emoji_test.dart
@@ -1,6 +1,6 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/custom_emoji/custom_emoji.dart';
-import 'package:sprout_mobile/shared/relay/nostr_models.dart';
+import 'package:buzz/features/custom_emoji/custom_emoji.dart';
+import 'package:buzz/shared/relay/nostr_models.dart';
 
 NostrEvent _event(String pubkey, List<List<String>> emojiTags) {
   return NostrEvent(
diff --git a/mobile/test/features/forum/forum_models_test.dart b/mobile/test/features/forum/forum_models_test.dart
index 4bd8f4937c..a242f28f0d 100644
--- a/mobile/test/features/forum/forum_models_test.dart
+++ b/mobile/test/features/forum/forum_models_test.dart
@@ -1,5 +1,5 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/features/forum/forum_models.dart';
+import 'package:buzz/features/forum/forum_models.dart';
 
 // ---------------------------------------------------------------------------
 // Helpers
diff --git a/mobile/test/features/forum/forum_widgets_test.dart b/mobile/test/features/forum/forum_widgets_test.dart
index 464c2f7134..76ded80297 100644
--- a/mobile/test/features/forum/forum_widgets_test.dart
+++ b/mobile/test/features/forum/forum_widgets_test.dart
@@ -1,17 +1,17 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:sprout_mobile/features/channels/channel.dart';
-import 'package:sprout_mobile/features/forum/forum_models.dart';
-import 'package:sprout_mobile/features/forum/forum_post_card.dart';
-import 'package:sprout_mobile/features/forum/forum_posts_view.dart';
-import 'package:sprout_mobile/features/forum/forum_provider.dart';
-import 'package:sprout_mobile/features/forum/forum_thread_page.dart';
-import 'package:sprout_mobile/features/profile/profile_provider.dart';
-import 'package:sprout_mobile/features/profile/user_cache_provider.dart';
-import 'package:sprout_mobile/features/profile/user_profile.dart';
-import 'package:sprout_mobile/shared/relay/relay.dart';
-import 'package:sprout_mobile/shared/theme/theme.dart';
+import 'package:buzz/features/channels/channel.dart';
+import 'package:buzz/features/forum/forum_models.dart';
+import 'package:buzz/features/forum/forum_post_card.dart';
+import 'package:buzz/features/forum/forum_posts_view.dart';
+import 'package:buzz/features/forum/forum_provider.dart';
+import 'package:buzz/features/forum/forum_thread_page.dart';
+import 'package:buzz/features/profile/profile_provider.dart';
+import 'package:buzz/features/profile/user_cache_provider.dart';
+import 'package:buzz/features/profile/user_profile.dart';
+import 'package:buzz/shared/relay/relay.dart';
+import 'package:buzz/shared/theme/theme.dart';
 
 // ---------------------------------------------------------------------------
 // Test fixtures
diff --git a/mobile/test/features/pairing/pairing_page_test.dart b/mobile/test/features/pairing/pairing_page_test.dart
index d7b3b432c4..b349d30312 100644
--- a/mobile/test/features/pairing/pairing_page_test.dart
+++ b/mobile/test/features/pairing/pairing_page_test.dart
@@ -1,8 +1,8 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:sprout_mobile/features/pairing/pairing_page.dart';
-import 'package:sprout_mobile/features/pairing/pairing_provider.dart';
+import 'package:buzz/features/pairing/pairing_page.dart';
+import 'package:buzz/features/pairing/pairing_provider.dart';
 
 import '../../helpers/widget_helpers.dart';
 
@@ -15,7 +15,7 @@ void main() {
         WidgetHelpers.testable(child: const PairingPage()),
       );
 
-      expect(find.text('Welcome to Sprout'), findsOneWidget);
+      expect(find.text('Welcome to Buzz'), findsOneWidget);
       expect(find.text('Scan QR Code'), findsOneWidget);
       expect(find.text('or paste pairing code'), findsOneWidget);
       expect(find.text('Connect'), findsOneWidget);
diff --git a/mobile/test/features/pairing/pairing_provider_test.dart b/mobile/test/features/pairing/pairing_provider_test.dart
index 060626fd04..4ab748b637 100644
--- a/mobile/test/features/pairing/pairing_provider_test.dart
+++ b/mobile/test/features/pairing/pairing_provider_test.dart
@@ -2,10 +2,10 @@ import 'dart:convert';
 
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:sprout_mobile/features/pairing/pairing_provider.dart';
-import 'package:sprout_mobile/shared/auth/auth.dart';
+import 'package:buzz/features/pairing/pairing_provider.dart';
+import 'package:buzz/shared/auth/auth.dart';
 
-/// Tests for [PairingNotifier]'s legacy `sprout://` payload parsing and
+/// Tests for [PairingNotifier]'s legacy `buzz://` payload parsing and
 /// SSRF-prevention validation.
 ///
 /// The pairing flow used to validate by calling `GET /api/users/me/profile`
@@ -16,7 +16,7 @@ import 'package:sprout_mobile/shared/auth/auth.dart';
 ///
 /// What we still cover here:
 ///   - Initial state.
-///   - Parsing every documented payload format (raw base64, `sprout://`
+///   - Parsing every documented payload format (raw base64, `buzz://`
 ///     prefix, whitespace).
 ///   - Failure modes that return BEFORE any network call: invalid base64,
 ///     wrong shape (non-object, missing fields, missing nsec), and SSRF
@@ -57,6 +57,18 @@ void main() {
       expect(fakeAuth.lastWorkspace, isNull);
     });
 
+    test('accepts buzz scheme prefix', () async {
+      container = createContainer();
+
+      final code = 'buzz://${_encodePairingCode()}';
+      await container.read(pairingProvider.notifier).pair(code);
+
+      final state = container.read(pairingProvider);
+      expect(state.status, PairingStatus.error);
+      expect(state.errorMessage, contains('missing nsec'));
+      expect(fakeAuth.lastWorkspace, isNull);
+    });
+
     test('invalid base64 sets format error', () async {
       container = createContainer();
 
diff --git a/mobile/test/features/profile/presence_cache_provider_test.dart b/mobile/test/features/profile/presence_cache_provider_test.dart
index 78b48ed0f8..edde5a79e9 100644
--- a/mobile/test/features/profile/presence_cache_provider_test.dart
+++ b/mobile/test/features/profile/presence_cache_provider_test.dart
@@ -1,8 +1,8 @@
 import 'package:flutter/widgets.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:sprout_mobile/features/profile/presence_cache_provider.dart';
-import 'package:sprout_mobile/shared/relay/relay.dart';
+import 'package:buzz/features/profile/presence_cache_provider.dart';
+import 'package:buzz/shared/relay/relay.dart';
 
 /// Tests for [PresenceCacheNotifier] in the pure-Nostr world.
 ///
diff --git a/mobile/test/features/pulse/compose_note_page_test.dart b/mobile/test/features/pulse/compose_note_page_test.dart
index 042550ef99..5ac84bcc8c 100644
--- a/mobile/test/features/pulse/compose_note_page_test.dart
+++ b/mobile/test/features/pulse/compose_note_page_test.dart
@@ -1,11 +1,11 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:sprout_mobile/features/profile/user_cache_provider.dart';
-import 'package:sprout_mobile/features/profile/user_profile.dart';
-import 'package:sprout_mobile/features/pulse/compose_note_page.dart';
-import 'package:sprout_mobile/features/pulse/pulse_models.dart';
-import 'package:sprout_mobile/shared/theme/theme.dart';
+import 'package:buzz/features/profile/user_cache_provider.dart';
+import 'package:buzz/features/profile/user_profile.dart';
+import 'package:buzz/features/pulse/compose_note_page.dart';
+import 'package:buzz/features/pulse/pulse_models.dart';
+import 'package:buzz/shared/theme/theme.dart';
 
 class _FakeUserCacheNotifier extends UserCacheNotifier {
   final Map<String, UserProfile> _users;
@@ -87,7 +87,7 @@ void main() {
       id: 'note2',
       pubkey: 'alice_pk',
       createdAt: DateTime.now().millisecondsSinceEpoch ~/ 1000 - 60,
-      content: '#sprout\n![image](https://example.com/big.png)',
+      content: '#buzz\n![image](https://example.com/big.png)',
       tags: const [
         [
           'imeta',
diff --git a/mobile/test/helpers/widget_helpers.dart b/mobile/test/helpers/widget_helpers.dart
index 543f5e9dd5..b7f119db87 100644
--- a/mobile/test/helpers/widget_helpers.dart
+++ b/mobile/test/helpers/widget_helpers.dart
@@ -1,7 +1,7 @@
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:hooks_riverpod/misc.dart';
-import 'package:sprout_mobile/shared/theme/theme.dart';
+import 'package:buzz/shared/theme/theme.dart';
 
 class WidgetHelpers {
   static Widget testable({
diff --git a/mobile/test/shared/relay/media_upload_test.dart b/mobile/test/shared/relay/media_upload_test.dart
index 4b2e7ad6d8..519cc6a492 100644
--- a/mobile/test/shared/relay/media_upload_test.dart
+++ b/mobile/test/shared/relay/media_upload_test.dart
@@ -8,7 +8,7 @@ import 'package:http/http.dart' as http;
 import 'package:http/testing.dart' as http_testing;
 import 'package:image_picker/image_picker.dart';
 import 'package:nostr/nostr.dart' as nostr;
-import 'package:sprout_mobile/shared/relay/media_upload.dart';
+import 'package:buzz/shared/relay/media_upload.dart';
 
 final _pngBytes = Uint8List.fromList([
   0x89,
@@ -204,7 +204,7 @@ final _animatedWebpBytes = Uint8List.fromList([
   0x00,
 ]);
 
-const _mediaUploadPlatformChannel = MethodChannel('sprout/media_upload');
+const _mediaUploadPlatformChannel = MethodChannel('buzz/media_upload');
 
 void _setMockMediaUploadPlatformHandler(
   Future<Object?> Function(MethodCall call)? handler,
diff --git a/mobile/test/shared/relay/nostr_models_test.dart b/mobile/test/shared/relay/nostr_models_test.dart
index 7e74ffff7d..b4efad4ac9 100644
--- a/mobile/test/shared/relay/nostr_models_test.dart
+++ b/mobile/test/shared/relay/nostr_models_test.dart
@@ -1,5 +1,5 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/shared/relay/nostr_models.dart';
+import 'package:buzz/shared/relay/nostr_models.dart';
 
 void main() {
   test('NostrFilter serializes and preserves authors', () {
diff --git a/mobile/test/shared/relay/relay_session_test.dart b/mobile/test/shared/relay/relay_session_test.dart
index d5d9e9f3d4..3c4ee4e84d 100644
--- a/mobile/test/shared/relay/relay_session_test.dart
+++ b/mobile/test/shared/relay/relay_session_test.dart
@@ -1,5 +1,5 @@
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/shared/relay/relay.dart';
+import 'package:buzz/shared/relay/relay.dart';
 
 void main() {
   test('delivers the same live event to each matching subscription', () async {
diff --git a/mobile/test/shared/widgets/filter_chip_bar_test.dart b/mobile/test/shared/widgets/filter_chip_bar_test.dart
index 2d185aebbc..d5c8289d8d 100644
--- a/mobile/test/shared/widgets/filter_chip_bar_test.dart
+++ b/mobile/test/shared/widgets/filter_chip_bar_test.dart
@@ -1,7 +1,7 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/shared/theme/theme.dart';
-import 'package:sprout_mobile/shared/widgets/filter_chip_bar.dart';
+import 'package:buzz/shared/theme/theme.dart';
+import 'package:buzz/shared/widgets/filter_chip_bar.dart';
 
 void main() {
   testWidgets('selected chip resolves the accent (scheme.primary) as fill', (
diff --git a/mobile/test/shared/workspace/workspace_provider_test.dart b/mobile/test/shared/workspace/workspace_provider_test.dart
index 4aff3cb8fa..6979c4a6a2 100644
--- a/mobile/test/shared/workspace/workspace_provider_test.dart
+++ b/mobile/test/shared/workspace/workspace_provider_test.dart
@@ -1,8 +1,8 @@
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:sprout_mobile/shared/workspace/workspace.dart';
-import 'package:sprout_mobile/shared/workspace/workspace_provider.dart';
-import 'package:sprout_mobile/shared/workspace/workspace_storage.dart';
+import 'package:buzz/shared/workspace/workspace.dart';
+import 'package:buzz/shared/workspace/workspace_provider.dart';
+import 'package:buzz/shared/workspace/workspace_storage.dart';
 
 import 'workspace_storage_test.dart';
 
diff --git a/mobile/test/shared/workspace/workspace_storage_test.dart b/mobile/test/shared/workspace/workspace_storage_test.dart
index a75e74b175..7a6fc0ceea 100644
--- a/mobile/test/shared/workspace/workspace_storage_test.dart
+++ b/mobile/test/shared/workspace/workspace_storage_test.dart
@@ -1,7 +1,7 @@
 import 'package:flutter_secure_storage/flutter_secure_storage.dart';
 import 'package:flutter_test/flutter_test.dart';
-import 'package:sprout_mobile/shared/workspace/workspace.dart';
-import 'package:sprout_mobile/shared/workspace/workspace_storage.dart';
+import 'package:buzz/shared/workspace/workspace.dart';
+import 'package:buzz/shared/workspace/workspace_storage.dart';
 
 /// In-memory fake that extends Fake to satisfy all FlutterSecureStorage
 /// interface methods, but implements the core read/write/delete with real
@@ -165,10 +165,10 @@ void main() {
 
     group('migration', () {
       test('migrates legacy keys to workspace on first load', () async {
-        fakeSecure['sprout_relay_url'] = 'https://legacy.example.com';
-        fakeSecure['sprout_token'] = 'legacy_token';
-        fakeSecure['sprout_pubkey'] = 'legacy_pub';
-        fakeSecure['sprout_nsec'] = 'legacy_nsec';
+        fakeSecure['buzz_relay_url'] = 'https://legacy.example.com';
+        fakeSecure['buzz_token'] = 'legacy_token';
+        fakeSecure['buzz_pubkey'] = 'legacy_pub';
+        fakeSecure['buzz_nsec'] = 'legacy_nsec';
 
         final loaded = await storage.loadAll();
 
@@ -179,10 +179,10 @@ void main() {
         expect(loaded.first.name, isNotEmpty);
 
         // Legacy keys should be deleted.
-        expect(fakeSecure['sprout_relay_url'], isNull);
-        expect(fakeSecure['sprout_token'], isNull);
-        expect(fakeSecure['sprout_pubkey'], isNull);
-        expect(fakeSecure['sprout_nsec'], isNull);
+        expect(fakeSecure['buzz_relay_url'], isNull);
+        expect(fakeSecure['buzz_token'], isNull);
+        expect(fakeSecure['buzz_pubkey'], isNull);
+        expect(fakeSecure['buzz_nsec'], isNull);
 
         // Active ID should be set.
         final activeId = await storage.loadActiveId();
@@ -195,8 +195,8 @@ void main() {
       });
 
       test('does not re-migrate after first load', () async {
-        fakeSecure['sprout_relay_url'] = 'https://legacy.example.com';
-        fakeSecure['sprout_token'] = 'legacy_token';
+        fakeSecure['buzz_relay_url'] = 'https://legacy.example.com';
+        fakeSecure['buzz_token'] = 'legacy_token';
 
         final first = await storage.loadAll();
         expect(first, hasLength(1));
@@ -207,8 +207,8 @@ void main() {
       });
 
       test('migration generates name from localhost URL', () async {
-        fakeSecure['sprout_relay_url'] = 'http://localhost:3000';
-        fakeSecure['sprout_token'] = 'tok';
+        fakeSecure['buzz_relay_url'] = 'http://localhost:3000';
+        fakeSecure['buzz_token'] = 'tok';
 
         final loaded = await storage.loadAll();
         expect(loaded.first.name, 'Local Dev');
diff --git a/mobile/test/widget_test.dart b/mobile/test/widget_test.dart
index 9f2cb530d7..a72b34852a 100644
--- a/mobile/test/widget_test.dart
+++ b/mobile/test/widget_test.dart
@@ -1,9 +1,9 @@
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:shared_preferences/shared_preferences.dart';
-import 'package:sprout_mobile/app.dart';
-import 'package:sprout_mobile/shared/auth/auth.dart';
-import 'package:sprout_mobile/shared/theme/theme_provider.dart';
+import 'package:buzz/app.dart';
+import 'package:buzz/shared/auth/auth.dart';
+import 'package:buzz/shared/theme/theme_provider.dart';
 
 void main() {
   testWidgets('App renders pairing page when unauthenticated', (
@@ -22,7 +22,7 @@ void main() {
       ),
     );
     await tester.pump();
-    expect(find.text('Welcome to Sprout'), findsOneWidget);
+    expect(find.text('Welcome to Buzz'), findsOneWidget);
   });
 }
 
