Skip to content

Sage Intacct: Default vendor as navigable arrow row with updated copy#97016

Draft
MelvinBot wants to merge 3 commits into
mainfrom
claude-sageIntacctDefaultVendorRow
Draft

Sage Intacct: Default vendor as navigable arrow row with updated copy#97016
MelvinBot wants to merge 3 commits into
mainfrom
claude-sageIntacctDefaultVendorRow

Conversation

@MelvinBot

Copy link
Copy Markdown
Contributor

Explanation of Change

Design feedback on the Sage Intacct connection's Workspaces > Accounting > Export > Export company card expenses as page: the Default vendor row for the credit-card-charge (non-reimbursable) export path shipped as a toggle that revealed a nested select row inside an accordion. Per the approved plan, this reshapes it into a single, always-visible navigable arrow row.

What changed:

  • Row type — In SageIntacctNonReimbursableExpensesPage.tsx, the ToggleSettingOptionRow + Accordion machinery for the default vendor was removed and replaced with a plain MenuItemWithTopDescription arrow row that navigates directly to the existing default-vendor select page (POLICY_ACCOUNTING_SAGE_INTACCT_DEFAULT_VENDOR). The now-dead toggle/accordion render branches, useAccordionAnimation, and the updateSageIntacctDefaultVendor/clearSageIntacctErrorField/getLatestErrorField imports were dropped.
  • Empty default — Per the confirmed decision on the issue, the vendor now starts empty (not set) instead of seeding the first vendor when the toggle was enabled. When no vendor is chosen, the row title shows "Not set" so admins pick explicitly. New defaultVendorNotSet string added to en.ts/es.ts.
  • Copy — The subtitle now reads Expenses that can't be matched to your Sage Intacct vendors will default to this vendor. It's wired through a muted helperText below the row (only on the credit-card-charge path) via a new helperText field on MenuItemToRender. defaultVendorDescription kept its (isReimbursable) signature (the reimbursable page still uses true); only the non-reimbursable branch text changed, in both en.ts and es.ts.

Behavior preserved: the row stays hidden until a non-reimbursable export type is chosen; the VENDOR_BILL path continues to render its existing arrow row (no subtitle); the vendor list source is unchanged; no Auth/PHP changes.

Fixed Issues

$ https://github.com/Expensify/Expensify/issues/664271
PROPOSAL: https://github.com/Expensify/Expensify/issues/664271#issuecomment-5075633547

Tests

// TODO: The human co-author must fill out the tests you ran before marking this PR as "ready for review". Suggested steps: on a Sage Intacct workspace, set non-reimbursable export = Credit card charge; verify the Default vendor row renders as an arrow row (not a toggle) showing "Not set" with the subtitle Expenses that can't be matched to your Sage Intacct vendors will default to this vendor.; tap it, pick a vendor, and verify the selection persists and shows in the row title; clear it and verify it round-trips back to "Not set" — on web + mobile.

  • Verify that no errors appear in the JS console

Offline tests

QA Steps

// TODO: The human co-author must fill out the QA tests before marking this PR as "ready for review", 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 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 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)
  • 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)
  • 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.
  • 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

…copy

Co-authored-by: Alex Beaman <Beamanator@users.noreply.github.com>
@MelvinBot
MelvinBot requested a review from a team July 25, 2026 00:05
@OSBotify

Copy link
Copy Markdown
Contributor

🦜 Polyglot Parrot! 🦜

Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues:

View the translation diff
diff --git a/src/languages/de.ts b/src/languages/de.ts
index 1e5a4131ca3..f3774296e40 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -5068,7 +5068,9 @@ ${amount} für ${merchant} – ${date}`,
             creditCardAccount: 'Kreditkartenkonto',
             defaultVendor: 'Standardanbieter',
             defaultVendorDescription: (isReimbursable: boolean) =>
-                `Legen Sie einen Standardlieferanten fest, der auf ${isReimbursable ? '' : 'nicht-'}erstattungsfähige Ausgaben angewendet wird, für die in Sage Intacct kein übereinstimmender Lieferant vorhanden ist.`,
+                isReimbursable
+                    ? `Legen Sie einen Standardlieferanten fest, der auf erstattungsfähige Ausgaben angewendet wird, für die kein übereinstimmender Lieferant in Sage Intacct vorhanden ist.`
+                    : `Spesen, die keinen Ihrer Sage Intacct-Lieferanten zugeordnet werden können, werden standardmäßig diesem Lieferanten zugeordnet.`,
             exportDescription: 'Konfigurieren Sie, wie Expensify Daten nach Sage Intacct exportiert.',
             exportPreferredExporterNote:
                 'Der bevorzugte Exporteur kann jede Workspace-Adminperson sein, muss jedoch auch Domain-Admin sein, wenn du in den Domaineinstellungen unterschiedliche Exportkonten für einzelne Firmenkarten festlegst.',
@@ -5096,6 +5098,7 @@ ${amount} für ${merchant} – ${date}`,
                     [COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH]: 'Auslagenausgaben werden beim Bezahlen exportiert',
                 },
             },
