Skip to content

[No QA] Merge main into state machine feature branch#94079

Open
chuckdries wants to merge 2901 commits into
dariusz-81197-mfa-state-machinefrom
chuckdries/merge-main-into-dariusz-81197-mfa-state-machine
Open

[No QA] Merge main into state machine feature branch#94079
chuckdries wants to merge 2901 commits into
dariusz-81197-mfa-state-machinefrom
chuckdries/merge-main-into-dariusz-81197-mfa-state-machine

Conversation

@chuckdries

Copy link
Copy Markdown
Contributor

We had a merge conflict with main.

OSBotify and others added 30 commits June 17, 2026 17:26
Replace the noop Onyx stub with plain react-native-onyx initialized
for the CLI and route storage to MemoryOnlyProvider for headless Bun.

Co-authored-by: Cursor <cursoragent@cursor.com>
…bmit-amount-handler

perf: extract submitAmount handler and cache submit-only Onyx state
Co-authored-by: ahmedGaber93 <ahmedGaber93@users.noreply.github.com>
Route react-native-onyx through a bundler shim so the standalone CLI
gets the real API and MemoryOnlyProvider storage.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Use the local src/types/bun.d.ts shim instead of @types/bun to avoid
conflicting global require declarations during repo-wide typecheck.

Co-authored-by: Cursor <cursoragent@cursor.com>
[No QA] Upgrade claude-review and deploy blocker workflows to Opus 4.8
Onyx and network modules keep the event loop alive after the PNG is written; call process.exit so CI does not hang waiting for the binary to finish.

Co-authored-by: Cursor <cursoragent@cursor.com>
…archAutocompleteList

perf: search autocomplete optimization
Add bunfig.toml to discover server-side Bun tests while excluding Jest-owned src/ and the VCR golden render suite.

Co-authored-by: Cursor <cursoragent@cursor.com>
Run render.test.ts via default bun test discovery so the compiled-binary golden suite runs with npm run test:bun.

Co-authored-by: Cursor <cursoragent@cursor.com>
…stuck-peek

Fix stuck Spend sidebar after deleting saved search
…crash

Fix `react-native-skia` crash when switching to Old Dot
…rtion

buildDefaultTitleFieldList added a 9th @typescript-eslint/no-unsafe-type-assertion
violation (via `as unknown as Policy['fieldList']`), exceeding the grandfathered
limit of 8 for Policy.ts. Build a complete PolicyReportField so the value is
assignable without any assertion.

Co-authored-by: Sahil <thesahindia@users.noreply.github.com>
Replace stale #73857E with productLight800 (#76847E) so cartesian chart fixtures match theme-aware goldens after chart chrome color support.

Co-authored-by: Cursor <cursoragent@cursor.com>
The tests/ path override is no longer needed now that render.test.ts is included in bunfig discovery.

Co-authored-by: Cursor <cursoragent@cursor.com>
Structure VCR bun tests with hierarchical describes, run with --concurrent --max-concurrency 7 on the 8 vCPU CI runner, and extend bun.d.ts with test.serial/concurrent types.

Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse npm run test:bun so concurrent test flags live in package.json only.

Co-authored-by: Cursor <cursoragent@cursor.com>
@melvin-bot melvin-bot Bot requested review from neil-marcellini and trjExpensify and removed request for a team June 19, 2026 17:24
@melvin-bot

melvin-bot Bot commented Jun 19, 2026

Copy link
Copy Markdown

@neil-marcellini Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

const {dispatch} = useMultifactorAuthenticationActions();
const {isCancelConfirmVisible} = state;

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only merge conflict was imports on this file, and that isCancelConfirmVisible moved from useMultifactorAuthenticationState to useMultifactorAuthenticationInternal's state

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whoops, just realized I messed up the resolution on the imports

