Match Task title row arrow style and placement to the other push rows - #100245
Match Task title row arrow style and placement to the other push rows#100245MelvinBot wants to merge 4 commits into
Conversation
… rows Co-authored-by: Linh Vo <linhvovan29546@users.noreply.github.com>
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
|
🤖 Android test steps verification results: ✅ pass On standalone Android NewDot, a task created and assigned to a user shows Title, Description, and Assignee row arrows at identical distance from the right edge, identical dimmed resting color, and identical vertical centering. The Title row still opens the edit-title page and the completion checkbox still toggles the task. Press-brighten parity could only be confirmed structurally (not via a captured transient frame), and hover is not applicable on Android.
|
|
🤖 Web test steps verification results: Task's Title row arrow now matches the Description/Assignee rows in position, size, and resting color on dev NewDot web, and the Title click plus completion checkbox still work correctly. Hover-brightening could not be conclusively verified — synthetic hover produced no visible state change, and the same limitation reproduced on unrelated rows elsewhere in the app, so it is not attributable to this PR and needs a manual spot-check in a real browser.
view run · no recording available |
|
@MelvinBot Please merge the main branch |
…rrowAlignment Co-authored-by: Linh Vo <linhvovan29546@users.noreply.github.com>
|
🤖 Merged No conflicts. The branch is now 0 commits behind
So the ✅ results in the |
|
Both failing checks are pre-existing breakages on
Nothing to do on this branch. Both failures clear once the EvidenceThis PR only touches two files, neither of which is in the failure path:
Every open PR is failing identically. Same file, same line numbers, same test name — for example #100918 and #100908: 1. typecheck — 2. test (job 1) —
That PR is an Reply with view run · no recording available |
|
No change since my analysis above — still nothing to fix on this branch. Re-checked just now:
Recap: This PR is blocked on #100919 merging plus someone fixing the Jest failure. Re-triggering checks here won't turn them green. Happy to dig into the Jest mock mechanism if you want that unblocked faster — just ask. view run · no recording available |
|
@MelvinBot Please make the PR ready for review! |
…rrowAlignment Co-authored-by: Linh Vo <linhvovan29546@users.noreply.github.com>
|
@linhvovan29546 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] |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-09-11.at.13.56.42.movAndroid: mWeb ChromeScreen.Recording.2026-09-11.at.13.52.53.moviOS: HybridAppScreen.Recording.2026-09-11.at.13.54.59.moviOS: mWeb SafariScreen.Recording.2026-09-11.at.13.51.18.movMacOS: Chrome / SafariScreen.Recording.2026-09-11.at.13.46.25.mov |
|
🤖 Done — this PR is now ready for review (no longer a draft), and reviewers were auto-requested. I also merged the latest Check status now:
Why
|
linhvovan29546
left a comment
There was a problem hiding this comment.
The test failure is not related to this change.
|
Update: a fix for the last red check is now open — #100929 ( Current check status
Root cause is now confirmed. I previously flagged the mechanism as unverified — #100929 settles it. The test registers its mocks in That is consistent with the timing I reported earlier: the extra factory evaluation was introduced by the
|
|
Update: a third check went red since my last comment —
Everything else is green, including Evidence for the new
|
|
Update — one check fixed itself, the other two still aren't this PR's doing. Nothing to push here.
I found the exact mechanism for the Jest failure this time, and it's a one-line change in a file this PR doesn't touch. Root cause of
|
|
@MelvinBot Please merge the main branch |
|
⏱️ Ran out of time before I could finish. This usually means the task was too complex or I got stuck exploring. Please try again with a more specific request or post in #melvinbot-ai. |
|
@MelvinBot Please merge the main branch |
…rrowAlignment Co-authored-by: Linh Vo <linhvovan29546@users.noreply.github.com>
|
@linhvovan29546 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] |
|
🤖 Merged No conflicts. The branch had fallen 91 commits behind since the last merge this morning; it's now level with CI is re-running on the new commit. Since view run · no recording available |



















Explanation of Change
On the task details page, the Title row hand-rolls its own right chevron instead of getting it from
MenuItemlike the Description and Assignee rows do. That hand-rolled copy had drifted from the standard one in three ways, which is what made the Title arrow look different:MenuItem)componentSizeNormal(40px)iconSizeNormal(20px) → Title arrow sat 10px further from the right edgemarginTop: 4justifyContent: 'center'over the whole label+value blocktheme.iconat 50% opacity, only opacity changes on hover → Title arrow looked darker/bolderThis PR makes the Title arrow use the same wrapper and dimming values the standard chevron uses:
taskRightIconContainernow useswidth: variables.iconSizeNormal(20) withjustifyContentCenter/alignItemsEndand nomarginTop, matchingmenuItemChevron. This removes the 10px horizontal offset.TaskViewnow dims the arrow at rest withstyles.opacitySemiTransparentwhen the row isn't hovered and fills it withtheme.iconinstead ofStyleUtils.getIconFillColor(getButtonState(...)), so the resting weight and the hover transition match the other rows.Titlelabel and the title line, rather than sitting inside the checkbox+title row.justifyContent: 'center'now centres it over the full label+value block, the same wayMenuItemdoes.taskRightIconContainerhas exactly one consumer (this row), so points 1 and 2 carry no blast radius outside the task Title row.The icon asset (
ArrowRight) and glyph size (20×20) were already identical in both places — only the wrapper was wrong.Fixed Issues
$ #100193
PROPOSAL: #100193 (comment)
Tests
// TODO: The human co-author must fill out the tests they ran before marking this PR as "ready for review".
Suggested steps:
Titlelabel + title text, matching the Description and Assignee rows.Offline tests
Same as tests. This is a purely presentational change and does not alter any offline behavior — the existing
OfflineWithFeedbackpending states around the title, description and assignee rows are unchanged.QA Steps
// TODO: The human co-author must fill out the QA tests they ran before marking this PR as "ready for review".
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
🤖 AI tests run by MelvinBot
Run locally on this branch:
npm run lint-changednpm run typechecknpm run react-compiler-compliance-check check src/components/ReportActionItem/TaskView.tsxnpm run spell-changednpm test -- tests/unit/TaskViewTranslateTest.tsx tests/actions/TaskTest.ts tests/unit/libs/TaskutilsTest.tsNot run: browser visual verification. The prestarted web test session lost its authentication mid-run and could not be re-authenticated from the agent, so the three chevrons were not measured on a running build. The change is CSS-only parity with
menuItemChevron, but it still needs a human visual check before this PR leaves draft.