Update CTA and workspace chat copy for track-intent users#86460
Update CTA and workspace chat copy for track-intent users#86460
Conversation
Uses NVP_INTRO_SELECTED at the user level to identify track-intent users and conditionally update copy across three areas: - Workspace chat welcome text: "This is where you will track expenses" - CTA buttons (Submit/Approve): "Mark as done" - System messages (submitted/approved): "marked as done" Co-authored-by: Jayesh Mangwani <jayeshmangwani@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
Co-authored-by: Jayesh Mangwani <jayeshmangwani@users.noreply.github.com>
|
Fixed the failing Prettier check: ran Prettier to fix import ordering in 4 files ( |
Add markAsDone, beginningOfChatHistoryPolicyExpenseChatTrack, and markedAsDone keys to de, fr, it, ja, nl, pl, pt-BR, and zh-hans translation files with English fallback values. Co-authored-by: Jayesh Mangwani <jayeshmangwani@users.noreply.github.com>
|
Fixed the failing typecheck: added the three missing translation keys ( |
|
I ran out of time before I could finish helping you. This usually means the task was too complex or I got stuck exploring. Please try again with a more specific request or post in the #melvinbot-ai. Run details: https://github.com/Expensify/Expensify/actions/runs/23605388227 |
…g delimiters Co-authored-by: Jayesh Mangwani <jayeshmangwani@users.noreply.github.com>
|
Fixed the failing checks (Prettier, typecheck, Storybook). The |
…corruption The previous commit accidentally replaced ASCII single quote delimiters with Unicode smart quotes (U+2018/U+2019) on several lines in fr.ts, causing Prettier and TypeScript check failures. This restores the file from main and cleanly reapplies the intended changes (markAsDone, beginningOfChatHistoryPolicyExpenseChatTrack, markedAsDone, and removal of increasedDistance). Co-authored-by: Jayesh Mangwani <jayeshmangwani@users.noreply.github.com>
|
Fixed the failing Prettier and TypeScript checks. Root cause: The previous commit introduced Unicode smart quotes (U+2018 Fix: Restored |
|
The previously failing checks (Prettier and TypeScript errors from smart quote corruption in |
|
@dylanexpensify When creating an expense in the workspace, we currently see a Adding screenshots below to show the difference between staging and our PR changes. staging
PR changes
If yes:
|
|
When we press the mark-as-done.mov |
|
@jayeshmangwani great catches, yes to all:
Yes
Yes
Yes |
|
Essentially, wherever there is submit for this group, we change it to the mark as done verbiage (or for system messages, marked as done) |
|
@dylanexpensify When we use For the track intent flow, we are updating the CTA to I’ve used button-confirmation.mov |
|
@MelvinBot The sidebar badge still shows and the Reports tab/Reports also still has the
|
…e' for track-intent users The sidebar LHN badge and Reports tab action buttons still showed 'Submit'/'Approve' instead of 'Mark as done' for track-intent users. Updated three locations: - OptionRowLHN: sidebar action badge text - ActionCell: search/reports list item action buttons - useSearchBulkActions: bulk action submit/approve buttons Co-authored-by: Jayesh Mangwani <jayeshmangwani@users.noreply.github.com>
|
Fixed the sidebar badge and Reports tab CTA to show "Mark as done" for track-intent users. Updated three locations:
|
Co-authored-by: Jayesh Mangwani <jayeshmangwani@users.noreply.github.com>
|
Fixed the failing Prettier check: ran Prettier on |
Co-authored-by: Jayesh Mangwani <jayeshmangwani@users.noreply.github.com>
|
Fixed the failing ESLint check:
The test (job 8) failure is unrelated — all tests passed but the process hit a segmentation fault (exit code 139) during cleanup, which is a pre-existing infrastructure issue. |
|
All checks are now passing (ESLint, Prettier, typecheck, all 8 test shards, builds, etc.). The only remaining check is The previous failures were:
No code fix is needed at this time. |
Marked as done is correct! Thanks! |
Co-authored-by: Jayesh Mangwani <jayeshmangwani@users.noreply.github.com>
|
Fixed the failing Prettier check: ran |
…portHeader The track-intent copy logic replaced inline translate() calls with submitButtonText and approveButtonText variables but never defined them, causing @typescript-eslint/no-unsafe-assignment errors. Add the missing variable definitions using the same pattern as SubmitPrimaryAction.tsx and ApprovePrimaryAction.tsx: fetch isTrackIntentUser via Onyx selector, compute shouldUseMarkAsDoneCopy, and derive the button text strings. Co-authored-by: Jayesh Mangwani <jayeshmangwani@users.noreply.github.com>
|
Fixed the failing ESLint check ( Root cause: The track-intent copy changes replaced inline Fix: Added the missing variable definitions using the same pattern as
|
|
The previous ESLint and TypeScript failures in The only remaining failing check is typecheck, caused by a pre-existing issue on Evidence this is unrelated:
This was likely introduced by the interaction between PR #86432 (which made To unblock this PR, someone needs to merge a fix for |
Co-authored-by: Jayesh Mangwani <jayeshmangwani@users.noreply.github.com>
|
Fixed the failing typecheck: Note: This is a pre-existing issue (the file wasn't modified by this PR), but it was blocking CI. |
|
@Valforte Conflicts are resolved, and all checks are passing now. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 @Valforte 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/Valforte in version: 9.3.52-0 🚀
Bundle Size Analysis (Sentry): |
|
I reviewed the changes in this PR against the help site articles under
I've created a PR with the required help site updates: #86997 Each article now includes a note explaining that users who selected "Track and budget expenses" during onboarding and whose workspace does not use an approval workflow will see Mark as done instead of Submit/Approve, and "marked as done" instead of "submitted" in activity messages. |
|
Deploy Blocker ##86990 was identified to be related to this PR. |
|
Deploy Blocker #87001 was identified to be related to this PR. |
|
Deploy Blocker #87004 was identified to be related to this PR. |
|
Deploy Blocker #87031 was identified to be related to this PR. |
|
Deploy Blocker ##87037 was identified to be related to this PR. |
|
Deploy Blocker #87049 was identified to be related to this PR. |






Explanation of Change
For users who onboarded with the "Track and budget expenses" intent (
PERSONAL_SPEND/TRACK_WORKSPACE), the product copy still uses generic expense management language. This PR updates three areas to reflect the track-intent workflow:These changes only apply when both conditions are met:
TRACK_WORKSPACEorPERSONAL_SPEND)Detection uses
NVP_INTRO_SELECTEDat the user level perjayeshmangwani's direction. AisTrackIntentUserSelectorinsrc/selectors/Onboarding.tscentralizes this check.Fixed Issues
$ #86223
Tests
Prerequisites: You need two accounts — one that selected "Track and budget expenses" during onboarding (track-intent user) and one that selected a different intent (e.g., "Manage team expenses"). The track-intent user's workspace should have submit-and-close approval mode (no approvals configured).
Track-intent user tests:
Non-track-intent user tests:
Offline tests
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, 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.ScrollViewcomponent to make it scrollable when more elements are added to the page.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
Verified on web that app builds correctly, workspace chat welcome text renders, and Submit/Approve CTA buttons display without errors. The track-intent copy ("Mark as done") requires a user who selected "Track and budget expenses" during onboarding.