+            defaultVendorNotSet: 'Nicht festgelegt',
         },
         certinia: {
             title: 'Certinia',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 0e73480ece6..df5222c0d7e 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -4961,11 +4961,11 @@ ${amount} para ${merchant} - ${date}`,
             travelInvoicingDescription: 'Los gastos de viaje se exportarán como cargos de tarjeta de crédito a la cuenta de Sage Intacct especificada a continuación.',
             creditCardAccount: 'Cuenta de tarjeta de crédito',
             defaultVendor: 'Proveedor por defecto',
-            defaultVendorNotSet: 'Sin establecer',
-            defaultVendorDescription: (isReimbursable) =>
+            defaultVendorNotSet: 'No establecido',
+            defaultVendorDescription: (isReimbursable: boolean) =>
                 isReimbursable
-                    ? `Establezca un proveedor predeterminado que se aplicará a los gastos reembolsables que no tienen un proveedor coincidente en Sage Intacct.`
-                    : `Los gastos que no puedan asociarse a tus proveedores de Sage Intacct se asignarán a este proveedor por defecto.`,
+                    ? `Establece un proveedor predeterminado que se aplicará a los gastos reembolsables que no tengan un proveedor coincidente en Sage Intacct.`
+                    : `Los gastos que no se puedan asociar con tus proveedores de Sage Intacct se asignarán a este proveedor de forma predeterminada.`,
             exportDescription: 'Configure cómo se exportan los datos de Expensify a Sage Intacct.',
             exportPreferredExporterNote:
                 'El exportador preferido puede ser cualquier administrador del área de trabajo, pero también debe ser un administrador del dominio si establece diferentes cuentas de exportación para tarjetas de empresa individuales en Configuración del dominio.',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 664cee6663f..6c56d2fb5ab 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -5078,7 +5078,9 @@ ${amount} pour ${merchant} - ${date}`,
             creditCardAccount: 'Compte de carte de crédit',
             defaultVendor: 'Fournisseur par défaut',
             defaultVendorDescription: (isReimbursable: boolean) =>
-                `Définissez un fournisseur par défaut qui s’appliquera aux ${isReimbursable ? '' : 'non-'}dépenses remboursables qui n’ont pas de fournisseur correspondant dans Sage Intacct.`,
+                isReimbursable
+                    ? `Définissez un fournisseur par défaut qui sera appliqué aux dépenses remboursables n’ayant pas de fournisseur correspondant dans Sage Intacct.`
+                    : `Les dépenses qui ne peuvent pas être rapprochées avec vos fournisseurs Sage Intacct seront, par défaut, associées à ce fournisseur.`,
             exportDescription: 'Configurez comment les données Expensify sont exportées vers Sage Intacct.',
             exportPreferredExporterNote:
                 'L’exportateur préféré peut être n’importe quel administrateur d’espace de travail, mais doit également être un administrateur de domaine si vous définissez des comptes d’exportation différents pour chaque carte d’entreprise individuelle dans les paramètres de domaine.',
@@ -5106,6 +5108,7 @@ ${amount} pour ${merchant} - ${date}`,
                     [COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH]: 'Les dépenses payées de votre poche seront exportées une fois remboursées',
                 },
             },
+            defaultVendorNotSet: 'Non défini',
         },
         certinia: {
             title: 'Certinia',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 6dc456a27c0..bdcca84e43e 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -5047,7 +5047,9 @@ ${amount} per ${merchant} - ${date}`,
             creditCardAccount: 'Conto della carta di credito',
             defaultVendor: 'Fornitore predefinito',
             defaultVendorDescription: (isReimbursable: boolean) =>
-                `Imposta un fornitore predefinito che verrà applicato alle spese rimborsabili ${isReimbursable ? '' : 'non-'} che non hanno un fornitore corrispondente in Sage Intacct.`,
+                isReimbursable
+                    ? `Imposta un fornitore predefinito che verrà applicato alle spese rimborsabili che non hanno un fornitore corrispondente in Sage Intacct.`
+                    : `Le spese che non possono essere abbinate ai tuoi fornitori Sage Intacct verranno associate per impostazione predefinita a questo fornitore.`,
             exportDescription: 'Configura come i dati di Expensify vengono esportati in Sage Intacct.',
             exportPreferredExporterNote:
                 'L’esportatore preferito può essere qualsiasi amministratore dello spazio di lavoro, ma deve anche essere un Amministratore del dominio se imposti conti di esportazione diversi per le singole carte aziendali nelle Impostazioni del dominio.',
@@ -5075,6 +5077,7 @@ ${amount} per ${merchant} - ${date}`,
                     [COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH]: 'Le spese anticipate verranno esportate al momento del pagamento',
                 },
             },
+            defaultVendorNotSet: 'Non impostato',
         },
         certinia: {
             title: 'Certinia',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 11db3c3def1..567fa3eeb28 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -5004,7 +5004,9 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの'
             creditCardAccount: 'クレジットカード口座',
             defaultVendor: 'デフォルトのベンダー',
             defaultVendorDescription: (isReimbursable: boolean) =>
-                `Sage Intacct で対応する仕入先がない ${isReimbursable ? '' : '非'}立替精算費用に適用されるデフォルトの仕入先を設定します。`,
+                isReimbursable
+                    ? `Sage Intacct で一致する取引先がない経費精算対象の経費に適用する、デフォルトの取引先を設定します。`
+                    : `Sage Intacct のベンダーに照合できない経費は、デフォルトでこのベンダーに割り当てられます。`,
             exportDescription: 'Expensify のデータを Sage Intacct へエクスポートする方法を設定します。',
             exportPreferredExporterNote:
                 '優先されるエクスポーターは任意のワークスペース管理者にできますが、ドメイン設定で会社カードごとに別々のエクスポート先口座を設定している場合は、ドメイン管理者である必要もあります。',
@@ -5031,6 +5033,7 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの'
                     [COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH]: '自己負担経費は支払われた時点でエクスポートされます',
                 },
             },
+            defaultVendorNotSet: '未設定',
         },
         certinia: {
             title: 'Certinia',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index c774982e5ff..840a3048c59 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -5041,7 +5041,9 @@ ${amount} voor ${merchant} - ${date}`,
             creditCardAccount: 'Creditcardrekening',
             defaultVendor: 'Standaardleverancier',
             defaultVendorDescription: (isReimbursable: boolean) =>
-                `Stel een standaardleverancier in die wordt toegepast op ${isReimbursable ? '' : 'niet-'}declarabele uitgaven zonder overeenkomende leverancier in Sage Intacct.`,
+                isReimbursable
+                    ? `Stel een standaardleverancier in die wordt toegepast op vergoedbare uitgaven waarvoor geen overeenkomende leverancier in Sage Intacct bestaat.`
+                    : `Declaraties die niet gekoppeld kunnen worden aan je Sage Intacct-leveranciers, worden standaard aan deze leverancier toegewezen.`,
             exportDescription: 'Configureer hoe Expensify-gegevens worden geëxporteerd naar Sage Intacct.',
             exportPreferredExporterNote:
                 'De voorkeurs-exporteur kan elke werkruimtebeheerder zijn, maar moet ook een domeinbeheerder zijn als je in Domeininstellingen verschillende exportrekeningen instelt voor individuele bedrijfskaarten.',
@@ -5069,6 +5071,7 @@ ${amount} voor ${merchant} - ${date}`,
                     [COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH]: 'Uit eigen zak gemaakte uitgaven worden geëxporteerd zodra ze zijn betaald',
                 },
             },
+            defaultVendorNotSet: 'Niet ingesteld',
         },
         certinia: {
             title: 'Certinia',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index ac30cc2c6ef..167b8849d83 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -5027,7 +5027,9 @@ ${amount} dla ${merchant} - ${date}`,
             creditCardAccount: 'Konto karty kredytowej',
             defaultVendor: 'Domyślny dostawca',
             defaultVendorDescription: (isReimbursable: boolean) =>
-                `Ustaw domyślnego dostawcę, który zostanie zastosowany do ${isReimbursable ? '' : 'nie-'}wydatków podlegających zwrotowi, nieposiadających pasującego dostawcy w Sage Intacct.`,
+                isReimbursable
+                    ? `Ustaw domyślnego kontrahenta, który będzie stosowany do wydatków podlegających zwrotowi, nieposiadających pasującego kontrahenta w Sage Intacct.`
+                    : `Wydatki, których nie da się dopasować do Twoich dostawców Sage Intacct, zostaną domyślnie przypisane do tego dostawcy.`,
             exportDescription: 'Skonfiguruj sposób eksportu danych z Expensify do Sage Intacct.',
             exportPreferredExporterNote:
                 'Preferowanym eksporterem może być dowolny administrator przestrzeni roboczej, ale musi on również być administratorem domeny, jeśli w Ustawieniach domeny ustawisz różne konta eksportu dla poszczególnych kart firmowych.',
@@ -5055,6 +5057,7 @@ ${amount} dla ${merchant} - ${date}`,
                     [COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH]: 'Wydatki z własnej kieszeni zostaną wyeksportowane po opłaceniu',
                 },
             },
+            defaultVendorNotSet: 'Nie ustawiono',
         },
         certinia: {
             title: 'Certinia',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index fe6a996bfcc..147a8f60d41 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -5033,7 +5033,9 @@ ${amount} para ${merchant} - ${date}`,
             creditCardAccount: 'Conta de cartão de crédito',
             defaultVendor: 'Fornecedor padrão',
             defaultVendorDescription: (isReimbursable: boolean) =>
-                `Defina um fornecedor padrão que será aplicado às despesas reembolsáveis ${isReimbursable ? '' : 'não-'} que não tiverem um fornecedor correspondente no Sage Intacct.`,
+                isReimbursable
+                    ? `Defina um fornecedor padrão que será aplicado às despesas reembolsáveis que não tiverem um fornecedor correspondente no Sage Intacct.`
+                    : `As despesas que não puderem ser conciliadas com seus fornecedores do Sage Intacct serão atribuídas a este fornecedor por padrão.`,
             exportDescription: 'Configure como os dados do Expensify são exportados para o Sage Intacct.',
             exportPreferredExporterNote:
                 'O exportador preferencial pode ser qualquer administrador do espaço de trabalho, mas também deve ser um Administrador de Domínio se você definir diferentes contas de exportação para cartões corporativos individuais em Configurações de Domínio.',
@@ -5060,6 +5062,7 @@ ${amount} para ${merchant} - ${date}`,
                     [COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH]: 'Despesas reembolsáveis serão exportadas quando pagas',
                 },
             },
+            defaultVendorNotSet: 'Não definido',
         },
         certinia: {
             title: 'Certinia',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 487d47fe761..75602f61bd6 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -4888,7 +4888,8 @@ ${amount},商户:${merchant} - 日期:${date}`,
             travelInvoicingDescription: '差旅费用将作为信用卡费用导出到下面指定的 Sage Intacct 账户。',
             creditCardAccount: '信用卡账户',
             defaultVendor: '默认供应商',
-            defaultVendorDescription: (isReimbursable: boolean) => `为没有在 Sage Intacct 中匹配供应商的${isReimbursable ? '' : '非'}可报销费用设置一个默认供应商。`,
+            defaultVendorDescription: (isReimbursable: boolean) =>
+                isReimbursable ? `为报销费用设置一个默认供应商,用于在 Sage Intacct 中找不到匹配供应商的情况。` : `无法与 Sage Intacct 供应商匹配的报销将默认归到此供应商名下。`,
             exportDescription: '配置 Expensify 数据导出到 Sage Intacct 的方式。',
             exportPreferredExporterNote: '首选导出人可以是任意工作区管理员,但如果你在“域设置”中为各个公司卡设置了不同的导出账户,则该导出人还必须是域管理员。',
             exportPreferredExporterSubNote: '设置完成后,首选导出人将在其账户中看到可供导出的报表。',
@@ -4913,6 +4914,7 @@ ${amount},商户:${merchant} - 日期:${date}`,
                     [COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH]: '自掏腰包的报销在支付时会导出',
                 },
             },
+            defaultVendorNotSet: '未设置',
         },
         certinia: {
             title: 'Certinia',

Note

You can apply these changes to your branch by copying the patch to your clipboard, then running pbpaste | git apply 😉

View workflow run

@Beamanator

Copy link
Copy Markdown
Contributor

@MelvinBot apply the polyglot parrot fix

@codecov

codecov Bot commented Jul 25, 2026

Copy link
Copy Markdown

Codecov Report

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

Files with missing lines Coverage Δ
.../export/SageIntacctNonReimbursableExpensesPage.tsx 0.00% <0.00%> (ø)
... and 11 files with indirect coverage changes

Co-authored-by: Alex Beaman <Beamanator@users.noreply.github.com>
@MelvinBot

Copy link
Copy Markdown
Contributor Author

Fixed the failing typecheck check and pushed to this branch (316fc02).

Root cause: The PR added the defaultVendorNotSet string to en.ts and es.ts, but not to the other 8 language files. TranslationDeepObject requires every locale to define the same keys, so tsc failed with TS2741: Property 'defaultVendorNotSet' is missing in de, fr, it, ja, nl, pl, pt-BR, and zh-hans.

Fix: Added defaultVendorNotSet (the localized equivalent of "Not set", reusing each file's existing notSet translation) to all 8 files, placed right after the Sage Intacct defaultVendor key to mirror en.ts. Verified locally with npm run typecheck-tsgo (passes) and ran npm run fmt.

The checklist check (PR Author Checklist) is still red, but that's the human-only checklist — it stays failing until the co-author fills out the boxes and test steps, so it's expected and not something I fix.

Co-authored-by: Alex Beaman <Beamanator@users.noreply.github.com>
@MelvinBot

Copy link
Copy Markdown
Contributor Author

🦜 Applied the Polyglot Parrot translations in 1dacbf0bb61.

The only remaining un-applied part of the parrot patch was the defaultVendorDescription rewrite (single-template → two-branch form with the corrected reimbursable/non-reimbursable copy) across de, es, fr, it, ja, nl, pl, pt-BR, zh-hans, plus a couple of es corrections (Sin establecerNo establecido and the two description branches).

I intentionally skipped the patch's defaultVendorNotSet additions — those keys were already added (with identical values) in 316fc02, so re-applying them would have created duplicate keys. Verified each language file still has exactly one defaultVendorNotSet.

Note: npm run prettier/typecheck/lint are gated in this environment and couldn't be run locally, but the edits reproduce the parrot bot's already-formatted output verbatim, so CI checks should validate them.

@MelvinBot

Copy link
Copy Markdown
Contributor Author

The only failing check is PR Author Checklist / checklist, and there's nothing in the code to fix — every code-quality check is green.

Why it's failing: the check reports 0 out of 38 checklist items completed. It's a static check that just verifies the boxes in the PR body are ticked; it fails until they are.

Why I'm not "fixing" it by pushing: the PR Author Checklist boxes attest to manual testing (running the flow on all platforms, verifying no console errors, etc.) that a human must actually perform and confirm. The PR body still has the // TODO: The human co-author must fill out... placeholders for the Tests and QA Steps sections. It would be wrong for me to auto-tick them, so this is on you (Beamanator) to complete before marking the PR ready for review.

Check results at time of analysis

All code-related checks passed:

  • typecheck
  • ESLint check ✅ · Oxfmt check ✅ · Compare knip issues against main
  • test (jobs 1–8)
  • build (…) (all variants) ✅
  • React Compiler Compliance, Storybook tests, Bun tests, spellcheck, generateTranslations

Only PR Author Checklist / checklist is fail; baseline-perf-tests / branch-perf-tests were still running (informational, not code-correctness).

Next steps: fill out the Tests/QA Steps sections and tick the PR Author Checklist boxes, then re-run the check — it'll pass.

@MelvinBot

Copy link
Copy Markdown
Contributor Author

Re-checked — the state is unchanged. The only failing check is still PR Author Checklist / checklist, which fails solely because the checklist boxes in the PR body aren't ticked. Every code-quality check is passing (typecheck, ESLint, Oxfmt, knip, all 8 test jobs, all builds, Storybook, Bun/spellcheck/translations, and the perf tests).

There's nothing for me to fix in code, and I won't tick the author-checklist boxes on your behalf — they attest to manual cross-platform testing you (Beamanator) must perform, and the PR body still has the // TODO: The human co-author must fill out... placeholders in the Tests/QA sections.

To clear this check: fill out the Tests/QA Steps sections and tick the PR Author Checklist boxes — the check re-runs on edit and will pass.

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.

3 participants