Repository navigation
refactor(theme): collapse Avenir into one family with a real Medium face - #1947
Merged
Merged
Conversation
bmc08gt
added a commit
that referenced
this pull request
Nov 3, 2026
…ee-pane * origin/code/cash: (44 commits) refactor(chat-list): move the chat list into a KMP module and wire it into the desktop graph (#1950) build(deps): bump dev.zacsweers.metro from 1.4.5 to 1.5.1 (#1901) feat(flipcash): add return-payment contract scaffolding (#1949) refactor(chat-ui): make shared/chat-ui a KMP module (#1934) build(deps): bump com.google.firebase:firebase-bom from 34.19.0 to 35.1.0 (#1900) build(deps): bump io.ktor:ktor-network from 3.4.1 to 3.6.0 (#1909) build(deps): bump rinku from 1.6.0 to 1.9.0 (#1907) build(deps): bump androidx.webkit:webkit from 1.17.0 to 1.18.0 (#1906) build(deps): bump agp from 9.4.1 to 9.5.0 (#1905) build(deps): bump androidx-datastore from 1.2.1 to 1.3.0 (#1904) build(deps): bump compose-multiplatform from 1.12.1 to 1.12.2 (#1903) build(deps): bump com.google.android.gms:play-services-base (#1902) build(deps): bump okhttp from 5.5.0 to 5.5.1 (#1899) refactor(messenger): split ChatViewModel's reducer into per-area files (#1933) refactor(amount-entry): make shared/amount-entry a KMP module (#1932) fix(build): stop KMP host tests building release variants and debug manifests changing per commit (#1948) refactor(theme): collapse Avenir into one family with a real Medium face (#1947) perf: run independent hot-path calls concurrently (#1945) docs(claude): test gestures with device input and keep mode state at screen level (#1943) build: bump Flipcash to 2026.11.2 ... # Conflicts: # CLAUDE.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Android text set to
FontWeight.MediuminAvenirdrew Avenir Next Demi, becausePlatformFonts.avenirmapped Medium to the Demi file. A second family,AvenirMedium, existed for the few styles that needed the real Medium face. On iOS,FontBookmaps.mediumto AvenirNextLTPro-Medium, so every Android site that asked for Medium looked heavier than its iOS counterpart.This collapses the two into one
Avenirfamily with the iOS (UIKitFontBook) table: Thin through Normal → regular, Medium →avenir_next_medium, SemiBold and up → demi.avenirMedium/AvenirMediumare gone, on Android and on the desktop actual.Per-site decisions
Each site that set or inherited Medium on Avenir was checked against the matching iOS text.
Kept
Medium, now the real Medium face (visible change, matches iOS)ChatInput.kt:370composer text and placeholderConversationBottomBar.swift:1239,.appTextMessage(16 medium)E2eeLearnMoreSheet.kt:128subtitle,:183bulletsE2eeLearnMoreSheet.swift:52,:83, 15 mediumReactionBoostSheet.kt:101"Tap to change"PaidReactionSheet.swift:74, 12 mediumE2eeFooter.kt:70E2eeLearnMoreSheet.swift:192, 13 mediumMentionSuggestionList.kt:155@handleMentionSuggestionList.swift:120, 14 mediumRequestDeck.kt:607strip second linePaymentRequestDeck.swift:682,.appTextCaption(12 medium; Android stays at 14)MarketCapExplainerRow.kt:71MarketCapExplainerRow.swift:27, 14 mediumMarketCapExplainerSlider.kt:176tick labelsMarketCapSlider.swift:129, caption mediumComposerReplyStrip.kt:209quoteComposerReplyStrip.swift:164, 14 mediumMessageLinkCard.kt:445meta,:449bodyLinkMessageCardView.swift:304,:337, 13 / 15 mediumUndecryptableBubble.kt:228ChatBubbleView.swift:325, UIKit 15 mediumChatPhotoBubble.kt:169"can't be displayed"ChatMediaCell.swift:128, UIKit 14 mediumMoved to
SemiBold(same Demi pixels as before)Type.ktdisplayMedium(40)appDisplayMediumis 40 bold → Demi. Its users (group send, request pay sheet, market cap value, cash bubble amount) all map to bold on iOS.FlipcashDesignSystem.kt:143screenTitle(W500)UIFont.appTitle, 20 bold → Demi (AppDelegate.swift:335).ReactionBoostCurrencySheet.kt:99,TokenSelectScreen.kt:61picker balanceCurrencyPickerSheet.swift:85uses.appTextMedium, 16 bold → Demi.Type.ktlinkSmallMessageNodeDefaults.ContentStyle(W500)No visual change
textMessageandcaptionmove fromAvenirMediumtoAvenir; both already set Medium.FloatingToastdrops its private Medium-onlyFontFamilyand usestextSmall.copy(fontWeight = Medium).caption.fontFamily. It inherits the amount'sAvenirwith plainFontWeight.Medium.CashBubbleLinesTestnow asserts the span has no family of its own and that the amount family's Medium resolves toavenir_next_medium.Not affected: bare Material3
Textcalls with onlyfontSize/fontWeight(ReactorsSheet,ReactionPickerSheet,ReactionPillRow) draw in the system font, not Avenir.SwitchPreviewsetsFontFamily.DefaultandPaymentReceiptis monospace.Uncertain
linkSmallandMessageNodeDefaults.ContentStylehave no callers, so there was nothing to compare. They stay on Demi.Tests
AvenirFamilyTestinui/themepins the weight → file table, as an Android host test on resource IDs and a JVM test on the desktop font files. The host test also checks everycodeTypographystyle uses the one family. No module applies the compose screenshot plugin, so there were no screenshot references to re-record.Left alone
These iOS mismatches sit next to the sites above but are out of scope here:
MessageLinkCardnameStyleis SemiBold (Demi); iOS SwiftUI.semiboldresolves to Medium.Font.defaultmaps.semiboldto Medium while UIKit maps it to Demi, so iOS isn't consistent with itself on SemiBold.MessageBubble.kt:1069) is Medium; iOSChatCashCardCelluses 12 bold.