Skip to content

[PM-37920] fix: Align Plan screen cart summary with web #2683

Open
SaintPatrck wants to merge 2 commits into
mainfrom
PM-37920/align-plan-cart-summary-with-web
Open

[PM-37920] fix: Align Plan screen cart summary with web #2683
SaintPatrck wants to merge 2 commits into
mainfrom
PM-37920/align-plan-cart-summary-with-web

Conversation

@SaintPatrck
Copy link
Copy Markdown
Contributor

@SaintPatrck SaintPatrck commented May 21, 2026

🎟️ Tracking

PM-37920

📔 Objective

Aligns the Plan screen's billing section with the canonical web cart-summary contract:

  • Estimated Tax now always renders when a subscription exists (formats to $0.00 at zero) instead of being hidden.
  • Storage cost now always renders within the billing section (formats to $0.00 when zero) instead of being hidden at zero.
  • New Total row renders below tax with the cadence suffix (e.g. $25.55 / year), backed by PremiumSubscription.totalAmount.

Total typography uses labelWeight: .bold (via .styleGuide(.body, weight: .bold)) to mirror web's bodyLargeEmphasis (Android equivalent: DM Sans W700, 15sp/20sp). The shared billingRow helper gained an optional labelWeight: parameter so other rows are unaffected.

📸 Screenshots

Figma Actual

…r tax, add Total row)

Brings the iOS Plan screen's billing details section into parity with the
canonical web cart-summary contract documented in
clients/subscription-card-line-item-findings.md. Two behavioral changes:

- Estimated Tax always renders when a subscription exists (formats to
  "$0.00" when zero) instead of being hidden at zero. Tax is in the web
  spec's "always render" bucket.
- A new Total row renders below Estimated Tax with the cadence suffix
  (e.g. "$25.55 / year"), backed by the existing
  PremiumSubscription.totalAmount computed property.

Both rows remain gated by showBillingDetails (active / past-due /
update-payment statuses), preserving web's cart-presence gating.

The Total row uses .bodyBold typography per design feedback. This maps
web's bodyLargeEmphasis and the Android client's
bodyLargeEmphasis = DM Sans W700 15sp/20sp to the iOS style-guide
equivalent. The shared billingRow helper now takes an optional
font: StyleGuideFont = .body parameter so callers default to the
existing body style.

Out of scope: storage-cost zero-suppression divergence from web's
cart-presence gating is intentionally left for a follow-up.

Note: local test execution was deferred to CI. The repo pins Xcode 26.2
(.xcode-version) but the local environment is on 26.1.1, and main-branch
code unrelated to this change references ASCredentialServiceIdentifier.IdentifierType.app
which requires the iOS 26.2 SDK. CI runs the pinned Xcode and will
execute the full test suite. Format and lint were verified locally
(swiftformat / swiftlint clean for in-scope paths).
@SaintPatrck SaintPatrck added app:password-manager Bitwarden Password Manager app context t:bug Change Type - Bug ai-review-vnext Request a Claude code review using the vNext workflow labels May 21, 2026
@github-actions github-actions Bot added the app:authenticator Bitwarden Authenticator app context label May 21, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 21, 2026

Claude Code is reviewing this pull request...

If this comment does not update with results, check the Actions log.

@SaintPatrck SaintPatrck removed the app:authenticator Bitwarden Authenticator app context label May 21, 2026
@SaintPatrck SaintPatrck changed the title [PM-37920] fix: Align Plan screen cart summary with web (always render tax, add Total row) [PM-37920] fix: Align Plan screen cart summary with web May 21, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented May 21, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 41.05%. Comparing base (4c5e782) to head (944aad2).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff             @@
##             main    #2683       +/-   ##
===========================================
- Coverage   87.24%   41.05%   -46.20%     
===========================================
  Files        1918      593     -1325     
  Lines      172116    33009   -139107     
===========================================
- Hits       150165    13552   -136613     
+ Misses      21951    19457     -2494     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@SaintPatrck SaintPatrck force-pushed the PM-37920/align-plan-cart-summary-with-web branch from a7191e6 to 635c64f Compare May 21, 2026 22:18
@github-actions github-actions Bot added the app:authenticator Bitwarden Authenticator app context label May 21, 2026
@SaintPatrck SaintPatrck force-pushed the PM-37920/align-plan-cart-summary-with-web branch 3 times, most recently from b4e6ea3 to 23329e2 Compare May 22, 2026 03:53
@SaintPatrck SaintPatrck marked this pull request as ready for review May 22, 2026 03:57
@SaintPatrck SaintPatrck requested review from a team and matt-livefront as code owners May 22, 2026 03:57
- Splits the billingRow helper so only the label takes a weight
  override (labelWeight, mirroring the repo's
  .styleGuide(.body, weight: .bold) pattern). Using .bodyBold directly
  was ineffective because Text.styleGuide(_:) defaults weight to
  .regular and applies .fontWeight after the font, overriding the bold
  baked into the token.
- Drops the Storage cost row's > 0 zero-suppression so it always
  renders within the billing section ($0.00 when zero), matching web's
  cart-summary always-render pattern alongside Estimated Tax and Total.
- Strips task-anchored DocC sentences that just restated names or
  referenced callers, matching the repo's lean-comment style.
@SaintPatrck SaintPatrck force-pushed the PM-37920/align-plan-cart-summary-with-web branch from 23329e2 to 944aad2 Compare May 22, 2026 04:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-review-vnext Request a Claude code review using the vNext workflow app:authenticator Bitwarden Authenticator app context app:password-manager Bitwarden Password Manager app context t:bug Change Type - Bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant