Skip to content

feat: bundle brand typography across Apple apps - #160

Merged
altaywtf merged 15 commits into
nextfrom
feat/126-brand-typography
Aug 11, 2026
Merged

feat: bundle brand typography across Apple apps#160
altaywtf merged 15 commits into
nextfrom
feat/126-brand-typography

Conversation

@altaywtf

@altaywtf altaywtf commented Aug 10, 2026

Copy link
Copy Markdown
Member

Closes #126

Summary

  • Provision the five licensed brand fonts from the existing static.put.io source into a gitignored directory, pinned by SHA-256
  • Register GT America for iOS, watchOS, and tvOS; register Berkeley Mono only for iOS and watchOS
  • Map semantic typography roles to the exact native faces and prove hostile filename fallback with focused CoreText coverage

Review aids

flowchart LR
  M[Checksummed manifest] --> I[iOS: GT America and Berkeley Mono]
  M --> W[watchOS: GT America and Berkeley Mono]
  M --> T[tvOS: GT America only]
Loading

Verification

  • mise run verify
  • 8 token-generation tests, 9 PutioCore tests, and 19 existing harness tests
  • iOS, watchOS, and tvOS builds
  • CoreText shaping coverage for accented Latin, CJK, Cyrillic, and emoji filenames
  • Manual headless specimens captured for all three platforms

Notes

  • No licensed font binaries are committed; Resources/BrandFonts/ is gitignored
  • Missing or mismatched fonts fail the normal verification path with mise run fonts-setup as recovery
  • Normal signed-out UI remains unchanged; typography specimens are harness-only

Copilot AI lite review requested due to automatic review settings August 10, 2026 16:35

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed across 24 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread Apps/watchOS/Sources/PutioWatchApp.swift
Comment thread Apps/iOS/Sources/PutioApp.swift Outdated
Comment thread Packages/PutioCore/Tests/PutioCoreTests/BrandTypographyTests.swift
Comment thread Project.swift

Copilot AI 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.

Pull request overview

Bundles licensed brand typography (GT America across iOS/watchOS/tvOS; Berkeley Mono on iOS/watchOS only) via checksummed, gitignored provisioning, and wires semantic design-token typography roles to exact native faces with proof/verification across all three shells.

Changes:

  • Add a checksummed font manifest plus Node provisioning/verification scripts, and integrate them into bootstrap/verify/CI flows.
  • Update Tuist project generation to include per-target font resources and UIAppFonts derived from Config/BrandFonts.json.
  • Update design-token generation + Swift theme adapter to map semantic roles to native font face names, add tabular-digit roles, and add harness/UI + tests to prove fallback/coverage.

Reviewed changes

Copilot reviewed 22 out of 24 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
Tools/PutioHarness/Sources/PutioHarnessKit/Doctor.swift Requires Node and turns brand-font provisioning verification into a required doctor check.
scripts/verify.sh Adds font-bundle verification after building.
scripts/verify-font-bundles.ts Verifies built app bundles’ font resources and UIAppFonts against the manifest.
scripts/verify-font-bundles.test.ts Unit tests for font resource discovery behavior.
scripts/sync-brand-fonts.ts Implements checksummed provisioning and strict origin/redirect validation for licensed font downloads.
scripts/sync-brand-fonts.test.ts Unit tests for manifest parsing and unlisted-font detection/removal.
scripts/harness-ci.sh Runs harness proof for all platforms in CI rather than iOS-only.
scripts/generate-design-tokens.ts Generates Swift typography roles with native face names + adds tabular-digit roles and tvOS mono gating.
scripts/generate-design-tokens.test.ts Tests native-face mapping and platform gating in generated Swift.
scripts/bootstrap.sh Provisions fonts during bootstrap before generation/doctor.
README.md Documents the new font provisioning/verification workflow and platform typography behavior.
Project.swift Loads Config/BrandFonts.json to register per-target font resources and UIAppFonts.
Packages/PutioCore/Tests/PutioCoreTests/PutioThemeTests.swift Updates tests for the new PutioFontRole initializer and validates mapped face names.
Packages/PutioCore/Tests/PutioCoreTests/BrandTypographyTests.swift Adds CoreText shaping tests to prove fallback works for hostile filenames and required faces exist.
Packages/PutioCore/Sources/PutioCore/Generated/PutioTheme+Generated.swift Updates generated theme adapter to use native face names and adds tabular-digit roles + tvOS mono gating.
package.json Adds font provisioning/verification scripts and expands Node test globbing.
mise.toml Adds fonts-setup and verify-fonts tasks; updates harness-ci task description.
CONTRIBUTING.md Documents the licensed-font provisioning workflow and failure modes.
Config/BrandFonts.json Adds the checksummed, platform-scoped brand font manifest.
Apps/watchOS/Sources/PutioWatchApp.swift Adds harness-only typography proof content (hostile filenames + numeric sample).
Apps/tvOS/Sources/PutioTVApp.swift Adds harness-only typography proof content (hostile filenames + numeric sample).
Apps/iOS/Sources/PutioApp.swift Adds harness-only typography proof content (hostile filenames + numeric sample).
.gitignore Ignores provisioned licensed font binaries directory.
.github/workflows/ci-next.yml Provisions licensed fonts in CI before running mise run verify.
Suppressed comments (1)

scripts/verify-font-bundles.ts:67

  • Same as above: format the UIAppFonts mismatch output with joined lines so failures are readable and copy/paste friendly.
  if (registered.join("\n") !== expected.join("\n")) {
    throw new Error(`${label} UIAppFonts differs\nexpected: ${expected}\nactual: ${registered}`);
  }

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread Tools/PutioHarness/Sources/PutioHarnessKit/Doctor.swift Outdated
Comment thread scripts/verify-font-bundles.ts Outdated

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed across 6 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread Tools/PutioHarness/Sources/PutioHarnessKit/Doctor.swift Outdated

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed across 11 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread scripts/sync-brand-fonts.ts Outdated
Comment thread scripts/sync-brand-fonts.ts

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed across 1 file (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread scripts/sync-brand-fonts.ts
@altaywtf
altaywtf merged commit c4ad355 into next Aug 11, 2026
4 checks passed
@altaywtf
altaywtf deleted the feat/126-brand-typography branch August 11, 2026 04:22
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.

Bundle brand typography in the new app targets

2 participants