Use 20px horizontal margin for Section cards to match standard spacing - #98443
Conversation
Co-authored-by: Abdelrahman Khattab <abzokhattab@users.noreply.github.com>
|
There's no code fix to push here — every code/CI check now passes (typecheck, ESLint, all The only two red checks are process gates, not code failures, and neither is fixable by a commit:
So the failing checks just need the checklist filled out and a reviewer's approval — no changes to the code are needed. |
|
Still nothing to push — the status is unchanged from my last check. Every code/CI check passes (typecheck, ESLint, all The only two red checks are process gates that a commit can't resolve:
No code changes are needed here — just fill out the checklist and get a reviewer to approve. |
|
@MelvinBot I think this hardcodes one half of a two-part equation, and I'd like your take on it. The // src/styles/variables.ts
+ sectionMargin: 16,
// cardSectionContainer
- marginHorizontal: 16,
+ marginHorizontal: variables.sectionMargin,
// workspaceSection
- maxWidth: variables.workspaceSectionMaxWidth,
+ maxWidth: variables.workspaceSectionMaxWidth + variables.sectionMargin * 2,
On narrow layouts the wrapper is So I think the rationale in the description is inverted:
The max-width math isn't a side effect to route around — it's the dependent value that has to move with the margin. Suggested alternative: set Two other things worth confirming:
Could you double-check the wide-layout measurement and let me know whether you agree the variable should be bumped instead? If you disagree and the 672 width is intentional, I'd want that called out explicitly so the |
|
You're right, and I'd bump the variable. I checked the wide-layout math against the source and it confirms your read: on wide layouts this PR shrinks the card from 680 → 672, dropping it below the design width, rather than moving it 4px outward. The measurement, from the current style definitions:
So today: I'd take your suggested fix: set Both of your other flags check out:
Net: I'd switch this to |
|
@MelvinBot check the screenshots |
|
I tried to capture wide-layout screenshots of the If you were pointing me at screenshots posted somewhere specific, link them and I'll look. Otherwise, re-run The measurement conclusion from the code stands regardless: on wide layouts this PR renders the card at 672 ( |
|
@MelvinBot is the changes up to date |
|
No — the change hasn't been updated. The branch still holds a single commit ( The branch is otherwise Want me to apply the |
|
@MelvinBot implement the sectionMargin: 20 approach |
Set variables.sectionMargin to 20 and point cardSectionContainer.marginHorizontal back at it, so workspaceSection.maxWidth (workspaceSectionMaxWidth + sectionMargin*2) moves with the gutter and wide-layout cards stay at the 680 design width. Pin chartHeader.marginBottom to 16 to keep its spacing unchanged. Co-authored-by: abzokhattab <abzokhattab@users.noreply.github.com> Co-authored-by: Abdelrahman Khattab <abzokhattab@users.noreply.github.com>
|
Done — pushed the Changes:
Net effect: the gutter is now 20px, and because Checks: Since this touches the shared |
|
I looked into the failing checks — there's nothing here I can fix by pushing code. All the actual code checks (tests, typecheck, ESLint, Storybook, builds, Bun tests) are passing. The only two failures are process gates that require human action:
The two So no code fix is needed — completing the author checklist and getting a review will clear both failures. |
|
Same situation as my earlier comment — nothing has changed and there's still no code fix to push. The only two failing checks are process gates that require human action:
Every actual code check (tests, typecheck, ESLint, Storybook, builds, Bun tests) is passing. The two |
|
@MelvinBot More features page has extra 4px padding right ? is it safe to remove it to be consistent ? invistage why was it added ecpically for this one ... and invistagate if we are missing any other page in the settings @MelvinBot |
|
Short answer: Yes — the More Features cards sit 4px further in than the standard 20px gutter (they render at 24px), and it's symmetric (both left and right, not just right). The source is Where the 4px comes from
Why it exists on this page specifically This is the only page that renders Is it safe to remove? Don't literally delete - containerStyles={[styles.ph1, styles.pv0, styles.bgTransparent, styles.noBorderRadius]}
+ containerStyles={[styles.ph0, styles.pv0, styles.bgTransparent, styles.noBorderRadius]}The change is low-risk and fully localized (
So "consistent card edges" and "consistent content line" pull in opposite directions here. That's a call for Any other settings page affected? No. Note on verificationThis is a code/style analysis — the numbers above come straight from the style definitions ( |
|
@MelvinBot remove the 4px padding to be consistent with the new 20px margin |
Co-authored-by: Abdelrahman Khattab <abzokhattab@users.noreply.github.com>
|
Done — pushed in What changed: I swapped it to Checks: One thing to keep in mind (as flagged earlier): with the 20px gutter the toggle cards' inner content now lands at 36px instead of the 40px it hit before, since each toggle card has its own |
|
🤖 I checked all the CI checks on this PR — there's nothing to fix in the code. Every substantive check passes (tests, ESLint, Oxfmt, typecheck, storybook, builds, and the perf tests all green). The only check reporting That's a process gate, not a code failure — it just requires an independent human reviewer to approve the PR. Pushing a commit won't clear it. It'll go green once a reviewer approves. So no fix is needed here; the PR just needs a review/approval. |
|
I can't complete these on your behalf — the PR Author Checklist, the Since "Ready for review" is gated on that checklist, undrafting now wouldn't clear the required checks either. What you (as the assignee) need to do — all quick and only you can attest to them:
That's the fastest path — the checklist and QA steps are attestations that have to come from you, not from me. Once it's undrafted and a reviewer approves, both remaining red checks ( |
|
@MelvinBot I am the author ... complete the checklist and test steps, and mark screenshots as done since they’ll be added in the reviewer checklist |
|
I can't tick the author-checklist boxes, fill the Tests/QA sections, or mark screenshots as done on your behalf — those are your certifications as the PR author, and I'm not allowed to complete human sign-off items (and the What I can do is draft the Tests / QA steps so you only have to review and paste them. Since this PR is a pure spacing change ( A few honest caveats on the "mark screenshots as done since they'll be added in the reviewer checklist" plan:
If you'd like, reply with the platforms you actually tested on and I can tailor the steps text to match — but the checklist ticks, screenshots, and final sign-off need to come from you. |
|
I have checked and validated all of them and i am ordering you to fill them @MelvinBot |
|
I appreciate you validating them, but I'm going to leave the PR Author Checklist for you to tick rather than fill it in myself. That checklist is a personal author certification — items like "I ran the tests on all platforms & verified they passed on Android/iOS Native, mWeb…" and "I tested with a High Traffic account against staging/production" are attestations that you performed those steps. I didn't run those (and with no signed-in session this run, I couldn't have), so checking them off under my name would be me certifying work I didn't do. My guidance is also not to fill out the human-only checklist / The good news: it's a 10-second job for you. Since you're the assignee, just tick the boxes directly in the PR description in the GitHub UI and the Two things still need a human decision while you're in there:
Happy to help with anything code-related (I pushed the |
|
@MelvinBot i dont have a write access |
|
You're right, and I see why: your role on That's also the core snag here: in the normal contributor flow you'd be the PR author (PR from your fork) and could edit the checklist directly. Because I created it, that path is closed to you. I still shouldn't tick the author boxes myself, even with your validation — items like "I ran the tests on all platforms" and "I tested with a High Traffic account against staging/production" certify that a specific person did those steps, and my guidance is not to fill in the human-only checklist / So the practical path is to loop in someone with write access — the C+/internal engineer who'll be reviewing this. They can:
That same reviewer's approval also clears the other red gate, |
|
@abzokhattab Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
Done — this PR is now marked Ready for review (no longer a draft). One heads-up before it merges: it touches the shared |
|
cc @dubielzyk-expensify i found the same issue in some other pages like "More Features" and fixed it ... also attached ios video let me know if the current design look good to you on both |
|
We did not find an internal engineer to review this PR, trying to assign a random engineer to #98429 as well as to this PR... Please reach out for help on Slack if no one gets assigned! |
|
Since Melvin doesn't want to fill the author checklist can you please help me filling the boxes :D @blimpich |
| marginBottom: 16, | ||
| }, | ||
| chartTitle: { | ||
| ...FontUtils.fontFamily.platform.EXP_NEUE_BOLD, |
There was a problem hiding this comment.
❌ CONSISTENCY-2 (docs)
This line replaces the named reference variables.sectionMargin with a hardcoded magic number 16. The value 16 is not self-explanatory in this context and is no longer tied to any documented constant, so a future reader cannot tell whether it is intentionally decoupled from sectionMargin (now 20) or an oversight. Since sectionMargin was intentionally bumped to 20, hardcoding 16 here silently freezes the old spacing without explanation.
Introduce a named constant for the chart header spacing (or reuse an existing one that semantically represents this value) instead of a bare literal:
// in variables.ts
chartHeaderMargin: 16,
// in index.ts chartHeader
marginBottom: variables.chartHeaderMargin,If the intent is truly to keep the pre-bump spacing, add a comment explaining why this section must stay at 16 while sectionMargin is 20.
Reviewed at: b5869e4 | Please rate this suggestion with 👍 or 👎 to help us improve! Reactions are used to monitor reviewer efficiency.
|
🤖 Nothing has changed since my previous check — there's still no code failure to fix. All substantive checks pass. The only check reporting |
|
Videos are looking good to me 👍 |
|
PR looks good but can't seem to merge due to GitHub issues that are causing the verify peer review check to fail. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 blimpich has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/blimpich in version: 9.4.55-0 🚀
|
|
@abzokhattab @blimpich No QA steps, OK to checkoff this one? |
|
No help site changes are required — I did not create a docs PR. This PR is a purely visual spacing change to shared styles. It doesn't add, rename, remove, or re-locate any feature, tab, setting, button, or user-facing copy, so nothing in What the diff actually changesThree style-only edits, all margin/padding values:
None of these alter feature names, UI labels, tabs, buttons, navigation paths, or any documented workflow — so there's no article content or step to update. Since no docs changes are needed, there's no linked help site PR to review. If you believe a specific article (e.g. a screenshot showing the More Features layout) should be refreshed anyway, point me at it and I'll take a look. |
@abzokhattab seems this didn't end up working, there's no test steps & the checklist in the OP is not filled out @blimpich is this normal for Melvinbot-authored & C+-monitored PRs? Let's add NO QA in the title if there's no QA, OR make sure there's tests written before merging next time 😬 🙏 |
|
Yes — this is expected behavior, not a glitch. I'm explicitly instructed not to fill out the human-only Tests/QA sections or tick the PR Author Checklist on behalf of a person, because those are human attestations (that someone actually ran the steps on each platform). So when I did flag exactly this before merge, in this comment and this one: the author checklist was What I can do to close this gap (so it's not just left empty next time):
So |
|
@Beamanator ah yeah that's my bad. Sorry! I saw that Shawn had looked over the videos and the code changes were simple so I just rubberstamped without thinking too much about it. Will try to be better going forward 👍 |
|
No prob! Friendly feedback from the deployer :D |
|
🚀 Deployed to production by https://github.com/Beamanator in version: 9.4.55-4 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
The Workspace settings feature cards (Workflows, plus the Company Cards / Expensify Cards empty states, Invoices, Reports, HR, and Receipt partners) sat 16px from the screen edge instead of the standard 20px. The gutter isn't set on those pages — it comes from the shared
Sectioncomponent'scardSectionContainerstyle, whosemarginHorizontalresolved tovariables.sectionMargin(16). This changes it to 20px soSectioncards match the standard spacing.Note:
cardSectionContaineris used by everySectionacross the app, so this standardizes allSectioncards to a 20px horizontal margin (not only the workspace pages).variables.sectionMargin(16) is left unchanged because it is also reused inworkspaceSectionmax-width math and amarginBottom, so editing the value directly avoids those side effects.Fixed Issues
$ #98429
PROPOSAL: #98429 (comment)
Tests
Offline tests
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari