Skip to content

Crewmate/full rebrand crewm8#789

Open
gokulb20 wants to merge 13 commits intobrowseros-ai:devfrom
gokulb20:crewmate/full-rebrand-crewm8
Open

Crewmate/full rebrand crewm8#789
gokulb20 wants to merge 13 commits intobrowseros-ai:devfrom
gokulb20:crewmate/full-rebrand-crewm8

Conversation

@gokulb20
Copy link
Copy Markdown

No description provided.

gokulb20 and others added 13 commits April 22, 2026 21:35
)

Phase 1 — extension-visible rebrand:
- Replace user-visible "BrowserOS" strings with "crewm8" across the WXT
  extension surfaces: sidebar, new tab, onboarding, app shell, settings.
- Update wxt.config.ts manifest name + action tooltip.
- Leave Chromium fork (packages/browseros/) untouched; browser binary still
  identifies as BrowserOS internally per scoping decision.
- Leave code identifiers (BrowserOSIcon, useBrowserOSProviders, etc.) and
  internal server log lines as-is.

Phase 2 — soft strip:
- Stub lib/metrics/track.ts, lib/sentry/sentry.ts, and server metrics.ts /
  sentry.ts to no-ops so the ~80 track() and sentry.captureException() call
  sites keep compiling without edits.
- Delete lib/analytics/posthog.ts, lib/sentry/sanitize.ts, and the shared
  sentry/sanitize module (no remaining importers).
- Rewrite AnalyticsProvider to a passthrough; identify/resetIdentity to no-ops.
- Remove @sentry/vite-plugin from wxt.config.
- Drop PostHog + Sentry deps: @posthog/react, posthog-js, posthog-node,
  @sentry/react, @sentry/bun, @sentry/vite-plugin, @sentry/cli.
- Remove POSTHOG_API_KEY / SENTRY_DSN / VITE_PUBLIC_POSTHOG_* /
  VITE_PUBLIC_SENTRY_DSN from env schemas and .env examples; drop them from
  REQUIRED_FOR_PRODUCTION.
- Strip the MCP-server and Agentic-Coding feature sections, the launch video
  frame, and the BROWSER_OS_INTRO_VIDEO_URL embed from the onboarding Features
  page; change the terminal CTA from "Start Using BrowserOS" to "Get started".
- Rewrite the browseros_info tool description to a short generic blurb,
  dropping all docs.browseros.com links.

Phase 3 (sign-in + crewm8 gateway wiring) is deferred until after team review.

https://claude.ai/code/session_013Xy5CeAg4jhvxVsSt7pDgC

Co-authored-by: Claude <[email protected]>
- Add crewm8-bear.svg and crewm8-logo.svg under resources/icons/src/
- Add reproducible generate-icons.sh that renders every required
  PNG size, macOS app.icns/AppIcon.icns, Windows chromium.ico, and xpm
- Style: solid black background, white bear centered at ~68% of canvas
- Replaces BrowserOS default logos across product_logo_*.png (16-1024),
  default_100/200_percent, linux, chromeos, mac/, win/
- mac/Assets.car left unchanged (Xcode-compiled; app.icns is primary)

Part of crewmate/full-rebrand-crewm8.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
User-visible product name, bundle ID, updater names, crash-reporter names
all rebranded to Crewm8. Internal code identifiers (class names, comments,
log prefixes, kAction* constants, chrome://browseros-welcome route) left
as-is for upstream merge compatibility.

chromium_files/ (full-file overrides — no upstream conflicts):
- chrome/app/theme/chromium/BRANDING.release + .debug:
  PRODUCT_FULLNAME, COMPANY_FULLNAME → Crewm8
  MAC_BUNDLE_ID com.browseros.BrowserOS → ai.crewm8.Crewm8
  Debug bundle ID → ai.crewm8.dev.Crewm8
- chrome/updater/branding.gni: browser_name, keystone_app_name,
  mac_browser_bundle_identifier, privileged_helper_name, all updater_*
  strings → Crewm8 / ai.crewm8.*
- chrome/enterprise_companion/branding.gni: enterprise companion names
  and bundle ID → Crewm8

chromium_patches/ (unified-diff patches — edited inside the diff):
- chrome/app/app-Info.plist: CrProductDirName → Crewm8
- chrome/app/chrome_crash_reporter_client.cc + _win.cc: product_name
  strings Chrome/BrowserOS → Crewm8 (all platforms)
- chrome/browser/flag_descriptions.h: chrome://flags entries → Crewm8
- chrome/browser/ui/browser_actions.cc: "Ask BrowserOS" tooltip +
  installing-toast → Crewm8
- chrome/browser/ui/browser_command_controller.cc: installing-toast → Crewm8
- chrome/browser/ui/webui/browseros_welcome.h: welcome page prose → Crewm8
  (left github URL and chrome://browseros-welcome route as-is; class names
  BrowserOSWelcome* preserved as code identifiers)
- chrome/install_static/chromium_install_modes.h: kProductPathName,
  base_app_name, base_app_id, ProgID prefixes (BOSHTML→C8HTML etc.),
  direct_launch_url_scheme browseros → crewm8
- components/os_crypt/common/keychain_password_mac.mm: Safe Storage service
  and account name → Crewm8 (note: fresh keychain; existing BrowserOS
  entries not carried over)

resources/entitlements/Info.plist.additions:
- CrProductDirName → Crewm8 (new builds use fresh ~/Library/Application
  Support/Crewm8/ profile dir)

Deferred / known TODOs:
- chrome_crash_reporter_client_win.cc still points at BrowserOS's Sentry
  minidump endpoint; replace or stub when Crewm8 crash infrastructure is up
- Windows CLSIDs/GUIDs in install_modes.h unchanged — regenerate before a
  Windows release to avoid co-registration conflicts with BrowserOS
- mac/Assets.car still carries BrowserOS-compiled icons; regenerate via
  xcodebuild from updated Assets.xcassets on next release build
- browseros_welcome.h github "Star us" URL still points to browseros-ai

Part of crewmate/full-rebrand-crewm8.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Covers strings missed by commit #1 (Phase 1 rebrand). Keeps internal
identifiers (type: 'browseros', id: 'browseros', BROWSEROS_* env vars,
BrowserOSIcon / useBrowserOSProviders classes, browseros::  C++ log
prefixes, file paths) unchanged for upstream merge compatibility.

Extension (apps/agent):
- lib/llm-providers/storage.ts: DEFAULT_PROVIDER_NAME → 'Crewm8'
- lib/llm-providers/providerTemplates.ts: provider dropdown label → 'Crewm8'
- lib/messaging/server/buildChatRequestBody.test.ts: test fixture → 'Crewm8'
- entrypoints/app/agents/useOpenClaw.ts: server-URL error message → Crewm8

Server (apps/server):
- src/config.ts: CLI --help description → Crewm8
- src/lib/clients/oauth/callback-server.ts: OAuth success/failure HTML
  page titles and body copy → Crewm8
- src/api/services/mcp/mcp-server.ts: MCP server 'title' field → 'Crewm8
  MCP server' (surfaces in MCP client UIs like Claude Code)
- src/api/services/mcp/mcp-prompt.ts: MCP_INSTRUCTIONS first-line header
  → 'Crewm8 MCP Server …' (shown to LLM via MCP initialize)

Left as-is (intentional):
- sidepanel/index/ChatError.tsx rate-limit substring match — checks for
  the string the BrowserOS LLM cloud server returns; stays in sync with
  upstream unless/until Crewm8 runs its own rate-limit endpoint
- Internal class/hook identifiers
- Comments and server log prefixes

Part of crewmate/full-rebrand-crewm8.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
…BrowserOS

resources/icons/src/apply-local-preview.sh creates /Applications/Crewm8.app
as a duplicate of BrowserOS.app with the bear icon, renamed bundle, and
ad-hoc re-signed signature. Non-destructive: original BrowserOS.app stays
in place.

Intended as a fast iteration path while the full Chromium build is deferred
(needs ~100GB disk). Run after generate-icons.sh has produced mac/app.icns.

Part of crewmate/full-rebrand-crewm8.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
When both app.icns and Assets.car exist in a bundle, macOS reads the
icon from the compiled asset catalog (Assets.car) and ignores app.icns.
This is why the first preview run left the BrowserOS dog on the dock
even though we swapped app.icns.

We don't have xcodebuild tooling to recompile Assets.car from
Assets.xcassets, so the preview script now deletes Assets.car entirely,
forcing macOS to fall back to our app.icns. A real Chromium rebuild
will regenerate Assets.car with the Crewm8 bear source files.

Also adds an IconServicesAgent kill so the icon cache invalidates
without needing a logout.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Removes the white outline macOS was drawing around the Crewm8.app icon
in /Applications and Finder. Big Sur+ expects app icons to ship as a
rounded-square ("squircle") with transparent padding outside the shape,
not a flush full-size square. When given a pure square, macOS adds its
own outline/glow treatment.

Generator changes:
- New macos_icon() function: 9% outer margin (transparent), 22% corner
  radius rounded-rect body, bear scaled to ~60% of body
- .icns iconset now renders via macos_icon() at all sizes
- Non-macOS PNGs (Linux/Windows/ChromeOS/top-level) still use full-square
  square_bear() since those contexts don't apply macOS squircle treatment

Other icon PNGs also rebuilt because the generator re-ran; content is
equivalent, only metadata/compression differences.

Part of crewmate/full-rebrand-crewm8.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
… to 'Talk to Crewm8'

apps/agent/assets/product_logo.svg is the single source of truth for the
extension's product logo — imported by NewTabBranding, SidebarBranding,
AuthLayout, OnboardingHeader, LlmProvidersHeader, and provider icons.
One file swap rebrands all of them.

Also updates search bar UX copy per user request:
- NewTab.tsx search placeholder: "Ask crewm8 or search <provider>..."
  → "Talk to Crewm8..." (drops search-engine name; cleaner)
- SearchSuggestions.tsx suggestion prefix: "Ask crewm8:" → "Talk to Crewm8:"

These changes won't surface in the running Crewm8.app until the bundled
extension is rebuilt (bun run build:agent) and either (a) the dev server
loads it live, or (b) the built output is injected into the .app bundle.

Part of crewmate/full-rebrand-crewm8.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
…ing)

