Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
703 commits
Select commit Hold shift + click to select a range
d194876
Keep personal details when switching to and from copilot account
cead22 Aug 24, 2026
d5d2c11
Rename popover portrait height key and trim ownership comment
MelvinBot Aug 24, 2026
2b96966
Merge branch 'Expensify:main' into 83207
abbasifaizan70 Aug 24, 2026
f17b32d
fixed fmt issues
abbasifaizan70 Aug 25, 2026
1e963a6
Merge branch '83207' of https://github.com/abbasifaizan70/Expensify i…
abbasifaizan70 Aug 25, 2026
df0010d
Use a distinct empty state illustration for Spend > Expenses
MelvinBot Aug 25, 2026
fecc817
Normalize SVG with compress-svg
MelvinBot Aug 25, 2026
c635bf3
Merge branch 'main' into dukenv/cda-international-bank-account-details
dukenv0307 Aug 25, 2026
5615d69
use swiftBicCode regex from Corpay API
dukenv0307 Aug 25, 2026
7614984
Add regression tests for cancelling vs confirming travel monthly limi…
MelvinBot Aug 25, 2026
303db93
Fix: run oxfmt on WorkspaceTravelBillingMonthlyLimitPageTest to fix i…
MelvinBot Aug 25, 2026
bd818c0
Take every displayed AM/PM marker from the app's own translation keys
mukhrr Aug 25, 2026
8bd01c1
Merge remote-tracking branch 'upstream/main' into fix/per-diem-time-m…
mukhrr Aug 25, 2026
fd37253
Merge branch 'main' into fix/workflows-bank-account-status-not-shown
marufsharifi Aug 25, 2026
8fb30f3
fix: only force keyboard reload when entering edit mode on iOS
mukhrr Aug 25, 2026
b80d211
check delegate before locked account in close action
lakchote Aug 25, 2026
ec22149
drop stale copilot example from rulebot guard comment
lakchote Aug 25, 2026
545bc9f
Merge remote-tracking branch 'origin/main' into lucien/gate-close-acc…
lakchote Aug 25, 2026
8f977ac
remove ManualSendMessage and keep ManualSendMessageVisible
LukasMod Aug 25, 2026
38c7084
fix: address final add-existing review feedback
nyomanjyotisa Aug 25, 2026
1d04bfa
Merge branch 'Expensify:main' into 83207
abbasifaizan70 Aug 25, 2026
217ae34
removed extra file
abbasifaizan70 Aug 25, 2026
7495dce
Simplify delegateAccountID assignee-comment test
Krishna2323 Aug 25, 2026
1404184
Rename empty-state__expenses.svg to emptystate__searchexpenses.svg pe…
MelvinBot Aug 25, 2026
336fc3d
Type jest.requireActual for TravelBilling mock and drop eslint-disables
MelvinBot Aug 25, 2026
435c600
Merge remote-tracking branch 'upstream/main' into 83829-migrate-split…
huult Aug 25, 2026
936e229
update import
huult Aug 25, 2026
7fb4a37
Merge branch 'Expensify:main' into 2859-receipt-name-handling
adhorodyski Aug 25, 2026
955d1b2
Fix: tear down Onfido SDK on unmount so its modal is removed when RHP…
MelvinBot Aug 25, 2026
a0c2e72
Fix: order Concierge limit-increase reply after onboarding welcome + …
MelvinBot Aug 25, 2026
59b1323
Derive payer roles from the WORKFLOWS_PAYMENTS permission instead of …
MelvinBot Aug 25, 2026
d55b2d2
Simplify canRolePay doc comment
MelvinBot Aug 25, 2026
5bd758a
Drop redundant NVP_ONBOARDING subscription, reuse selector-backed has…
MelvinBot Aug 25, 2026
0de8bc7
Rename the patch to the required numbered format
adhorodyski Aug 25, 2026
ed200bf
Trim the patch details to the durable facts
adhorodyski Aug 25, 2026
cee335b
Split semicolon-spliced comment into two sentences (CONSISTENCY-16)
MelvinBot Aug 25, 2026
99e57e8
Enqueue onboarding OpenReport on navigateToAndOpenReport existing-cha…
MelvinBot Aug 25, 2026
b2b7935
remove swift redundant checking logic
dukenv0307 Aug 25, 2026
22453bc
conflicts
Gonals Aug 25, 2026
d9ff9f9
fix action
Gonals Aug 25, 2026
0b480dc
cleanup
Gonals Aug 25, 2026
09f7dcc
simplify tests
Gonals Aug 25, 2026
8158218
simplify
Gonals Aug 25, 2026
f5ac580
cleanup comment
Gonals Aug 25, 2026
eda201b
left can't be an array
Gonals Aug 25, 2026
2beb6fc
rename function
Gonals Aug 25, 2026
99875d0
reuse filterRulesForPolicy
Gonals Aug 25, 2026
24b135b
moved to module level
Gonals Aug 25, 2026
c85ce36
Match Mobile-Expensify submodule to main
Gonals Aug 25, 2026
b00e11b
Fix: reserve bottom safe-area padding on Reports page ScrollView so A…
MelvinBot Aug 25, 2026
2da1f8e
Merge branch 'main' into showOverLimitNoticeToSelfApprover
KioCoan Aug 25, 2026
8f9af2a
conflicts
Gonals Aug 25, 2026
0a80a26
fix equal merge
Gonals Aug 25, 2026
bb17afe
handle manual merges properly
Gonals Aug 25, 2026
3ab299e
better tests
Gonals Aug 25, 2026
5efcf50
Docs: document Submit to my employer option on tracked expense More menu
MelvinBot Aug 25, 2026
b873a80
Shorten containerStyle comment per review feedback
MelvinBot Aug 25, 2026
096cc96
Merge remote-tracking branch 'origin/main' into claude-submitToPopove…
MelvinBot Aug 25, 2026
fd6f03b
fix: conflicts
thelullabyy Aug 25, 2026
d8c33b7
Merge remote-tracking branch 'upstream/main' into 97646-teachers-unit…
huult Aug 26, 2026
cd37f67
update comments
huult Aug 26, 2026
3fb863e
Merge remote-tracking branch 'upstream/main' into 83852-migrate-money…
suneox Aug 26, 2026
e83fa5e
Update Set-distance-rates.md
stephanieelliott Aug 26, 2026
2b69aa8
Add files via upload
stephanieelliott Aug 26, 2026
3331dee
Update Set-distance-rates.md with image and clarification
stephanieelliott Aug 26, 2026
8c7846c
Update Set-distance-rates.md
stephanieelliott Aug 26, 2026
78a4e05
Update Set-distance-rates.md
stephanieelliott Aug 26, 2026
f4e6190
Merge main into lucien/gate-close-account-for-copilots
lakchote Aug 26, 2026
13dd90e
Remove em dash from test comment per CONSISTENCY-16
MelvinBot Aug 26, 2026
ccd83fd
conflicts
Gonals Aug 26, 2026
1219ffb
parrot
Gonals Aug 26, 2026
71bf35b
remove isValidSwiftBic check
dukenv0307 Aug 26, 2026
ef9ea81
Merge remote-tracking branch 'upstream/main' into 83852-migrate-money…
suneox Aug 26, 2026
f7daaae
update runtime config with dynamic route
suneox Aug 26, 2026
ff2654a
Merge pull request #99150 from suneox/83852-migrate-money-request-par…
mjasikowski Aug 26, 2026
07eb4e6
Merge pull request #98547 from huult/83829-migrate-split-expense-work…
mjasikowski Aug 26, 2026
336b777
Merge pull request #98631 from huult/83867-travel-workspace
mjasikowski Aug 26, 2026
06f19b2
Fix Concierge prompt box requiring two taps with keyboard open
mhawryluk Aug 26, 2026
f77a880
Auto-tighten eslint-seatbelt baseline
OSBotify Aug 26, 2026
36b5bea
Fix split expense dynamic route typecheck
mjasikowski Aug 26, 2026
9e84742
Merge pull request #99532 from Expensify/fix-99530
mjasikowski Aug 26, 2026
120d711
Skip preexisting report replacement when it is the parent report
TMisiukiewicz Aug 26, 2026
cf1f597
Fix iOS - Home - Concierge prompt box remains expanded after sending …
GCyganek Aug 26, 2026
50b6146
Merge branch 'main' into fix/home-concierge-keyboard-persist-tabs
mhawryluk Aug 26, 2026
d89e196
Fix Home - Task is not created in Concierge after sending [] task fro…
GCyganek Aug 26, 2026
2bb48e2
Fix broken Android upload thumbnail by adding file:// scheme to cache…
MelvinBot Aug 26, 2026
f24584c
Add test for file:// scheme on cached attachment source
MelvinBot Aug 26, 2026
da925b8
Fix and add tests
GCyganek Aug 26, 2026
afdb57e
Comments
GCyganek Aug 26, 2026
7830e10
Fix knip check
GCyganek Aug 26, 2026
d8b3841
Reword comments to fix spellcheck (avoid non-dictionary word 'schemel…
MelvinBot Aug 26, 2026
aa2a1bf
resolve conflict
daledah Aug 26, 2026
080f9c8
Fix comment max length check
GCyganek Aug 26, 2026
831a49c
Merge pull request #99529 from software-mansion-labs/fix/home-concier…
grgia Aug 26, 2026
3527129
Update version to 9.4.61-1
OSBotify Aug 26, 2026
997e8d4
Update Mobile-Expensify submodule version to 9.4.61-1
OSBotify Aug 26, 2026
b404f97
Gate the Home Concierge prompt box behind sign in for anonymous users
dariusz-biela Aug 26, 2026
e49e547
Merge pull request #98885 from software-mansion-labs/charts/short-dat…
Aug 26, 2026
a29eb30
Merge pull request #98611 from thelullabyy/fix-03/90366
JS00001 Aug 26, 2026
3e1ee85
Merge pull request #99546 from Expensify/claude-fixAndroidUploadThumb…
Gonals Aug 26, 2026
dac5ee7
Merge pull request #99260 from Expensify/claude-submitToPopoverFixedH…
carlosmiceli Aug 26, 2026
fe4d36d
Update version to 9.4.61-2
OSBotify Aug 26, 2026
c80d595
Update Mobile-Expensify submodule version to 9.4.61-2
OSBotify Aug 26, 2026
dd4d85c
Merge pull request #99537 from software-mansion-labs/@GCyganek/concie…
grgia Aug 26, 2026
b67514b
Update version to 9.4.61-3
OSBotify Aug 26, 2026
256192c
Update Mobile-Expensify submodule version to 9.4.61-3
OSBotify Aug 26, 2026
b6bc510
Merge remote-tracking branch 'upstream/main' into 97646-teachers-unit…
huult Aug 26, 2026
4d00f12
Store Concierge prompt box draft message in Onyx
mhawryluk Aug 26, 2026
6f43ad0
Merge branch 'Expensify:main' into krishna2323/issue/66425-part-15a
Krishna2323 Aug 26, 2026
f4c8a91
Merge branch 'main' into @GCyganek/concierge-prompt-box/task-is-not-c…
GCyganek Aug 26, 2026
4aa61e8
Merge pull request #99016 from KioCoan/showOverLimitNoticeToSelfApprover
arosiclair Aug 26, 2026
32461e3
Fix ExceededCommentLength adding more space below composer
GCyganek Aug 26, 2026
61962cd
Merge pull request #99552 from software-mansion-labs/dariusz-biela/fi…
puneetlath Aug 26, 2026
d1903e3
Update version to 9.4.61-4
OSBotify Aug 26, 2026
9e5f8e6
Update Mobile-Expensify submodule version to 9.4.61-4
OSBotify Aug 26, 2026
f70ebf2
Merge pull request #97858 from huult/97646-teachers-unite-not-here-rh…
rlinoz Aug 26, 2026
47ba626
Merge pull request #99368 from Expensify/carlos-copilot-switch
tgolen Aug 26, 2026
e5389f5
conflicts
Gonals Aug 26, 2026
f6c314c
Ignore feed and bank account filters in similarSearchHash so reconcil…
ShridharGoel Aug 26, 2026
3d94273
Merge branch 'main' of github.com:Expensify/App into fix/export-send-…
ShridharGoel Aug 26, 2026
d60b067
Fix required-field error appearing on upload in signer info documents…
MelvinBot Aug 26, 2026
2044d29
Merge pull request #98979 from software-mansion-labs/korytko/writewhe…
Julesssss Aug 26, 2026
e18c251
Merge pull request #94825 from Expensify/alberto-moreApprovers
Gonals Aug 26, 2026
f6bcd25
Auto-tighten eslint-seatbelt baseline
OSBotify Aug 26, 2026
8bce17e
Merge pull request #99400 from Expensify/lucien/gate-close-account-fo…
joekaufmanexpensify Aug 26, 2026
dd20a5c
Merge pull request #99424 from Expensify/claude-onfidoModalTeardownOn…
yuwenmemon Aug 26, 2026
5a57a12
Merge pull request #99387 from Expensify/claude-distinctExpensesEmpty…
Julesssss Aug 26, 2026
19996fc
Merge pull request #99590 from Expensify/claude-audBaSignerInfoUpload…
madmax330 Aug 26, 2026
ca31b78
Merge pull request #99333 from callstack-internal/2859-receipt-name-h…
mountiny Aug 26, 2026
4735ccf
Merge pull request #99536 from callstack-internal/report-ancestry-cyc…
mountiny Aug 26, 2026
8941661
Update Mobile-Expensify submodule to 4dfc345
OSBotify Aug 26, 2026
4f1a6c4
Merge pull request #99344 from Expensify/claude-travelBillingMonthlyL…
luacmartins Aug 26, 2026
c6600c9
Update version to 9.4.62-0
OSBotify Aug 26, 2026
24ae4d8
Update Mobile-Expensify submodule version to 9.4.62-0
OSBotify Aug 26, 2026
f9c8c60
Update version to 9.4.62-1
OSBotify Aug 26, 2026
ca1a58c
Update Mobile-Expensify submodule version to 9.4.62-1
OSBotify Aug 26, 2026
18a6e60
log optimisticData
arosiclair Aug 26, 2026
b9b60df
Merge pull request #98627 from nyomanjyotisa/issue-98425
madmax330 Aug 26, 2026
2fc501c
Merge pull request #99403 from callstack-internal/feat/remove-manual-…
Julesssss Aug 26, 2026
630e8de
Update Mobile-Expensify submodule to fc7a42b
OSBotify Aug 26, 2026
a6f2ec0
Fix false Missing Merchant RBR on self-DM split submitted to workspace
MelvinBot Aug 26, 2026
e4929f4
Merge branch 'main' into helpsite-update-upcoming-integrations
stephanieelliott Aug 26, 2026
e4a96d0
Update Upcoming-Integrations-And-Accounting.md
stephanieelliott Aug 26, 2026
435dd8b
Merge pull request #98013 from Expensify/helpsite-update-upcoming-int…
VictoriaExpensify Aug 26, 2026
37d253a
Clear stale modifiedMerchant with null and cover placeholder cases
MelvinBot Aug 26, 2026
8036bc3
Merge pull request #99170 from mukhrr/fix/per-diem-time-meridiem
blimpich Aug 27, 2026
64ad449
Merge pull request #98509 from Expensify/claude-allowLinkFeedNonUsdWo…
chuckdries Aug 27, 2026
34d1d3d
rename splitExpenseTransactionID to editSplitExpenseTransactionID
huult Aug 27, 2026
86300ec
Merge branch 'main' into dukenv/cda-international-bank-account-details
dukenv0307 Aug 27, 2026
9a3973e
Update src/hooks/useLoadDepositAccountSetup.ts
dukenv0307 Aug 27, 2026
bfdc0fd
Update src/hooks/useLoadDepositAccountSetup.ts
dukenv0307 Aug 27, 2026
7ab16ea
Update src/pages/settings/Wallet/InternationalDepositAccount/utils.ts
dukenv0307 Aug 27, 2026
27eeb3c
move getSkippedPages to component
dukenv0307 Aug 27, 2026
2ebad4f
Merge pull request #97401 from Expensify/claude-settleBalanceConfirma…
Aug 27, 2026
f818488
Fix: exclude offline-deleted flag for review rule from Copy settings …
MelvinBot Aug 27, 2026
bab8422
Merge pull request #99033 from Expensify/claude-companyCardCsvAlwaysS…
Aug 27, 2026
3c3d343
Revert native BaseTextInput split; keep single shared index
MelvinBot Aug 27, 2026
efea139
Merge remote-tracking branch 'origin/main' into claude-growEditReport…
MelvinBot Aug 27, 2026
3042363
Update BaseTextInput tests for single shared component after native r…
MelvinBot Aug 27, 2026
9ec3ed9
Merge pull request #98822 from Expensify/melvin-docs-submit2026-ga
stephanieelliott Aug 27, 2026
7c5f935
Merge pull request #99480 from Expensify/melvin-docs-submit-to-employ…
stephanieelliott Aug 27, 2026
ccdebdd
Update billing-and-subscriptions help docs for the free Submit plan
MelvinBot Aug 27, 2026
994de17
Update Compare-Collect-and-Control-Plans.md
stephanieelliott Aug 27, 2026
aa00642
Update Understand-Expensify-Pricing.md
stephanieelliott Aug 27, 2026
98f967f
Merge pull request #99606 from Expensify/claude-fixMissingMerchantSel…
francoisl Aug 27, 2026
54c3493
Update Change-Your-Workspace-Plan.md
stephanieelliott Aug 27, 2026
fa944b4
Update Submit-Workspace.md
stephanieelliott Aug 27, 2026
63ee7da
Clean up formatting in Submit-Workspace.md
stephanieelliott Aug 27, 2026
f5fe964
Update Change-Your-Workspace-Plan.md
stephanieelliott Aug 27, 2026
7a0c1d9
Emphasize 'Approve' button in workspace upgrade instructions
stephanieelliott Aug 27, 2026
d13e39b
Update How-to-Export-Expenses.md
stephanieelliott Aug 27, 2026
ed8692e
Merge pull request #98983 from Expensify/docs-booking-restrictions-pilot
stephanieelliott Aug 27, 2026
bc54639
Merge pull request #99622 from huult/99610-fix-unable-to-delete-split
mjasikowski Aug 27, 2026
4ec98ba
Fix pasting an image into the Home Concierge prompt box
WojtekBoman Aug 26, 2026
1605be0
Merge pull request #97868 from Expensify/claude-agentDmBackReturnsToA…
mjasikowski Aug 27, 2026
398c677
Merge remote-tracking branch 'upstream/main' into 83867-trip-details
huult Aug 27, 2026
701c0c3
Merge branch 'main' into fix/concierge-draft-text-not-cleared
mhawryluk Aug 27, 2026
ac4ccac
Merge pull request #99428 from Expensify/claude-fixEcardConciergeRepl…
yuwenmemon Aug 27, 2026
f74a290
Add the new onyx key to ExportOnyxState/common.ts
mhawryluk Aug 27, 2026
e65215d
Small refactor
mhawryluk Aug 27, 2026
8b8daa7
Merge branch 'main' into @GCyganek/concierge-prompt-box/task-is-not-c…
GCyganek Aug 27, 2026
44d741d
Additional bottom padding when only showing concierge prompt box
GCyganek Aug 27, 2026
f0c0921
Cancel debounced write when syncing onyx to state
mhawryluk Aug 27, 2026
feee926
Fix: use normalized validity dates in Expensify Card limit type optim…
MelvinBot Aug 27, 2026
2e06bfe
Merge pull request #98634 from huult/83867-trip-details
mjasikowski Aug 27, 2026
72d3672
Merge pull request #99302 from daledah/refactor/66424-7
mjasikowski Aug 27, 2026
4eb8b0e
Merge branch 'main' into fix/report-fields-initial-list-value-selecte…
marufsharifi Aug 27, 2026
12712c5
Merge pull request #99455 from Expensify/claude-reportsPageAddFieldSa…
mjasikowski Aug 27, 2026
13020f1
Merge pull request #98427 from Expensify/alberto-mergeDist
cristipaval Aug 27, 2026
0f10686
Merge pull request #99562 from software-mansion-labs/99554-concierge-…
inimaga Aug 27, 2026
56631d0
Merge branch 'main' into @GCyganek/concierge-prompt-box/task-is-not-c…
GCyganek Aug 27, 2026
6f4598c
Simplify Authorized Payer role comment to a one-liner
MelvinBot Aug 27, 2026
f7fe2c8
Derive similarSearchHash from suggested searches in SearchUpdateTest
ShridharGoel Aug 27, 2026
1c7808f
Merge pull request #94316 from Expensify/alberto-homeAndOffice
Gonals Aug 27, 2026
1f5dde1
Merge branch 'Expensify:main' into travel-billing-command-names
allgandalf Aug 27, 2026
2970d90
Decompose MoneyRequestView into data hook and field components
sosek108 Aug 27, 2026
272c9fc
Merge pull request #98250 from marufsharifi/fix/report-fields-initial…
robertjchen Aug 27, 2026
f9672cf
Merge pull request #99543 from software-mansion-labs/@GCyganek/concie…
grgia Aug 27, 2026
ab10be2
Update SearchQueryUtils.ts
ShridharGoel Aug 27, 2026
54edc6d
Merge pull request #99623 from Expensify/claude-flagForReviewOfflineD…
MariaHCD Aug 27, 2026
93f3893
Update version to 9.4.62-2
OSBotify Aug 27, 2026
0b92668
Update Mobile-Expensify submodule version to 9.4.62-2
OSBotify Aug 27, 2026
c1cd878
Merge branch 'main' into fix/concierge-draft-text-not-cleared
mhawryluk Aug 27, 2026
d3d07cd
Merge remote-tracking branch 'upstream' into jmgraa/useSingleExecutio…
jmgraa Aug 27, 2026
c6eedd7
Fix after merge
mhawryluk Aug 27, 2026
35efce9
Remove the additional forceClearInput effect
mhawryluk Aug 27, 2026
677df03
Revert "Derive similarSearchHash from suggested searches in SearchUpd…
ShridharGoel Aug 27, 2026
b86864d
Switch to narrow blocklist for similarSearchHash ignored filters
ShridharGoel Aug 27, 2026
dfc25b4
Merge pull request #99116 from Expensify/claude-reduceReportViewLeftM…
puneetlath Aug 27, 2026
fe61422
Merge pull request #99570 from software-mansion-labs/fix/concierge-dr…
puneetlath Aug 27, 2026
930e8c1
Update version to 9.4.62-3
OSBotify Aug 27, 2026
6cf4938
Update Mobile-Expensify submodule version to 9.4.62-3
OSBotify Aug 27, 2026
f5d4abc
Merge pull request #96196 from dukenv0307/dukenv/cda-international-ba…
arosiclair Aug 27, 2026
bac6c8a
Revert "Merge pull request #98611 from thelullabyy/fix-03/90366"
JS00001 Aug 27, 2026
a1a3c8c
Merge pull request #97489 from Expensify/claude-growEditReportFieldInput
chuckdries Aug 27, 2026
9ab8216
Merge pull request #99675 from Expensify/jsenyitko-big-revert
JS00001 Aug 27, 2026
7b1a21f
Update version to 9.4.62-4
OSBotify Aug 27, 2026
b9d7107
Update Mobile-Expensify submodule version to 9.4.62-4
OSBotify Aug 27, 2026
6266095
Merge pull request #97222 from gijoe0295/refactor/composition-over-co…
tgolen Aug 27, 2026
3287483
Merge pull request #98123 from Expensify/claude-authorizedPayerRolePr…
flodnv Aug 27, 2026
82277f5
Merge pull request #99398 from mukhrr/fix/97768
blimpich Aug 27, 2026
0e7a91a
Merge pull request #99106 from ShridharGoel/fix/export-send-searchkey
JS00001 Aug 27, 2026
34a8e15
Merge main and address Plaid consistency review
KJ21-ENG Aug 27, 2026
64d9131
Merge pull request #99647 from Expensify/claude-fixExpensifyCardLimit…
JS00001 Aug 27, 2026
48f9006
Merge pull request #99197 from software-mansion-labs/jmgraa/useSingle…
NicolasBonet Aug 27, 2026
cb7e70e
Merge pull request #98026 from marufsharifi/fix/workflows-bank-accoun…
madmax330 Aug 27, 2026
08b64a1
Merge branch 'main' into krishna2323/issue/66425-part-15a
Krishna2323 Aug 27, 2026
6ef10cd
Merge pull request #99600 from Expensify/arosiclair-log-optimistic-data
NicolasBonet Aug 27, 2026
64d95f6
Merge pull request #99266 from allgandalf/travel-billing-command-names
blimpich Aug 27, 2026
dff3cdf
Merge pull request #98539 from Krishna2323/krishna2323/issue/66425-pa…
madmax330 Aug 27, 2026
3507a69
Merge pull request #99632 from Expensify/claude-submitPlanBillingDocs
strepanier03 Aug 27, 2026
c650e8c
Update Set-distance-rates.md
stephanieelliott Aug 27, 2026
284f48c
Delete docs/assets/images/Distance_rates_automatic_update.png
stephanieelliott Aug 27, 2026
b7a9b29
Add files via upload
stephanieelliott Aug 27, 2026
00ac6c7
removed extra comments
abbasifaizan70 Aug 27, 2026
08035d0
Merge pull request #98046 from hoangzinh/split/pr1a-transaction-messa…
marcochavezf Aug 27, 2026
68ca970
Auto-tighten eslint-seatbelt baseline
OSBotify Aug 27, 2026
eaf4747
Update version to 9.4.63-0
OSBotify Aug 27, 2026
0397987
Update Mobile-Expensify submodule version to 9.4.63-0
OSBotify Aug 27, 2026
537aa87
Merge pull request #99031 from Expensify/claude-releaseTwoAutoUpdateG…
stephanieelliott Aug 27, 2026
203c807
Merge pull request #86925 from abbasifaizan70/83207
chuckdries Aug 27, 2026
9e49728
Merge pull request #98846 from KJ21-ENG/seatbelt/c1-260818-r1
blimpich Aug 28, 2026
fa7140b
Auto-tighten eslint-seatbelt baseline
OSBotify Aug 28, 2026
a6bc76a
Merge pull request #98210 from Expensify/docs-96942-expense-preview-m…
stephanieelliott Aug 28, 2026
b44d61d
Merge pull request #98685 from Expensify/claude-docsCardMonthlySettle…
stephanieelliott Aug 28, 2026
aa807fe
Merge branch 'main' into melvin-docs-personal-karma-native-91837
RachCHopkins Aug 28, 2026
0f98c22
Merge pull request #98216 from Expensify/melvin-docs-personal-karma-n…
RachCHopkins Aug 28, 2026
4ce3320
Merge pull request #98890 from Expensify/docs/download-receipts-searc…
RachCHopkins Aug 28, 2026
e897708
Merge pull request #99024 from Expensify/docs-98091-view-user-history
stephanieelliott Aug 28, 2026
e1f068e
Merge branch 'main' into refactor-money-request-view-decomposition
sosek108 Aug 28, 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
@@ -1,5 +1,5 @@
context platform=android
# @desc Send a chat message from inside an already-open chat. Reusable helper for setting up state in other flows. Does not navigate or open a chat - assumes the composer is visible. For the QA scenario that exercises the ManualSendMessage Sentry span, see flows/tests/send-message.ad.
# @desc Send a chat message from inside an already-open chat. Reusable helper for setting up state in other flows. Does not navigate or open a chat - assumes the composer is visible. For the QA scenario that exercises the ManualSendMessageVisible Sentry span, see flows/tests/send-message.ad.
# @pre label="Write something..." editable=true
# @post label="Write something..." editable=true
# @tag chat
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/agent-device/flows/macros/send-message.ad
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# @desc Send a chat message from inside an already-open chat. Reusable helper for setting up state in other flows. Does not navigate or open a chat - assumes the composer is visible. For the QA scenario that exercises the ManualSendMessage Sentry span, see flows/tests/send-message.ad.
# @desc Send a chat message from inside an already-open chat. Reusable helper for setting up state in other flows. Does not navigate or open a chat - assumes the composer is visible. For the QA scenario that exercises the ManualSendMessageVisible Sentry span, see flows/tests/send-message.ad.
# @pre label="Write something..." editable=true
# @post label="Write something..." editable=true
# @tag chat
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
context platform=web
# @desc Send a chat message from inside an already-open chat. Reusable helper for setting up state in other flows. Does not navigate or open a chat - assumes the composer is visible. For the QA scenario that exercises the ManualSendMessage Sentry span, see flows/tests/send-message.ad.
# @desc Send a chat message from inside an already-open chat. Reusable helper for setting up state in other flows. Does not navigate or open a chat - assumes the composer is visible. For the QA scenario that exercises the ManualSendMessageVisible Sentry span, see flows/tests/send-message.ad.
# @pre role="textbox" label="Write something..."
# @post role="textbox" label="Write something..."
# @tag chat
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/agent-device/flows/tests/send-message.ad
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# @desc From the Inbox tab, open a chat matching TARGET_CHAT in the LHN, type a message and send it. Triggers the ManualSendMessage Sentry span (Send press -> optimistic message fragment rendered). Assumes the user is signed in with at least one chat in the Inbox.
# @desc From the Inbox tab, open a chat matching TARGET_CHAT in the LHN, type a message and send it. Triggers the ManualSendMessageVisible Sentry span (Send press -> optimistic message fragment rendered). Assumes the user is signed in with at least one chat in the Inbox.
# @pre text="Inbox"
# @pre role="button" label="Search"
# @post label="Write something..." editable=true
# @tag chat
# @tag navigation
# @tag perf
# @tag sentry-ManualSendMessage
# @tag sentry-ManualSendMessageVisible
# @param MESSAGE Message text to send in the opened chat.
# @param TARGET_CHAT Visible report/chat title to open from Inbox LHN.

Expand Down
2 changes: 1 addition & 1 deletion Mobile-Expensify
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
versionCode 1009046100
versionName "9.4.61-0"
versionCode 1009046300
versionName "9.4.63-0"
// Supported language variants must be declared here to avoid from being removed during the compilation.
// This also helps us to not include unnecessary language variants in the APK.
resConfigs "en", "es"
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 5 additions & 9 deletions config/eslint/eslint.seatbelt.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
"../../src/Expensify.tsx" "react-hooks/set-state-in-effect" 1
"../../src/GlobalModals.tsx" "no-restricted-syntax" 2
"../../src/ONYXKEYS.ts" "no-restricted-syntax" 2
"../../src/ROUTES.ts" "@typescript-eslint/no-deprecated/getUrlWithBackToParam" 59
"../../src/ROUTES.ts" "@typescript-eslint/no-deprecated/getUrlWithBackToParam" 54
"../../src/ROUTES.ts" "@typescript-eslint/no-unsafe-type-assertion" 3
"../../src/TIMEZONES.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/components/AccountingConnectionConfirmationModal.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
Expand Down Expand Up @@ -658,10 +658,10 @@
"../../src/libs/ReportNameUtils.ts" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/libs/ReportPrimaryActionUtils.ts" "no-restricted-imports" 1
"../../src/libs/ReportTitleUtils.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-deprecated/deprecatedGetReportName" 5
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-deprecated/deprecatedGetReportName" 3
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-deprecated/getPolicy" 27
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-deprecated/translateLocal" 8
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-unsafe-type-assertion" 34
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-unsafe-type-assertion" 33
"../../src/libs/ReportUtils.ts" "rulesdir/no-onyx-connect" 16
"../../src/libs/SearchAutocompleteUtils.ts" "@typescript-eslint/no-unsafe-type-assertion" 4
"../../src/libs/SearchQueryUtils.ts" "@typescript-eslint/no-deprecated/deprecatedGetReportName" 1
Expand Down Expand Up @@ -830,7 +830,6 @@
"../../src/libs/actions/Wallet.ts" "no-restricted-syntax" 1
"../../src/libs/actions/Welcome/OnboardingFlow.ts" "@typescript-eslint/no-unsafe-type-assertion" 3
"../../src/libs/actions/Welcome/index.ts" "no-restricted-syntax" 1
"../../src/libs/actions/Workflow.ts" "no-restricted-syntax" 1
"../../src/libs/actions/__mocks__/App.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/libs/actions/__mocks__/App.ts" "no-restricted-syntax" 2
"../../src/libs/actions/__mocks__/OnyxUpdates.ts" "no-restricted-syntax" 1
Expand Down Expand Up @@ -968,7 +967,7 @@
"../../src/pages/TransactionMerge/MergeTransactionItem.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/pages/TransactionMerge/MergeTransactionsListContent.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/pages/Travel/DynamicTravelUpgrade.tsx" "no-restricted-imports" 1
"../../src/pages/Travel/WorkspaceConfirmationForTravelPage.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/pages/Travel/DynamicWorkspaceConfirmationForTravelPage.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/pages/UnreportedExpenseListItem.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/pages/ValidateLoginPage/index.web.tsx" "react-hooks/set-state-in-effect" 1
"../../src/pages/domain/Groups/PreferredWorkspaceToggle.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
Expand Down Expand Up @@ -1039,6 +1038,7 @@
"../../src/pages/iou/request/step/DynamicIOURequestStepSubrate.tsx" "react-hooks/set-state-in-effect" 1
"../../src/pages/iou/request/step/DynamicIOURequestStepUpgrade.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
"../../src/pages/iou/request/step/DynamicIOURequestStepUpgrade.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/pages/iou/request/step/DynamicIOURequestStepWaypoint.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/pages/iou/request/step/IOURequestEditReportCommon.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
"../../src/pages/iou/request/step/IOURequestEditReportCommon.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/pages/iou/request/step/IOURequestStepAmount.tsx" "react-hooks/set-state-in-effect" 1
Expand All @@ -1056,7 +1056,6 @@
"../../src/pages/iou/request/step/IOURequestStepScan/hooks/useScanRouteParams.ts" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/pages/iou/request/step/IOURequestStepScan/utils/buildReceiptFiles.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/pages/iou/request/step/IOURequestStepScan/utils/getFileSource.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/pages/iou/request/step/IOURequestStepWaypoint.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/pages/iou/request/step/StepScreenWrapper.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/pages/iou/request/step/withFullTransactionOrNotFound.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/pages/iou/request/step/withWritableReportOrNotFound.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
Expand Down Expand Up @@ -1104,9 +1103,7 @@
"../../src/pages/settings/Wallet/InternationalDepositAccount/utils.ts" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/pages/settings/Wallet/PaymentMethodList.tsx" "@typescript-eslint/no-unsafe-type-assertion" 7
"../../src/pages/settings/Wallet/PersonalCardDetailsPage.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/pages/settings/Wallet/PersonalCards/FixPersonalCardConnectionPage/index.native.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/pages/settings/Wallet/PersonalCards/FixPersonalCardConnectionPage/useFixPersonalCardConnection.ts" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/pages/settings/Wallet/PersonalCards/steps/PlaidConnectionStep.tsx" "@typescript-eslint/no-unsafe-type-assertion" 4
"../../src/pages/settings/Wallet/PersonalCards/steps/SelectCountryStep.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/pages/settings/Wallet/PersonalCards/steps/SelectCountryStep.tsx" "react-hooks/set-state-in-effect" 1
"../../src/pages/settings/Wallet/PersonalCards/upgrade/PersonalCardUpgradePage.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
Expand Down Expand Up @@ -1235,7 +1232,6 @@
"../../src/pages/workspace/companyCards/WorkspaceVerifyWorkAccountPage.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
"../../src/pages/workspace/companyCards/WorkspaceVerifyWorkAccountPage.tsx" "react-hooks/set-state-in-effect" 1
"../../src/pages/workspace/companyCards/addNew/DynamicAddNewCardPage.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
"../../src/pages/workspace/companyCards/addNew/PlaidConnectionStep.tsx" "@typescript-eslint/no-unsafe-type-assertion" 6
"../../src/pages/workspace/companyCards/addNew/SelectCountryStep.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
"../../src/pages/workspace/duplicate/WorkspaceDuplicateSelectFeaturesForm.tsx" "react-hooks/preserve-manual-memoization" 2
"../../src/pages/workspace/duplicate/WorkspaceDuplicateSelectFeaturesForm.tsx" "react-hooks/set-state-in-effect" 1
Expand Down
2 changes: 1 addition & 1 deletion contributingGuides/OBSERVABILITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ In development, Sentry is always initialized but does not send data by default.
### Constants

Defined in `src/CONST/index.ts` under `CONST.TELEMETRY`:
- Span names: `SPAN_OPEN_REPORT`, `SPAN_SEND_MESSAGE`
- Span names: `SPAN_OPEN_REPORT`, `SPAN_SEND_MESSAGE_VISIBLE`
- Tag names: `TAGS.ACTIVE_POLICY`, `TAGS.AUTHENTICATION_ERROR_TYPE`
- Attribute names: `ATTRIBUTE_REPORT_ID`, `ATTRIBUTE_MESSAGE_LENGTH`
- Configuration: `CONFIG.MEMORY_TRACKING_INTERVAL`
Expand Down
32 changes: 9 additions & 23 deletions contributingGuides/OBSERVABILITY_METRICS.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,35 +145,21 @@ This document lists all implemented telemetry metrics in the Expensify App.

### Send Message

**Constant**: `CONST.TELEMETRY.SPAN_SEND_MESSAGE`
**Sentry Name**: `ManualSendMessage`
**Threshold**: 100ms (P90)
**What's Measured**: Time from submitting message to the message's React flush. **Caveat**: the end is anchored in a `useEffect`, which fires before the frame is on screen — it does NOT measure visibility. Kept temporarily for comparison against `ManualSendMessageVisible` (below), then to be retired.
**Start**: Message submitted in composer, only when scrolled to bottom ([`src/pages/inbox/report/ReportActionCompose/useComposerSubmit.ts`](https://github.com/Expensify/App/blob/main/src/pages/inbox/report/ReportActionCompose/useComposerSubmit.ts))
**End**:
- User sees: nothing specific — the effect flush is invisible; the message usually appears later
- Technical: Passive effect of the message fragment runs ([`src/pages/inbox/report/comment/TextCommentFragment.tsx`](https://github.com/Expensify/App/blob/main/src/pages/inbox/report/comment/TextCommentFragment.tsx))
**Span ID**: `${CONST.TELEMETRY.SPAN_SEND_MESSAGE}_${reportActionID}` (optimistic report action ID)
**Attributes**: `report_id`, `message_length`, `canceled_by_skeleton`, `send_message_source`, `report_action_count`, `money_request_preview_count`
**Cancellation (report-actions skeleton)**: While a report-actions skeleton is on screen, we listen for `ManualSendMessage` spans started for that report and cancel them immediately, tagging `canceled: true` plus `canceled_by_skeleton` with the skeleton that caused it.
- `canceled_by_skeleton` values (`CONST.TELEMETRY.CANCELED_BY_SKELETON`) based on skeleton condition
**Cancellation (report unmount / navigate away)**: If the user leaves the report before their message renders, any pending `ManualSendMessage` span is cancelled via `cancelSpansByPrefix()` to avoid orphaned spans. Cancelled this way the span gets `canceled: true` but **no** `canceled_by_skeleton` (a blanket cancel by span-id prefix, not scoped to one `report_id`).
**Notes**: `send_message_source` = `<tab>_<scenario>` (+ `_rhp` in the RHP, + `_from_report` when drilled in from a report) — slice the metric by send path.
`report_action_count` / `money_request_preview_count` — how many renderable actions the chat's list holds and how many of them are `REPORT_PREVIEW` items — slice the metric by list weight (e.g. chats with many `MoneyRequestReportPreview` items).

### Send Message (Visible)

**Constant**: `CONST.TELEMETRY.SPAN_SEND_MESSAGE_VISIBLE`
**Sentry Name**: `ManualSendMessageVisible`
**Threshold**: TBD — will read higher than `ManualSendMessage` by design; recalibrate after the comparison window
**What's Measured**: Time from submitting message to the message actually laid out on screen (`onLayout`), i.e. user-perceived send latency. Runs alongside the legacy `ManualSendMessage` span: same start, same attributes, different end anchor. Once validated in Sentry (~2 weeks), the legacy effect-anchored span gets removed and this becomes the send-message metric.
**Start**: Started back-to-back with `ManualSendMessage` in the composer submit ([`src/pages/inbox/report/ReportActionCompose/useComposerSubmit.ts`](https://github.com/Expensify/App/blob/main/src/pages/inbox/report/ReportActionCompose/useComposerSubmit.ts))
**Threshold**: 300ms (P90)
**What's Measured**: Time from submitting a message to the message actually laid out on screen (`onLayout`), i.e. user-perceived send latency
**Start**: Message submitted in composer, only when scrolled to bottom ([`src/pages/inbox/report/ReportActionCompose/useComposerSubmit.ts`](https://github.com/Expensify/App/blob/main/src/pages/inbox/report/ReportActionCompose/useComposerSubmit.ts))
**End**:
- User sees: Their message appears in chat
- Technical: Message layout complete (`onLayout` event) in [`src/pages/inbox/report/comment/TextCommentFragment.tsx`](https://github.com/Expensify/App/blob/main/src/pages/inbox/report/comment/TextCommentFragment.tsx)
**Span ID**: `${CONST.TELEMETRY.SPAN_SEND_MESSAGE_VISIBLE}_${reportActionID}` (optimistic report action ID)
**Attributes**: Same as `ManualSendMessage` (`report_id`, `message_length`, `send_message_source`, `report_action_count`, `money_request_preview_count`, plus cancellation tags)
**Cancellation**: Same paths as `ManualSendMessage` — the skeleton listener matches both ops, and prefix cancels cover it automatically because `ManualSendMessage` is a prefix of `ManualSendMessageVisible`.
**Attributes**: `report_id`, `message_length`, `canceled_by_skeleton`, `send_message_source`, `report_action_count`, `money_request_preview_count`
**Cancellation (report-actions skeleton)**: While a report-actions skeleton is on screen, we listen for `ManualSendMessageVisible` spans started for that report and cancel them immediately, tagging `canceled: true` plus `canceled_by_skeleton` with the skeleton that caused it.
- `canceled_by_skeleton` values (`CONST.TELEMETRY.CANCELED_BY_SKELETON`) based on skeleton condition
**Cancellation (report unmount / navigate away)**: If the user leaves the report before their message renders, any pending `ManualSendMessageVisible` span is cancelled via `cancelSpansByPrefix()` to avoid orphaned spans. Cancelled this way the span gets `canceled: true` but **no** `canceled_by_skeleton` (a blanket cancel by span-id prefix, not scoped to one `report_id`).
**Notes**: `send_message_source` = `<tab>_<scenario>` (+ `_rhp` in the RHP, + `_from_report` when drilled in from a report) — slice the metric by send path.
`report_action_count` / `money_request_preview_count` — how many renderable actions the chat's list holds and how many of them are `REPORT_PREVIEW` items — slice the metric by list weight (e.g. chats with many `MoneyRequestReportPreview` items).

## Failure Rates

Expand Down
2 changes: 2 additions & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
"Amina",
"Areport",
"Authy",
"Ashby",
"bannered",
"BBVA",
"BILLCOM",
Expand Down Expand Up @@ -699,6 +700,7 @@
"hybridapp",
"iOSQRCode",
"iaco",
"iban",
"idempotently",
"idfa",
"ifdef",
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: Upcoming Features – Expense & Report Management (New Expensify)
description: Internal AgentZero reference for planned and in-development expense and report management features in New Expensify. Not for public search indexing.
keywords: upcoming, coming soon, planned, roadmap, duplicate detection, mileage rates, distance rates, merchant naming, bulk PDF export, cross-period export, export filtered views, submit via PDF, approval paths, personal expense repayment, pending BYOC transactions, AgentZero reference
keywords: upcoming, coming soon, planned, roadmap, duplicate detection, mileage rates, distance rates, merchant naming, bulk PDF export, cross-period export, export filtered views, approval paths, personal expense repayment, pending BYOC transactions, AgentZero reference
noindex: true
sitemap: false
internalScope: For AgentZero and internal tooling only. Use this page to give accurate, forward-looking answers about expense and report management features that are planned but not yet generally available. Do not expose this URL in user-facing help.
Expand All @@ -17,7 +17,6 @@ This page is an **AgentZero reference** for expense and report management featur
- **Bulk report PDF export** – Export multiple expense report PDFs at once from search results or a filtered view, rather than downloading one at a time.
- **Cross-period expense exporting** – When exporting grouped report transactions to an accounting system, allow expenses from different accounting periods to be split across the correct periods rather than all landing on one date.
- **Export filtered views** – Export the results of any in-app filtered or searched view directly to CSV or an accounting integration, without needing to manipulate data externally.
- **Submit via PDF (Submit workspace)** – Allow employees using a Submit workspace to generate a PDF of their expense report directly, without needing to submit to themselves as a workaround.
- **Multiple approval paths per approver** – Support for approvers who manage more than one approval workflow or department, so expenses route correctly regardless of which workspace or category they belong to.
- **Personal expense repayments** – When an employee accidentally charges a personal expense to a company card, allow them to repay it directly through Expensify rather than going outside the platform.
- **Pending BYOC transactions** – Show pending (not-yet-settled) card transactions from Bring Your Own Card feeds in New Expensify, matching the real-time visibility employees expect from their banking apps.
Loading
Loading