Skip to content

Commit 552568f

Browse files
authored
Merge branch 'main' into fix-66327-p-6
2 parents b1086b9 + cfa8fde commit 552568f

293 files changed

Lines changed: 4462 additions & 1983 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.

.claude/agents/code-inline-reviewer.md

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -198,39 +198,6 @@ memo(ReportActionItem, (prevProps, nextProps) =>
198198
)
199199
```
200200

201-
---
202-
203-
### [PERF-6] Use specific properties as hook dependencies
204-
205-
- **Search patterns**: `useEffect`, `useMemo`, `useCallback` dependency arrays
206-
207-
- **Condition**: In `useEffect`, `useMemo`, and `useCallback`, specify individual object properties as dependencies instead of passing entire objects.
208-
- **Reasoning**: Passing entire objects as dependencies causes hooks to re-execute whenever any property changes, even unrelated ones. Specifying individual properties creates more granular dependency tracking, reducing unnecessary hook executions and improving performance predictability.
209-
210-
Good:
211-
212-
```tsx
213-
const {amountColumnSize, dateColumnSize, taxAmountColumnSize} = useMemo(() => {
214-
return {
215-
amountColumnSize: transactionItem.isAmountColumnWide ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
216-
taxAmountColumnSize: transactionItem.isTaxAmountColumnWide ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
217-
dateColumnSize: transactionItem.shouldShowYear ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
218-
};
219-
}, [transactionItem.isAmountColumnWide, transactionItem.isTaxAmountColumnWide, transactionItem.shouldShowYear]);
220-
```
221-
222-
Bad:
223-
224-
```tsx
225-
const {amountColumnSize, dateColumnSize, taxAmountColumnSize} = useMemo(() => {
226-
return {
227-
amountColumnSize: transactionItem.isAmountColumnWide ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
228-
taxAmountColumnSize: transactionItem.isTaxAmountColumnWide ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
229-
dateColumnSize: transactionItem.shouldShowYear ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
230-
};
231-
}, [transactionItem]);
232-
```
233-
234201
## Instructions
235202

236203
1. **First, get the list of changed files and their diffs:**

.github/workflows/claude-review.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
4040
- name: Run Claude Code (code)
4141
if: steps.filter.outputs.code == 'true'
42-
uses: anthropics/claude-code-action@f30f5eecfce2f34fa72e40fa5f7bcdbdcad12eb8 # v1.0.14
42+
uses: anthropics/claude-code-action@a7e4c51380c42dd89b127f5e5f9be7b54020bc6b # v1.0.21
4343
with:
4444
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
4545
github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -50,7 +50,7 @@ jobs:
5050
5151
- name: Run Claude Code (docs)
5252
if: steps.filter.outputs.docs == 'true'
53-
uses: anthropics/claude-code-action@f30f5eecfce2f34fa72e40fa5f7bcdbdcad12eb8 # v1.0.14
53+
uses: anthropics/claude-code-action@a7e4c51380c42dd89b127f5e5f9be7b54020bc6b # v1.0.21
5454
with:
5555
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
5656
github_token: ${{ secrets.GITHUB_TOKEN }}

Mobile-Expensify

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ android {
114114
minSdkVersion rootProject.ext.minSdkVersion
115115
targetSdkVersion rootProject.ext.targetSdkVersion
116116
multiDexEnabled rootProject.ext.multiDexEnabled
117-
versionCode 1009026306
118-
versionName "9.2.63-6"
117+
versionCode 1009026504
118+
versionName "9.2.65-4"
119119
// Supported language variants must be declared here to avoid from being removed during the compilation.
120120
// This also helps us to not include unnecessary language variants in the APK.
121121
resConfigs "en", "es"
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading

docs/Hidden/collect-upgrade.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
---
2+
title: Your Collect Workspace Has Been Upgraded to Control
3+
description: Your Collect workspaces have been upgraded to Control at no extra cost—learn what changed and what to expect next.
4+
keywords: [New Expensify, workspace upgrade, Collect to Control, customer appreciation discount, downgrade workspace, billing]
5+
---
6+
7+
# Your Collect workspaces have been upgraded!
8+
9+
Great news! Your Collect workspaces have been upgraded to Control at no extra cost.
10+
11+
## Why this change?
12+
13+
We’ve simplified our Collect plan to make it an even better fit for more customers. As a result, some of the features you currently use have moved to the Control plan. To make sure your workflow isn’t disrupted, we’ve proactively upgraded you at no additional cost.
14+
15+
## What this means for you
16+
17+
- **No price increase**: Your upgraded workspaces will stay the same price.
18+
- **More functionality**: You’ll enjoy the added features of Control.
19+
- **Future workspaces**: Any new workspaces you create will be billed under standard pricing.
20+
- **Flexibility**: You can downgrade at any time.
21+
22+
# FAQ
23+
24+
## Why did my Collect workspace get upgraded to Control?
25+
26+
We upgraded your Collect workspace(s) to Control at no extra cost to you to ensure that you retain access to the features you use when we updated our Collect plan.
27+
28+
## My workspace now shows Control, but my Expensify receipt says Collect. Why?
29+
30+
We upgraded your Collect workspace(s) to Control at no extra cost to you to ensure that you retain access to the features you use when we updated our Collect plan. In Expensify, you will see your workspace(s) as Control workspaces, but in your Expensify receipt, you will see any members as Collect workspace members with a customer appreciation discount. This ensures billing remains the same while providing Control features.
31+
32+
## What is the customer appreciation discount on my Expensify receipt?
33+
34+
This indicates that the users being billed for are members of a workspace that was upgraded from Collect to Control at no additional cost.
35+
36+
## I want to switch back to Collect. How do I downgrade?
37+
38+
No problem! You can downgrade your workspace at any time. Just note that downgrading will remove access to any Control-specific features.
39+
40+
**How to downgrade your Control workspace to Collect**
41+
42+
1. In the navigation menu, select **Workspaces > [Workspace Name] > Overview**.
43+
2. Click **Plan type**.
44+
3. Select **Collect**, then click **Save**.
45+
4. Confirm by clicking **Downgrade workspace**.
46+
47+
**Note:** Downgrading will remove access to any Control-specific features.
48+
49+
## Will my Collect workspace be upgraded automatically?
50+
51+
Yes, if you are using any of the following advanced features on your Collect workspace:
52+
53+
- You have enabled **Billable expenses**
54+
- You have disabled **eReceipts** for your USD company card feed
55+
- You have enabled **Public receipt visibility**
56+
- You have enabled **Per diem**
57+
- You enforce the **Report title formula**
58+
- You have enabled **Report fields**
59+
- You have connected software other than **QuickBooks Online** and **Xero**
60+
- You have enabled **Multi-level tags** not imported from your connected software
61+
- You have users with the **Auditor** role
62+
- You have enabled **Auto approval**
63+
- You have enabled **Prevent self-approval**
64+
- You have enabled **Auto reimbursement**
65+
- Your employees use **Attendee tracking**
66+
- You have more than one **Company card feed**
67+
- You have set **Cash expenses** to be
68+
- Always reimbursable/non-reimbursable
69+
- Defaulted to non-reimbursable
70+
71+
## Will my workspace stay on Collect?
72+
73+
Yes, provided:
74+
75+
- You have neither a Collect nor Control workspace
76+
- You have only Control workspace(s)
77+
- You have only Collect workspace(s) with none of the above advanced feature(s) enabled
693 Bytes
Loading

eslint.config.mjs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,17 @@ const config = defineConfig([
272272
'rulesdir/prefer-underscore-method': 'off',
273273
'rulesdir/prefer-import-module-contents': 'off',
274274
'rulesdir/no-beta-handler': 'error',
275+
'rulesdir/prefer-narrow-hook-dependencies': [
276+
'error',
277+
{
278+
stableObjectPatterns: [
279+
// cSpell:ignore tyles
280+
'[Ss]tyles?$', // Excludes 'style', 'styles', 'themeStyles', etc.
281+
'^theme', // Excludes 'theme', 'themeStyles', 'themeIllustrations', etc.
282+
'[Ii]cons?$', // Excludes 'icon', 'icons', 'expensifyIcons', etc.
283+
],
284+
},
285+
],
275286

276287
// React and React Native specific rules
277288
'react-native-a11y/has-accessibility-hint': ['off'],

ios/NewExpensify/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<key>CFBundlePackageType</key>
2424
<string>APPL</string>
2525
<key>CFBundleShortVersionString</key>
26-
<string>9.2.63</string>
26+
<string>9.2.65</string>
2727
<key>CFBundleSignature</key>
2828
<string>????</string>
2929
<key>CFBundleURLTypes</key>
@@ -44,7 +44,7 @@
4444
</dict>
4545
</array>
4646
<key>CFBundleVersion</key>
47-
<string>9.2.63.6</string>
47+
<string>9.2.65.4</string>
4848
<key>FullStory</key>
4949
<dict>
5050
<key>OrgId</key>

0 commit comments

Comments
 (0)