Repository navigation
Unified support: align the support screens with the app's UI conventions - #26156
Merged
Merged
Conversation
The Support module linked only AsyncImageKit and WordPressCoreProtocols, so its colors, rows and empty states were all hand-rolled and had drifted from the rest of the app. Link DesignSystem and WordPressUI — as JetpackStats, WordPressComments and WordPressMediaLibrary already do — and bring the two menu-style screens in line with the Me screen they are pushed from. - Support hub: monochrome `AppColor.tint` row icons and `.callout` titles, matching the rows `WPStyleGuide.configureTableViewCell` builds for `MeViewController`. Drop the duplicated `listRowBackground` and `listRowInsets` that gave every row non-standard height and separator insets, and scale the icon column with Dynamic Type instead of pinning it to 24pt. - Conversations list: push with an inline title rather than a large one. - Empty, offline and error states use `WordPressUI.EmptyStateView`, the shape the rest of the app shows. The list keeps its Support-specific error messages. - Status: replace the saturated filled `ChipView` with a tinted symbol and label on the app's semantic palette, following `CommentStatusPill` and `PostListCell`. This also fixes the chip's dark-mode contrast, which was derived from the fill's WCAG luminance. - Localize the remaining hardcoded English on the support hub. - Application Logs: format the log file date instead of rendering `Date.description` as the row title.
Collaborator
Generated by 🚫 Danger |
Contributor
|
| App Name | WordPress | |
| Configuration | Release-Alpha | |
| Build Number | 35047 | |
| Version | PR #26156 | |
| Bundle ID | org.wordpress.alpha | |
| Commit | 23f38e2 | |
| Installation URL | 4jn2prn2n6kfo |
Contributor
|
| App Name | Jetpack | |
| Configuration | Release-Alpha | |
| Build Number | 35047 | |
| Version | PR #26156 | |
| Bundle ID | com.jetpack.alpha | |
| Commit | 23f38e2 | |
| Installation URL | 1ecdlgqvji6o8 |
crazytonyli
approved these changes
Oct 22, 2026
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.


TL; DR
This PR is the first iteration of adapting the style of the new support flow to the iOS app. It mainly changes the lists screens. The next iteration will be done on the chat ones.
Description
First iteration of UI alignment for the new support flow. The screens read as a different app than the Me screen they are pushed from: brand-tinted row icons against Me's monochrome ones, heavier row titles, non-standard row metrics, a large navigation title mid-stack, and saturated filled status chips.
The root cause is structural. The
SupportSPM target linked onlyAsyncImageKitandWordPressCoreProtocols, so every color, row and empty state in it was hand-rolled. This PR linksDesignSystemandWordPressUI— asJetpackStats,WordPressCommentsandWordPressMediaLibraryalready do — and uses them to bring the two menu-style screens in line. There is no cycle (nothing in those modules importsSupport) and both consuming app targets already link them, so the binary impact is nil.Scoped deliberately to the hub and the conversations list. The conversation, ticket, composer and reply-sheet screens are a follow-up.
Changes
RootSupportView).accentColor→AppColor.tint(UIColor.label), matching thetintColor: .labelthatMeViewControllerpasses to every row..headline→.callout, detail →.footnote..calloutis whatWPStyleGuide.configureTableViewCellputs on every Me row;.headlineread a full step heavier..listRowBackgroundand.listRowInsetswere applied twice, once on the profile row and once on theList. The background was already the inset-grouped default, and the custom insets gave every row non-standard height and separator insets.@ScaledMetric; it previously did not grow with Dynamic Type.EmptyStateView.failure(error:onRetry:).Stringsenum.UnifiedSupportListView) —.navigationBarTitleDisplayMode(.large)→.inline; it was the only.largein the repo on a pushed screen. Empty/offline/error now useEmptyStateView, built from its three-closure initializer so the Support-specificunifiedSupportMessagesurvives rather than being replaced bylocalizedDescription..listStyle(.plain)is unchanged — that already matchesCommentsListView.ChipViewwithUnifiedSupportStatusLabel, a tinted symbol and label on the app's semantic palette, modeled onCommentStatusPill. The app's convention is colored text, not a filled pill — seePostCardStatusViewModel/PostListCell. This also fixes a dark-mode contrast bug:ChipViewpicked black-or-white text from the fill's WCAG luminance, and the raw.purple/.bluefills barely shift between appearances.ChipViewhad only two call sites, so both were converted and it is deleted.ActivityLogListViewpassedlogFile.createdAt.descriptionas the row title, rendering2026-10-19 14:03:12 +0000. NowOct 19, 2026 at 2:03 PM, matching the formatter the sibling row in the same module already uses.Not in this PR
Follow-ups, roughly by impact:
UnifiedSupportConversationViewsets a display mode but no.navigationTitle, so the pushed screen has an empty nav bar while the ticket title is drawn in-content as accent-colored.title2.bold; chat bubble and ticket card fills and radii; the remaining.font(.system(size:))point sizes that break Dynamic Type;ConversationBotIntro's hardcoded.bluesparkles icon in a green app; and four files underBot Conversations/left unreferenced when #26109 retired the "Ask the HE" entry.Testing instructions
The flow is Jetpack-only and behind
FeatureFlag.newSupport, which defaults to off.Check:
#Previews inUnifiedSupportListView.swift, which cover all three.Please check dark mode, an accessibility text size, and VoiceOver on the conversations row in particular: the status moved inside an
.accessibilityElement(children: .combine), and the icon column changed to@ScaledMetric. Those are the three axes I was not able to verify myself.🤖 Generated with Claude Code