Skip to content

[SF-25] Adopt Leopard brand in Safari extension (web + macOS App) - #24

Merged
alexanderbrunker-star merged 3 commits into
mainfrom
feature/SF-25-safari-leopard-look
Apr 19, 2026
Merged

[SF-25] Adopt Leopard brand in Safari extension (web + macOS App)#24
alexanderbrunker-star merged 3 commits into
mainfrom
feature/SF-25-safari-leopard-look

Conversation

@alexanderbrunker-star

Copy link
Copy Markdown
Member

https://linear.app/captain-leopard-ai-engineering/issue/SF-25/apply-leopard-brand-to-safari-extension-ios-macos-web-extension-shell

Verification:

  • cd sonicflow_app/chrome-extension && npm ci && npm run build
  • xcodebuild -project "sonicflow_app/safari-extension/FlowTones/FlowTones.xcodeproj" -scheme "FlowTones (macOS)" -configuration Debug -destination "generic/platform=macOS" build

Shared web extension:
- Add brand.css (copy of brand/generated/tokens.css)
- Link brand.css before Style.css in Main.html; wrap content in .leopard-bg + .panel
- Rewrite Style.css to use CSS variables only
- Procedural leopard radial-gradient; mode glow via box-shadow

macOS (App) target (covers SF-27 menu-bar work — shared Xcode project):
- Add BrandTokens.swift (copy of brand/generated/BrandTokens.swift)
- Add LeopardBackgroundView (deterministic Canvas, SplitMix64 seed)
- Rewire FlowMode+UI / ModeCard / FlowTonesPopoverView to BrandTokens.*
- Layered mode-glow shadows (24/64)
- Register new files in FlowTones.xcodeproj/project.pbxproj
@linear

linear Bot commented Apr 19, 2026

Copy link
Copy Markdown
SF-25 Apply Leopard brand to Safari extension (iOS + macOS web-extension shell)

Scope

Apply the Leopard brand tokens to the Safari Web Extension shell used by both iOS and macOS.

Deliverables

  • safari-extension/FlowTones/Shared (App)/Resources/Style.css — adopt tokens via copied tokens.css.
  • safari-extension/FlowTones/Shared (App)/Resources/Main.html — new on-brand popup markup with leopard background layer.
  • safari-extension/FlowTones/macOS (App)/FlowMode+UI.swift — consume BrandTokens.swift instead of hardcoded hex.
  • Keep light/dark color-scheme support (brand dark only for now, per Leopard Look identity).

Acceptance

  • Web extension still builds against the Xcode target.
  • No hex literals remain in the Safari shell.
  • Matches Chrome popup visual parity in the shared surfaces.

Branch

feature/SF-25-safari-leopard-look.

Depends on

SF-23.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5c83894277

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

<link rel="stylesheet" href="../brand.css">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Bundle brand.css with app resources

This HTML now depends on ../brand.css, but the Xcode project never adds brand.css to either app target’s Copy Bundle Resources (the project file still only lists Main.html, Style.css, Script.js, and Icon.png). In the built app the stylesheet request will fail, so the new var(--...)-based rules in Style.css resolve invalid and the branded layout/colors won’t apply on the extension onboarding page.

Useful? React with 👍 / 👎.

lines.push(` public static let ${camel(key)} = Color(hex: "${v.hex}")`);
}
}
lines.push(" public static let panel = Color.black.opacity(0.78)");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Generate neutral panel from tokens.json

The generator hardcodes panel as pure black (Color.black.opacity(0.78)) instead of reading palette.neutral.panel from brand/tokens.json (rgba(18, 18, 22, 0.78)). That makes Swift/Kotlin outputs diverge from the declared source of truth and means any future change to the panel token will be silently ignored on native platforms.

Useful? React with 👍 / 👎.

@alexanderbrunker-star
alexanderbrunker-star merged commit 735b83d into main Apr 19, 2026
5 checks passed
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