Skip to content

Merge main into my branch to fix failed lint test - #84652

Merged
stephanieelliott merged 648 commits into
helpsite-netsuite-error-docsfrom
main
Mar 9, 2026
Merged

Merge main into my branch to fix failed lint test #84652
stephanieelliott merged 648 commits into
helpsite-netsuite-error-docsfrom
main

Conversation

@stephanieelliott

Copy link
Copy Markdown
Contributor

Explanation of Change

Fixed Issues

$
PROPOSAL:

Tests

  • Verify that no errors appear in the JS console

Offline tests

QA Steps

// TODO: These must be filled out, or the issue title must include "[No QA]."

  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I followed proper code patterns (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
      • If any non-english text was added/modified, I used JaimeGPT to get English > Spanish translation. I then posted it in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I followed the guidelines as stated in the Review Guidelines
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
  • I verified that if a function's arguments changed that all usages have also been updated correctly
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))
  • If new assets were added or existing ones were modified, I verified that:
    • The assets are optimized and compressed (for SVG files, run npm run compress-svg)
    • The assets load correctly across all supported platforms.
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari

roryabraham and others added 30 commits March 5, 2026 15:09
The previous approach of deriving the return value instead of resetting
internal isDraggingOver state left the internal state stale, preventing
the DragAndDropProvider overlay from hiding after a file drop in the
DualDropZone.

Use the "adjust state during render" pattern to properly reset
isDraggingOver when the screen loses focus or becomes disabled, while
keeping ref/timeout cleanup in the effect. This fixes the set-state-in-
effect ESLint warning without breaking the drop behavior.

Made-with: Cursor
…ge hydration

The previous useInitialValue hook captured cardList on the first render,
which could be empty if Onyx hadn't hydrated yet. The new useInitialOnyxValue
hook subscribes to an Onyx key and captures its value once the status first
transitions to 'loaded', giving a stable snapshot unaffected by hydration timing.

Made-with: Cursor
Defer rendering SearchMultipleSelectionPicker until the search advanced
filters form has loaded from Onyx, preventing initiallySelectedItems
from being captured as empty during initial hydration.

Made-with: Cursor
Fixes #84349

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ILURES sets

tsgo infers narrow literal unions for Set elements, causing .has() to
reject the wider MultifactorAuthenticationReason type. Adding an explicit
ReasonValue type parameter to both sets resolves the mismatch.
Use policy.exporter (same as Reports sidebar) instead of
isPreferredExporter() (connection-level exporters) in todos.ts,
ensuring the Home page For You section matches the Reports sidebar.

Made-with: Cursor
…rkflow

Stage 2 of tsgo integration (#83349): AI agents now use the faster
typecheck-tsgo command (~10x faster, usually stricter than tsc) during
iterative development. CI continues to validate with tsc separately.
…SelectOnMount

Co-authored-by: Vinh Hoang <hoangzinh@users.noreply.github.com>
Reword Post-Edit Checklist to clarify when to run typecheck-tsgo and
that CI merge gate uses tsc. Update command reference label.
@melvin-bot
melvin-bot Bot requested review from kadiealexander and puneetlath and removed request for a team March 9, 2026 22:23
@melvin-bot

melvin-bot Bot commented Mar 9, 2026

Copy link
Copy Markdown

@puneetlath @kadiealexander 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]

NOTE: It looks like docs/redirects.csv was modified in this PR. Please see this SO for special instructions on how to review changes to that file.

sentryLabel={CONST.SENTRY_LABEL.REFERRAL_PROGRAM.CTA}
>
<RenderHTML html={translate(`referralProgram.${referralContentType}.buttonText`)} />
<View style={[styles.br2, styles.highlightBG, styles.flexRow, styles.justifyContentBetween, styles.alignItemsCenter, {gap: 10, padding: 10}, styles.pl5, style]}>

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.

❌ CONSISTENCY-2 (docs)

The inline style {gap: 10, padding: 10} uses undocumented magic numbers for gap and padding. These values should be extracted to named constants or use existing theme style utilities for consistency and maintainability.

Extract these to named constants or use theme styles:

// Option A: use theme spacing
style={[styles.br2, styles.highlightBG, styles.flexRow, styles.justifyContentBetween, styles.alignItemsCenter, styles.gap2, styles.p2, styles.pl5, style]}

// Option B: named constant if no matching theme style
const BANNER_GAP = 10;
const BANNER_PADDING = 10;

Please rate this suggestion with 👍 or 👎 to help us improve! Reactions are used to monitor reviewer efficiency.

};

// Width of the close button (touchableButtonImage) + the gap between text and button.
const CLOSE_BUTTON_OFFSET = variables.componentSizeNormal + 10;

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.

❌ CONSISTENCY-2 (docs)

The magic number 10 in variables.componentSizeNormal + 10 represents the gap between text and the close button but is not defined as a named constant. While the comment on line 24 explains the intent, the value itself should be a named constant for clarity.

Extract the gap value to a named constant:

const BANNER_GAP = 10;
const CLOSE_BUTTON_OFFSET = variables.componentSizeNormal + BANNER_GAP;

Please rate this suggestion with 👍 or 👎 to help us improve! Reactions are used to monitor reviewer efficiency.


The Expensify Card is available for companies in the United Kingdom and select European countries. This guide walks you through eligibility and how to set up and start using the card in GBP or EUR.

Workspace Admins can issue virtual Expensify Cards to members and manage spending in GBP or EUR. Physical cards will be available soon.

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.

No future tense promises: "Physical cards will be available soon" is a forward-looking promise that may become stale or inaccurate. Consider removing this sentence or rephrasing to something like "Physical cards are not yet available." without a time-based promise.

- Sweden
- United Kingdom

## What are the pre-requisites to set up the Expensify Card in the UK and EU

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: "pre-requisites" should be written as one word: "prerequisites."


