diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f94343c..c541b853 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,20 @@ Redrob Browser's own versions. The Chromium release each one is cut from is in ` upstream's four-week cadence whether we ship anything or not — the two numbers answer different questions, so `scripts/redrob.py version` prints both. +## 0.5.0 — 2026-10-20 + +**A new app icon.** Redrob Browser wears the 2026 design-system icon from @redrob-labs/ui 1.8.0 on every +platform, in the dock, the taskbar, the launcher catalog and the extension. + +**Redrob everywhere you look.** The names the browser shows you say Redrob Browser instead of Chrome: page +strings (Korean included), the Linux desktop entry, icon, man page and app-store metadata, the macOS document +kinds, the Windows executable (`redrob-browser.exe`) and the agent server process. The default-browser prompt and +the WebUI marks in dark mode use Redrob artwork. On Linux the password-store key lives in a "Redrob Safe Storage" +keyring item, copied from the old Chromium item, which is left in place. + +**Redrob Launcher links open the launcher.** On Windows the browser registers `redrob-browser://` as its own +launch scheme and leaves `redrob://` to Redrob Launcher, so `redrob://open/` links no longer open the browser. + ## 0.4.0 — 2026-10-20 **Your phone can sign you in, too.** The app-bridge tools Redrob Code's daemon gets (the phone chat included) now diff --git a/REDROB_VERSION b/REDROB_VERSION index 1d0ba9ea..8f0916f7 100644 --- a/REDROB_VERSION +++ b/REDROB_VERSION @@ -1 +1 @@ -0.4.0 +0.5.0 diff --git a/sources/chrome/installer/linux/common/redrob-version.txt b/sources/chrome/installer/linux/common/redrob-version.txt index 1d0ba9ea..8f0916f7 100644 --- a/sources/chrome/installer/linux/common/redrob-version.txt +++ b/sources/chrome/installer/linux/common/redrob-version.txt @@ -1 +1 @@ -0.4.0 +0.5.0 diff --git a/vendor/browseros/chromium_patches/chrome/BUILD.gn b/vendor/browseros/chromium_patches/chrome/BUILD.gn index 82625930..e73d28e6 100644 --- a/vendor/browseros/chromium_patches/chrome/BUILD.gn +++ b/vendor/browseros/chromium_patches/chrome/BUILD.gn @@ -1,8 +1,18 @@ diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn -index 8a60d7061bbfb..c05386759b2bd 100644 +index 8a60d7061bbfb..cb2c93b9d9f7f 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn -@@ -87,12 +87,12 @@ if (is_win) { +@@ -15,7 +15,9 @@ import("//build/config/win/console_app.gni") + import("//build/config/win/manifest.gni") + import("//build/private_code_test/private_code_test.gni") + import("//build/toolchain/toolchain.gni") ++import("//chrome/browser/browseros/buildflags.gni") + import("//chrome/browser/buildflags.gni") ++import("//chrome/browser/sparkle_buildflags.gni") + import("//chrome/chrome_paks.gni") + import("//chrome/common/features.gni") + import("//chrome/process_version_rc_template.gni") +@@ -87,12 +89,12 @@ if (is_win) { # initialexe/ is used so that the we can reorder imports and write back to # the final destination at $root_out_dir/. inputs = [ @@ -19,7 +29,7 @@ index 8a60d7061bbfb..c05386759b2bd 100644 ] args = [ "-i", -@@ -150,7 +150,8 @@ if (!is_android && !is_mac) { +@@ -150,7 +152,8 @@ if (!is_android && !is_mac) { } if (is_win) { @@ -29,7 +39,40 @@ index 8a60d7061bbfb..c05386759b2bd 100644 } else { _chrome_output_name = "chrome" } -@@ -1381,6 +1382,11 @@ if (is_win) { +@@ -381,6 +384,8 @@ if (!is_android && !is_mac) { + } + + data_deps += [ ++ "//chrome/browser/browseros/bundled_extensions", ++ "//chrome/browser/browseros/server:browseros_server_resources", + "//chrome/browser/resources/media/mei_preload:component", + "//chrome/browser/web_applications/isolated_web_apps/key_distribution/preload:component", + "//components/privacy_sandbox/privacy_sandbox_attestations/preload:component", +@@ -538,6 +543,7 @@ if (is_win) { + "CHROMIUM_BUNDLE_ID=$chrome_mac_bundle_id", + "CHROMIUM_SHORT_NAME=$chrome_product_short_name", + "CHROMIUM_CREATOR=$chrome_mac_creator_code", ++ "BROWSEROS_PRODUCT_DIR_NAME=$browseros_product_dir_name", + ] + + sources = [ +@@ -556,6 +562,7 @@ if (is_win) { + "//base/allocator:early_zone_registration_apple", + "//build:branding_buildflags", + "//build/config/compiler:compiler_buildflags", ++ "//chrome/browser/browseros/server:browseros_server_resources", + "//chrome/common:buildflags", + "//chrome/common:version_header", + ] +@@ -1322,6 +1329,7 @@ if (is_win) { + "//chrome/browser:chrome_process_singleton", + "//chrome/browser:process_singleton", + "//chrome/browser:startup_data", ++ "//chrome/browser/browseros/core", + "//chrome/browser/lifetime", + "//chrome/browser/mac", + "//chrome/common:buildflags", +@@ -1381,6 +1389,11 @@ if (is_win) { public_deps = [ ":chrome_dll" ] bundle_deps = [ @@ -41,3 +84,40 @@ index 8a60d7061bbfb..c05386759b2bd 100644 ":aperitif_library", ":chrome_framework_helpers", ":chrome_framework_resources", +@@ -1395,6 +1408,9 @@ if (is_win) { + if (is_chrome_branded) { + bundle_deps += [ ":chromecompaneros_bundle_data" ] + } ++ ++ # Bundle the first-run extensions in the framework resource directory. ++ bundle_deps += [ "//chrome/browser/browseros/bundled_extensions" ] + if (!use_static_angle) { + bundle_deps += [ ":angle_binaries" ] + } +@@ -1405,6 +1421,14 @@ if (is_win) { + bundle_deps += [ ":chrome_renderer_library" ] + } + ++ # Sparkle lives inside this framework; expose its directory through the ++ # versioned bundle and resolve it relative to the framework binary. ++ if (enable_sparkle) { ++ bundle_deps += [ "//third_party/sparkle:sparkle_framework_bundle" ] ++ configs += [ "//third_party/sparkle:sparkle_link_framework" ] ++ framework_contents += [ "Frameworks" ] ++ } ++ + configs += [ ":chrome_dll_symbol_order" ] + if (!is_component_build && !using_sanitizer) { + configs += [ ":chrome_dll_symbol_exports" ] +@@ -2070,6 +2094,11 @@ if (enable_separate_renderer_binary) { + "//content/public/app", + "//v8", + ] ++ if (!is_win) { ++ # These renderer targets compile the crash reporter client. Depend only on ++ # its BrowserOS constants, keeping the browser implementation out. ++ _chrome_renderer_deps += [ "//chrome/browser/browseros/core" ] ++ } + if (is_win || is_linux || is_chromeos || is_mac) { + _chrome_renderer_deps += [ "//components/webapps/isolated_web_apps:scheme" ] + } diff --git a/vendor/browseros/chromium_patches/chrome/app/settings_strings.grdp b/vendor/browseros/chromium_patches/chrome/app/settings_strings.grdp index a016d46e..421cd7f6 100644 --- a/vendor/browseros/chromium_patches/chrome/app/settings_strings.grdp +++ b/vendor/browseros/chromium_patches/chrome/app/settings_strings.grdp @@ -1,5 +1,5 @@ diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp -index caae29834c2cf..1d4203a8b8e97 100644 +index caae29834c2cf..1f872a6c8d331 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp @@ -55,20 +55,20 @@ @@ -571,7 +571,20 @@ index caae29834c2cf..1d4203a8b8e97 100644 Ask every time -@@ -3825,16 +3825,16 @@ +@@ -3806,6 +3806,12 @@ + + Autofill form data + ++ ++ Extensions ++ ++ ++ Login sessions ++ + + + Choose File +@@ -3825,16 +3831,16 @@ History search, powered by AI @@ -591,7 +604,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 You can search in the address bar using "@history", as well as from the History page -@@ -3846,31 +3846,31 @@ +@@ -3846,31 +3852,31 @@ As you browse sites, their page contents are encrypted and saved to your device @@ -630,7 +643,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 Use everyday language to search your browsing history and find sites you visited. You can also ask questions and get answers based on your browsing history. The setting is off. -@@ -3945,7 +3945,7 @@ +@@ -3945,7 +3951,7 @@ @@ -639,7 +652,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 Use graphics acceleration when available -@@ -3953,28 +3953,28 @@ +@@ -3953,28 +3959,28 @@ Enable Process Isolation @@ -678,7 +691,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 Browser proxy settings are controlled by multiple sources -@@ -3983,10 +3983,10 @@ +@@ -3983,10 +3989,10 @@ On-device AI @@ -691,7 +704,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 -@@ -4236,7 +4236,7 @@ +@@ -4236,7 +4242,7 @@ Safety Check @@ -700,7 +713,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 Go to Safety Check -@@ -4254,19 +4254,19 @@ +@@ -4254,19 +4260,19 @@ Checked $12 days ago @@ -725,7 +738,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 Your organization turned off saving passwords -@@ -4276,7 +4276,7 @@ +@@ -4276,7 +4282,7 @@ Enhanced Safe Browsing is on @@ -734,7 +747,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 Safe Browsing is on -@@ -4312,12 +4312,12 @@ +@@ -4312,12 +4318,12 @@ Safe Browsing @@ -749,7 +762,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 Restart your device to finish updating -@@ -4331,27 +4331,27 @@ +@@ -4331,27 +4337,27 @@ =1 {You can stop this site from sending future notifications.} other {You can stop these sites from sending future notifications.}} @@ -782,7 +795,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 Safe Browsing is off -@@ -4382,14 +4382,14 @@ +@@ -4382,14 +4388,14 @@ , @@ -802,7 +815,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 Learn more about using generative AI at work -@@ -4411,8 +4411,8 @@ +@@ -4411,8 +4417,8 @@ Automated Password Change @@ -813,7 +826,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 If one of your passwords is found in a data breach, Google Password Manager asks if you want it changed to a strong password -@@ -4431,13 +4431,13 @@ +@@ -4431,13 +4437,13 @@ @@ -830,7 +843,7 @@ index caae29834c2cf..1d4203a8b8e97 100644 Enhanced protection is off -@@ -4447,23 +4447,23 @@ +@@ -4447,23 +4453,23 @@