[hold] remove rulesRevamp beta. - #98662
Conversation
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0489bafb3c
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
…t tests Signed-off-by: krishna2323 <belivethatkg@gmail.com>
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.
|
JmillsExpensify
left a comment
There was a problem hiding this comment.
LGTM though no product review required.
|
Codex Review: Didn't find any major issues. Hooray! Reviewed commit: ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
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". |
Review — remove
|
Regression hunt — remove
|
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
@MelvinBot review |
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Review — remove
|
|
@JmillsExpensify @JS00001 @dubielzyk-expensify found an issue while testing this: Issue: We can currently enable Require tags from Rules even when the workspace has no tags. Enabling Tags only enables the tags page with an empty tag list, so this leaves us with an invalid state where every expense gets a tag violation. Proposed fix: Don't enable Tags from the Rules page.
This avoids writing an impossible "require tags" state and removes the need for hidden state/cleanup. Things to confirm:
Monosnap.screencast.2026-08-19.22-12-42.mp4 |
Wouldn't this only be the case when you add a tag and then subsequently create expenses? Or are you saying that we show an empty tag field as required, and there is no way to resolve it? |
Ahh, you're right. I overstated that. No violation fires in this state, so there's no unresolvable field. Sorry for the noise. The actual issue is narrower:
I'd suggest we stop enabling Tags from the Rules page. The modal should send them to More features to enable Tags. Then, if Tags is enabled but empty, keep Require tags disabled with: "You don't have any tags. Please create a tag." Once a tag exists, they can enable it normally. If you have any other ideas, please let me know. One thing I'd suggest updating anyway: if the toggle is locked because there are no categories/tags, we should show a tooltip explaining why it's disabled. |
Given that we are cool if they enable tags but don't create any, why wouldn't we:
|
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx bun ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
Made the changes:
@JS00001 Can we skip setting Copy to confirm. Only the Tags modal prompt and the two tooltips are new:
The categories tooltip still helps in the meantime since the toggle is at least explained when there's nothing to require. I don't think we need to block on the category issue since it also happens in production. Category require issue on staging:Monosnap.screencast.2026-08-20.17-59-54.mp4Rules revamp page (This PR):Monosnap.screencast.2026-08-20.18-01-06.mp4 |
|
I think that makes sense, yes |
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
@situchan this one is ready for code review. |
|
All looks good to me! |
|
@JS00001 please run the translations script when you get a chance 🙏 |
This comment has been minimized.
This comment has been minimized.
|
@Krishna2323 ran |
🦜 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 diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index 3018a441..7a30e67d 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -7732,6 +7732,9 @@ Fordern Sie Spesendetails wie Belege und Beschreibungen an, legen Sie Limits und
enableCategoriesToUnlockTitle: 'Kategorien aktivieren?',
enableCategoriesToUnlockPrompt: 'Aktivieren Sie Kategorien (unter Weitere Funktionen), um dies freizuschalten.',
enableCategoriesAndRequirePrompt: 'Sind Sie sicher, dass Sie Kategorien aktivieren und für alle Ausgaben verpflichtend machen möchten?',
+ enableTagsPrompt: 'Möchten Sie Tags wirklich aktivieren? Sie können sie für alle Ausgaben erforderlich machen, sobald Sie mindestens einen Tag haben.',
+ noTagsToRequirePrompt: 'Sie haben keine Tags. Bitte erstellen Sie einen Tag.',
+ noCategoriesToRequirePrompt: 'Sie haben keine Kategorien. Bitte erstellen Sie eine Kategorie.',
},
expenseReportRules: {
title: 'Erweitert',
diff --git a/src/languages/el.ts b/src/languages/el.ts
index 5e18b02f..7d9f6695 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -8056,6 +8056,9 @@ ${reportName}`,
enableCategoriesToUnlockTitle: 'Ενεργοποίηση κατηγοριών;',
enableCategoriesToUnlockPrompt: 'Ενεργοποιήστε τις κατηγορίες (στην ενότητα «Περισσότερες λειτουργίες») για να τις ξεκλειδώσετε.',
enableCategoriesAndRequirePrompt: 'Είστε βέβαιοι ότι θέλετε να ενεργοποιήσετε τις κατηγορίες και να τις απαιτείτε για όλες τις δαπάνες;',
+ enableTagsPrompt: 'Είστε βέβαιοι ότι θέλετε να ενεργοποιήσετε τις ετικέτες; Μπορείτε να τις κάνετε υποχρεωτικές για όλες τις δαπάνες μόλις έχετε τουλάχιστον μία ετικέτα.',
+ noTagsToRequirePrompt: 'Δεν έχετε ετικέτες. Δημιουργήστε μία ετικέτα.',
+ noCategoriesToRequirePrompt: 'Δεν έχετε κατηγορίες. Δημιουργήστε μια κατηγορία.',
},
expenseReportRules: {
title: 'Για προχωρημένους',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 751a1603..62ba9a0d 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -7704,6 +7704,9 @@ El plan Controlar empieza en 9 $ por miembro activo al mes.`,
enableCategoriesToUnlockTitle: '¿Habilitar categorías?',
enableCategoriesToUnlockPrompt: 'Activa Categorías (en Más funciones) para desbloquear.',
enableCategoriesAndRequirePrompt: '¿Seguro que quieres habilitar las categorías y hacerlas obligatorias para todos los gastos?',
+ enableTagsPrompt: '¿Seguro que quieres habilitar las etiquetas? Podrás exigirlas para todos los gastos cuando tengas al menos una etiqueta.',
+ noTagsToRequirePrompt: 'No tienes ninguna etiqueta. Por favor, crea una etiqueta.',
+ noCategoriesToRequirePrompt: 'No tienes ninguna categoría. Por favor, crea una categoría.',
},
expenseReportRules: {
title: 'Avanzado',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index c80d2075..cc330e79 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -7755,6 +7755,9 @@ Rendez obligatoires des informations de dépense comme les reçus et les descrip
enableCategoriesToUnlockTitle: 'Activer les catégories ?',
enableCategoriesToUnlockPrompt: 'Activez les catégories (dans Plus de fonctionnalités) pour déverrouiller.',
enableCategoriesAndRequirePrompt: 'Voulez-vous vraiment activer les catégories et les rendre obligatoires pour toutes les dépenses ?',
+ enableTagsPrompt: 'Voulez-vous vraiment activer les tags ? Vous pourrez les rendre obligatoires pour toutes les dépenses une fois que vous aurez au moins un tag.',
+ noTagsToRequirePrompt: "Vous n'avez aucun tag. Veuillez créer un tag.",
+ noCategoriesToRequirePrompt: 'Vous n’avez aucune catégorie. Veuillez créer une catégorie.',
},
expenseReportRules: {
title: 'Avancé',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index bfbc613b..950cdc93 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -7699,6 +7699,9 @@ Richiedi dettagli sulle spese come ricevute e descrizioni, imposta limiti e valo
enableCategoriesToUnlockTitle: 'Abilitare le categorie?',
enableCategoriesToUnlockPrompt: 'Attiva Categorie (in Altre funzionalità) per sbloccare.',
enableCategoriesAndRequirePrompt: 'Sei sicuro di voler abilitare le categorie e renderle obbligatorie per tutte le spese?',
+ enableTagsPrompt: 'Sei sicuro di voler abilitare i tag? Potrai renderli obbligatori per tutte le spese non appena avrai almeno un tag.',
+ noTagsToRequirePrompt: 'Non hai ancora nessun tag. Crea un tag.',
+ noCategoriesToRequirePrompt: 'Non hai ancora nessuna categoria. Crea una categoria.',
},
expenseReportRules: {
title: 'Avanzate',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 34ab98b2..6be61722 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -7606,6 +7606,9 @@ ${reportName}`,
enableCategoriesToUnlockTitle: 'カテゴリーを有効にしますか?',
enableCategoriesToUnlockPrompt: 'ロックを解除するには、[その他の機能]で[カテゴリ]を有効にしてください。',
enableCategoriesAndRequirePrompt: 'カテゴリを有効にし、すべての経費でカテゴリを必須にしてもよろしいですか?',
+ enableTagsPrompt: 'タグを有効にしてもよろしいですか?タグが少なくとも1つある場合、すべての経費でタグの入力を必須にできます。',
+ noTagsToRequirePrompt: 'タグがありません。タグを作成してください。',
+ noCategoriesToRequirePrompt: 'カテゴリがありません。カテゴリを作成してください。',
},
expenseReportRules: {
title: '詳細設定',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 8cf7d84a..0f05e2e9 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -7680,6 +7680,9 @@ Vereis onkostendetails zoals bonnen en beschrijvingen, stel limieten en standaar
enableCategoriesToUnlockTitle: 'Categorieën inschakelen?',
enableCategoriesToUnlockPrompt: 'Schakel Categorieën (onder Meer functies) in om te ontgrendelen.',
enableCategoriesAndRequirePrompt: 'Weet je zeker dat je categorieën wilt inschakelen en ze verplicht wilt maken voor alle uitgaven?',
+ enableTagsPrompt: 'Weet je zeker dat je labels wilt inschakelen? Je kunt ze verplicht maken voor alle uitgaven zodra je minstens één label hebt.',
+ noTagsToRequirePrompt: 'Je hebt nog geen tags. Maak alsjeblieft een tag aan.',
+ noCategoriesToRequirePrompt: 'Je hebt nog geen categorieën. Maak een categorie aan.',
},
expenseReportRules: {
title: 'Geavanceerd',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index c11c9754..954a64f7 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -7664,6 +7664,9 @@ Wymagaj szczegółów wydatków, takich jak paragony i opisy, ustawiaj limity i
enableCategoriesToUnlockTitle: 'Włączyć kategorie?',
enableCategoriesToUnlockPrompt: 'Włącz Kategorie (w sekcji Więcej funkcji), aby odblokować.',
enableCategoriesAndRequirePrompt: 'Na pewno chcesz włączyć kategorie i wymagać ich dla wszystkich wydatków?',
+ enableTagsPrompt: 'Na pewno chcesz włączyć tagi? Będziesz mógł wymagać ich dla wszystkich wydatków, gdy będziesz mieć co najmniej jeden tag.',
+ noTagsToRequirePrompt: 'Nie masz żadnych tagów. Utwórz tag.',
+ noCategoriesToRequirePrompt: 'Nie masz żadnych kategorii. Utwórz kategorię.',
},
expenseReportRules: {
title: 'Zaawansowane',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index a7651f5a..8e1c2cbb 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -7682,6 +7682,9 @@ Exija dados de despesas como recibos e descrições, defina limites e padrões e
enableCategoriesToUnlockTitle: 'Ativar categorias?',
enableCategoriesToUnlockPrompt: 'Ative Categorias (em Mais recursos) para desbloquear.',
enableCategoriesAndRequirePrompt: 'Tem certeza de que deseja ativar categorias e torná-las obrigatórias para todas as despesas?',
+ enableTagsPrompt: 'Tem certeza de que quer ativar tags? Você poderá exigi-las para todas as despesas assim que tiver pelo menos uma tag.',
+ noTagsToRequirePrompt: 'Você não tem nenhuma tag. Crie uma tag.',
+ noCategoriesToRequirePrompt: 'Você não tem nenhuma categoria. Crie uma categoria.',
},
expenseReportRules: {
title: 'Avançado',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 7924e631..9bb171f4 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -7422,6 +7422,9 @@ ${reportName}`,
enableCategoriesToUnlockTitle: '启用类别?',
enableCategoriesToUnlockPrompt: '启用“类别”(位于“更多功能”下)以解锁。',
enableCategoriesAndRequirePrompt: '确定要启用类别,并要求所有报销都必须选择类别吗?',
+ enableTagsPrompt: '确定要启用标签吗?在至少有一个标签后,您可以要求所有报销都必须选择标签。',
+ noTagsToRequirePrompt: '您还没有任何标签。请创建一个标签。',
+ noCategoriesToRequirePrompt: '您还没有任何类别。请创建一个类别。',
},
expenseReportRules: {
title: '高级',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safariweb.mov |
|
#98699 failing on iOS Screen.Recording.2026-08-21.at.12.54.35.PM.mov |
|
Same bug happens in other page: Screen.Recording.2026-08-21.at.1.28.04.PM.mov |
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
@Krishna2323 @situchan lets hold this PR for now. We forgot to add category tax defaults to the new rules flow. @JmillsExpensify will work on ironing out the details for this so we can finish that up monday |


Explanation of Change
Fixed Issues
$ #97686
$ #98699
PROPOSAL:
Tests
1. Rules
2. Workflows
3. Smart Limit deep link
4. Categories
5. Tags
6. Final regression sweep
Offline tests
QA Steps
Same as tests
Verify that no errors appear in the JS console
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
Monosnap.screencast.2026-08-21.12-57-45.mp4