1. Have a GBP or EUR bank account connected. To connect one, [Enable Global Reimbursement](https://help.expensify.com/articles/new-expensify/wallet-and-payments/Enable-Global-Reimbursement).
2. Complete the **[Know Your Customer (KYC)](https://launch-workflow.trulioo.com/68223577c5dae52a6ec9347f)** and **[Know Your Business (KYB)](https://launch-workflow.trulioo.com/681a7cc4e65d2e48f19de9c3)** forms.
3. Share the last 90 days of statements from your connected GBP or EUR bank account with Concierge so they can assess your eligible limit

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: Missing period at the end of step 3. All steps in a numbered list should end with consistent punctuation.


---

## 1. How to enable the Expensify Card on 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/Consistency: This heading uses a numbered prefix ("## 1. How to enable...") while all other section headings in this article do not use numbers (e.g., "## How to link...", "## How to issue..."). Remove the "1." prefix for consistency:

Suggested change
## 1. How to enable the Expensify Card on your workspace
## How to enable the Expensify Card on your workspace


1. From navigation tabs (on the left on Web, on the bottom on Mobile), choose **Workspaces > [Workspace Name] > More features**.
2. In the **Spend** section, enable **Expensify Card**.
3. So that we can assess your request, reach out to Concierge and provide the last 90 days of statements from the connected UK or EU bank account

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.

No first person: "So that we can assess your request" uses first person ("we"). Rephrase to avoid first person. For example:

Suggested change
3. So that we can assess your request, reach out to Concierge and provide the last 90 days of statements from the connected UK or EU bank account
3. To have your eligible limit assessed, reach out to Concierge and provide the last 90 days of statements from the connected UK or EU bank account.


---

## How to link a bank account to settle the Expensify 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.

Formatting: There is an extra space between ## and How in this heading. Should be a single space:

Suggested change
## How to link a bank account to settle the Expensify Card
## How to link a bank account to settle the Expensify Card

## How to link a bank account to settle the Expensify Card

1. From navigation tabs (on the left on Web, on the bottom on Mobile), choose **Workspaces > [Workspace Name] > Expensify Card**
2. Click **Issue new 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.

Consistency: This section uses "Click" for the action verb (lines 82, 90, 99), while the "enable" section on line 71 uses "choose." For HelpDot consistency, consider using "Select" throughout, which is the convention used in the Create-and-manage-expense-tags article in this same PR.


## What exchange rate does the Expensify Card use for foreign currency purchases?

We use the [Visa FX calculator](https://www.visa.co.uk/support/consumer/travel-support/exchange-rate-calculator.html) to determine exchange rates for purchases made in currencies other than GBP or EUR. Please ensure that you edit the bank fee to **0%** when using the calculator, as the Expensify Card does not incur any foreign exchange fees.

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.

No first person: "We use the Visa FX calculator" uses first person. Rephrase to remove "we." For example:

"The Expensify Card uses the Visa FX calculator to determine exchange rates for purchases made in currencies other than GBP or EUR."


---

## Workspace & Policy

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.

Terminology violation: The heading "Workspace & Policy" uses "Policy," which should be "Workspace" per Expensify style guidelines. Consider renaming to something like "Workspace Configuration" (which is already used as a sub-heading on line 28), or removing this heading entirely since the sub-heading on line 28 already covers it.

Additionally, this heading creates a structural issue: "## Workspace & Policy" on line 26 is immediately followed by another ## heading "## Workspace Configuration" on line 28, making the first heading appear empty with no content beneath it.


- Point members to existing, shipped documentation for what is available today.
- Do not cite this page or its URL in member-facing responses.
- Point users to existing, shipped documentation for what is available today.

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.

Terminology violation: "Point users to existing, shipped documentation" uses "users" instead of "members," which is the standard Expensify term. This line also appears to duplicate line 82 which says the same thing with "members." Consider removing this duplicate line or consolidating:

Suggested change
- Point users to existing, shipped documentation for what is available today.
- Point members to existing, shipped documentation for what is available today.


---

- When a member asks "Is X available?" or "When is Y coming?" – check this list before answering.

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: This section of instructions (lines 80-85) appears to be guidance for AgentZero behavior but lacks a heading. Consider adding a descriptive heading like ## How AgentZero should use this page to improve scannability and AI readiness.


## How to create a tag manually

1. In the navigation tabs (on the left on web, and at the bottom on mobile), select **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.

Consistency (punctuation): Step 1 on this line is missing a period at the end, while step 1 on line 27 in the previous section has a period. Similarly, step 3 on line 37 is missing a period. Please add periods at the end of all steps for consistency throughout the article.


---

## How to import single-level Tags using a spreadsheet

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.

AI Readiness / Consistency: The heading "How to import single-level Tags using a spreadsheet" capitalizes "Tags" mid-sentence. Throughout the article, "Tags" is sometimes capitalized as a proper noun and sometimes lowercase. Since this is referring to the feature name, choose one convention and apply it consistently. In headings, only the first word should be capitalized per Expensify style (e.g., "How to import single-level tags using a spreadsheet").


Use this option when you want one flat list of tags (for example: Marketing, Sales, IT).

1. In the navigation tabs (on the left on web, and at the bottom on mobile), select **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.

Consistency (punctuation): Step 1 here is missing a period at the end. Same issue on line 48 (step 3). Please ensure all steps end with a period.


---

## How single-level Tags and multi-level Tags affect tag fields on expenses

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.

AI Readiness / Consistency: The heading "How single-level Tags and multi-level Tags affect tag fields on expenses" capitalizes "Tags" inconsistently -- it is capitalized twice but then "tag fields" is lowercase. Use consistent casing throughout.


Example: If you use single-level Tags for Department, members will see one field labeled **Tag** and choose one department.

**Multi-level tags**

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 (punctuation): "Multi-level tags" sub-heading on this line is missing a colon or period for consistency with "Single-level tags:" on line 93, which has a colon.

- There is a GL code in the adjacent column (if applicable)
7. Select **Import**.

The linked templates can be used to import multi-level tags:

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: "The linked templates can be used to import multi-level tags" is passive voice. Consider rephrasing to active voice: "Use the following templates to import multi-level tags:"

Comment thread docs/redirects.csv
https://help.expensify.com/articles/expensify-classic/connections/TriNet-Integration,https://help.expensify.com/articles/expensify-classic/connections/TriNet
https://help.expensify.com/unlisted/avoiding-duplicates,https://help.expensify.com/expensify-classic/hubs/expenses/How-to-prevent-duplicate-expenses
https://help.expensify.com/articles/new-expensify/settings/title:%20Personal-Expense-Rules,https://help.expensify.com/articles/new-expensify/settings/Personal-Expense-Rules
https://help.expensify.com/articles/new-expensify/expensify-card/docs/articles/new-expensify/expensify-card/UK-and-EU-Expensify-Card,https://help.expensify.com/unlisted/UK-and-EU-Expensify-Card.md

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.

Accuracy: The source URL path appears malformed -- it contains a doubled path segment: articles/new-expensify/expensify-card/docs/articles/new-expensify/expensify-card/UK-and-EU-Expensify-Card. It looks like docs/articles/new-expensify/expensify-card/ was accidentally included twice. Additionally, the target URL ends with .md (/unlisted/UK-and-EU-Expensify-Card.md), which is unusual for a redirect target -- the .md extension is typically not included in help site URLs.

Expected source might be something like:
https://help.expensify.com/articles/new-expensify/expensify-card/UK-and-EU-Expensify-Card

And the target URL should likely not have .md:
https://help.expensify.com/unlisted/UK-and-EU-Expensify-Card

@github-actions

github-actions Bot commented Mar 9, 2026

Copy link
Copy Markdown
Contributor

HelpDot Documentation Review

Overall Assessment

This PR merges main into the helpsite-netsuite-error-docs branch, bringing in documentation changes across five docs-related files. The documentation additions include three new articles (UK/EU Expensify Card setup, AgentZero upcoming features reference, and a comprehensive rewrite of the expense tags article), a layout enhancement for noindex support, and redirect maintenance. Overall, the documentation quality is solid with clear structure, appropriate audience targeting, and good adherence to HelpDot conventions, though there are several areas for improvement.


Scores Summary

  • Readability: 7/10 - Generally clear and well-organized, but some heading inconsistencies, minor grammar issues, and a few sections that could be tightened up reduce the score.
  • AI Readiness: 8/10 - Strong YAML metadata with well-formed internalScope fields on all new articles. Descriptive headings throughout. Minor inconsistencies in heading hierarchy noted.
  • Style Compliance: 7/10 - Good use of Expensify terminology and formatting conventions. Several style issues need attention: inconsistent heading numbering, first-person usage ("We use..."), future-tense promises ("will be available soon"), and inconsistent punctuation in numbered steps.

Key Findings

Positive aspects:

  • All three new articles include proper YAML frontmatter with internalScope fields that follow the recommended format ("Audience is X. Covers Y. Does not cover Z.").
  • The noindex/sitemap: false usage on hidden and unlisted articles is correctly implemented, and the layout template was properly updated to respect the noindex flag with a <meta name="robots"> tag.
  • The Create-and-manage-expense-tags.md article is a substantial and well-structured rewrite of the previous Create-expense-tags.md, with proper redirect handling in redirects.csv.
  • Linked assets (images, PDFs, CSV templates) all exist in the repository.
  • FAQ sections are properly structured with # FAQ followed by ## questions.

Issues to address:

  1. docs/Hidden/UK-and-EU-Expensify-Card.md:

    • Line 18: "Physical cards will be available soon." -- This is a future-tense promise. HelpDot articles should not promise upcoming availability. Either remove this or reframe as current state.
    • Line 69: Heading has a numbered prefix ("1.") which is inconsistent with all other headings in the article. Remove the number.
    • Line 79: There is an extra space before "How" (double space after ##). Clean up whitespace.
    • Line 59: Missing question mark at the end of the question heading.
    • Line 65: Missing period at the end of step 3 in the prerequisites section.
    • Line 82: "Click Issue new card." -- The article mixes "Click" (lines 82, 89) and action verbs inconsistently. Consider using "Select" consistently, as seen in other HelpDot articles.
    • Line 109: "We use the Visa FX calculator..." -- First-person "We" should be avoided. Rewrite as: "The Expensify Card uses the Visa FX calculator..." or "Exchange rates are determined using the Visa FX calculator..."
  2. docs/articles/Unlisted/AgentZero-Upcoming-Features.md:

    • Lines 26-28: Heading hierarchy issue -- ## Workspace & Policy is immediately followed by ## Workspace Configuration without content between them. The second heading should either be merged with the first or introductory text should be added.
    • Lines 80-85: The closing instructions section has no heading and contains near-duplicate guidance ("Point members to existing..." on line 82 and "Point users to existing..." on line 84). Consolidate these and pick one term ("members" or "users").
    • This is an internal-only document (properly marked noindex/sitemap: false), so some style guidelines are less critical, but consistency still matters.
  3. docs/articles/new-expensify/workspaces/Create-and-manage-expense-tags.md:

    • This is a well-written, comprehensive article. The structure is logical with clear sections for enabling, creating, importing, and managing tags.
    • Inconsistent punctuation at end of numbered steps -- some steps end with periods, others do not. Standardize across all step lists.
    • "Tags" is capitalized inconsistently in body text (e.g., line 89: "Single-level Tags and multi-level Tags determine..."). In regular prose, use lowercase "tags" and reserve capitalization for the feature toggle name.
    • Overall the FAQ section is clean and directly answers likely user questions.
  4. docs/redirects.csv:

    • Line 909: The redirect target URL includes the .md extension, which looks incorrect. Redirect targets should use the URL path without the file extension.
    • Line 910: The redirect from Create-expense-tags to Create-and-manage-expense-tags is correct and properly handles the article rename.
  5. docs/_layouts/default.html:

    • The addition of the noindex meta tag support (lines 27-29) is clean and correctly implemented.

Recommendations

Priority (should fix):

  1. Remove or reword the future-tense promise about physical cards in UK-and-EU-Expensify-Card.md line 18.
  2. Replace first-person "We use" with impersonal phrasing in UK-and-EU-Expensify-Card.md line 109.
  3. Fix the redirect target on line 909 of redirects.csv -- remove the trailing .md from the target URL.
  4. Remove the numbered prefix "1." from the heading on line 69 of UK-and-EU-Expensify-Card.md.
  5. Fix the duplicate/near-duplicate bullet points at the end of AgentZero-Upcoming-Features.md (lines 82-85).

Suggestions (nice to have):

  1. Standardize punctuation at the end of numbered steps across all three articles.
  2. Clean up the extra whitespace in the heading on line 79 of UK-and-EU-Expensify-Card.md.
  3. Add a missing question mark to the heading on line 59 of UK-and-EU-Expensify-Card.md.
  4. Normalize capitalization of "Tags" vs "tags" in body text of Create-and-manage-expense-tags.md.
  5. Add introductory text or merge the empty ## Workspace & Policy heading in AgentZero-Upcoming-Features.md.

Files Reviewed

File Status Assessment
docs/Hidden/UK-and-EU-Expensify-Card.md New (118 lines) Good structure and coverage. Needs fixes for first-person language, future-tense promise, heading numbering, and minor punctuation.
docs/articles/Unlisted/AgentZero-Upcoming-Features.md New (85 lines) Internal reference doc, well-organized. Has duplicate bullets and an empty heading section.
docs/articles/new-expensify/workspaces/Create-and-manage-expense-tags.md New (198 lines, replaces old file) Strong rewrite with comprehensive coverage. Minor capitalization and punctuation issues.
docs/articles/new-expensify/workspaces/Create-expense-tags.md Deleted (170 lines) Properly replaced with redirect in place.
docs/redirects.csv Modified (2 lines added) One redirect target has .md extension to fix. Tags rename redirect is correct.
docs/_layouts/default.html Modified (3 lines added) Clean noindex meta tag implementation.

This review was generated by an automated documentation quality assessment.

@codecov

codecov Bot commented Mar 9, 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/CONST/index.ts 94.30% <ø> (ø)
src/ONYXKEYS.ts 100.00% <ø> (ø)
src/SCREENS.ts 100.00% <ø> (ø)
src/components/AmountForm.tsx 0.00% <ø> (ø)
src/components/AnimatedCollapsible/index.tsx 68.96% <100.00%> (-2.01%) ⬇️
src/components/AvatarWithDisplayName.tsx 83.07% <ø> (-0.75%) ⬇️
src/components/Button/index.tsx 91.97% <100.00%> (+1.19%) ⬆️
src/components/ButtonWithDropdownMenu/index.tsx 86.76% <100.00%> (+1.49%) ⬆️
src/components/Charts/constants.ts 100.00% <100.00%> (ø)
...rc/components/Charts/hooks/useChartLabelFormats.ts 95.00% <100.00%> (ø)
... and 150 more
... and 367 files with indirect coverage changes

@OSBotify

Copy link
Copy Markdown
Contributor

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

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

@jponikarchuk

Copy link
Copy Markdown

The issue #84922 is repro on all PRs. Could you please double check if it's not introduced by #84652

@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Deployed to production by https://github.com/luacmartins in version: 9.3.35-1 🚀

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.