Skip to content

Commit 11f7b95

Browse files
authored
Merge branch 'Expensify:main' into fix-travel-billing-lock-flicker
2 parents 3dc760f + 204ddf3 commit 11f7b95

311 files changed

Lines changed: 36981 additions & 3359 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.

.github/actions/javascript/getPullRequestIncrementalChanges/index.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12673,7 +12673,9 @@ class Git {
1267312673
}
1267412674
try {
1267512675
console.log(`🔄 Fetching missing ref: ${ref}`);
12676-
await exec(`git fetch ${remote} ${ref} --no-tags --depth=1 --quiet`);
12676+
// Only shallow-fetch in CI; a local --depth=1 fetch would convert a full clone into a shallow one.
12677+
const depthArg = IS_CI ? '--depth=1' : '';
12678+
await exec(`git fetch ${remote} ${ref} --no-tags --quiet ${depthArg}`);
1267712679
// Verify the ref is now available
1267812680
if (!this.isValidRef(ref)) {
1267912681
throw new Error(`Reference ${ref} is still not valid after fetching from remote ${remote}`);
@@ -12687,7 +12689,9 @@ class Git {
1268712689
const baseRefName = GITHUB_BASE_REF ?? 'main';
1268812690
// Fetch the main branch from the specified remote (or locally) to ensure it's available
1268912691
if (IS_CI || remote) {
12690-
await exec(`git fetch ${remote ?? 'origin'} ${baseRefName} --no-tags --depth=1`);
12692+
// Only shallow-fetch in CI; a local --depth=1 fetch would convert a full clone into a shallow one.
12693+
const depthArg = IS_CI ? '--depth=1' : '';
12694+
await exec(`git fetch ${remote ?? 'origin'} ${baseRefName} --no-tags ${depthArg}`);
1269112695
}
1269212696
// In CI, use a simpler approach - just use the remote main branch directly
1269312697
// This avoids issues with shallow clones and merge-base calculations

.github/actions/javascript/isDeployChecklistLocked/index.js

Lines changed: 27922 additions & 97 deletions
Large diffs are not rendered by default.

.github/libs/DeployChecklistUtils.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type {components as OctokitComponents} from '@octokit/openapi-types/types';
2-
import dedent from '@libs/StringUtils/dedent';
2+
import {Str} from 'expensify-common';
33
import CONST from './CONST';
44
import GithubUtils from './GithubUtils';
55

@@ -232,7 +232,7 @@ function getDeployChecklistData(issue: OctokitIssueItem): DeployChecklistData {
232232

233233
/**
234234
* Generate the issue body and assignees for a deploy checklist.
235-
* Accepts PR numbers directly (not URLs) to avoid unnecessary roundtripping.
235+
* Accepts PR numbers directly (not URLs) to avoid unnecessary round-tripping.
236236
*/
237237
async function generateDeployChecklistBodyAndAssignees({
238238
tag,
@@ -338,12 +338,14 @@ async function generateDeployChecklistBodyAndAssignees({
338338
// Deployer verifications
339339
const check = (checked: boolean) => (checked ? 'x' : ' ');
340340
sections.push(
341-
dedent(`
341+
Str.dedent(
342+
`
342343
**Deployer verifications:**
343344
- [${check(isSentryChecked)}] I checked [Sentry](https://expensify.sentry.io/releases/new.expensify%40${tag}/?project=4510228107427840&environment=staging) for **this release version** and verified that this release does not introduce any new crashes. More detailed instructions on this verification can be found [here](https://stackoverflowteams.com/c/expensify/questions/15095/15096).
344345
- [${check(isSentryChecked)}] I checked [Sentry](https://expensify.sentry.io/releases/new.expensify%40${previousTag}/?project=4510228107427840&environment=production) for **the previous release version** and verified that the release did not introduce any new crashes. Because mobile deploys use a phased rollout, completing this checklist will deploy the previous release version to 100% of users. More detailed instructions on this verification can be found [here](https://stackoverflowteams.com/c/expensify/questions/15095/15096).
345346
- [${check(isGHStatusChecked)}] I checked [GitHub Status](https://www.githubstatus.com/) and verified there is no reported incident with Actions.
346-
`).trimEnd(),
347+
`,
348+
).trimEnd(),
347349
);
348350

349351
// Footer

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 1009042501
115-
versionName "9.4.25-1"
114+
versionCode 1009042600
115+
versionName "9.4.26-0"
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"
Lines changed: 1 addition & 0 deletions
Loading

assets/images/product-illustrations/illustration-sorting-machine.svg

Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading

config/eslint/eslint.config.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ const restrictedImportPaths = [
123123
importNames: ['Device', 'ExpensiMark'],
124124
message: [
125125
'',
126-
"For 'Device', do not import it directly, it's known to make VSCode's IntelliSense crash. Please import the desired module from `expensify-common/dist/Device` instead.",
126+
"For 'Device', do not import it directly, it's known to make VSCode's IntelliSense crash. Please import the desired module from `expensify-common/Device` instead.",
127127
"For 'ExpensiMark', please use '@libs/Parser' instead.",
128128
].join('\n'),
129129
},

config/eslint/eslint.seatbelt.tsv

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,6 @@
312312
"../../src/components/RadioButtonWithLabel.tsx" "no-restricted-syntax" 1
313313
"../../src/components/Reactions/AddReactionBubble.tsx" "react-hooks/refs" 1
314314
"../../src/components/Reactions/MiniQuickEmojiReactions.tsx" "react-hooks/refs" 1
315-
"../../src/components/Reactions/ReportActionItemEmojiReactions.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
316315
"../../src/components/ReceiptCropView/index.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
317316
"../../src/components/ReceiptHoverZoom/useReceiptHoverZoom.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
318317
"../../src/components/ReportActionAvatars/ReportActionAvatar.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
@@ -373,7 +372,6 @@
373372
"../../src/components/Search/SearchPageHeader/useSearchPageInput.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
374373
"../../src/components/Search/SearchPageHeader/useSearchPageInput.tsx" "react-hooks/set-state-in-effect" 2
375374
"../../src/components/Search/SearchQueryProvider.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
376-
"../../src/components/Search/SearchRouter/SearchRouter.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
377375
"../../src/components/Search/SearchRouter/SearchRouter.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
378376
"../../src/components/Search/SearchRouter/SearchRouterUtils.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
379377
"../../src/components/Search/SearchRouter/buildSubstitutionsMap.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
@@ -498,7 +496,6 @@
498496
"../../src/hooks/useDialogContainerFocus/index.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
499497
"../../src/hooks/useDragAndDrop/types.ts" "@typescript-eslint/no-deprecated/React.MutableRefObject" 1
500498
"../../src/hooks/useDynamicBackPath.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
501-
"../../src/hooks/useExpenseActions.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
502499
"../../src/hooks/useExportActions.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
503500
"../../src/hooks/useExportedToFilterOptions.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
504501
"../../src/hooks/useFilesValidation.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
@@ -540,10 +537,8 @@
540537
"../../src/hooks/useRestoreWorkspacesTabOnNavigate.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
541538
"../../src/hooks/useReviewDuplicatesNavigation.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
542539
"../../src/hooks/useReviewDuplicatesNavigation.tsx" "react-hooks/set-state-in-effect" 1
543-
"../../src/hooks/useSearchBulkActions.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 4
544540
"../../src/hooks/useSearchBulkActions.ts" "@typescript-eslint/no-unsafe-type-assertion" 10
545541
"../../src/hooks/useSearchHighlightAndScroll.ts" "@typescript-eslint/no-unsafe-type-assertion" 4
546-
"../../src/hooks/useSelectionModeReportActions.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 2
547542
"../../src/hooks/useSidebarOrderedReports.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
548543
"../../src/hooks/useSidebarOrderedReports.tsx" "react-hooks/purity" 1
549544
"../../src/hooks/useSidebarOrderedReports.tsx" "react-hooks/refs" 5
@@ -637,7 +632,6 @@
637632
"../../src/libs/Navigation/AppNavigator/Navigators/TestToolsModalNavigator.tsx" "no-restricted-syntax" 1
638633
"../../src/libs/Navigation/AppNavigator/Navigators/WorkspaceSplitNavigator.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
639634
"../../src/libs/Navigation/AppNavigator/createRootStackNavigator/GetStateForActionHandlers.ts" "@typescript-eslint/no-unsafe-type-assertion" 14
640-
"../../src/libs/Navigation/AppNavigator/createRootStackNavigator/index.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
641635
"../../src/libs/Navigation/AppNavigator/createRootStackNavigator/useCustomRootStackNavigatorState/restoreTabNavigatorRoutes.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
642636
"../../src/libs/Navigation/AppNavigator/createSplitNavigator/SplitRouter.ts" "@typescript-eslint/no-unsafe-type-assertion" 4
643637
"../../src/libs/Navigation/AppNavigator/createSplitNavigator/usePreserveNavigatorState.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
@@ -1257,7 +1251,6 @@
12571251
"../../src/pages/workspace/WorkspaceInitialPage.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
12581252
"../../src/pages/workspace/WorkspaceMembersPage.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
12591253
"../../src/pages/workspace/WorkspaceMembersPage.tsx" "no-restricted-imports" 1
1260-
"../../src/pages/workspace/WorkspaceMembersPage.tsx" "react-hooks/exhaustive-deps" 1
12611254
"../../src/pages/workspace/WorkspaceMembersPage.tsx" "react-hooks/refs" 1
12621255
"../../src/pages/workspace/WorkspaceNewRoomPage.tsx" "@typescript-eslint/no-unsafe-type-assertion" 3
12631256
"../../src/pages/workspace/WorkspaceNewRoomPage.tsx" "react-hooks/set-state-in-effect" 3
@@ -1493,7 +1486,6 @@
14931486
"../../tests/actions/BankAccountsTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 2
14941487
"../../tests/actions/DomainTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 20
14951488
"../../tests/actions/EnforceActionExportRestrictions.ts" "no-restricted-imports" 1
1496-
"../../tests/actions/IOU/BuildOnyxDataForMoneyRequestTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 17
14971489
"../../tests/actions/IOU/CreateDraftTransactionTest.ts" "no-restricted-imports" 1
14981490
"../../tests/actions/IOU/GetMoneyRequestInformationTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
14991491
"../../tests/actions/IOU/MoneyRequestBuilderTest.ts" "no-restricted-imports" 1

0 commit comments

Comments
 (0)