Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1199 commits
Select commit Hold shift + click to select a range
6672e79
fix: make dynamic form list rows and editor title accessible
WojtekBoman Oct 14, 2026
775edfa
Move carousel cleanup into changeTransactionsReport so every move pat…
MelvinBot Oct 14, 2026
d926c49
Restore label-driven domain padding and adjust stepped labels
OlGierd03 Oct 14, 2026
cbe26c4
Add getAxisLabelStep unit tests
OlGierd03 Oct 14, 2026
1a71792
Remove redundant comment
OlGierd03 Oct 14, 2026
83c96dd
Update version to 9.5.9-0
OSBotify Oct 14, 2026
3e4911f
Update Mobile-Expensify submodule version to 9.5.9-0
OSBotify Oct 14, 2026
f6f98d6
Reuse getShortFormattedDayForSearch for line chart labels and rename …
OlGierd03 Oct 14, 2026
ae3538e
Merge pull request #100520 from Expensify/claude-groupExportTemplates
JS00001 Oct 14, 2026
2425699
fix: name untitled dynamic form list entries and keep nested sensitiv…
WojtekBoman Oct 14, 2026
88b6cd0
add new helper replaceWorkspaceAccount that consolidates the flow, fi…
jmusial Oct 14, 2026
87bd77a
Merge pull request #103746 from Expensify/claude-splitRouterNarrowSid…
cristipaval Oct 14, 2026
f3dc42e
Merge pull request #103795 from Expensify/codex/689732-ephemeral-agen…
inimaga Oct 14, 2026
31ccc4c
Merge remote-tracking branch 'origin/main' into claude-perDiemEmptySt…
MelvinBot Oct 14, 2026
c023bd5
mask copilot removel
jmusial Oct 14, 2026
6c86ee7
Improve comments and code readability, skip the rotation calculation …
OlGierd03 Oct 14, 2026
37fd19d
Merge remote-tracking branch 'origin/main' into fix/80823-merchant-co…
HiepPP Oct 14, 2026
48dab2c
Retry a prefetched 426 without the prefetchKey
VickyStash Oct 14, 2026
1b8f2ca
Prevent receipt label from being selected
x-dev90 Oct 14, 2026
d1f73fe
fix: show the question above a lone dynamic form field on a titled page
WojtekBoman Oct 14, 2026
4cedb0a
Clear the Enable Global Reimbursement draft after success
MelvinBot Oct 14, 2026
db64660
fix: ask dynamic form booleans as Yes/No unless the schema asks for a…
WojtekBoman Oct 14, 2026
15c6bba
Merge pull request #103972 from Expensify/claude-perDiemEmptyStateWor…
neil-marcellini Oct 14, 2026
96adeeb
Merge pull request #103310 from DylanDylann/dylann/103217-category-po…
puneetlath Oct 14, 2026
28cf516
Merge pull request #101433 from Expensify/vit-auditor-security-docs
tgolen Oct 14, 2026
02bfc94
Merge pull request #98956 from callstack-internal/feature/onyx-store-…
roryabraham Oct 14, 2026
e444b98
fix: stop naming untitled dynamic form pages after their first field
WojtekBoman Oct 14, 2026
1aae33a
Merge pull request #102766 from callstack-internal/eliran/repack-andr…
roryabraham Oct 14, 2026
c00d280
Merge pull request #103554 from Expensify/claude-migrateSearchBulkAct…
roryabraham Oct 14, 2026
6e17675
Keep the Find expense input visible with the keyboard open in landsca…
Krishna2323 Oct 14, 2026
c56c0d5
Note that upstream declined a fix for the Skia sizing patch
mukhrr Oct 14, 2026
30c426d
Merge pull request #100186 from s77rt/victory-native-remove-pie-patch
roryabraham Oct 14, 2026
03ba2f6
Merge pull request #103418 from huult/huult/102105-marked-reimbursed-…
roryabraham Oct 14, 2026
00bf5e7
fix: align dynamic form select threshold, add flat schema story and d…
WojtekBoman Oct 14, 2026
7fb1cb1
Let the time picker and spreadsheet import pages scroll so Save and C…
Krishna2323 Oct 14, 2026
7b91b19
Merge pull request #103180 from callstack-internal/fix/no-cycle-part1…
roryabraham Oct 14, 2026
08171c6
Stop syncing the test-staging route on deploy
justinpersaud Oct 14, 2026
a4e971f
Merge pull request #102407 from mukhrr/fix/95221-skia-upstream-links
roryabraham Oct 14, 2026
0c38154
Merge pull request #83733 from HiepPP/fix/80823-merchant-contains-ope…
neil-marcellini Oct 14, 2026
419d840
Merge pull request #103368 from Expensify/alberto-commuteR4
chuckdries Oct 14, 2026
37732e2
Restore moved expenses to the carousel when the move request fails
MelvinBot Oct 14, 2026
75deead
Merge pull request #103752 from aimane-chnaif/fix-92650
arosiclair Oct 14, 2026
7cb35bb
Merge pull request #103489 from software-mansion-labs/insights/limit-…
luacmartins Oct 14, 2026
4ed1f37
Update Mobile-Expensify submodule to 7b114fa
OSBotify Oct 14, 2026
269dfda
Merge pull request #103868 from allgandalf/display-name-not-here-flash
arosiclair Oct 14, 2026
73fc399
Merge remote-tracking branch 'origin/main' into claude-onboardingBack…
MelvinBot Oct 14, 2026
7ab7994
Remove useless Onyx.connect causing lint failures
chuckdries Oct 14, 2026
e55d375
fix: allow empty last name after workspace join
carlosmiceli Oct 14, 2026
13e3cc3
Merge remote-tracking branch 'origin/main' into fix/onboarding-join-e…
carlosmiceli Oct 14, 2026
123d57b
Trim the carousel directly instead of through the move's Onyx data
MelvinBot Oct 14, 2026
b36c0f2
Merge remote-tracking branch 'origin/main' into feat/charts/size-from…
sharabai Oct 14, 2026
2c90f6f
Merge branch 'main' into receipt-upload-retry-track-expense
rinej Oct 14, 2026
26f1566
Clear the onboarding work email error when pressing Back to the inten…
MelvinBot Oct 14, 2026
d65c70f
Merge pull request #104012 from Expensify/chuckdries/onyx-connect-lin…
Gonals Oct 14, 2026
0510bab
Merge remote-tracking branch 'origin/main' into fix/onboarding-join-e…
carlosmiceli Oct 14, 2026
f63475a
Size the bar hit area from the predicted layout
sharabai Oct 14, 2026
815c1a4
Merge pull request #103706 from daledah/refactor/66430-10-2
luacmartins Oct 14, 2026
84d2f7e
Merge remote-tracking branch 'origin/main' into claude-removeUnreport…
MelvinBot Oct 14, 2026
d9dd5d0
Update help docs for pending Plaid card transactions
MelvinBot Oct 14, 2026
6eb4e9a
Auto-tighten eslint-seatbelt baseline
OSBotify Oct 14, 2026
5a03bcc
Merge branch 'main' into codex/691361-support-ticket-title
jasperhuangg Oct 14, 2026
6f5e562
Merge main to pick up lint fix from #104012
MelvinBot Oct 14, 2026
bb6eb18
Merge pull request #103941 from Expensify/codex/691360-reopened-ticke…
chiragsalian Oct 14, 2026
3fe8133
Merge branch 'main' into codex/691361-support-ticket-title
jasperhuangg Oct 14, 2026
f14878c
Merge pull request #103348 from software-mansion-labs/@OlGierd03/Insi…
aldo-expensify Oct 14, 2026
ce9c282
Merge branch 'main' into codex/691361-support-ticket-title
jasperhuangg Oct 14, 2026
775fd05
Merge remote-tracking branch 'origin/main' into claude-onboardingBack…
MelvinBot Oct 14, 2026
ddb9045
Clarify that Submit still shows for pending-only reports and opens an…
MelvinBot Oct 14, 2026
d1b739a
Pass the work email when the purpose page translates merge-block errors
MelvinBot Oct 14, 2026
5f749ef
Merge pull request #103796 from Expensify/claude-localizeGPSDistanceC…
chuckdries Oct 14, 2026
b9d701d
fix(report): use shared onyx data type
jasperhuangg Oct 14, 2026
3ce0838
Merge pull request #103484 from ShridharGoel/fix/reuse-route-offline
Gonals Oct 14, 2026
f68d4be
fix(support): stack survey feedback controls
jasperhuangg Oct 14, 2026
98eaa39
State the pending-transaction submission rule without describing butt…
MelvinBot Oct 14, 2026
66a6e3a
Merge pull request #99787 from fedirjh/fedy/fix-profile-commuter-indi…
Gonals Oct 14, 2026
0c4fc19
Merge pull request #102423 from fedirjh/fedy-cx/commuter-exclusion-ol…
Gonals Oct 14, 2026
36ec9f3
style(report): sort onyx data import
jasperhuangg Oct 14, 2026
178dc4e
Note that pending Plaid card transactions can auto-merge with SmartSc…
MelvinBot Oct 14, 2026
2b01bcf
Merge pull request #103780 from Expensify/claude-onboardingBackButton…
amyevans Oct 14, 2026
1bcda5d
Let Android back leave onboarding work email when the intent list ope…
MelvinBot Oct 14, 2026
a7e3407
fix(support): show selected survey reaction bubble
jasperhuangg Oct 14, 2026
60eca14
Merge pull request #103818 from Expensify/claude-restoreLastVisitedPa…
neil-marcellini Oct 14, 2026
e2dcbb2
Merge pull request #104016 from Expensify/fix/onboarding-join-empty-l…
carlosmiceli Oct 14, 2026
0fec3e2
fix(support): hide unselected survey reaction
jasperhuangg Oct 14, 2026
3554a90
fix(support): retain only selected survey feedback
jasperhuangg Oct 14, 2026
05ac475
style(support): space selected survey reaction
jasperhuangg Oct 14, 2026
8e973d9
fix(support): stack survey acknowledgement
jasperhuangg Oct 14, 2026
b424615
Merge pull request #102396 from truph01/fix/66408-part-2.6
danieldoglas Oct 14, 2026
40b0917
Improve clarity on connecting personal cards
joekaufmanexpensify Oct 14, 2026
8692e1c
Merge pull request #104017 from Expensify/claude-clearOnboardingError…
iwiznia Oct 14, 2026
826d78c
fix(support): refine survey feedback layout
jasperhuangg Oct 14, 2026
309c513
Merge branch 'main' into codex/fix-support-survey-feedback
jasperhuangg Oct 14, 2026
28d07c5
Merge pull request #103784 from software-mansion-labs/@OlGierd03/Insi…
cristipaval Oct 14, 2026
a3ad69f
Merge remote-tracking branch 'origin/main' into claude-fixOnboardingW…
MelvinBot Oct 14, 2026
5c550a2
style(support): compact survey feedback spacing
jasperhuangg Oct 14, 2026
25a4a48
Merge branch 'Expensify:main' into krishna2323/issue/102021-add-exist…
Krishna2323 Oct 14, 2026
aecf52f
Clear work email errors on Android back to the intent list
MelvinBot Oct 14, 2026
859926d
Merge remote-tracking branch 'origin/main' into claude-fetchPolicyDat…
MelvinBot Oct 14, 2026
803a690
fix(concierge): preserve feedback acknowledgement timing
jasperhuangg Oct 14, 2026
9ef3c3a
Show empty state instead of No results when default view hides all rows
truph01 Oct 14, 2026
d47bfa1
Merge remote-tracking branch 'origin/main' into claude-splitPolicyUti…
MelvinBot Oct 14, 2026
04dc59a
Merge pull request #102812 from Expensify/claude-fetchPolicyDataOnSea…
amyevans Oct 14, 2026
db56fb9
test(report): cover support ticket cleanup
jasperhuangg Oct 14, 2026
28bbde8
Merge branch 'main' into fix/96948-copyable-row-values
x-dev90 Oct 14, 2026
a200f4c
Merge pull request #103296 from oqildev/fix/99763-receipt-partners-in…
NicolasBonet Oct 14, 2026
ffcde7a
Update Mobile-Expensify submodule to 5d6cc5d
OSBotify Oct 14, 2026
ff736f2
Merge pull request #97277 from x-dev90/fix/96948-copyable-row-values
JS00001 Oct 14, 2026
8e972a1
Merge pull request #103322 from software-mansion-labs/war-in/resizabl…
JS00001 Oct 14, 2026
3f6da54
Merge pull request #102939 from linhvovan29546/refactor/66418-remove-…
Julesssss Oct 14, 2026
8b3ed35
Merge pull request #103604 from callstack-internal/perf/header-view-s…
Julesssss Oct 14, 2026
e01c311
Merge pull request #102247 from Expensify/claude-reconnectAppIncremen…
Julesssss Oct 14, 2026
d64359d
Merge pull request #103958 from Expensify/claude-splitPolicyUtilsRule…
blimpich Oct 14, 2026
c9610b3
Update NS0068 help articles with new Created From field guidance
MelvinBot Oct 14, 2026
1f10cf0
Merge pull request #104003 from Krishna2323/krishna2323/issue/102021-…
JS00001 Oct 14, 2026
079c8c9
Update Mobile-Expensify submodule to 721a306
OSBotify Oct 14, 2026
0a90839
Run the header back logic on Android back from onboarding work email
MelvinBot Oct 14, 2026
3ab7afe
test(concierge): preserve feedback acknowledgement timers
jasperhuangg Oct 14, 2026
f1f764c
Merge pull request #103948 from Expensify/codex/fix-support-survey-fe…
jasperhuangg Oct 14, 2026
ee93237
fix(rules): reject a generated rule of another rule type
yuwenmemon Oct 12, 2026
7a12f5f
Update version to 9.5.9-1
OSBotify Oct 14, 2026
f4ecc5a
Update Mobile-Expensify submodule version to 9.5.9-1
OSBotify Oct 14, 2026
b77fcc0
fix(support): render pending tickets without fetching early
jasperhuangg Oct 14, 2026
ffee7be
Merge pull request #103819 from Expensify/stephanieelliott-patch-4
stephanieelliott Oct 14, 2026
44acf3a
Merge pull request #103519 from Expensify/claude-docsJoinMyCompanyWor…
stephanieelliott Oct 14, 2026
581b256
Merge remote-tracking branch 'origin/main' into claude-vacationDelega…
MelvinBot Oct 14, 2026
e09ed77
fix(support): set the optimistic guard before the report id
jasperhuangg Oct 14, 2026
07a2d47
Merge pull request #103809 from Expensify/yuwen-describeRuleTypeGuard
yuwenmemon Oct 14, 2026
2403f67
Flush a pending scroll-to-bottom on list content size change instead …
MelvinBot Oct 14, 2026
08a11e0
Merge pull request #103811 from Expensify/claude-skipNullEmployeesInW…
tylerkaraszewski Oct 14, 2026
ce7e6df
fix(support): release pending ticket guards after reload
jasperhuangg Oct 14, 2026
7237dcf
Merge pull request #101465 from Expensify/claude-reportUpgradeHydrati…
francoisl Oct 14, 2026
e309229
test(search): return Onyx metadata from SearchColumnsPage useOnyx mock
francoisl Oct 14, 2026
9166088
fix(support): ignore persisted pending metadata
jasperhuangg Oct 14, 2026
7d65a02
Merge remote-tracking branch 'origin/main' into codex/691361-support-…
jasperhuangg Oct 14, 2026
d246f52
Merge pull request #104052 from Expensify/francois-fix-search-columns…
francoisl Oct 14, 2026
6e8f740
Merge pull request #102472 from Expensify/claude-vacationDelegateClea…
luacmartins Oct 14, 2026
1fde4bc
Merge pull request #103940 from Expensify/codex/691361-support-ticket…
jasperhuangg Oct 14, 2026
d6846a0
Update version to 9.5.9-2
OSBotify Oct 14, 2026
8f70fe6
Update Mobile-Expensify submodule version to 9.5.9-2
OSBotify Oct 14, 2026
1489fb9
Update version to 9.5.9-3
OSBotify Oct 15, 2026
192cf1e
Update Mobile-Expensify submodule version to 9.5.9-3
OSBotify Oct 15, 2026
7c13b8e
Update version to 9.5.9-4
OSBotify Oct 15, 2026
978256f
Update Mobile-Expensify submodule version to 9.5.9-4
OSBotify Oct 15, 2026
55d7333
docs(netsuite): apply NS0068 article review and accuracy fixes
yuwenmemon Oct 15, 2026
bf90445
Merge remote-tracking branch 'origin/main' into claude-inviteArrowUpT…
MelvinBot Oct 15, 2026
aa8c3e4
Move DOM focus to the search input when ArrowUp leaves the invite lis…
MelvinBot Oct 15, 2026
9ee12e1
Move PolicyUtils approval and payment helpers into approvals.ts and p…
MelvinBot Oct 15, 2026
f95a962
Rename allTransactions to moneyReportTransactions
linhvovan29546 Oct 15, 2026
8e81946
Merge branch 'main' into @mikolajpochec/wise-dynamic-form-batch-4
WojtekBoman Oct 15, 2026
2b50def
Revert merge conflict resolution that dropped this PR's changes
MelvinBot Oct 15, 2026
cf4b40b
fix: name the dynamic form list entry an error belongs to
WojtekBoman Oct 15, 2026
4e3d79f
Drop LHN recheck logic now handled by getReportAttributesUpdates on main
MelvinBot Oct 15, 2026
6f316dd
Merge remote-tracking branch 'origin/main' into claude-recheckLHNOnRe…
MelvinBot Oct 15, 2026
74d9874
Merge branch 'Expensify:main' into fix/66408-part-2.8
truph01 Oct 15, 2026
52cb3a7
Merge branch 'Expensify:main' into fix/66408-part-1.6
truph01 Oct 15, 2026
c458875
Merge remote-tracking branch 'origin/main' into claude-perDiemTimePic…
MelvinBot Oct 15, 2026
cdbdd1b
Add getApprovalWorkflow, getDefaultApprover, and getRuleApprovers tes…
MelvinBot Oct 15, 2026
04d0420
Match the TimePicker landscape layout to the amount page
MelvinBot Oct 15, 2026
0b21beb
Merge branch 'main' into receipt-upload-retry-track-expense
rinej Oct 15, 2026
b7aeea9
Merge branch 'main' into feat/liquid-glass-tab-bar
war-in Oct 15, 2026
33820e6
chore: post-merge fixes
war-in Oct 15, 2026
a7fe687
Explain the prefer-nullish-coalescing disable in getDefaultApprover
MelvinBot Oct 15, 2026
f300882
Merge branch 'Expensify:main' into ishpaul/103572-import-filters-star…
ishpaul777 Oct 15, 2026
a3e01fd
fix blockers related to join workspace
hungvu193 Oct 15, 2026
ef88fd3
Merge remote-tracking branch 'origin/main' into feat/charts/size-from…
sharabai Oct 15, 2026
a6b93a8
Merge pull request #104035 from truph01/fix/103290
rlinoz Oct 15, 2026
f059363
fix: broken insets on offline state
war-in Oct 15, 2026
6def640
fix: move offline state to the top
war-in Oct 15, 2026
4da67c7
add comment
hungvu193 Oct 15, 2026
26cfdc5
fix review
hungvu193 Oct 15, 2026
cffdf5d
fix: make tabs take as much space as they need
war-in Oct 15, 2026
825e8f6
Merge pull request #102897 from software-mansion-labs/fix/copilot-logout
chuckdries Oct 15, 2026
ad21395
fix: make the tab layout inline in portrait
war-in Oct 15, 2026
60f8c14
test: add useTabRootScrollProps mock
war-in Oct 15, 2026
b362544
Merge pull request #104025 from Expensify/claude-fixOnboardingWorkEma…
carlosmiceli Oct 15, 2026
799dacf
fix latest comment
hungvu193 Oct 15, 2026
c8a26aa
Update Mobile-Expensify submodule to 99a878c
OSBotify Oct 15, 2026
52d0028
Merge pull request #104002 from Expensify/jpersaud-test-staging-worke…
justinpersaud Oct 15, 2026
d385ad4
Merge pull request #103998 from Expensify/claude-removeUnreportedExpe…
carlosmiceli Oct 15, 2026
9976d42
Merge branch 'main' into company-agent-page
s77rt Oct 15, 2026
37bb742
Merge pull request #103947 from software-mansion-labs/@mikolajpochec/…
grgia Oct 15, 2026
cdeeb73
Auto-tighten eslint-seatbelt baseline
OSBotify Oct 15, 2026
e2807e8
Update Mobile-Expensify submodule to bf0a8d8
OSBotify Oct 15, 2026
f026b62
Merge pull request #103054 from Expensify/claude-recheckLHNOnReportAt…
rlinoz Oct 15, 2026
0d3f266
Merge pull request #103999 from Expensify/claude-clearGlobalReimburse…
MariaHCD Oct 15, 2026
2a591a0
Merge commit '978256f76c5' into perf/3039-lhn-item-level-useonyx
sosek108 Oct 15, 2026
d60a047
add emptyStateButtons param
s77rt Oct 15, 2026
86c151a
add canWriteAgents guard before displaying the add button
s77rt Oct 15, 2026
a71b430
use display add button in header only if we have agents
s77rt Oct 15, 2026
6cee2c5
mend
s77rt Oct 15, 2026
1400f77
Merge pull request #104070 from hungvu193/fix-join-workspace-blockers
carlosmiceli Oct 15, 2026
30aa2d7
add empty state buttons
s77rt Oct 15, 2026
ce383d0
revert unrelated change
s77rt Oct 15, 2026
77fbd51
Add INT133 help article for inactive Sage Intacct web services user
MelvinBot Oct 15, 2026
538eded
disable max-lines lint on Navigation/types.ts
s77rt Oct 15, 2026
6807d3a
Update Sage Intacct web services user navigation path in INT133 articles
MelvinBot Oct 15, 2026
d6b7807
Merge pull request #103684 from software-mansion-labs/feat/charts/siz…
luacmartins Oct 15, 2026
2a7555e
Document OIDC workflow permissions
justinpersaud Oct 15, 2026
eb2ea79
Update Mobile-Expensify submodule to f5d0668
OSBotify Oct 15, 2026
8740a28
Allow TimePicker inputs to focus in native landscape mode
MelvinBot Oct 15, 2026
1fee3d8
Update Mobile-Expensify submodule to 194a6be
OSBotify Oct 15, 2026
d2eef46
Merge pull request #103174 from Expensify/claude-scrollExpenseReportO…
NicolasBonet Oct 15, 2026
9fab5c4
Fix: Wrap long Pick type in AmountTextInput to satisfy Oxfmt
MelvinBot Oct 15, 2026
d77d1c3
Update version to 9.5.10-0
OSBotify Oct 15, 2026
a3d62cc
Update Mobile-Expensify submodule version to 9.5.10-0
OSBotify Oct 15, 2026
37ea23d
Merge pull request #103682 from linhvovan29546/refactor/66418-remove-…
Julesssss Oct 15, 2026
3e8adfb
Merge pull request #101339 from software-mansion-labs/feat/liquid-gla…
grgia Oct 15, 2026
049485e
Merge pull request #103861 from callstack-internal/LukasMod/parent-ch…
Julesssss Oct 15, 2026
198b7a0
Auto-tighten eslint-seatbelt baseline
OSBotify Oct 15, 2026
2d624b1
Merge pull request #103598 from ishpaul777/ishpaul/103572-import-filt…
yuwenmemon Oct 15, 2026
73c499c
Merge pull request #103841 from Expensify/claude-fixContactMethodPerc…
pecanoro Oct 15, 2026
9285426
Merge pull request #104059 from Expensify/claude-splitPolicyUtilsAppr…
blimpich Oct 15, 2026
31e51ba
Merge pull request #104037 from Expensify/claude-updateNS0068HelpArti…
yuwenmemon Oct 15, 2026
1108d42
Merge pull request #103943 from Expensify/jpersaud/app-s3-oidc
amyevans Oct 15, 2026
703f1f0
Merge pull request #103747 from Expensify/georgia-fix-confirmation-pa…
amyevans Oct 15, 2026
03b6d24
Render Merchant chip popup controls directly so they size to content …
MelvinBot Oct 15, 2026
b70422b
Merge pull request #103955 from Expensify/claude-inviteArrowUpToSearch
puneetlath Oct 15, 2026
49008ae
feat(settings): remove beta gate for human support
jasperhuangg Oct 15, 2026
7e9ad84
Merge pull request #104152 from Expensify/codex/remove-talk-to-human-…
chiragsalian Oct 15, 2026
b58ad96
Update version to 9.5.10-1
OSBotify Oct 15, 2026
b9a9521
Update Mobile-Expensify submodule version to 9.5.10-1
OSBotify Oct 15, 2026
98bbd8f
Keep Merchant chip popup controls scrollable when they don't fit, suc…
MelvinBot Oct 15, 2026
c107795
Let the Merchant chip popup ScrollView shrink so Apply stays visible
MelvinBot Oct 15, 2026
68e0b13
Cap the Merchant chip popup above the keyboard so Apply stays visible
MelvinBot Oct 15, 2026
be282b0
Merge pull request #103842 from callstack-internal/VickyStash/bugfix/…
mountiny Oct 15, 2026
17311dd
Update version to 9.5.11-0
OSBotify Oct 15, 2026
8bf7ec1
Update Mobile-Expensify submodule version to 9.5.11-0
OSBotify Oct 15, 2026
f5ed466
Merge pull request #104141 from Expensify/claude-fixMerchantQuickFilt…
neil-marcellini Oct 15, 2026
5c76652
Merge pull request #103486 from s77rt/company-agent-page
yuwenmemon Oct 15, 2026
fbd932a
Merge pull request #103937 from Expensify/claude-fixUnguardedSearchRe…
mountiny Oct 15, 2026
6bb5cf0
Merge pull request #103487 from callstack-internal/receipt-upload-ret…
mountiny Oct 15, 2026
dbe995a
Merge pull request #103628 from Expensify/claude-updateAIAgentHelpDocs
yuwenmemon Oct 15, 2026
f6da155
Merge pull request #99827 from KJ21-ENG/seatbelt/c1-260827-r1
blimpich Oct 15, 2026
44ff635
Auto-tighten eslint-seatbelt baseline
OSBotify Oct 15, 2026
e38e11d
Update version to 9.5.12-0
OSBotify Oct 15, 2026
fbd1b55
Update Mobile-Expensify submodule version to 9.5.12-0
OSBotify Oct 15, 2026
1a46704
Merge pull request #102379 from truph01/fix/66408-part-1.6
danieldoglas Oct 15, 2026
548d07f
Merge pull request #102438 from youssef-lr/youssef-lr-app-678389-admi…
stitesExpensify Oct 15, 2026
9a8dcae
Merge pull request #103850 from Expensify/claude-docsMemberDisplayName
stephanieelliott Oct 15, 2026
d94107e
Merge pull request #102406 from truph01/fix/66408-part-2.8
danieldoglas Oct 15, 2026
c542990
Merge pull request #104021 from Expensify/claude-pendingPlaidTransact…
stephanieelliott Oct 15, 2026
61bd323
Merge pull request #104092 from Expensify/claude-addINT133SageIntacct…
stephanieelliott Oct 15, 2026
50602c0
Merge pull request #103722 from Expensify/claude-updateChangeWorkspac…
stephanieelliott Oct 15, 2026
e658897
Update Mobile-Expensify submodule to 5525450
OSBotify Oct 15, 2026
364fb3d
Merge pull request #103141 from allgandalf/share-report-more-menu
mollfpr Oct 16, 2026
bf2fb24
Merge pull request #102727 from Expensify/claude-protectParentReportM…
marcaaron Oct 16, 2026
c0c2eae
Merge pull request #103440 from Expensify/claude-perDiemTimePickerLan…
marcaaron Oct 16, 2026
6d0036f
Merge remote-tracking branch 'exfy/main' into perf/3039-lhn-item-leve…
sosek108 Oct 16, 2026
6b9c866
Scope LHN row report names and personal details to the row
sosek108 Oct 16, 2026
7ea35d1
Cover all accounts and reports read by LHN rows, fix SidebarOrderTest…
sosek108 Oct 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,9 @@ async function run() {
}
core.setOutput('MOBILE_EXPENSIFY_PR_LIST', mobileExpensifyPRList);
} catch (error) {
console.error((error as Error).message);
core.setFailed(error as Error);
const message = error instanceof Error ? error.message : String(error);
console.error(message);
core.setFailed(error instanceof Error ? error : message);
}
}

