Skip to content

Commit 38ea9c0

Browse files
committed
Merge remote-tracking branch 'origin/main' into jules-fixHybridGpsSwitchWarning
2 parents dee24ba + 5c8ad0f commit 38ea9c0

243 files changed

Lines changed: 6377 additions & 3756 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/agents/deploy-blocker-investigator.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: deploy-blocker-investigator
33
description: Investigates deploy blockers to find the causing PR and recommend resolution.
4-
tools: Glob, Grep, Read, Bash, BashOutput
4+
tools: Glob, Grep, Read, Write, Bash, BashOutput
55
model: inherit
66
---
77

@@ -114,11 +114,9 @@ See Decision Tree below for label actions.
114114

115115
### Step 7: Post comment and update labels
116116

117-
Post your findings (use single quotes for the body to handle special characters):
117+
Write the comment body to a temp file using the Write tool, then post it:
118118
```bash
119-
gh issue comment "$ISSUE_URL" --body '## 🔍 Investigation Summary
120-
...your comment here...
121-
'
119+
gh issue comment "$ISSUE_URL" --body-file /tmp/investigation-summary.md
122120
```
123121

124122
Remove label only if the decision tree warrants it:
@@ -177,7 +175,7 @@ Choose ONE:
177175

178176
## Comment Format
179177

180-
Post ONE comment using this exact format:
178+
Use the Write tool to create `/tmp/investigation-summary.md` with the following markdown structure. Every field and heading must be present.
181179

182180
```markdown
183181
## 🔍 Investigation Summary
@@ -211,6 +209,8 @@ Technical explanation of what went wrong in the code.
211209

212210
</details>
213211
```
212+
213+
Then post with: `gh issue comment "$ISSUE_URL" --body-file /tmp/investigation-summary.md`
214214
---
215215

216216
## Constraints
@@ -223,7 +223,7 @@ Technical explanation of what went wrong in the code.
223223
- Make assumptions about code you haven't read
224224
- Recommend DEMOTE for bugs affecting core functionality (auth, payments, data loss)
225225
- Close the issue—only update labels and comment
226-
- Use heredocs, temp files, or shell redirects for comments
226+
- Use heredocs or shell redirects for comments
227227

228228
**DO:**
229229
- Always verify the causing PR touches the affected code before concluding