The previous attempt used 9% transparent outer padding around a smaller
squircle, which macOS rendered as a visible light container tile — making
the icon look like it was sitting inside a macOS system frame.

The correct geometry matches BrowserOS's original (and Chrome, Brave,
Safari): full-canvas rounded square with the 4 corners transparent only.
Bear scales to 65% of canvas, centered.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Per user preference — a pure full-canvas black square with no rounded
corners. Prior rounded-corner variant had transparent pixels in the 4
corners, which let the dock's translucent background bleed through as
a visible lighter rim.

Trade-off: icon reads slightly more "boxy" next to other dock icons
that use the macOS squircle, but the edge is cleanly solid black as
requested.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
On macOS Sequoia, the OS applies a forced app-tile treatment (subtle
rounded clip + edge shadow) to all third-party app icons at render
time. It cannot be disabled via PNG edits alone — the real opt-out
requires Icon Composer / Assets.xcassets tooling from Xcode.

Mitigation: match the shape macOS expects so the treatment blends
invisibly.
- Corner radius 22% → 18% (Apple's standard tile radius; matches
  BrowserOS/Chrome/Brave/Safari exactly).
- Bear scale 65% → 80% (matches user's reference image, puts visual
  weight on the bear so the eye doesn't fixate on tile edges).

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Root cause of the visible gray frame in macOS dock: my previous rounded
variants had transparent pixels in the 4 corners. macOS was filling
those transparent pixels with its app-tile background (a light rounded
rectangle), which read as a visible frame.

Proper fix: the icon now sources from resources/icons/src/crewm8-logo-bear.png
(user's provided landscape PNG — solid black with bear centered, no
transparency anywhere). It is center-padded with black to a square and
flattened with -alpha off so every pixel is fully opaque. With zero
transparent pixels, macOS has nothing to fill, so no frame appears —
matching the reference image 1:1.

Trade-off: icon is a hard square (not a squircle) so it renders as a
sharp-cornered tile next to other dock icons. That's the user's stated
preference ("completely black outline"). If a softer aesthetic becomes
desired later, the proper path is Apple Icon Composer (.icon file via
Xcode 17+), not PNG-level edits.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Resolves the persistent gray frame around the dock icon on macOS 26.1
Tahoe. Root cause was Tahoe's unified app-icon rendering layer: when an
app ships only app.icns (the legacy path), Tahoe draws a default app
tile behind it, which reads as a visible light frame. The fix is to
ship a properly compiled Assets.car + CFBundleIconName referencing
the AppIcon asset, so Tahoe treats the icon as authoritative.

Icon pipeline changes (generate-icons.sh):
- macos_icon() now trims the source PNG's black padding (-trim +repage)
  and fill-scales to cover the canvas (-resize ^ + -gravity center
  -extent), so the bear dominates ~95% of the icon area. User approved
  this crop since the source image has substantial black padding.
- New "macOS Assets.car" step: emits AppIcon.appiconset (PNGs at 16/32/
  64/128/256/512/1024, 1x + 2x mappings) and a Contents.json, then
  compiles via xcrun actool --compile --platform macosx
  --minimum-deployment-target 11.0 --app-icon AppIcon. Result lands at
  resources/icons/mac/Assets.car, checked in alongside app.icns.

Preview script (apply-local-preview.sh):
- Installs BOTH app.icns and Assets.car into /Applications/Crewm8.app
  (dual-path: app.icns for legacy callers, Assets.car for Tahoe).
- Sets CFBundleIconName=AppIcon so Tahoe knows to read Assets.car as
  the authoritative icon rather than falling back to app.icns.
- More aggressive cache flush: /Library/Caches/com.apple.iconservices.store
  wipe + cfprefsd kill, in addition to IconServicesAgent/Finder/Dock.

Source image at resources/icons/src/crewm8-logo-bear.png is the
user-provided landscape Logo Bear.png.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 23, 2026

PR author is not in the allowed authors list.

@github-actions
Copy link
Copy Markdown
Contributor

Thank you for your contribution! Before we can merge this PR, we need you to sign our Contributor License Agreement.

To sign the CLA, please add a comment to this PR with the following text:

I have read the CLA Document and I hereby sign the CLA

You only need to sign once. After signing, this check will pass automatically.


Troubleshooting
  • Already signed but still failing? Comment recheck to trigger a re-verification.
  • Signed with a different email? Make sure your commit email matches your GitHub account email, or add your commit email to your GitHub account.
- - - I have read the CLA Document and I hereby sign the CLA - - - **0** out of **2** committers have signed the CLA.
gokulb20
gokul
**Gokul** seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please [add the email address used for this commit to your account](https://help.github.com/articles/why-are-my-commits-linked-to-the-wrong-user/#commits-are-not-linked-to-any-user).
You can retrigger this bot by commenting **recheck** in this Pull Request. Posted by the **CLA Assistant Lite bot**.

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