@chuckdries chuckdries requested review from roryabraham and removed request for a team, neil-marcellini, stephanieelliott and trjExpensify June 19, 2026 17:26
@github-actions github-actions Bot changed the title Merge main into state machine feature branch [No QA] Merge main into state machine feature branch Jun 19, 2026
@OSBotify

This comment has been minimized.

@OSBotify

This comment has been minimized.

- **Rules** must be enabled on the workspace.

---
1. In the navigation tabs (on the left on web, on the bottom on mobile), select **Workspaces > [Your Workspace]**.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Structure violation: This numbered step appears orphaned above the ## How to create an Agent Rule heading and is a duplicate of step 1 (line 30). Steps must be sequential and grouped under their task heading (HELP_AUTHORING_GUIDELINES.md §5). Remove this stray line.

1. In the navigation tabs (on the left on web, on the bottom on mobile), select **Workspaces > [Your Workspace]**
2. Click **Rules**.
3. In the **Agent Rules** section, click **Add AI Rule**.
5. Enter a natural-language description of the behavior you want.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step formatting violation: Step numbering is not sequential (1, 2, 3, 5, 7 — skips 4 and 6). Steps must be sequential per HELP_AUTHORING_GUIDELINES.md §5. Renumber as 1–5.


## How to connect with your Approved! partner team

1. In the navigation tabs (on the left on web, on the bottom on mobile).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step formatting violation: This step is an incomplete instruction — it states a location with no action. Steps must be action-oriented (HELP_AUTHORING_GUIDELINES.md §5). Either merge it into step 2 (e.g. "In the navigation tabs (on the left on web, on the bottom on mobile), select Account.") or give it a verb.

Comment on lines +106 to +109
- Add examples that demonstrate the intended behavior.
- Remove unnecessary instructions that may create ambiguity.
- Add examples that demonstrate the intended behavior.
- Remove unnecessary instructions that may create ambiguity.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation: These two bullets ("Add examples that demonstrate the intended behavior." and "Remove unnecessary instructions that may create ambiguity.") are duplicated from lines 104–107. Remove the repeated bullets.

- **Max amount:** Enter a maximum transaction amount.
7. Click **Save**.

Spend rules takes effect immediately and are applied to future transactions on the selected cards.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation: Subject-verb disagreement — "Spend rules takes effect immediately and are applied". Use "Spend rules take effect immediately and are applied" for clarity (HELP_AUTHORING_GUIDELINES.md §1, concise and clear).

4. Configure the Spend rule and select the desired **Restriction type**.
5. Complete the card issuance process.

The Spend Rules are applied when the card is issued and is enforced from the card's first transaction.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation: Subject-verb disagreement — "The Spend Rules are applied when the card is issued and is enforced". Should be "...and are enforced from the card's first transaction." Also note inconsistent casing of the feature name throughout (Spend Rules / Spend rules / Spend Rule); pick one and use it consistently per the deterministic writing rule (HELPSITE_NAMING_CONVENTIONS.md).


---

## How to create Expensify Card Spend rule while issuing a card

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation: Heading reads "How to create Expensify Card Spend rule while issuing a card" — missing article. Use "How to create an Expensify Card Spend rule while issuing a card".


