[No QA] Merge main#88764
[No QA] Merge main#88764stephanieelliott wants to merge 3922 commits intoclaude-docsUpdatesForInviteMembersOnExpenseReportsfrom
Conversation
`useAutoFocusInput` (newly used in IOURequestEditReportCommon) calls `useNavigation()` internally, which requires a NavigationContainer ancestor. Wrap the test render in one so the hook resolves.
fix: Mark as unread doesn’t work with IOU report
[Payment due @daledah] [No QA] Fix React Compiler compliance in WorkspaceCompanyCardDetailsPage
…-onyx-connect-policy-tags-in-transaction Remove `Onyx.connect()` usage for `ONYXKEYS.COLLECTION.POLICY_TAGS` from `changeTransactionsReport()` in `src/libs/actions/Transaction.ts`
feat: add bulk duplicate report action to Reports search page
help site icon update
…olumns Hide empty custom field columns in workspace members list
…not-here-background Fix "Not here" page opening in background for Business BA payments in offline mode
…ember-role-error [cp staging] Revert "fix: show inline member row error when workspace role update fails"
…sFailure in IOURequestStepOdometerImage/index.tsx
…sFailure in TransactionReceiptModalContent.tsx
…improve-IOURequestStepMerchant-marchant-onyx-update Limit re-renders after a merchant change while on the Search page
…orkspace role update fails""
…ent acronym casing
…x/workspace-member-role-error Revert "Revert "fix: show inline member row error when workspace role update fails""
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: The diff is too large to include in this comment (211KB), so I've created a gist for you: 📋 View the translation diff here 📋 Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
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.
|
| **On Web:** | ||
| 1. Click **Settings > Account** | ||
| 2. Click **Profile** | ||
| 1. Click **Settings > Account**. | ||
| 2. Click **Profile**. | ||
| 3. Scroll to the bottom of the page and click **Close Account**. |
There was a problem hiding this comment.
Structure issue: The web steps contain duplicate lines. Lines 32-33 (without periods) and lines 34-35 (with periods) appear to be duplicates of each other. Remove one set — keep only the properly punctuated version (lines 34-35).
| **On Web:** | |
| 1. Click **Settings > Account** | |
| 2. Click **Profile** | |
| 1. Click **Settings > Account**. | |
| 2. Click **Profile**. | |
| 3. Scroll to the bottom of the page and click **Close Account**. | |
| **On Web:** | |
| 1. Click **Settings > Account**. | |
| 2. Click **Profile**. | |
| 3. Scroll to the bottom of the page and click **Close Account**. |
| **Mobile:** | ||
| 1. Tap the **Menu (≡)** at the top left. | ||
| 2. Tap **Settings**. | ||
| 1. Tap the hamburger menu in the top-left corner. | ||
| 4. Confirm the closure using your phone or email. |
There was a problem hiding this comment.
Structure issue / Naming violation: The mobile steps are broken — lines 39-40 are leftover old content and lines 41-42 are incomplete new content. The steps should be a single coherent sequence. Also, per HELPSITE_NAMING_CONVENTIONS.md (Hamburger Menu Rule), the hamburger menu reference must use the exact phrase: "Tap the hamburger menu in the top-left corner, then select [Tab name]." The current line 41 is missing the tab to select, and line 42 skips directly to confirming closure without explaining how to navigate to the close account option.
| **Mobile:** | |
| 1. Tap the **Menu (≡)** at the top left. | |
| 2. Tap **Settings**. | |
| 1. Tap the hamburger menu in the top-left corner. | |
| 4. Confirm the closure using your phone or email. | |
| **Mobile:** | |
| 1. Tap the hamburger menu in the top-left corner, then select **Settings**. | |
| 2. Tap **Profile**. | |
| 3. Scroll to the bottom and tap **Close Account**. | |
| 4. Confirm the closure using your phone or email. |
| This error occurs when you are only remaining admin on a domain. To proceed with closing your account, you must first add another domain admin, or reset the domain. | ||
| This error occurs when you are the only remaining admin on a domain. To proceed with closing your account, you must first add another domain admin, or reset the domain. |
There was a problem hiding this comment.
Structure issue: Lines 75 and 76 are duplicate sentences with only a minor wording difference ("only remaining" vs. "the only remaining"). Remove one of them.
| This error occurs when you are only remaining admin on a domain. To proceed with closing your account, you must first add another domain admin, or reset the domain. | |
| This error occurs when you are the only remaining admin on a domain. To proceed with closing your account, you must first add another domain admin, or reset the domain. | |
| This error occurs when you are the only remaining admin on a domain. To proceed with closing your account, you must first add another domain admin, or reset the domain. |
|
|
||
| ## Why do I see the message "Expensify Card bank account owner" when closing my account? | ||
|
|
||
| This error occurs when you are the owner of the bank account that your company uses to settle the Expensify Card. To proceed with closing your account, [message Concierge](https://new.expensify.com/concierge). |
There was a problem hiding this comment.
Cross-linking violation: Per HELP_AUTHORING_GUIDELINES.md Section 7, use relative links only. Do not use full URLs. Replace https://new.expensify.com/concierge with a relative link or descriptive text.
| This error occurs when you are the owner of the bank account that your company uses to settle the Expensify Card. To proceed with closing your account, [message Concierge](https://new.expensify.com/concierge). | |
| This error occurs when you are the owner of the bank account that your company uses to settle the Expensify Card. To proceed with closing your account, message Concierge directly from within the Expensify app. |
| 3. Enter a display name and configure the currency, reimbursable state, and amount sign direction. | ||
| 3. Enter a display name and configure the currency, reimbursable state, and amount sign direction. |
There was a problem hiding this comment.
Structure issue: Steps 3 appears twice (lines 26-27) — one with extra leading whitespace and one without. Remove the duplicate and fix the step numbering (step 4 is missing, step 5 should be 4, step 6 should be 5).
| 3. Enter a display name and configure the currency, reimbursable state, and amount sign direction. | |
| 3. Enter a display name and configure the currency, reimbursable state, and amount sign direction. | |
| 3. Enter a display name and configure the currency, reimbursable state, and amount sign direction. | |
| 4. Map your spreadsheet columns to the required fields (**Date**, **Merchant**, **Amount**). | |
| 5. Click **Import**. |
|
|
||
| ## How to import personal card transactions from a spreadsheet | ||
|
|
||
| 1. In the navigation tabs (on the left on web, on the bottom on mobile) select **Wallet**. |
There was a problem hiding this comment.
Naming violation: Per HELPSITE_NAMING_CONVENTIONS.md, navigation instructions should reference the exact path. The Wallet is accessed via Account > Wallet, not directly from the navigation tabs. Other articles in this PR (e.g., Connect-Personal-Cards.md) correctly use "Account > Wallet".
| 1. In the navigation tabs (on the left on web, on the bottom on mobile) select **Wallet**. | |
| 1. In the navigation tabs (on the left on web, on the bottom on mobile) select **Account > Wallet**. |
| You can ask Concierge for help from anywhere in Expensify: | ||
|
|
||
| - **Web:** Click the chat icon in the lower-right corner | ||
| - **Account:** Go to **Account** > **Help** and select **Concierge**. |
There was a problem hiding this comment.
Naming/style violation: The bullet label "Account:" is unclear as a navigation context. The other bullets use platform labels (Web, Mobile). Consider using a platform-consistent label like "Web (Account menu):" or merging this into the Web bullet, since Account > Help is accessed from the web/mobile navigation tabs.
| 1. From the navigation tabs (on the left on web, and at the bottom on mobile), select **Workspaces** | ||
| 2. Choose the workspace you want to connect to | ||
| 3. Click **More features** in the left-hand menu | ||
| 4. In the **Integrate** section, toggle on **Accounting** | ||
| 5. Click **Accounting** in the left-hand menu | ||
| 6. Click **Set up** next to QuickBooks Desktop | ||
| 7. Select the workspace with the existing QuickBooks Desktop connection you want to reuse |
There was a problem hiding this comment.
Step formatting: Per HELP_AUTHORING_GUIDELINES.md Section 5, steps must be clear and aligned with actual UI flow. These numbered steps are missing periods at the end of each line. This is inconsistent with other articles in this PR that include periods after each step.
| 1. From the navigation tabs (on the left on web, and at the bottom on mobile), select **Workspaces** | |
| 2. Choose the workspace you want to connect to | |
| 3. Click **More features** in the left-hand menu | |
| 4. In the **Integrate** section, toggle on **Accounting** | |
| 5. Click **Accounting** in the left-hand menu | |
| 6. Click **Set up** next to QuickBooks Desktop | |
| 7. Select the workspace with the existing QuickBooks Desktop connection you want to reuse | |
| 1. From the navigation tabs (on the left on web, and at the bottom on mobile), select **Workspaces**. | |
| 2. Choose the workspace you want to connect to. | |
| 3. Click **More features** in the left-hand menu. | |
| 4. In the **Integrate** section, toggle on **Accounting**. | |
| 5. Click **Accounting** in the left-hand menu. | |
| 6. Click **Set up** next to QuickBooks Desktop. | |
| 7. Select the workspace with the existing QuickBooks Desktop connection you want to reuse. |
|
|
||
| --- | ||
|
|
||
| # How to freeze or unfreeze your Expensify Card |
There was a problem hiding this comment.
Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 4, each article must have exactly one # heading (the article title) plus an optional # FAQ. All other content sections must use ##. This # heading should be demoted to ##.
Note: This issue also affects the pre-existing headings in this file (e.g., # Activate your Expensify Card, # View Your Smart Limit, etc.), but since those are not part of this PR's changes, this comment applies only to the newly added section.
| # How to freeze or unfreeze your Expensify Card | |
| ## How to freeze or unfreeze your Expensify Card |
| - Keeps your card number, CVV, and expiration date intact | ||
| - Can be reversed at any time | ||
|
|
||
| ## To freeze or unfreeze your card |
There was a problem hiding this comment.
Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 2 and Section 9, every ## heading must start with an action verb or question word (How, What, Where, Who, Why, When). "To freeze or unfreeze your card" is not task-based. Consider rephrasing.
| ## To freeze or unfreeze your card | |
| ## How to freeze or unfreeze your Expensify Card |
|
|
||
| --- | ||
|
|
||
| # How to freeze or unfreeze an Expensify Card |
There was a problem hiding this comment.
Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 4, each article must have exactly one # heading (the article title) plus an optional # FAQ. All other content sections must use ##. This newly added # heading should be ##.
| # How to freeze or unfreeze an Expensify Card | |
| ## How to freeze or unfreeze an Expensify Card |
| --- | ||
|
|
||
| # What the Reports tab is used for | ||
| # What the Spend tab is used for |
There was a problem hiding this comment.
Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 4, each article must have exactly one # heading (the article title) plus an optional # FAQ. This changed # heading (and similarly, other # headings on lines 16, 33, 43, 68, 87, 112, 123 in this file) should all be demoted to ##.
| # What the Spend tab is used for | |
| ## What the Spend tab is used for |
|
|
||
| ### Web | ||
| 1. Click **Reports** > **Expenses**. | ||
| 1. Click **Spend** > **Expenses**. |
There was a problem hiding this comment.
Step formatting: Per HELP_AUTHORING_GUIDELINES.md Section 5, steps must be sequential and clear. Step 1 says Click **Spend** > **Expenses** but Spend is a navigation tab, not nested under another element. Consider clarifying the navigation path, e.g.: "Go to Spend, then select Expenses." or "In the Spend tab, click Expenses."
| @@ -111,10 +111,10 @@ Learn how Concierge supports you in Expensify. | |||
| Step-by-step instructions for creating and submitting expenses. | |||
There was a problem hiding this comment.
Cross-linking violation: Per HELP_AUTHORING_GUIDELINES.md Section 7, use relative links only and avoid full URLs. The link on line 112 uses a full URL (https://help.expensify.com/articles/...). Use a relative link instead.
| Step-by-step instructions for creating and submitting expenses. | |
| Step-by-step instructions for creating and submitting expenses. | |
| 👉 [Create an Expense](/articles/new-expensify/reports-and-expenses/Create-an-Expense) |
HelpDot Documentation ReviewOverall AssessmentThis large PR touches 60+ documentation files with: (1) a UI rename from Reports to Spend across many articles, (2) new articles for SmartScan troubleshooting, Close Account, Connect Personal Cards, Import Personal Card Transactions, Duplicate a Report, Accounting Search Shortcuts, and Use Search Shortcuts, (3) rewrites of banking/wallet articles, (4) removal of "green" from the + button, (5) cleanup of div wrappers and full-URL-to-relative-link conversions. Overall quality is strong. Scores Summary
Key Issues to Address
Positive Aspects
Recommendations
Files Reviewed
Review based on HelpDot governance files (HELPSITE_NAMING_CONVENTIONS.md, HELP_AUTHORING_GUIDELINES.md, TEMPLATE.md). |
|
|
||
| Understand how reports are organized and managed. | ||
| 👉 [Getting Started with the Reports Page](https://help.expensify.com/articles/new-expensify/reports-and-expenses/Getting-Started-with-the-Reports-Page) | ||
| 👉 [Getting Started with the Spend page](https://help.expensify.com/articles/new-expensify/reports-and-expenses/Getting-Started-with-the-Reports-Page) |
There was a problem hiding this comment.
Cross-linking violation / Potential broken link: Per HELP_AUTHORING_GUIDELINES.md Section 7, use relative links only (this uses a full URL). Additionally, the display text says "Getting Started with the Spend page" but the link target is Getting-Started-with-the-Reports-Page. If the page was renamed to match the "Reports to Spend" rename in this PR, the link filename should also be updated. Otherwise the anchor text and link target are mismatched.
| internalScope: Audience is all Expensify members. Covers identifying and responding to scams involving Magic Codes. Does not cover account recovery or dispute workflows. | ||
| --- | ||
| <div id="expensify-classic" markdown="1"> | ||
|
|
There was a problem hiding this comment.
Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 2, all headings (including the # title) must be task-based -- they should describe what the user will do or learn, starting with an action verb or question word. "Avoiding common scams" is a gerund phrase, not a task-based heading. Consider rephrasing to something like: # How to avoid common scams in Expensify
| --- | ||
| title: Connect a personal card | ||
| description: Learn how to connect a new personal credit card to your Expensify account to automatically import transactions. | ||
| keywords: [New Expensify, personal cards, connect card, Wallet, Plaid, bank connection, card import, credit card, New Expensify, oAuth, add card] |
There was a problem hiding this comment.
Metadata issue: The keyword "New Expensify" appears twice in the keywords list. Remove the duplicate.
| keywords: [New Expensify, personal cards, connect card, Wallet, Plaid, bank connection, card import, credit card, New Expensify, oAuth, add card] | |
| keywords: [New Expensify, personal cards, connect card, Wallet, Plaid, bank connection, card import, credit card, oAuth, add card] |
|
|
||
| SmartScan reads receipt images and automatically fills in expense details like the amount, date, and merchant. If SmartScan fails, gets stuck, or scans incorrectly, use this guide to identify the cause and fix the issue. | ||
|
|
||
| [Learn how to SmartScan a receipt](/articles/expensify-classic/expenses/Add-an-expense#add-an-expense-with-smartscan). |
There was a problem hiding this comment.
Cross-linking violation: Per HELP_AUTHORING_GUIDELINES.md Section 7, do not place links inside numbered step instructions or interrupt procedural flow with inline links. While this link is in the intro (not inside steps), it uses a fragment anchor (#add-an-expense-with-smartscan) -- verify this anchor exists on the target page. Also, there is a trailing space before the period on this line.
|
|
||
| --- | ||
|
|
||
| ## Why SmartScan fails to complete a scan |
There was a problem hiding this comment.
Heading rule: Per HELP_AUTHORING_GUIDELINES.md Section 2, headings should start with an action verb or question word. "Why SmartScan fails to complete a scan" starts with "Why" which is an allowed question word -- this is fine. However, it reads as a noun-phrase explanation rather than something a user would search. Consider: ## Why does SmartScan fail to complete a scan to make it more natural as a search query.
| title: Using Your Expensify Card in New Expensify | ||
| description: Learn how to activate, use, and manage your physical and virtual Expensify Card, including Smart Limits, notifications, and troubleshooting. | ||
| keywords: [New Expensify, Expensify Card, Smart Limit, activate card, virtual card, card notifications, card declined, eReceipts] | ||
| keywords: [New Expensify, Expensify Card, Smart Limit, activate card, virtual card, card notifications, card declined, eReceipts, freeze card, unfreeze card] |
There was a problem hiding this comment.
Metadata violation: Per HELP_AUTHORING_GUIDELINES.md Section 3 and TEMPLATE.md, every article must include an internalScope field in YAML frontmatter. This article is missing internalScope. Since the keywords line (line 4) is being modified in this PR (adding "freeze card, unfreeze card"), please also add the required internalScope field.
Example:
internalScope: Audience is all Expensify cardholders. Covers activating, using, and managing the Expensify Card including Smart Limits, notifications, freezing, and troubleshooting. Does not cover admin-level card setup or reconciliation.
|
|
||
| - **Web:** Use the navigation tabs on the left to access **Inbox**, **Reports**, or **Account**. | ||
| - **Mobile:** Use the navigation tabs on the bottom to access **Inbox**, **Reports**, or **Account**. | ||
| - **Web:** Use the navigation tabs on the left to access **Inbox**, **Spend**, or **Account**. |
There was a problem hiding this comment.
Navigation instruction: Per HELPSITE_NAMING_CONVENTIONS.md, when web and mobile navigation are structurally the same, use a unified sentence rather than duplicating. Since both web and mobile access the same tabs (just in different locations), consider consolidating:
Use the navigation tabs (on the left on web, on the bottom on mobile) to access **Inbox**, **Spend**, or **Account**.
This avoids repeating the same instruction twice.
Explanation of Change
Fixed Issues
$
PROPOSAL:
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 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