Skip to content

feat(ios): brand marks for PagerDuty, Pylon, Datadog, Alertmanager and AWS - #663

Merged
jonwiggins merged 1 commit into
mainfrom
feat/ios-brand-marks
Oct 10, 2026
Merged

jonwiggins merged 1 commit into
mainfrom
feat/ios-brand-marks

Conversation

@jonwiggins

Copy link
Copy Markdown
Owner

Summary

iOS fell back to SF Symbols for the four event sources that got no brand asset in Connections v2 / v0.13 (PagerDuty → bell, Pylon → life preserver, Alertmanager → ECG line, Datadog → dog), and the Connections hub drew every provider with a stand-in symbol. This PR gives them the same marks the web (brand-icon.tsx) and Android (BrandMarks.kt) already use.

  • Five new imagesets in Shared/Brands.xcassets: brand.pagerduty, brand.pylon, brand.datadog, brand.alertmanager, brand.aws — the web's path data, template-rendered, vector preserved, same Contents.json shape as brand.linear.
  • Brand gains pagerduty / pylon / datadog / alertmanager / aws; Brand(url:) recognizes *.pagerduty.com, *.usepylon.com, *.datadoghq.com|eu, Grafana / Alertmanager hosts and AWS console links.
  • Triggers: Glyph.trigger and the work form's WhenType.glyph return the brand for the four sources, so every surface that uses TriggerIcon / the Starts row picks them up: New work form, scheduled Task / Job / agent trigger lists, Local automations, local terminal "Open ticket". TriggerIcon.label now reads the brand's label (no special cases).
  • Connections hub: new Glyph.provider(icon:) maps the catalog's icon key → brand mark (notion, github, slack, linear, sentry, aws, pylon, pagerduty) or a generic symbol (database, folder, terminal, globe, else a plug), mirroring connection-mark.tsx. The catalog rows, the new-connection sheet, and now each connection row (via OptioRow's glyph) use it; ConnectionIcons.symbol(for:) is gone.
  • Build fix (unrelated, but blocking): SwiftTerm is pinned to exactVersion: 1.20.0 in project.yml. 1.99.0 (released 2026-10-08) removed TerminalView.getTerminal(), which TerminalTheme and LocalTerminalStream call, so a fresh resolve of from: 1.2.0 no longer compiles (CI doesn't build iOS, so nothing caught it). Lift the pin once those call sites move to the new API.

Verification

  • make build (xcodegen + xcodebuild, iPhone simulator): succeeds.
  • Unit tests BrandMarkTests (7) and WorkFormModelTests (45): pass. testEveryAssetLoads / testBrandMarksAreMonochrome cover the new imagesets; new testProviderGlyphs covers the catalog mapping; URL and trigger expectations updated.
  • New BrandMarksUITests (skips without OPTIO_UITEST_SERVER_URL): launched against a hermetic seeded API (apps/android/scripts/test-api.sh, port 4966), scrolled the Connections catalog to Pylon / AWS / PagerDuty and walked the New work form to each of pylon / datadog / alertmanager via OPTIO_DEV_NEW_SESSION_TWEAKS. Both pass; screenshots confirmed the marks render (catalog: Linear, Pylon, PostgreSQL, Sentry, AWS, PagerDuty; Starts row: "PagerDuty incident", "Pylon event", "Datadog monitor", "Grafana / Alertmanager alert" each with its mark). Screenshots were taken from the simulator and are not committed.

Notes

  • Android already ships these marks; this brings iOS to parity. The web keeps a postgresql / bitbucket brand that no catalog provider uses (database icon key), so iOS doesn't add them.

…d AWS

The four event sources left on SF Symbols (bell, life preserver, ECG line,
dog) now draw the same marks as the web and Android apps everywhere a
trigger is shown: the New work form's Starts menu, scheduled Task / Job /
agent trigger lists and Local automations. Brand(url:) recognizes
PagerDuty, Pylon, Datadog and Grafana / Alertmanager links.

The Connections hub draws each catalog provider, the new-connection sheet
and every connection row with the provider's brand mark (Notion, GitHub,
Slack, Linear, Sentry, AWS, Pylon, PagerDuty) through Glyph.provider(icon:),
mirroring the web's connection-mark.tsx; database / folder / terminal /
globe keep generic symbols.

Also pins SwiftTerm to 1.20.0: 1.99.0 (2026-10-08) removed
TerminalView.getTerminal(), so a fresh resolve of `from: 1.2.0` no longer
compiles. BrandMarksUITests walks the catalog and the Starts row for
screenshots (skips without OPTIO_UITEST_SERVER_URL).
@jonwiggins
jonwiggins merged commit 5dcbb99 into main Oct 10, 2026
13 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