Skip to content

Commit 69d5cac

Browse files
committed
Merge branch 'main' of https://github.com/TaduJR/App into refactor-decompose-popover-menu
# Conflicts: # android/app/build.gradle # config/eslint/eslint.seatbelt.tsv # ios/NewExpensify/Info.plist # ios/NotificationServiceExtension/Info.plist # ios/ShareViewController/Info.plist # package-lock.json # package.json # src/CONST/index.ts # src/ONYXKEYS.ts # src/components/Composer/implementation/index.native.tsx # src/components/Composer/implementation/index.tsx # src/components/Composer/types.ts # src/components/ExceededCommentLength.tsx # src/components/ImageSVG/index.android.tsx # src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx # src/components/Pressable/PressableWithFeedback.tsx # src/components/PressableWithSecondaryInteraction/index.native.tsx # src/components/PressableWithSecondaryInteraction/index.tsx # src/components/Search/SearchList/ListItem/ChatListItem.tsx # src/components/VideoPlayer/index.native.tsx # src/components/VideoPlayer/index.tsx # src/hooks/useDebounce.ts # src/libs/ReportActionComposeFocusManager.ts # src/libs/actions/App.ts # src/libs/actions/QueuedOnyxUpdates.ts # src/libs/actions/Report/index.ts # src/libs/focusComposerWithDelay/index.ts # src/libs/focusComposerWithDelay/types.ts # src/libs/refocusComposerAfterPreventFirstResponder.ts # src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersWorkspacePage.tsx # src/pages/domain/DomainInitialPage.tsx # src/pages/domain/Groups/DomainGroupsPage.tsx # src/pages/inbox/ReportFetchHandler.tsx # src/pages/inbox/ReportNavigateAwayHandler.tsx # src/pages/inbox/ReportScreen.tsx # src/pages/inbox/report/ContextMenu/BaseReportActionContextMenu.tsx # src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx # src/pages/inbox/report/ContextMenu/PopoverReportActionContextMenu.tsx # src/pages/inbox/report/ContextMenu/ReportActionContextMenu.ts # src/pages/inbox/report/PureReportActionItem.tsx # src/pages/inbox/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx # src/pages/inbox/report/ReportActionCompose/ComposerActionMenu.tsx # src/pages/inbox/report/ReportActionCompose/ComposerBox.tsx # src/pages/inbox/report/ReportActionCompose/ComposerContext.ts # src/pages/inbox/report/ReportActionCompose/ComposerEmojiPicker.tsx # src/pages/inbox/report/ReportActionCompose/ComposerExceededLength.tsx # src/pages/inbox/report/ReportActionCompose/ComposerExpandCollapseButton.tsx # src/pages/inbox/report/ReportActionCompose/ComposerInput.tsx # src/pages/inbox/report/ReportActionCompose/ComposerProvider.tsx # src/pages/inbox/report/ReportActionCompose/ComposerSendButton.tsx # src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions.tsx # src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx # src/pages/inbox/report/ReportActionCompose/ExpandCollapseButton.tsx # src/pages/inbox/report/ReportActionCompose/MessageEditCancelButton.tsx # src/pages/inbox/report/ReportActionCompose/ReportActionCompose.tsx # src/pages/inbox/report/ReportActionCompose/SubmitDraftButton.tsx # src/pages/inbox/report/ReportActionCompose/useComposerFocus.ts # src/pages/inbox/report/ReportActionCompose/useComposerSubmit.ts # src/pages/inbox/report/ReportActionCompose/useEditComposerToggle.ts # src/pages/inbox/report/ReportActionCompose/useEditMessage.ts # src/pages/inbox/report/ReportActionCompose/useShouldAddOrReplaceReceipt.ts # src/pages/inbox/report/ReportActionEditMessageContext.tsx # src/pages/inbox/report/ReportActionItem.tsx # src/pages/inbox/report/ReportActionItemMessageEdit.tsx # src/pages/inbox/report/ReportActionItemParentAction.tsx # src/pages/inbox/report/ReportActionsList.tsx # src/pages/inbox/report/ReportActionsListItemRenderer.tsx # src/pages/inbox/report/ReportFooter.tsx # src/pages/inbox/report/actionContents/ChatMessageContent.tsx # src/pages/inbox/report/useDebouncedSaveDraft.ts # src/pages/settings/Security/SecuritySettingsPage.tsx # src/selectors/Modal.ts # src/setup/index.ts # tests/perf-test/ReportActionCompose.perf-test.tsx # tests/ui/ReportActionComposeTest.tsx # tests/ui/ReportActionItemMessageEditTest.tsx # tests/ui/ReportActionMessageEditLayoutTest.tsx # tests/unit/hooks/useEditComposerToggle.test.ts
2 parents 393d5a7 + abd3fa1 commit 69d5cac

167 files changed

Lines changed: 6594 additions & 1837 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Mobile-Expensify

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ android {
111111
minSdkVersion rootProject.ext.minSdkVersion
112112
targetSdkVersion rootProject.ext.targetSdkVersion
113113
multiDexEnabled rootProject.ext.multiDexEnabled
114-
versionCode 1009037404
115-
versionName "9.3.74-4"
114+
versionCode 1009037407
115+
versionName "9.3.74-7"
116116
// Supported language variants must be declared here to avoid from being removed during the compilation.
117117
// This also helps us to not include unnecessary language variants in the APK.
118118
resConfigs "en", "es"

assets/images/product-illustrations/illustration__copilots.svg

Lines changed: 1 addition & 0 deletions
Loading

config/eslint/eslint.seatbelt.tsv

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@
143143
"../../src/components/OptionRow.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
144144
"../../src/components/OptionRow.tsx" "react-hooks/set-state-in-effect" 1
145145
"../../src/components/PDFView/index.tsx" "react-hooks/set-state-in-effect" 1
146-
"../../src/components/PopoverMenu/index.tsx" "react-hooks/preserve-manual-memoization" 3
147-
"../../src/components/PopoverMenu/index.tsx" "react-hooks/set-state-in-effect" 1
146+
"../../src/components/PopoverMenu.tsx" "react-hooks/preserve-manual-memoization" 3
147+
"../../src/components/PopoverMenu.tsx" "react-hooks/set-state-in-effect" 1
148148
"../../src/components/Pressable/GenericPressable/implementation/BaseGenericPressable.tsx" "react-hooks/refs" 1
149149
"../../src/components/PressableWithSecondaryInteraction/index.native.tsx" "no-restricted-syntax" 1
150150
"../../src/components/PressableWithSecondaryInteraction/index.tsx" "no-restricted-syntax" 1
@@ -494,7 +494,7 @@
494494
"../../src/pages/domain/Groups/PreferredWorkspaceToggle.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
495495
"../../src/pages/domain/Saml/SamlLoginSectionContent.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
496496
"../../src/pages/inbox/DeleteTransactionNavigateBackHandler.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
497-
"../../src/pages/inbox/ReportFetchHandler.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 3
497+
"../../src/pages/inbox/ReportFetchHandler.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 2
498498
"../../src/pages/inbox/ReportNavigateAwayHandler.tsx" "react-hooks/exhaustive-deps" 1
499499
"../../src/pages/inbox/hooks/useDeferNonEssentials.ts" "no-restricted-imports" 2
500500
"../../src/pages/inbox/hooks/useFlushDeferredWriteOnFocus.ts" "no-restricted-imports" 1
@@ -504,21 +504,20 @@
504504
"../../src/pages/inbox/report/ContextMenu/BaseReportActionContextMenu.tsx" "react-hooks/refs" 1
505505
"../../src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx" "@typescript-eslint/no-deprecated/getReportNameDeprecated" 1
506506
"../../src/pages/inbox/report/ContextMenu/PopoverReportActionContextMenu.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
507-
"../../src/pages/inbox/report/ContextMenu/PopoverReportActionContextMenu.tsx" "react-hooks/refs" 30
507+
"../../src/pages/inbox/report/ContextMenu/PopoverReportActionContextMenu.tsx" "react-hooks/refs" 29
508508
"../../src/pages/inbox/report/ListBoundaryLoader.tsx" "react-hooks/set-state-in-effect" 1
509509
"../../src/pages/inbox/report/PureReportActionItem.tsx" "react-hooks/refs" 2
510510
"../../src/pages/inbox/report/PureReportActionItem.tsx" "react-hooks/set-state-in-effect" 1
511511
"../../src/pages/inbox/report/ReactionList/HeaderReactionList.tsx" "no-restricted-syntax" 1
512-
"../../src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 2
513-
"../../src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx" "react-hooks/preserve-manual-memoization" 2
514-
"../../src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx" "react-hooks/refs" 8
512+
"../../src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
513+
"../../src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions.tsx" "react-hooks/refs" 7
515514
"../../src/pages/inbox/report/ReportActionCompose/SuggestionEmoji.tsx" "react-hooks/refs" 1
516515
"../../src/pages/inbox/report/ReportActionCompose/SuggestionMention.tsx" "react-hooks/refs" 3
517516
"../../src/pages/inbox/report/ReportActionItemMessage.tsx" "@typescript-eslint/no-deprecated/getReportName" 1
518-
"../../src/pages/inbox/report/ReportActionItemMessageEdit.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 2
517+
"../../src/pages/inbox/report/ReportActionItemMessageEdit.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
519518
"../../src/pages/inbox/report/ReportActionItemMessageEdit.tsx" "no-restricted-syntax" 1
520519
"../../src/pages/inbox/report/ReportActionItemMessageEdit.tsx" "react-hooks/preserve-manual-memoization" 1
521-
"../../src/pages/inbox/report/ReportActionItemMessageEdit.tsx" "react-hooks/refs" 6
520+
"../../src/pages/inbox/report/ReportActionItemMessageEdit.tsx" "react-hooks/refs" 5
522521
"../../src/pages/inbox/report/ReportActionItemMessageEdit.tsx" "react-hooks/set-state-in-effect" 1
523522
"../../src/pages/inbox/report/ReportActionsList.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 4
524523
"../../src/pages/inbox/report/ReportActionsList.tsx" "react-hooks/refs" 5
@@ -579,7 +578,6 @@
579578
"../../src/pages/settings/Wallet/ExpensifyCardPage/index.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 2
580579
"../../src/pages/settings/Wallet/InternationalDepositAccount/PersonalInfo/PersonalInfo.tsx" "@typescript-eslint/no-deprecated/useSubStep" 1
581580
"../../src/pages/settings/Wallet/InternationalDepositAccount/PersonalInfo/substeps/AddressStep.tsx" "react-hooks/set-state-in-effect" 1
582-
"../../src/pages/settings/Wallet/PersonalCardDetailsPage.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
583581
"../../src/pages/settings/Wallet/PersonalCards/steps/SelectCountryStep.tsx" "react-hooks/set-state-in-effect" 1
584582
"../../src/pages/settings/Wallet/ShareBankAccount/ShareBankAccount.tsx" "react-hooks/set-state-in-effect" 1
585583
"../../src/pages/settings/Wallet/UnshareBankAccount/UnshareBankAccount.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 2

docs/articles/new-expensify/getting-started/Navigating-New-Expensify.md

Lines changed: 42 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Navigating New Expensify
33
description: Learn how to move around New Expensify using the navigation tabs, including Home, Inbox, Spend, Workspaces, and Account on web and mobile.
4-
keywords: [New Expensify, navigation tabs, navigation, Home tab, Inbox tab, Spend tab, Workspaces tab, Account tab, Receipt button, Create button, workspace filter]
4+
keywords: [New Expensify, navigation tabs, navigation, Home tab, Inbox tab, Spend tab, Workspaces tab, Account tab, Scan button, Create button, workspace filter]
55
internalScope: Audience is all Expensify members. Covers how to navigate Expensify using the navigation tabs and primary action buttons. Does not explain the detailed behavior of the Home tab sections.
66
---
77

@@ -13,7 +13,7 @@ This guide explains where to find each tab and what it’s used for.
1313

1414
---
1515

16-
# Where to find navigation tabs
16+
## How to use navigation tabs
1717

1818
The **navigation tabs** are your main way to move through the app.
1919

@@ -30,17 +30,17 @@ Tabs include:
3030

3131
---
3232

33-
# What the Home tab is used for
33+
## What the Home tab is used for
3434

3535
The **Home** tab is the first screen you see when you sign in.
3636

3737
Use Home to get oriented and see whether anything needs attention. From the Home tab, you can navigate to Inbox, Spend, or Workspaces as needed.
3838

39-
For a full breakdown of what appears on Home, see the **Expensify Home Overview** article.
39+
For a full breakdown of what appears on Home, see the [Expensify Home overview](/articles/new-expensify/getting-started/Expensify-Home-Overview).
4040

4141
---
4242

43-
# What the Inbox tab is used for
43+
## What the Inbox tab is used for
4444

4545
The **Inbox** tab is where conversations and action-related items are managed.
4646

@@ -53,7 +53,7 @@ Use Inbox to:
5353

5454
---
5555

56-
# What the Spend tab is used for
56+
## What the Spend tab is used for
5757

5858
**Spend** is the main place to search and act on expenses and expense reports.
5959

@@ -65,7 +65,7 @@ From **Spend**, you can:
6565

6666
---
6767

68-
# What the Workspaces tab is used for
68+
## What the Workspaces tab is used for
6969

7070
The **Workspaces** tab displays all workspaces you are a member of.
7171

@@ -74,17 +74,17 @@ Workspace Admins can open a workspace to manage workspace-level settings.
7474
From **Workspaces**, Workspace Admins can:
7575

7676
- Create a new workspace
77-
- Manage members under **People**
77+
- Manage members under **Members**
7878
- Enable features under **More features**
7979
- Configure workflows
8080
- Connect accounting integrations under **Accounting**
8181
- Manage categories and tags
8282

83-
Use **Workspaces** for company and team configuration.
83+
Learn how to [create and set up a company workspace](/articles/new-expensify/getting-started/Create-a-company-workspace).
8484

8585
---
8686

87-
# What the Account tab is used for
87+
## What the Account tab is used for
8888

8989
The **Account** tab contains personal and account-level settings.
9090

@@ -98,7 +98,7 @@ From Account, you can manage:
9898
- **Security** to manage security options and Copilot delegated access
9999

100100
You can also access:
101-
- **Help** to access help and support resources, including a link to the help site
101+
- **Help** to access help and support resources, including support contacts
102102
- **What's new** to view product updates
103103
- **About** to see app details
104104
- **Troubleshoot** to run diagnostics or switch to Expensify Classic
@@ -109,18 +109,30 @@ Use Account for personal settings and billing.
109109

110110
---
111111

112-
# Using the Receipt and Create buttons
112+
## How to find your assigned support contacts on the Help page
113+
114+
Paid Workspace Admins may have dedicated support contacts assigned to their account, such as an Account Manager, Partner Manager, or Setup Specialist. These contacts appear directly on the **Help** page so you can quickly start a conversation with them.
115+
116+
1. Click the navigation tabs (on the left on web, on the bottom on mobile).
117+
2. Select **Settings**.
118+
3. Select **Help**.
119+
4. Below **Concierge**, look for your assigned support contacts.
120+
5. Click a contact to open a direct message with them.
121+
122+
---
123+
124+
## How to use the Scan and Create buttons
113125

114126
In addition to the navigation tabs, you’ll see two primary action buttons:
115127

116-
- The green **Receipt** button to scan or manually add an expense.
128+
- The green **Scan** button to scan or manually add an expense.
117129
- The grey **➕ Create** button to start actions like creating a report, sending money, requesting money, or tracking distance.
118130

119-
The Receipt and Create buttons are available from all screens so you can quickly take action.
131+
The **Scan** and **Create** buttons are available from all screens so you can quickly take action.
120132

121133
---
122134

123-
# How to navigate Expensify quickly
135+
## How to navigate New Expensify quickly
124136

125137
If you’re not sure where to go:
126138

@@ -146,10 +158,23 @@ Open the **Workspaces** tab from the navigation tabs.
146158

147159
Open the **Account** tab from the navigation tabs.
148160

149-
## What does the green Receipt button do?
161+
## What does the green Scan button do?
150162

151-
The green **Receipt** button lets you scan or manually add an expense.
163+
The green **Scan** button lets you scan or manually add an expense.
152164

153165
## What does the ➕ Create button do?
154166

155167
The **➕ Create** button starts actions such as creating a report, sending money, requesting money, or tracking distance.
168+
169+
## Why don't I see assigned support contacts on the Help page?
170+
171+
Assigned support contacts only appear if:
172+
173+
- You are a Workspace Admin on a paid plan
174+
- A support contact has been assigned to your account
175+
176+
If no contacts are assigned, these options will not appear on the **Help** page.
177+
178+
## How do I get an Account Manager assigned?
179+
180+
Account Managers are typically assigned to accounts with subscriptions that include 10 or more members. Contact **Concierge** if you believe your account qualifies.

docs/articles/new-expensify/workspaces/Prohibited-Expense-Rule.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
---
22
title: Prohibited Expenses Rule
3-
description: Learn how to enable and use the Prohibited expenses rule to automatically flag receipts with restricted items such as alcohol, gambling, or tobacco.
4-
keywords: [New Expensify, prohibited expenses, receipt violation, SmartScan, alcohol, gambling, expense rules, workspace settings, line item compliance]
3+
description: Learn how to enable and use the Prohibited expenses rule to automatically flag receipts with restricted items such as alcohol, gambling, tobacco, or handwritten receipts.
4+
keywords: [New Expensify, prohibited expenses, receipt violation, SmartScan, alcohol, gambling, handwritten receipts, expense rules, workspace settings, line item compliance]
5+
internalScope: Audience is Workspace Admins. Covers enabling and configuring the Prohibited Expenses rule. Does not cover general workspace rules or SmartScan configuration.
56
---
67

7-
Enable the Prohibited Expenses rule to help Workspace Admins enforce compliance by automatically flagging receipts that contain restricted purchases like alcohol, gambling, or tobacco. This rule uses Expensify’s AI-powered SmartScan to review individual line items and alert admins when prohibited categories are detected.
8+
Enable the Prohibited Expenses rule to help Workspace Admins enforce compliance by automatically flagging receipts that contain restricted purchases like alcohol, gambling, or tobacco, or that are handwritten. This rule uses Expensify’s AI-powered SmartScan to review individual line items and alert admins when prohibited categories are detected.
89

910
Once set up, SmartScan reviews scanned receipts at the line-item level:
1011

@@ -27,6 +28,7 @@ To turn on the Prohibited Expenses rule:
2728
- Adult entertainment
2829
- Alcohol
2930
- Gambling
31+
- Handwritten receipts
3032
- Hotel incidentals
3133
- Tobacco
3234

docs/articles/new-expensify/workspaces/Workspace-Rules.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,9 @@ To enable it:
7777
3. Toggle it on and select any categories to monitor:
7878
- Alcohol
7979
- Gambling
80-
- Tobacco
80+
- Handwritten receipts
8181
- Hotel Incidentals
82+
- Tobacco
8283
- Adult Entertainment
8384

8485
**Note:** Violations appear in both New Expensify and Expensify Classic, but the rule must be enabled in **New Expensify**.

ios/NewExpensify/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
</dict>
4545
</array>
4646
<key>CFBundleVersion</key>
47-
<string>9.3.74.4</string>
47+
<string>9.3.74.7</string>
4848
<key>FullStory</key>
4949
<dict>
5050
<key>OrgId</key>

ios/NotificationServiceExtension/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<key>CFBundleShortVersionString</key>
1414
<string>9.3.74</string>
1515
<key>CFBundleVersion</key>
16-
<string>9.3.74.4</string>
16+
<string>9.3.74.7</string>
1717
<key>NSExtension</key>
1818
<dict>
1919
<key>NSExtensionPointIdentifier</key>

ios/ShareViewController/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<key>CFBundleShortVersionString</key>
1414
<string>9.3.74</string>
1515
<key>CFBundleVersion</key>
16-
<string>9.3.74.4</string>
16+
<string>9.3.74.7</string>
1717
<key>NSExtension</key>
1818
<dict>
1919
<key>NSExtensionAttributes</key>

0 commit comments

Comments
 (0)