.claude/commands/investigate-deploy-blocker.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
allowed-tools: Bash(gh issue view:*),Bash(gh issue comment:*),Bash(gh issue edit:*),Bash(gh issue list:*),Bash(gh pr view:*),Bash(gh pr list:*),Bash(gh pr diff:*),Bash(gh api:*),Bash(git log:*),Bash(git show:*),Bash(git blame:*),Bash(removeDeployBlockerLabel.sh:*),Glob,Grep,Read
2+
allowed-tools: Bash(gh issue view:*),Bash(gh issue comment:*),Bash(gh issue edit:*),Bash(gh issue list:*),Bash(gh pr view:*),Bash(gh pr list:*),Bash(gh pr diff:*),Bash(gh api:*),Bash(git log:*),Bash(git show:*),Bash(git blame:*),Bash(removeDeployBlockerLabel.sh:*),Glob,Grep,Read,Write
33
description: Investigate a deploy blocker issue to find the causing PR and recommend resolution
44
---
55

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

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12658,7 +12658,7 @@ class Git {
1265812658
return; // Reference is already available locally
1265912659
}
1266012660
try {
12661-
(0, Logger_1.log)(`🔄 Fetching missing ref: ${ref}`);
12661+
console.log(`🔄 Fetching missing ref: ${ref}`);
1266212662
await exec(`git fetch ${remote} ${ref} --no-tags --depth=1 --quiet`);
1266312663
// Verify the ref is now available
1266412664
if (!this.isValidRef(ref)) {
@@ -12869,7 +12869,7 @@ exports["default"] = Git;
1286912869
"use strict";
1287012870

1287112871
Object.defineProperty(exports, "__esModule", ({ value: true }));
12872-
exports.bold = exports.formatLink = exports.success = exports.error = exports.note = exports.warn = exports.info = exports.log = void 0;
12872+
exports.bold = exports.formatLink = exports.success = exports.errorDetail = exports.error = exports.note = exports.warn = exports.info = void 0;
1287312873
const COLOR_DIM = '\x1b[2m';
1287412874
const COLOR_RESET = '\x1b[0m';
1287512875
const COLOR_YELLOW = '\x1b[33m';
@@ -12884,40 +12884,34 @@ const EMOJIS = {
1288412884
SUCCESS: '✅',
1288512885
ERROR: '🔴',
1288612886
};
12887-
const log = (...args) => {
12888-
console.debug(...args);
12889-
};
12890-
exports.log = log;
1289112887
const info = (...args) => {
12892-
const lines = [EMOJIS.INFO, ...args];
12893-
log(...lines);
12888+
console.log(EMOJIS.INFO, ...args);
1289412889
};
1289512890
exports.info = info;
1289612891
const bold = (...args) => {
12897-
const lines = [COLOR_BOLD, ...args, COLOR_RESET];
12898-
log(...lines);
12892+
console.log(COLOR_BOLD, ...args, COLOR_RESET);
1289912893
};
1290012894
exports.bold = bold;
1290112895
const success = (...args) => {
12902-
const lines = [`${EMOJIS.SUCCESS}${COLOR_GREEN}`, ...args, COLOR_RESET];
12903-
log(...lines);
12896+
console.log(`${EMOJIS.SUCCESS}${COLOR_GREEN}`, ...args, COLOR_RESET);
1290412897
};
1290512898
exports.success = success;
1290612899
const warn = (...args) => {
12907-
const lines = [`${EMOJIS.WARN}${COLOR_YELLOW}`, ...args, COLOR_RESET];
12908-
log(...lines);
12900+
console.warn(`${EMOJIS.WARN}${COLOR_YELLOW}`, ...args, COLOR_RESET);
1290912901
};
1291012902
exports.warn = warn;
1291112903
const note = (...args) => {
12912-
const lines = [COLOR_DIM, ...args, COLOR_RESET];
12913-
log(...lines);
12904+
console.log(COLOR_DIM, ...args, COLOR_RESET);
1291412905
};
1291512906
exports.note = note;
1291612907
const error = (...args) => {
12917-
const lines = [`${EMOJIS.ERROR}${COLOR_RED}`, ...args, COLOR_RESET];
12918-
log(...lines);
12908+
console.error(`${EMOJIS.ERROR}${COLOR_RED}`, ...args, COLOR_RESET);
1291912909
};
1292012910
exports.error = error;
12911+
const errorDetail = (...args) => {
12912+
console.error(` ${COLOR_RED}↳`, ...args, COLOR_RESET);
12913+
};
12914+
exports.errorDetail = errorDetail;
1292112915
const formatLink = (name, url) => `\x1b]8;;${url}\x1b\\${name}\x1b]8;;\x1b\\`;
1292212916
exports.formatLink = formatLink;
1292312917

.github/workflows/deployBlockerInvestigation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,4 @@ jobs:
7777
github_token: ${{ secrets.OS_BOTIFY_TOKEN }}
7878
prompt: "/investigate-deploy-blocker ISSUE_URL: ${{ env.ISSUE_URL }}"
7979
claude_args: |
80-
--allowedTools "Task,Glob,Grep,Read,Bash(gh issue view:*),Bash(gh issue comment:*),Bash(gh issue edit:*),Bash(gh issue list:*),Bash(gh pr view:*),Bash(gh pr list:*),Bash(gh pr diff:*),Bash(gh api:*),Bash(git log:*),Bash(git show:*),Bash(git blame:*),Bash(removeDeployBlockerLabel.sh:*)"
80+
--allowedTools "Task,Glob,Grep,Read,Write,Bash(gh issue view:*),Bash(gh issue comment:*),Bash(gh issue edit:*),Bash(gh issue list:*),Bash(gh pr view:*),Bash(gh pr list:*),Bash(gh pr diff:*),Bash(gh api:*),Bash(git log:*),Bash(git show:*),Bash(git blame:*),Bash(removeDeployBlockerLabel.sh:*)"

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 1009036017
115-
versionName "9.3.60-17"
114+
versionCode 1009036018
115+
versionName "9.3.60-18"
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"

android/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@
167167
<activity
168168
android:name="com.plaid.internal.link.LinkActivity"
169169
android:launchMode="singleTask"
170+
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
170171
tools:replace="android:launchMode"/>
171172

172173
<meta-data

android/app/src/main/java/com/expensify/chat/MainApplication.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@ package com.expensify.chat
22

33
import com.facebook.react.common.assets.ReactFontManager
44

5+
import android.app.Activity
56
import android.app.ActivityManager
7+
import android.app.Application
8+
import android.content.pm.ActivityInfo
69
import android.content.res.Configuration
710
import android.database.CursorWindow
11+
import android.os.Bundle
812
import android.os.Process
913
import androidx.multidex.MultiDexApplication
1014
import com.expensify.chat.bootsplash.BootSplashPackage
@@ -42,6 +46,24 @@ class MainApplication : MultiDexApplication(), ReactApplication {
4246

4347
override fun onCreate() {
4448
super.onCreate()
49+
50+
// Plaid's LinkActivity calls setRequestedOrientation(PORTRAIT) in its own onCreate(),
51+
// which forces the UI to portrait even when the device is in landscape. We override it
52+
// here so Plaid can render in whichever orientation the device is actually in.
53+
registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
54+
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
55+
if (activity.javaClass.name == "com.plaid.internal.link.LinkActivity") {
56+
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
57+
}
58+
}
59+
override fun onActivityStarted(activity: Activity) {}
60+
override fun onActivityResumed(activity: Activity) {}
61+
override fun onActivityPaused(activity: Activity) {}
62+
override fun onActivityStopped(activity: Activity) {}
63+
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
64+
override fun onActivityDestroyed(activity: Activity) {}
65+
})
66+
4567
ReactFontManager.getInstance().addCustomFont(this, "Custom Emoji Font", R.font.custom_emoji_font)
4668
ReactFontManager.getInstance().addCustomFont(this, "Expensify New Kansas", R.font.expensify_new_kansas)
4769
ReactFontManager.getInstance().addCustomFont(this, "Expensify Neue", R.font.expensify_neue)

android/gradle.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ newArchEnabled=true
4444
# If set to false, you will be using JSC instead.
4545
hermesEnabled=true
4646

47+
# Use this property to enable or disable Hermes V1.
48+
hermesV1Enabled=true
49+
4750
# Key Store Information
4851
MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
4952

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.60.17</string>
47+
<string>9.3.60.18</string>
4848
<key>FullStory</key>
4949
<dict>
5050
<key>OrgId</key>

0 commit comments

Comments
 (0)