Skip to content

fix(brand): sweep upstream names users can see - #138

Merged
its-janghoon merged 6 commits into
developfrom
fix/branding-sweep
Oct 20, 2026
Merged

its-janghoon merged 6 commits into
developfrom
fix/branding-sweep

Conversation

@its-janghoon

Copy link
Copy Markdown
Member

Summary

Brand sweep: upstream names the user can see.

  • Strings: Chrome -> Redrob in 40 more upstream strings files; Google's own product names protected. New plaster rekey keeps the Korean translations attached to the renamed English (grit ids from grit itself).
  • OS: linux desktop id and icon redrob-browser, redrob-browser:// scheme, .deb Homepage, AppStream without Google's screenshot, man page, mac Finder kinds and AppleScript suite.
  • Extension: no web access from browseros.com; changelog link to GitHub releases.
  • Linux keyring: "Redrob Safe Storage", copying the secret from the old Chromium item (never deleted).
  • Windows executable redrob-browser.exe; agent server redrob-agent-server.

Tested

Not built. Patches generated with plaster.py generate; both rule parsers agree.

Check at the next release build

  • Windows: fresh install, and update over 0.4 (old chrome.exe shortcuts retarget).
  • mac: new server path is signed before notarization.
  • Linux: existing profile still decrypts saved passwords after the keyring migration.

253 visible strings still said "Chrome" in plain text where the product
means itself (address-bar actions, OS permission hints, safety pages,
Windows Hello prompts). IDS_PRODUCT_NAME branding cannot reach text the
English hard-codes.

- short-name sweep on 40 more strings files, google-chrome preset first
  where "Google Chrome" speaks as the browser
- short-name protects Google's own names: Gemini in Chrome, Chrome for
  Testing, Chrome Browser Cloud Management, Chrome Sync
- plaster `rekey`: a renamed English string moves its grit fingerprint,
  so the Korean was silently dropped to English. rekey copies each
  translation to the new id with the name renamed, and renames Korean
  that wrote the name out where the English used a placeholder. ids come
  from grit itself, not a reimplementation.
- six ko.xtb rules, including chromium_strings, whose product-name
  renames had the same English fallback

Not built.
- web_accessible_resources: drop browseros.com and its subdomains.
  Upstream's account site could frame our app.html; our panel never
  talks to that site any more. The legacy agent extension id stays.
- productWebHost.ts removed, its only use was that list.
- changelog link: GitHub releases instead of docs.browseros.com.

Not built.
- linux desktop id redrob-browser.desktop, the file our .deb installs;
  taskbar grouping and default-browser registration used Chromium's
- linux icon name redrob-browser
- linux scheme redrob-browser:// (same as Windows) instead of chromium://
- .deb Homepage field; AppStream drops Google's Chrome screenshot
- man page: publisher, help and bug links are ours
- mac: Finder kinds and the AppleScript suite name say Redrob

Not built.
The keyring item was "Chromium Safe Storage" (application=chromium),
the same item a real Chromium uses. It is now "Redrob Safe Storage"
(application=redrob-browser), KWallet folder "Redrob Keys".

Renaming alone would lose every saved password: data is encrypted
under the old secret. When our item is missing, the provider looks up
the Chromium one, copies its secret into our item and derives the
same key. The old item is never deleted. KWallet does the same.

Not built.
Upstream builds chrome.exe; the portable zip shipped it plus a copy under
our name, and Task Manager and file properties said chrome.exe.

- link as redrob-browser.exe (chrome/BUILD.gn, reorder-imports.py)
- kBrowserProcessExecutableName/Path, installer kChromeExe/New/Old,
  chrome_proxy, launcher_support, FILES.cfg, chrome.release,
  mini_installer inputs, version resource, VisualElements manifest name
- setup deletes a pre-rename chrome.exe and its twins, best effort
- portable zip no longer copies; redrob.py, redrob_setup.cpp and the
  manual windows.yml use the new name. chrome.dll keeps its name.

Not built.
The macOS firewall prompt, Task Manager and ps showed browseros_server.

- build output (agent descriptor), staging check in redrob.py
- browser descriptor, gn resource validation, server BUILD.gn
- linux unstripped exemption path, mac signing path and identifier

No server OTA appcast is published, so no installed browser expects the
old name from an update. Folder names (BrowserOSServer) stay: not shown.

Not built.
@its-janghoon
its-janghoon merged commit 4815345 into develop Oct 20, 2026
6 checks passed
@its-janghoon
its-janghoon deleted the fix/branding-sweep branch October 20, 2026 03:12
@its-janghoon its-janghoon mentioned this pull request Oct 20, 2026
its-janghoon added a commit that referenced this pull request Oct 20, 2026
plaster.py generate rebuilds a patch from pristine + its rules alone, so
regenerating chrome/BUILD.gn and chrome/app/settings_strings.grdp in #138
threw away the hand-written hunks those patches carried: the browseros
deps and defines in chrome/BUILD.gn, and IDS_SETTINGS_IMPORT_EXTENSIONS_CHECKBOX
/ IDS_SETTINGS_IMPORT_COOKIES_CHECKBOX, which settings_localized_strings_provider.cc
still uses, so the release build failed to compile.

Each patch is now the pre-#138 patch with only the rules #138 added applied on
top; every line of #138's version is still in it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant