Skip to content

[SF-26] Adopt Leopard brand in iOS app - #25

Merged
alexanderbrunker-star merged 4 commits into
mainfrom
feature/SF-26-ios-leopard-look
Apr 19, 2026
Merged

[SF-26] Adopt Leopard brand in iOS app#25
alexanderbrunker-star merged 4 commits into
mainfrom
feature/SF-26-ios-leopard-look

Conversation

@alexanderbrunker-star

Copy link
Copy Markdown
Member

https://linear.app/captain-leopard-ai-engineering/issue/SF-26/apply-leopard-brand-to-ios-swiftui-app

Verification:

  • cd sonicflow_app/ios-app && xcodegen generate
  • xcodebuild -project "sonicflow_app/ios-app/FlowTones.xcodeproj" -scheme FlowTones -configuration Debug -destination "generic/platform=iOS Simulator" build

- Add BrandTokens.swift (copy of brand/generated/BrandTokens.swift)
- Add LeopardBackgroundView (deterministic Canvas, SplitMix64 seed)
- Rewire FlowMode+UI / ContentView / ModeCard to BrandTokens.*
- Layered mode-glow shadows (24/64) on selected card
- Preserved accentColorHex string accessor for existing presentation tests

User-facing follow-up: run 'xcodegen generate' inside sonicflow_app/ios-app/
so the new files are registered in the iOS Xcode target.
@linear

linear Bot commented Apr 19, 2026

Copy link
Copy Markdown
SF-26 Apply Leopard brand to iOS SwiftUI app

Scope

Apply the Leopard brand to the iOS SwiftUI app.

Deliverables

  • Add BrandTokens.swift to the iOS target (imported from brand/generated/).
  • FlowMode+UI.swift consumes BrandTokens.Mode.focus.color etc. — no hex literals.
  • ContentView.swift — layered leopard background (LeopardPatternView), glow behind mode cards, brand typography scale.
  • ModeCard.swift — token-driven border, glow, radius.
  • Update app icon references to reflect SF-29 icon set (placeholder acceptable until SF-29 lands).

Acceptance

  • make test-core-swift + iOS build passes in Xcode.
  • No hex literals in iOS target outside BrandTokens.swift.
  • Visual review on sim matches brand direction.

Branch

feature/SF-26-ios-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: 7b023fba93

ℹ️ 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".

SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SonicFlow.app/SonicFlow";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FlowTones.app/FlowTones";

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 Point TEST_HOST to the app’s actual product name

This sets TEST_HOST to FlowTones.app/FlowTones, but the app target in the same project file still builds with PRODUCT_NAME = SonicFlow (Debug/Release), so running FlowTonesTests can fail to launch the host app because the configured host binary path does not exist. Keeping TEST_HOST aligned with the built product name is required for xcodebuild test to run reliably.

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 native panel color from token instead of hardcoding

The generator hardcodes Neutral.panel to black (Color.black.opacity(0.78) here, and similarly in Kotlin), which ignores palette.neutral.panel.rgba in brand/tokens.json; as a result, native outputs already diverge from the source-of-truth token (CSS uses rgba(18, 18, 22, 0.78)) and future token edits will not propagate to Swift/Kotlin.

Useful? React with 👍 / 👎.

@alexanderbrunker-star
alexanderbrunker-star merged commit df2f34e 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