Skip to content

[No QA] Merge main into my branch #85610

Merged
stephanieelliott merged 1185 commits intoclaude-refineCardReconciliationArticlesfrom
main
Mar 18, 2026
Merged

[No QA] Merge main into my branch #85610
stephanieelliott merged 1185 commits intoclaude-refineCardReconciliationArticlesfrom
main

Conversation

@stephanieelliott
Copy link
Contributor

merge main

OSBotify and others added 30 commits March 16, 2026 09:58
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
The dragover event fires continuously while dragging. Remove the
listener after the first fire so dismiss() is only called once.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Introduce an IsInSidePanelContext and useIsInSidePanel hook that allows
descendants to query whether they're rendered inside a side panel without
prop drilling. SidePanelReport wraps its children with the provider.

The existing isInSidePanel prop is kept for backward compatibility and
will be removed in a follow-up PR that switches consumers to the hook.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: parasharrajat <parasharrajat@users.noreply.github.com>
…aceNavBack

Co-authored-by: truph01 <truph01@users.noreply.github.com>
Introduce an IsInSidePanelContext and useIsInSidePanel hook so that any
descendant can query whether it is rendered inside the side panel without
prop drilling through ReportScreen → HeaderView / ReportFooter →
ReportActionCompose.

SidePanelReport wraps its children with the context provider. All four
consumers (ReportScreen, HeaderView, ReportFooter, ReportActionCompose)
now call useIsInSidePanel() directly instead of receiving the prop.

The Report/index.ts action-layer isInSidePanel parameter is a separate
concern and is not changed by this commit.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…idation

Fix: Enable strict HTML tag validation on tax name forms
[No QA] Add expo-location mock to jest setup
Non-existing room mentions in workspace descriptions showed a green
highlight because the MentionReportContext was missing exactlyMatch: true,
causing all mentions to be highlighted regardless of whether the room
exists. This matches the pattern used by PureReportActionItem,
ReportDetailsPage, and MoneyRequestConfirmationListFooter.

Co-authored-by: truph01 <truph01@users.noreply.github.com>
…ntAccountOnWalletSetup

Clear stale reimbursement account data on Wallet bank account setup
…-fork into Guccio163/onyx-connect/policy_tags/handleMoneyRequestStepScanParticipants
refactor buildUserReadableQueryString to use conciergeReportID from useOnyx
…Display

Fix travel card display in Assigned Cards
…texts-eslint-rule

[NoQA] Bump `eslint-config-expensify` and add `context-provider-split-values` eslint rule
@melvin-bot melvin-bot bot removed the request for review from a team March 18, 2026 02:42
@melvin-bot
Copy link

melvin-bot bot commented Mar 18, 2026

@srikarparsi @lydiabarclay One of you needs to 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]

@codecov
Copy link

codecov bot commented Mar 18, 2026

Codecov Report

✅ Changes either increased or maintained existing code coverage, great job!

Files with missing lines Coverage Δ
src/CONST/index.ts 93.60% <100.00%> (ø)
src/ONYXKEYS.ts 100.00% <ø> (ø)
src/SCREENS.ts 100.00% <ø> (ø)
src/components/AddressForm.tsx 98.00% <100.00%> (ø)
src/components/AmountTextInput.tsx 100.00% <100.00%> (ø)
src/components/CategoryPicker.tsx 0.00% <ø> (ø)
src/components/Checkbox.tsx 89.65% <ø> (ø)
src/components/DraggableList/index.native.tsx 100.00% <100.00%> (ø)
src/components/Form/FormProvider.tsx 60.20% <100.00%> (ø)
src/components/Form/isNumericKeyboard.ts 100.00% <100.00%> (ø)
... and 220 more

@github-actions
Copy link
Contributor

github-actions bot commented Mar 18, 2026

test

@github-actions github-actions bot changed the title Merge main into my branch [No QA] Merge main into my branch Mar 18, 2026
title: Personal Karma
description: Learn how Personal Karma works, how donation amounts are calculated, and how to enable or disable automatic donations to Expensify.org.
keywords: [New Expensify, personal karma, donations, expensify.org, save the world, Expensify.org donation, automatic donation, billing card charge]
---
Copy link
Contributor

Choose a reason for hiding this comment

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

Missing required metadata field: The YAML frontmatter is missing the internalScope field, which is mandatory per HELP_AUTHORING_GUIDELINES.md Section 3.


## How to enable or disable Personal Karma

1. In the navigation tabs (on the left on Web, at the bottom on Mobile), choose **Account**.
Copy link
Contributor

Choose a reason for hiding this comment

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

