Skip to content

Commit 4611ad6

Browse files
Merge remote-tracking branch 'upstream/main' into agent-devtools-recordings
2 parents b31d6b2 + 72af49f commit 4611ad6

54 files changed

Lines changed: 480 additions & 903 deletions

File tree

Some content is hidden

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

.github/workflows/cherryPick.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,17 @@ jobs:
7676
needs: createNewVersion
7777
runs-on: blacksmith-2vcpu-ubuntu-2404
7878
steps:
79+
- name: Check for in-progress deploy on target branch
80+
id: checkInProgressDeploy
81+
run: |
82+
# Capture in-progress deploy URL before we push. The actual Slack post is gated on a successful target-branch push.
83+
DEPLOY_RUN_URL=$(gh api \
84+
"repos/${{ github.repository }}/actions/workflows/deploy.yml/runs?branch=${{ inputs.TARGET }}&per_page=5" \
85+
--jq '.workflow_runs[] | select(.status != "completed") | .html_url' | head -n 1)
86+
echo "DEPLOY_RUN_URL=$DEPLOY_RUN_URL" >> "$GITHUB_OUTPUT"
87+
env:
88+
GITHUB_TOKEN: ${{ github.token }}
89+
7990
- name: Extract PR information
8091
# Note: this step is only skipped when there's no PULL_REQUEST_URL, which is only ever be the case when we're CPing just a version bump.
8192
if: ${{ inputs.PULL_REQUEST_URL != '' }}
@@ -229,6 +240,22 @@ jobs:
229240
git push origin ${{ inputs.TARGET }}
230241
fi
231242
243+
- name: Warn that previous deploy was superseded
244+
if: ${{ steps.cherryPick.outputs.HAS_CONFLICTS != 'true' && steps.checkInProgressDeploy.outputs.DEPLOY_RUN_URL != '' }}
245+
uses: 8398a7/action-slack@1750b5085f3ec60384090fb7c52965ef822e869e
246+
with:
247+
status: custom
248+
custom_payload: |
249+
{
250+
channel: '#deployer',
251+
attachments: [{
252+
color: 'warning',
253+
text: `⚠️ ${{ inputs.TARGET == 'production' && 'Production' || 'Staging' }} <${{ steps.checkInProgressDeploy.outputs.DEPLOY_RUN_URL }}|deploy> cancelled by new cherry-pick`
254+
}]
255+
}
256+
env:
257+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
258+
232259
- name: Find deploy workflow run
233260
# Also runs for version-bump-only CPs where HAS_CONFLICTS is unset
234261
if: ${{ steps.cherryPick.outputs.HAS_CONFLICTS != 'true' }}

.github/workflows/deploy.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,42 @@ jobs:
649649
with:
650650
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
651651

652+
postSlackMessageOnCancellation:
653+
name: Post a Slack message when the deploy is cancelled manually
654+
runs-on: blacksmith-2vcpu-ubuntu-2404
655+
if: ${{ cancelled() }}
656+
needs: [androidBuild, androidUploadGooglePlay, androidSubmit, iosBuild, iosUploadTestflight, iosSubmit, webBuild, webDeploy]
657+
steps:
658+
- name: Check whether a newer deploy run exists
659+
id: check
660+
run: |
661+
# If a newer run exists, the cherry-pick workflow already announced this. Skip to avoid double-posting.
662+
LATEST=$(gh api \
663+
"repos/${{ github.repository }}/actions/workflows/deploy.yml/runs?branch=${{ github.ref_name }}&per_page=1" \
664+
--jq '.workflow_runs[0].id')
665+
if [ "$LATEST" != "${{ github.run_id }}" ]; then
666+
echo "SKIP=true" >> "$GITHUB_OUTPUT"
667+
fi
668+
env:
669+
GITHUB_TOKEN: ${{ github.token }}
670+
671+
- name: Post Slack message on manual cancellation
672+
if: ${{ steps.check.outputs.SKIP != 'true' }}
673+
# v3
674+
uses: 8398a7/action-slack@1750b5085f3ec60384090fb7c52965ef822e869e
675+
with:
676+
status: custom
677+
custom_payload: |
678+
{
679+
channel: '#deployer',
680+
attachments: [{
681+
color: 'warning',
682+
text: `⚠️ ${{ github.ref == 'refs/heads/production' && 'Production' || 'Staging' }} <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|deploy> cancelled manually`
683+
}]
684+
}
685+
env:
686+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
687+
652688
checkDeploymentSuccess:
653689
runs-on: blacksmith-2vcpu-ubuntu-2404
654690
outputs:

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 1009036712
115-
versionName "9.3.67-12"
114+
versionCode 1009036801
115+
versionName "9.3.68-1"
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"

docs/articles/Unlisted/Concierge-in-Expensify.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ You can reach Concierge by email at concierge@expensify.com or directly in the a
3434

