Skip to content

Commit 2217bd8

Browse files
committed
Merge branch 'main' of https://github.com/Expensify/App into gusto1.12
2 parents 9ed599e + ef702c2 commit 2217bd8

24 files changed

Lines changed: 1229 additions & 57 deletions

File tree

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 1009036900
115-
versionName "9.3.69-0"
114+
versionCode 1009036902
115+
versionName "9.3.69-2"
116116
// Supported language variants must be declared here to avoid from being removed during the compilation.
117117
// This also helps us to not include unnecessary language variants in the APK.
118118
resConfigs "en", "es"

assets/fonts/NotoSansSC-Months.ttf

17.9 KB
Binary file not shown.

config/webpack/webpack.common.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {fileURLToPath} from 'url';
1414
import webpack from 'webpack';
1515
import type {Configuration, WebpackPluginInstance} from 'webpack';
1616
import {BundleAnalyzerPlugin} from 'webpack-bundle-analyzer';
17+
import {GenerateSW} from 'workbox-webpack-plugin';
1718
// Storybook 10 loads TS files directly and requires .ts extension for ESM imports
1819
// @ts-expect-error -- Can't use .ts extensions without allowImportingTsExtensions in tsconfig
1920
// eslint-disable-next-line import/extensions
@@ -125,6 +126,40 @@ const getCommonConfiguration = ({file = '.env', platform = 'web'}: Environment):
125126
},
126127
plugins: [
127128
new CleanWebpackPlugin(),
129+
// Only emit the SW for non-development builds. In dev, webpack-dev-server's HMR
130+
// and the SW's caching behavior fight each other and confuse hot reloads.
131+
// Remove this guard locally if you want to actually exercise the SW.
132+
...(isDevelopment
133+
? []
134+
: [
135+
new GenerateSW({
136+
clientsClaim: true,
137+
skipWaiting: true,
138+
// Cap is generous on purpose: the vendor (~6.5 MiB), main (~5.5 MiB),
139+
// authScreens.prefetch (~6.3 MiB) chunks and canvaskit.wasm (~7.6 MiB) are
140+
// all critical for offline boot, so we precache the lot. Everything in the
141+
// App build is content-hashed, so growth here only costs first-install bytes.
142+
maximumFileSizeToCacheInBytes: 10 * 1024 * 1024,
143+
// Single-page app: any unmatched navigation should serve the cached app shell.
144+
navigateFallback: '/index.html',
145+
// Don't fall back for asset-like or .well-known requests.
146+
navigateFallbackDenylist: [/^\/_/, /^\/\.well-known/, /\/[^/?]+\.[^/]+$/],
147+
runtimeCaching: [
148+
{
149+
// Same-origin user media (receipts, chat attachments) — cache opportunistically
150+
// so they're viewable on offline refresh. The function below is serialized into
151+
// the generated service worker, so it executes in the SW context where
152+
// `sameOrigin` is the appropriate Workbox match (no need to read `self.location`).
153+
urlPattern: ({sameOrigin, url, request}) => sameOrigin && (request.destination === 'image' || /\/(receipts|chat-attachments)\//.test(url.pathname)),
154+
handler: 'StaleWhileRevalidate',
155+
options: {
156+
cacheName: 'user-media',
157+
expiration: {maxEntries: 200, maxAgeSeconds: 7 * 24 * 60 * 60},
158+
},
159+
},
160+
],
161+
}),
162+
]),
128163
new HtmlWebpackPlugin({
129164
template: 'web/index.html',
130165
filename: 'index.html',

cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,7 @@
800800
"Unmigrated",
801801
"unmuting",
802802
"unredacted",
803+
"unregisters",
803804
"unscrollable",
804805
"unsharing",
805806
"Unsharing",

docs/articles/new-expensify/expensify-card/Expensify-Card-Perks.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ From cash-back rewards to discounts on popular services, the Expensify Card offe
1414
## Cashback
1515
Get 1% cash back with every swipe — no minimums necessary — and 2% back if you spend $250k+/month across cards. This applies to US purchases only.
1616

17+
By default, cash back is applied toward your Expensify bill. Workspace Admins can change this in **Workspaces > [Workspace Name] > Expensify Card > Settings** by toggling **Apply cash back to my Expensify bill** off to send cash back to the settlement account instead.
18+
1719
## Discounts on Monthly Expensify Bill
1820
Get the Expensify Visa® Commercial Card and use it for at least half of your organization's monthly expenses to save 50% on your monthly Expensify bill.
1921

docs/articles/new-expensify/expensify-card/Set-Up-and-Manage-the-Expensify-Card.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,30 @@ You can issue virtual or physical cards to employees:
8484
- Limit type
8585
- Card name
8686
- Deactivation
87-
4. To change the linked bank account or update settlement frequency, click **Settings**.
87+
4. To change the linked bank account, update settlement frequency, or manage cash back settings, click **Settings**.
8888

8989
![Click Expensify Card in the left menu to see a list of cards]({{site.url}}/assets/images/ExpensifyHelp-ExpensifyCard_05.png){:width="100%"}
9090

9191
![Click the card row to view the card details and make settings adjustments]({{site.url}}/assets/images/ExpensifyHelp-ExpensifyCard_06.png){:width="100%"}
9292

9393
![Click Settings to adjust the settlement account or frequency]({{site.url}}/assets/images/ExpensifyHelp-ExpensifyCard_08.png){:width="100%"}
9494

95+
---
96+
97+
## How to apply Expensify Card cash back to your Expensify bill
98+
99+
Workspace Admins with a US Expensify Card program can choose whether their Expensify Card cash back is applied toward their Expensify bill or sent to their settlement account. This setting is enabled by default.
100+
101+
1. From the navigation tabs (on the left on web, and at the bottom on mobile), go to **Workspaces > [Workspace Name] > Expensify Card**.
102+
2. Click **Settings**.
103+
3. Toggle **Apply cash back to my Expensify bill** on or off.
104+
105+
When enabled, cash back earned from the Expensify Card is automatically applied toward payment for your Expensify bill. When disabled, cash back is sent to your settlement account instead.
106+
107+
**Note:** This setting is only available for US card programs and is not shown for workspaces on an invoiced subscription.
108+
109+
---
110+
95111
If a Single-use card completes its first successful transaction, it automatically deactivates.
96112
If a card reaches its expiration date, it automatically deactivates and declines new transactions.
97113

ios/NewExpensify/Info.plist

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

ios/NotificationServiceExtension/Info.plist

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

ios/ShareViewController/Info.plist

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

0 commit comments

Comments
 (0)