Naming convention: Per HELPSITE_NAMING_CONVENTIONS.md Navigation Instruction Standards, when web and mobile navigation are structurally the same, the template phrasing uses lowercase "web" and "mobile": "on the left on web, on the bottom on mobile". Also consider using "Click" or "Select" instead of "choose" to match standard UI referencing verbs.

Suggested change
1. In the navigation tabs (on the left on Web, at the bottom on Mobile), choose **Account**.
1. Click the navigation tabs (on the left on web, at the bottom on mobile) and select **Account**.

## How to enable or disable Personal Karma

1. In the navigation tabs (on the left on Web, at the bottom on Mobile), choose **Account**.
2. Select **Save the World**
Copy link
Contributor

Choose a reason for hiding this comment

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

Step formatting: Missing period at the end of this step. Other steps in this list end with punctuation -- this should be consistent.

Suggested change
2. Select **Save the World**
2. Select **Save the World**.


At the end of each month, Expensify calculates your total donation amount and charges your billing card on file. A donation receipt is sent to your email.

To change the card where Personal Karma is charged, [update your Expensify billing card](https://help.expensify.com/articles/new-expensify/billing-and-subscriptions/Add-a-payment-card-and-view-your-subscription#how-to-update-your-expensify-billing-card).
Copy link
Contributor

Choose a reason for hiding this comment

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

Cross-linking violation: Per HELP_AUTHORING_GUIDELINES.md Section 7 (Link Formatting), links to other HelpDot articles must use relative links only. Do not use full URLs.

Suggested change
To change the card where Personal Karma is charged, [update your Expensify billing card](https://help.expensify.com/articles/new-expensify/billing-and-subscriptions/Add-a-payment-card-and-view-your-subscription#how-to-update-your-expensify-billing-card).
To change the card where Personal Karma is charged, [update your Expensify billing card](/articles/new-expensify/billing-and-subscriptions/Add-a-payment-card-and-view-your-subscription#how-to-update-your-expensify-billing-card).


## How can I learn more about Expensify.org's fund categories?

To learn more about Expensify.org funding categories, visit [expensify.org/funds](https://www.expensify.org/funds).
Copy link
Contributor

Choose a reason for hiding this comment

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

Cross-linking violation: Per HELP_AUTHORING_GUIDELINES.md Section 7 (Anchor Text Rules), avoid vague anchor text. The current anchor text "expensify.org/funds" is a URL, not a descriptive task or feature phrase. Consider something like:

Suggested change
To learn more about Expensify.org funding categories, visit [expensify.org/funds](https://www.expensify.org/funds).
To learn more about Expensify.org funding categories, visit [Expensify.org's fund details](https://www.expensify.org/funds).

3. Under the **Subscription** section, enable Karma donations.

![Settings > Workspaces > Individual workspace > enable Personal Karma in settings](https://help.expensify.com/assets/images/ExpensifyHelp_OldDot_Karma_Individual.png){:width="100%"}
Personal Karma is now managed in New Expensify. To enable or disable Personal Karma donations, see the [Personal Karma](https://help.expensify.com/articles/new-expensify/settings/Personal-Karma) help page.
Copy link
Contributor

Choose a reason for hiding this comment

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

Cross-linking violation: Per HELP_AUTHORING_GUIDELINES.md Section 7 (Link Formatting), links to other HelpDot articles must use relative links, not full URLs.

Suggested change
Personal Karma is now managed in New Expensify. To enable or disable Personal Karma donations, see the [Personal Karma](https://help.expensify.com/articles/new-expensify/settings/Personal-Karma) help page.
Personal Karma is now managed in New Expensify. To enable or disable Personal Karma donations, see the [Personal Karma](/articles/new-expensify/settings/Personal-Karma) help page.

@@ -20,13 +20,7 @@ The fund from your Personal Karma is determined by the expense's MCC (Merchant C

## Setting Up Personal Karma Donations
Copy link
Contributor

Choose a reason for hiding this comment

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

Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 2, all ## headings must be task-based and start with an action verb or question word (How, What, Where, Who, Why, When). "Setting Up" is a gerund, not an imperative verb.

Consider: ## How to set up Personal Karma donations

@@ -5,35 +5,14 @@ keywords: [Expensify Classic, workspace plan, subscription]
---
Copy link
Contributor

Choose a reason for hiding this comment

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

Missing required metadata field: The YAML frontmatter is missing the internalScope field, which is mandatory per HELP_AUTHORING_GUIDELINES.md Section 3 and TEMPLATE.md.

@@ -6,7 +6,7 @@ keywords: [Expensify Classic, create workspace, new workspace, getting started]

Creating a workspace in Expensify Classic is the first step to organizing your expenses and managing your finances efficiently. This guide walks you through setting up your workspace so you can seamlessly track receipts, submit reports, and stay on top of your spending.
Copy link
Contributor

Choose a reason for hiding this comment

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

Test

Creating a workspace in Expensify Classic is the first step to organizing your expenses and managing your finances efficiently. This guide walks you through setting up your workspace so you can seamlessly track receipts, submit reports, and stay on top of your spending.

All Expensify accounts include an Individual Workspace, which allows you to track personal expenses. If you want to connect your personal expenses to an accounting or travel integration, you can create a Group Workspace — even if you are the only member.
You can create a workspace to track personal expenses and connect to accounting or travel integrations — even if you are the only member.
Copy link
Contributor

Choose a reason for hiding this comment

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

Test probe - ignore



Expensify offers several plans based on your needs: **Track, Submit, Collect, Control,** and **Free**. Your choice depends on whether you manage expenses individually, for a group, or for a company. You may need to upgrade if you hire employees who need access to a **Group Workspace** or require features exclusive to paid plans.
Expensify offers several plans based on your needs: **Collect, Control,** and **Free**. You may need to upgrade if you hire employees who need access to your workspace or require features exclusive to paid plans.
Copy link
Contributor

Choose a reason for hiding this comment

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

Structure violation: Per HELP_AUTHORING_GUIDELINES.md Section 4, each article must include exactly one # heading (the article title). This file has content before any # heading -- the article title should appear as a # heading immediately after the YAML frontmatter, before the introductory paragraph.

---

# Change a Subscription on an Individual Plan
# Changing Your Subscription
Copy link
Contributor

Choose a reason for hiding this comment

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

Multiple # headings violation: Per HELP_AUTHORING_GUIDELINES.md Section 4, an article may have exactly one # heading (the article title) plus an optional # FAQ. This file uses # Changing Your Subscription (line 12), # Downgrading to a Free Account (line 43), and # FAQ (line 63) -- that is three # headings. Demote # Changing Your Subscription and # Downgrading to a Free Account to ## headings, and keep the article's single # title matching the YAML title field.


## Adjust Subscription Size
1. Go to **Settings > Workspaces > Group > Subscription**.
## Adjust Annual Subscription Size
Copy link
Contributor

Choose a reason for hiding this comment

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

Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 2, all ## headings must be task-based and start with an action verb or question word (How, What, Where, Who, Why, When). "Adjust Annual Subscription Size" is a noun-phrase heading.

Consider: ## How to adjust your annual subscription size

- **New Workspaces**: Based on active users in the first month.
- **Existing Workspaces Switching to Annual**: Based on the last month's active users.

## Auto-Increase Subscription Size
Copy link
Contributor

Choose a reason for hiding this comment

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

Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 2, all ## headings must be task-based and start with an action verb or question word. "Auto-Increase Subscription Size" is a noun-phrase heading.

Consider: ## How to auto-increase your subscription size

2. Tap your **Apple ID** > **Subscriptions**.
3. Cancel your Expensify subscription.
- **Note**: This cannot be done within Expensify. Downgrading to a free account must happen from the App Store.
1. Go to **Settings > Workspaces > Subscription**.
Copy link
Contributor

Choose a reason for hiding this comment

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

Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 2, all ## headings must be task-based and start with an action verb or question word. "Auto-Renew Subscription" is a noun-phrase heading.

Consider: ## How to manage auto-renewal for your subscription

# Downgrading to a Free Account from a Group Plan
# Downgrading to a Free Account

## Pay-Per-Use Plan
Copy link
Contributor

Choose a reason for hiding this comment

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

Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 2, all ## headings must be task-based and start with an action verb or question word. "Pay-Per-Use Plan" is a noun-only heading.

Consider: ## How to downgrade from a pay-per-use plan

- **Note**: Only the Billing Owner can delete a Workspace. Deleting a Workspace removes its settings and members but does not delete members' Expensify accounts.
- If any members were active that month (submitted, approved, or edited reports), you will be billed for their usage.

## Annual Subscription
Copy link
Contributor

Choose a reason for hiding this comment

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

Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 2, all ## headings must be task-based and start with an action verb or question word. "Annual Subscription" is a noun-only heading.

Consider: ## How to downgrade from an annual subscription

---

# Downgrading to a Free Account from a Group Plan
# Downgrading to a Free Account
Copy link
Contributor

Choose a reason for hiding this comment

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

Multiple # headings violation: Per HELP_AUTHORING_GUIDELINES.md Section 4, no # headings are allowed other than the article title and # FAQ. This should be demoted to ## and made task-based.

Consider: ## How to downgrade to a free account

## Can I create a workspace to use just for myself?

Yes, group workspaces include key features such as more robust approval rules, direct connections to accounting integrations, and access to Expensify Travel. These are helpful features for automating expense tracking, even if you are the only member of the workspace.
Yes, a workspace includes features such as approval rules, direct connections to accounting integrations, and access to Expensify Travel -- even if you are the only member.
Copy link
Contributor

Choose a reason for hiding this comment

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

Cross-linking violation: Per HELP_AUTHORING_GUIDELINES.md Section 7 (Anchor Text Rules), avoid vague anchor text such as "here". Use descriptive anchor text that reflects the task or feature.

Also per Section 7 (Link Formatting), use relative links, not full URLs for HelpDot articles.

Consider: See [plan types and pricing details](/articles/new-expensify/billing-and-subscriptions/Plan-types-and-pricing).

@github-actions
Copy link
Contributor

HelpDot Documentation Review

Overall Assessment

This PR merges main into the claude-refineCardReconciliationArticles branch, bringing in documentation changes across 9 files. The most significant change is the addition of a new Personal-Karma.md article for New Expensify (65 lines), along with simplifications to several Expensify Classic articles. The governance files themselves also received updates. The new Personal Karma article is well-structured overall, but there are several governance compliance gaps across the changed files that should be addressed.

Note: Because this PR is a large merge (300+ files), the exact line-level diff could not be retrieved via the API. This review analyzes the final state of each changed documentation file against the governance rules defined in HELPSITE_NAMING_CONVENTIONS.md, HELP_AUTHORING_GUIDELINES.md, and TEMPLATE.md. Findings focus on issues present in the current content that the PR introduces to the branch.


Scores Summary

  • Readability: 7/10 - The new Personal Karma article is clear, concise, and well-organized with sequential steps and scannable sections. The simplified Classic articles (Change-Plan-Or-Subscription, Create-a-workspace-for-yourself) are more streamlined after removing content. Minor issues: a missing period in step 2 of Personal-Karma.md, and some articles still have dense paragraphs rather than scannable bullet points.

  • AI Readiness: 5/10 - The new Personal Karma article includes good task-based headings with the feature name ("How to enable or disable Personal Karma", "How Personal Karma calculates your donation amount"). However, every article file is missing the mandatory internalScope YAML field required by HELP_AUTHORING_GUIDELINES.md Section 3. Several existing articles brought into scope still use multiple # headings (only one # title plus # FAQ is allowed) and contain noun-only headings that are not task-based.

  • Style Compliance: 6/10 - Button and UI element names are generally bolded correctly. Navigation instructions in Personal-Karma.md follow cross-platform conventions. However, there is an absolute URL used for a HelpDot cross-link in Personal-Karma.md (must be relative per Section 7 of the authoring guidelines). Several Classic articles also use absolute HelpDot URLs where relative links are required.


Key Findings

Critical issues:

  1. Missing internalScope in YAML metadata - Every article file in this PR is missing the mandatory internalScope field. Per HELP_AUTHORING_GUIDELINES.md Section 3, every article must include: internalScope: Audience is [target role(s)], covers [included workflow], does not cover [explicit exclusions]. This is required for AI retrieval optimization.

  2. Absolute HelpDot URLs instead of relative links - docs/articles/new-expensify/settings/Personal-Karma.md line 45 uses https://help.expensify.com/articles/new-expensify/billing-and-subscriptions/... instead of a relative path. docs/articles/expensify-classic/expensify-billing/Personal-and-Corporate-Karma.md lines 23 and 37 also use absolute HelpDot URLs. Per HELP_AUTHORING_GUIDELINES.md Section 7: "Use relative links only. Do not use full URLs."

  3. Multiple # headings in several articles - Per HELP_AUTHORING_GUIDELINES.md Section 4, articles must have exactly one # heading (the title) plus an optional # FAQ. The following files violate this rule:

    • Expense-Types.md: 5 # headings
    • Change-Plan-Or-Subscription.md: 3 # headings
    • Create-a-workspace-for-yourself.md: 8 # headings (numbered step-style, which is also a forbidden heading pattern)
    • Expense-Settings.md: 5 # headings
    • Navigate-multiple-workspaces.md: 2 # headings (beyond FAQ)

Moderate issues:
4. Non-task-based headings - Several ## headings across the articles are noun-only or topic-only rather than task-based:

  • ## Reimbursable Expenses, ## Non-Reimbursable Expenses, ## Billable Expenses (Expense-Types.md)
  • ## Pay-Per-Use Plan, ## Annual Subscription (Change-Plan-Or-Subscription.md)
  • ## Corporate Karma (Personal-and-Corporate-Karma.md)
  • Per Section 2: "All headings must be task-based -- must describe what the user will do or learn."
  1. Missing period in numbered step - Personal-Karma.md line 18: 2. Select **Save the World** is missing a trailing period for consistency with the other steps.

Positive aspects:

  • The new Personal-Karma.md article is focused on a single workflow (Personal Karma), follows the one-workflow-per-article rule, and uses clear task-based headings with the feature name.
  • The FAQ sections in the new article use well-formed question headings.
  • Navigation instructions in Personal-Karma.md correctly specify platform differences ("on the left on Web, at the bottom on Mobile").
  • Button names are consistently bolded throughout the new article.
  • The Classic Personal-and-Corporate-Karma.md article now correctly cross-links to the new New Expensify Personal Karma article, directing users to the right product context.
  • The governance files (HELPSITE_NAMING_CONVENTIONS.md, HELP_AUTHORING_GUIDELINES.md) are being refined, which benefits all future articles.

Recommendations

  1. Add internalScope to all article YAML frontmatter. For Personal-Karma.md, this might be: internalScope: Audience is all New Expensify users. Covers enabling/disabling Personal Karma and understanding donation calculations. Does not cover Corporate Karma or Expensify.org fund details.

  2. Convert absolute HelpDot URLs to relative links. In Personal-Karma.md line 45, change to a relative path like /articles/new-expensify/billing-and-subscriptions/Add-a-payment-card-and-view-your-subscription#how-to-update-your-expensify-billing-card. Same for cross-links in Personal-and-Corporate-Karma.md.

  3. Add missing period to Personal-Karma.md step 2: Select **Save the World**.

  4. For the Classic articles with multiple # headings and noun-only headings, consider filing follow-up work to bring them into governance compliance, since these pre-existing issues are outside the scope of this merge PR. The articles that need the most work are: Expense-Types.md, Change-Plan-Or-Subscription.md, Create-a-workspace-for-yourself.md, and Expense-Settings.md.


Files Reviewed

File Change Status
docs/articles/new-expensify/settings/Personal-Karma.md +65/-0 (new file) Good structure; missing internalScope, uses absolute URL for cross-link
docs/articles/expensify-classic/expensify-billing/Change-Plan-Or-Subscription.md +17/-54 Simplified; pre-existing heading and metadata issues remain
docs/articles/expensify-classic/expensify-billing/Personal-and-Corporate-Karma.md +5/-11 Updated with cross-link to new article; uses absolute URLs
docs/articles/expensify-classic/getting-started/Create-a-workspace-for-yourself.md +7/-22 Simplified; pre-existing multi-heading issues remain
docs/HELP_AUTHORING_GUIDELINES.md +26/-6 Governance file update
docs/HELPSITE_NAMING_CONVENTIONS.md +2/-0 Governance file update
docs/articles/expensify-classic/expenses/Expense-Types.md +1/-1 Trivial change
docs/articles/expensify-classic/workspaces/Expense-Settings.md +1/-1 Trivial change
docs/articles/expensify-classic/workspaces/Navigate-multiple-workspaces.md +1/-1 Trivial change

Yes, you can use Expensify for free to track expenses.

## Can I create a Group workspace to use just for myself?
## Can I create a workspace to use just for myself?
Copy link
Contributor

Choose a reason for hiding this comment

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

Heading rule violation: Per HELP_AUTHORING_GUIDELINES.md Section 2, all ## headings (including FAQ questions) must start with a question word (How, What, Where, Who, Why, When) or an action verb. "Can I create a workspace to use just for myself?" uses "Can" which is acceptable as a question, but note the broader structural issue: this article uses multiple # headings (lines 13, 20, 30, 38, 75, 95, 103, 113) in violation of Section 4, which allows only one # title plus optional # FAQ.

@@ -20,13 +20,7 @@ The fund from your Personal Karma is determined by the expense's MCC (Merchant C

## Setting Up Personal Karma Donations

Copy link
Contributor

Choose a reason for hiding this comment

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

Test probe

@OSBotify
Copy link
Contributor

🚀 Deployed to staging by https://github.com/stephanieelliott in version: 9.3.41-0 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

Bundle Size Analysis (Sentry):

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/cristipaval in version: 9.3.41-4 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

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.