3535
- **Expensify Classic (web):** Click the chat icon in the navigation tabs on the left.
3636
- **Expensify Classic (mobile):** Tap the chat icon in the upper right corner.
37-
- **New Expensify:** Press the **+** button, select **New Chat**, and type *Concierge* into the composer box.
37+
- **New Expensify:** Press the **+** button, select **New Chat**, and type *Concierge* into the composer box.
38+
- **New Expensify (search bar):** Type your question in the search bar and select **Ask Concierge**. Your message is sent to Concierge immediately.
3839

3940
# Common Concierge use cases
4041

docs/articles/new-expensify/billing-and-subscriptions/Add-a-payment-card-and-view-your-subscription.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ You can view and update your plan details from the **Subscription** section:
5959
- **Current plan:** View your subscription type and number of seats.
6060
- **Billing info:** See your payment method and next renewal date.
6161
- **Auto-renew:** Check when your subscription will automatically renew (e.g., **Renews on Nov 1, 2026**).
62+
- **Credit balance:** If your account has prepaid Expensify credits, this row displays your current credit balance. It appears only when you have a positive balance.
6263
- **Auto-increase annual seats:** See how much you could save by automatically increasing seats if your team grows.
6364

6465
**Note:** Enabling auto-increase will extend your annual subscription end date.

docs/articles/new-expensify/chat/Chat-Features-and-Moderation-Tools.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ No, members must remove themselves.
132132
Yes, an “edited” label will appear.
133133

134134
## Why can’t I message in some rooms?
135-
Rooms may have restricted posting permissions for Admins only.
135+
Rooms may have restricted posting permissions for Admins only. In other cases, the conversation may be read-only, and you’ll see a "This conversation is read-only" banner at the bottom of the chat.
136136

137137
## What happens when I flag a message?
138138
The moderation team reviews it, may hide or delete the message, and can restrict the sender’s account.

docs/articles/new-expensify/concierge-ai/Concierge-Basics.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ You can chat with Concierge from anywhere in the app:
2525

2626
- **On web:** Click the **Concierge** icon at the top right corner of the page.
2727
- **On mobile:** Tap **Account** > **Help** and tap **Concierge** to navigate to the Concierge chat.
28+
- **From the search bar:** Type your question in the search bar and select **Ask Concierge**. Your message is sent to Concierge immediately.
2829

2930
You can also contact Concierge by:
3031
- Email: **concierge@expensify.com**

docs/articles/new-expensify/concierge-ai/Support-Agent.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ Anyone with an Expensify account can contact Concierge for help—whether you're
1717

1818
You can ask Concierge for help from anywhere in Expensify:
1919

20-
- **Account:** Go to **Account** > **Help** and select **Concierge**.
21-
- **Web:** Click the chat icon in the top-right corner
22-
- **Mobile:** Tap the hamburger menu in the top-left corner, then tap **Concierge**
20+
- **Web:** Click the **Concierge** icon in the top-right corner.
21+
- **Mobile:** Tap the **Concierge** icon in the top-right corner of the screen, or go to **Account** > **Help** and select **Concierge**.
2322
- **Workspace chat:** Mention Concierge in a chat room (e.g., `#admins`)
2423
- **Report or expense threads:** Ask a question in the thread
2524
- **Email:** Send a message to concierge@expensify.com

docs/articles/new-expensify/domains/Manage-Domain-Members.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
---
22
title: Manage Domain Members
33
description: Learn how to manage domain members in New Expensify.
4-
internalScope: Audience is Domain Admins. Covers inviting/adding domain members, closing accounts, and promoting members to Domain Admin. Does not cover domain verification, SAML setup, Domain Groups configuration, or account access troubleshooting.
5-
keywords: [New Expensify, Workspaces, Domains, domain members, verify domain, domain admin, domain control, remove domain member, deactivate domain user, invite domain user, promote to domain admin, workspace admins]
4+
internalScope: Audience is Domain Admins. Covers inviting/adding domain members, closing accounts, promoting members to Domain Admin, and moving a member between domain groups. Does not cover domain verification, SAML setup, Domain Groups configuration, or account access troubleshooting.
5+
keywords: [New Expensify, Workspaces, Domains, domain members, verify domain, domain admin, domain control, remove domain member, deactivate domain user, invite domain user, promote to domain admin, workspace admins, move member to group, domain group]
66
---
77

88
# Manage Domain Members
@@ -71,6 +71,20 @@ You can give any member permission to manage domain settings by promoting them t
7171
3. Open **Domain Admins**.
7272
4. Add the member’s email address or phone number.
7373

74+
## How to move a Domain Member to a different domain group
75+
76+
Domain Admins can move a member from one domain group to another to change which domain-level rules apply to them.
77+
78+
1. Go to **Workspaces > Domains**.
79+
2. Select your domain.
80+
3. Click **Domain Members**.
81+
4. Select the member.
82+
5. Click **Domain group**.
83+
6. Select the group you want to move the member to.
84+
7. Click **Save**.
85+
86+
---
87+
7488
# FAQ
7589

7690
## What happens if a member removes their domain email?

0 commit comments

Comments
 (0)