Expand Down
5 changes: 3 additions & 2 deletions .github/actions/javascript/getDeployPullRequestList/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -26716,8 +26716,9 @@ async function run() {
}
setOutput("MOBILE_EXPENSIFY_PR_LIST", mobileExpensifyPRList);
} catch (error2) {
console.error(error2.message);
setFailed(error2);
const message = error2 instanceof Error ? error2.message : String(error2);
console.error(message);
setFailed(error2 instanceof Error ? error2 : message);
}
}
if (import.meta.main) {
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/buildAdHoc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,8 @@ jobs:
# v6
uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
role-to-assume: arn:aws:iam::949552126497:role/app-adhoc-web-deploy-gh-actions
role-session-name: gh-${{ github.run_id }}-${{ github.run_attempt }}
aws-region: us-east-1

- name: Deploy to S3
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/buildAndroid.yml
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,10 @@ jobs:
# v6
uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
role-to-assume: arn:aws:iam::949552126497:role/app-rock-cache-gh-actions
role-session-name: gh-${{ github.run_id }}-${{ github.run_attempt }}
# Match the 6h job timeout because Rock does not refresh credentials before uploading
role-duration-seconds: 21600
aws-region: us-east-1

- name: Rock Remote Build - Android
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/buildIOS.yml
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,10 @@ jobs:
# v6
uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
role-to-assume: arn:aws:iam::949552126497:role/app-rock-cache-gh-actions
role-session-name: gh-${{ github.run_id }}-${{ github.run_attempt }}
# Match the 6h job timeout because Rock does not refresh credentials before uploading
role-duration-seconds: 21600
aws-region: us-east-1

- name: Prepare provisioning profiles JSON
Expand Down
10 changes: 8 additions & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,8 @@ jobs:
androidBuild:
name: Build Android HybridApp
needs: [prep]
# Preserve the default token scopes while adding OIDC access for the called workflow
permissions: write-all
if: ${{ fromJSON(needs.prep.outputs.SHOULD_BUILD_NATIVE) }}
uses: ./.github/workflows/buildAndroid.yml
with:
Expand Down Expand Up @@ -429,6 +431,8 @@ jobs:
iosBuild:
name: Build iOS HybridApp
needs: [prep]
# Preserve the default token scopes while adding OIDC access for the called workflow
permissions: write-all
if: ${{ fromJSON(needs.prep.outputs.SHOULD_BUILD_NATIVE) }}
uses: ./.github/workflows/buildIOS.yml
with:
Expand Down Expand Up @@ -703,6 +707,8 @@ jobs:
name: Deploy Web to S3
needs: [prep, webBuild, buildStorybook]
if: ${{ always() && needs.webBuild.result == 'success' }}
# Preserve the default token scopes while adding OIDC access
permissions: write-all
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Checkout
Expand Down Expand Up @@ -735,8 +741,8 @@ jobs:
# v6
uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
role-to-assume: arn:aws:iam::949552126497:role/app-${{ env.DEPLOY_ENV }}-web-deploy-gh-actions
role-session-name: gh-${{ github.run_id }}-${{ github.run_attempt }}
aws-region: us-east-1

- name: Deploy to S3
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/remote-build-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ jobs:

build:
needs: [prep, resolveRefs]
# Preserve the default token scopes while adding OIDC access
permissions: write-all
runs-on: ${{ github.repository_owner == 'Expensify' && 'blacksmith-16vcpu-ubuntu-2404' || 'blacksmith-2vcpu-ubuntu-2404' }}
strategy:
fail-fast: false
Expand Down Expand Up @@ -82,8 +84,10 @@ jobs:
# v6
uses: aws-actions/configure-aws-credentials@99214aa6889fcddfa57764031d71add364327e59
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
role-to-assume: arn:aws:iam::949552126497:role/app-rock-cache-gh-actions
role-session-name: gh-${{ github.run_id }}-${{ github.run_attempt }}
# Match the 6h job timeout because Rock does not refresh credentials before uploading
role-duration-seconds: 21600
aws-region: us-east-1

- name: Rock Remote Build - Android
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/remote-build-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ jobs:

build:
needs: [prep, resolveRefs]
# Preserve the default token scopes while adding OIDC access
permissions: write-all
runs-on: ${{ github.repository_owner == 'Expensify' && 'blacksmith-12vcpu-macos-latest' || 'macos-latest' }}
strategy:
fail-fast: false
Expand Down Expand Up @@ -94,8 +96,10 @@ jobs:
# v6
uses: aws-actions/configure-aws-credentials@99214aa6889fcddfa57764031d71add364327e59
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
role-to-assume: arn:aws:iam::949552126497:role/app-rock-cache-gh-actions
role-session-name: gh-${{ github.run_id }}-${{ github.run_attempt }}
# Match the 6h job timeout because Rock does not refresh credentials before uploading
role-duration-seconds: 21600
aws-region: us-east-1

- name: Rock Remote Build - iOS
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/testBuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ jobs:

buildApps:
needs: [prep, resolveRefs]
# Preserve the default token scopes while adding OIDC access for the called workflow
permissions: write-all
uses: ./.github/workflows/buildAdHoc.yml
with:
# Fall back to App main when nothing is resolved (test builds default to the latest NewDot).
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/testBuildOnPush.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ jobs:

buildApps:
needs: [prep]
# Preserve the default token scopes while adding OIDC access for the called workflow
permissions: write-all
uses: ./.github/workflows/buildAdHoc.yml
with:
APP_REF: ${{ needs.prep.outputs.APP_REF }}
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/verifyHybridApp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ jobs:

verify_android:
name: Verify Android HybridApp builds on main
permissions:
contents: read
id-token: write
pull-requests: write
if: ${{ !github.event.pull_request.head.repo.fork && github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' }}
cache-mode: read
uses: ./.github/workflows/buildAndroid.yml
Expand All @@ -85,6 +89,10 @@ jobs:

verify_ios:
name: Verify iOS HybridApp builds on main
permissions:
contents: read
id-token: write
pull-requests: write
if: ${{ !github.event.pull_request.head.repo.fork && github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' }}
cache-mode: read
uses: ./.github/workflows/buildIOS.yml
Expand Down
5 changes: 4 additions & 1 deletion .storybook/mockPaths.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ const dirname = path.dirname(filename);
/* eslint-disable @typescript-eslint/naming-convention */
export default {
'@react-native-community/netinfo': path.resolve(dirname, '../__mocks__/@react-native-community/netinfo.ts'),
'@react-navigation/native': path.resolve(dirname, '../__mocks__/@react-navigation/native'),
// The static mock, plus a story-owned route stack so a whole flow can mount
'@react-navigation/native': path.resolve(dirname, './mocks/react-navigation-native.ts'),
// Modal backdrops read the stack card animation, which no story mounts
'@react-navigation/stack': path.resolve(dirname, './mocks/react-navigation-stack.ts'),
};
/* eslint-enable @typescript-eslint/naming-convention */
11 changes: 11 additions & 0 deletions .storybook/mocks/navigationStoryLoader.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
const path = require('path');

/**
* Rewrites the App's Navigation module for Storybook so navigate and goBack land on the story's route stack.
* A loader is used because `@libs` is a prefix alias that no alias entry for a single module can outrank.
*/
module.exports = function navigationStoryLoader(source) {
const routerPath = JSON.stringify(path.resolve(__dirname, './storyRouter.tsx'));
const renamed = source.replace(/export default \{/, 'const navigationForStorybook = {');
return `import {withStoryRouter} from ${routerPath};\n${renamed}\nexport default withStoryRouter(navigationForStorybook);\n`;
};
86 changes: 86 additions & 0 deletions .storybook/mocks/react-navigation-native.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
import {useEffect} from 'react';

import {useStoryRouter} from './storyRouter';

const noop = () => {};

const staticRoute = {key: 'story', name: 'StoryFlow', params: {}};
const staticNavigation = {
navigate: noop,
goBack: noop,
setParams: noop,
canGoBack: () => false,
getState: () => ({routes: []}),
isFocused: () => true,
addListener: () => noop,
};

/** Inside a StoryRouterProvider the route comes from the story's stack. Elsewhere no story mounts a navigator. */
function useRoute() {
const router = useStoryRouter();
return router ? {...staticRoute, params: router.current} : staticRoute;
}

function useNavigation() {
const router = useStoryRouter();
if (!router) {
return staticNavigation;
}
return {...staticNavigation, setParams: router.setParams, goBack: router.pop, canGoBack: () => true};
}

const useIsFocused = () => true;
const useTheme = () => ({});
const useLocale = () => ({});
const useNavigationState = () => undefined;
const usePreventRemove = noop;
const triggerTransitionEnd = noop;
const useFocusEffect = (callback: () => (() => void) | void) => {
useEffect(() => callback(), [callback]);
};
function Link() {
return null;
}
function LinkingContext() {
return null;
}
function NavigationContainer() {
return null;
}
function ServerContainer() {
return null;
}
function ThemeProvider() {
return null;
}
const DarkTheme = {};
const DefaultTheme = {};
const useLinkBuilder = () => null;
const useLinkProps = () => null;
const useLinkTo = () => null;
const useScrollToTop = () => null;

// Everything a story does not override comes from the navigation core
export * from '@react-navigation/core';
export {
useRoute,
useNavigation,
useIsFocused,
useTheme,
useLocale,
useNavigationState,
usePreventRemove,
triggerTransitionEnd,
useFocusEffect,
Link,
LinkingContext,
NavigationContainer,
ServerContainer,
ThemeProvider,
DarkTheme,
DefaultTheme,
useLinkBuilder,
useLinkProps,
useLinkTo,
useScrollToTop,
};
27 changes: 27 additions & 0 deletions .storybook/mocks/react-navigation-stack.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// useCardAnimation returns React Native Animated values, not Reanimated ones
// eslint-disable-next-line no-restricted-imports
import {Animated} from 'react-native';

// The alias points the package name at this file, so the real module has to be reached by path, which has no declaration
// @ts-expect-error -- see above
// eslint-disable-next-line import/no-relative-packages
export * from '../../node_modules/@react-navigation/stack/lib/module/index.js';

const presented = new Animated.Value(1);
const idle = new Animated.Value(0);

/** No story mounts a stack screen, so every modal is treated as fully presented */
function useCardAnimation() {
return {
current: {progress: presented},
next: undefined,
closing: idle,
swiping: idle,
inverted: presented,
index: 0,
layouts: {screen: {width: 0, height: 0}},
insets: {top: 0, right: 0, bottom: 0, left: 0},
};
}

export {useCardAnimation};
Loading