[Learn how to add a new Workspace member](/articles/new-expensify/workspaces/Managing-Workspace-Members#invite-members-to-a-workspace).

1. In the navigation tabs (on the left on web, and at the bottom on mobile), click **Workspaces > [Workspace name]**.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Navigation phrasing inconsistency: This uses "on the left on web, and at the bottom on mobile" while every other step in this article uses the standard unified form "on the left on web, on the bottom on mobile". Match the unified navigation sentence per HELPSITE_NAMING_CONVENTIONS.md (deterministic writing).

@codecov

codecov Bot commented Jun 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.

Files with missing lines Coverage Δ
src/App.tsx 100.00% <100.00%> (ø)
src/CONST/index.ts 93.84% <ø> (+1.53%) ⬆️
src/ONYXKEYS.ts 100.00% <ø> (ø)
src/SCREENS.ts 100.00% <ø> (ø)
...nchorForCommentsOnly/BaseAnchorForCommentsOnly.tsx 94.59% <100.00%> (+0.47%) ⬆️
src/components/ApprovalWorkflowSection.tsx 80.00% <100.00%> (-1.64%) ⬇️
src/components/AvatarWithDisplayName.tsx 80.20% <ø> (ø)
src/components/BiometricsTestToolRow.tsx 100.00% <100.00%> (ø)
src/components/ButtonComposed/Button.tsx 98.82% <100.00%> (-0.02%) ⬇️
.../components/ButtonComposed/composed/LinkButton.tsx 100.00% <ø> (ø)
... and 139 more
... and 727 files with indirect coverage changes

@sentry

sentry Bot commented Jun 19, 2026

Copy link
Copy Markdown

📲 Install Builds

Android

🔗 App Name App ID Version Configuration
Expensify org.me.mobiexpensifyg 9.4.16-1 (509041601) Release

⚙️ app Build Distribution Settings

@github-actions

Copy link
Copy Markdown
Contributor

HelpDot Documentation Review

Overall Assessment

PR 94079 is a mechanical branch-sync merge — [No QA] Merge main into state machine feature branch — bringing main into the feature branch dariusz-81197-mfa-state-machine to resolve a merge conflict. The large diff stat (43,865 additions / 17,410 deletions across 300+ files) reflects the accumulated divergence between the feature branch and main, not documentation authored in this PR.

The .md files under docs/articles/ that appear in the file list (e.g. Expensify Card, AI Agents, Insights, Workspaces articles) are main's current versions being carried into the feature branch. They were authored and merged through their own respective PRs, not written or modified as part of this merge.

Scores Summary

Scoring is not applicable for this PR. The HelpDot rubric (Readability, AI Readiness, Style Compliance) evaluates proposed authored documentation changes. This PR proposes no such changes — it only reconciles the feature branch with main. Assigning scores to article content authored and already merged elsewhere would be misleading and would not reflect any decision made by this PR's author.

  • Readability: N/A — no documentation authored in this PR
  • AI Readiness: N/A — no documentation authored in this PR
  • Style Compliance: N/A — no documentation authored in this PR

Key Findings

  • This is a [No QA] merge/branch-sync PR; its purpose is conflict resolution, not content changes.
  • Help article .md files in the diff are inherited from main, not net-new authoring.
  • No conflict resolution affecting documentation content was identified that would warrant a governance review.

Recommendations

  • No documentation-quality action is required for this PR.
  • Any HelpDot governance review should target the original PRs that authored or modified each article, where the actual proposed changes live and can be assessed against the governance files (docs/HELP_AUTHORING_GUIDELINES.md, docs/HELPSITE_NAMING_CONVENTIONS.md, docs/TEMPLATE.md).

Files Reviewed

  • Branch-sync merge of main into dariusz-81197-mfa-state-machine — no PR-authored documentation changes to review.

Note: No inline comments were added because this PR introduces no authored documentation changes.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6a2e7774bb

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +196 to +198
onPress={() => showDatePickerModal()}
onSubmitEditing={() => showDatePickerModal()}
onKeyPress={handleInputKeyPress}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reopen the date picker when autoFocus focuses the field

DatePicker still focuses the hidden TextInput when callers pass autoFocus, but focus no longer calls showDatePickerModal; only press/submit/key events do. On screens that mount the picker with autoFocus (for example the expense date, report-field date, and bulk-edit date pages), navigating to the date step now leaves users on a focused, keyboard-disabled input with no calendar opened, whereas the previous onFocus path opened it automatically.

Useful? React with 👍 / 👎.

@OSBotify

Copy link
Copy Markdown
Contributor

A preview of your ExpensifyHelp changes have been deployed to https://07530ab8.helpdot.pages.dev ⚡️

Updated articles:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.