Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
771f73a
feat(rules): describe a rule from New rule and fall back to an agent …
yuwenmemon Oct 12, 2026
8b1b913
test(rules): adapt describe-rule tests to main's modal and editors
yuwenmemon Oct 12, 2026
a452077
docs(rules): state the category constraint in RulesNewPage
yuwenmemon Oct 12, 2026
13beae7
fix(rules): wrap the agent rule fallback banner at word boundaries
yuwenmemon Oct 13, 2026
3fbb0a3
refactor(rules): remove the unreachable non-admin agent rule error
yuwenmemon Oct 13, 2026
9629a44
fix(rules): drop review and save from the agent rule fallback banner
yuwenmemon Oct 14, 2026
11e7b63
feat(rules): describe a rule inline on New rule instead of in a modal
yuwenmemon Oct 14, 2026
7f84468
fix(rules): drop the unused DescribeRuleFormProps export
yuwenmemon Oct 14, 2026
07fd072
feat(rules): open Describe your rule as a page in the RHP
yuwenmemon Oct 14, 2026
b4004e4
fix(rules): apply Polyglot Parrot translation refinements
yuwenmemon Oct 14, 2026
8e4e66e
fix(rules): add an Add agent rule row under the Agents tab list
yuwenmemon Oct 14, 2026
950f129
style(rules): match the add agent rule row's bottom spacing
yuwenmemon Oct 14, 2026
9d665d4
feat(rules): show Describe your rule only with the describeRule beta
yuwenmemon Oct 14, 2026
c262446
fix(rules): align agent rule Back with the fallback state
yuwenmemon Oct 14, 2026
cff2729
refactor(rules): pass the describe form's layout props through
yuwenmemon Oct 14, 2026
90bc5dc
feat(rules): describe a rule in a New rule section instead of a page
yuwenmemon Oct 15, 2026
b42819a
style(rules): pad the top of the New rule describe box
yuwenmemon Oct 15, 2026
29f09a9
fix(rules): use $2,000 in the describe box example
yuwenmemon Oct 15, 2026
38ca573
fix(rules): keep the navigation types file under the line limit
yuwenmemon Oct 15, 2026
1a45ef2
fix(rules): let New rule's describe box stay empty without an error
yuwenmemon Oct 16, 2026
0049b37
chore(rules): merge App#104055 and open categoryTaxRate from New rule
yuwenmemon Oct 16, 2026
1eeb6ad
chore(rules): merge the empty describe box fix
yuwenmemon Oct 16, 2026
3534e9e
chore(rules): merge main with the final App#104055 describe fixes
yuwenmemon Oct 20, 2026
b661277
chore(rules): merge main into the describe rule branch
yuwenmemon Oct 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4517,7 +4517,7 @@ const ROUTES = {
},
RULES_AGENT_NEW: {
route: 'workspaces/:policyID/rules/agent-rules/new',
getRoute: (policyID: string) => `workspaces/${policyID}/rules/agent-rules/new` as const,
getRoute: (policyID: string, generationID?: string) => getUrlWithParams(`workspaces/${policyID}/rules/agent-rules/new` as const, {generationID}),
},
RULES_AGENT_EDIT: {
route: 'workspaces/:policyID/rules/agent-rules/:ruleID',
Expand Down
13 changes: 10 additions & 3 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8804,6 +8804,8 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
describeRuleForConcierge: 'Beschreiben Sie Ihre Regel und Concierge erstellt sie',
gotIt: 'Verstanden',
createRule: 'Regel erstellen',
fallbackBanner:
'Dies ist keine Standardregel, daher haben wir sie als Agentenregel erstellt. Agentenregeln greifen, nachdem sich eine Ausgabe oder ein Bericht geändert hat, zum Beispiel indem sie die Ausgabe zurückhalten oder den Bericht ablehnen.',
},
tabs: {
general: 'Allgemein',
Expand Down Expand Up @@ -8866,16 +8868,21 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
newRule: {
title: 'Neue Regel',
subtitle: 'Was möchten Sie tun?',
startWithTemplate: 'Mit einer Vorlage beginnen',
restrictCardSpend: 'Kartenausgaben beschränken',
restrictCardSpendDescription: 'Ausgaben am Verkaufsort blockieren oder begrenzen',
applyExpenseDefaults: 'Standardspesen übernehmen',
applyExpenseDefaultsDescription: 'Felder aktualisieren, ohne dass die einreichende Person etwas tun muss',
applyExpenseDefaultsDescription: 'Felder automatisch aktualisieren',
flagForReview: 'Zur Überprüfung markieren',
flagForReviewDescription: 'Genehmigende benachrichtigen, wenn Ausgaben Kategorienlimits überschreiten',
flagForReviewDescription: 'Benachrichtigen, wenn Ihre Bedingungen erfüllt sind',
requireFields: 'Feldanforderungen festlegen',
requireFieldsDescription: 'Bestimmte Spesenfelder vorschreiben oder auf ihre Pflicht verzichten.',
requireFieldsShort: 'Felder vorschreiben',
requireFieldsDescription: 'Belege, Kategorien usw.',
createAgentRule: 'Agentenregel beschreiben',
createAgentRuleDescription: 'Erstellen Sie flexible Regeln, die ausgeführt werden, wenn Sie sie benötigen.',
describeItBelow: 'Oder beschreiben Sie sie einfach unten',
describeRulePlaceholder: 'Alle Ausgaben über 2.000 $ blockieren',
selectTemplateOrDescribe: 'Wählen Sie eine Vorlage aus oder beschreiben Sie eine Regel, um fortzufahren',
describe: 'Beschreiben',
describeRule: 'Beschreibe deine Regel in einfachen Worten und Concierge erstellt sie für dich',
describeRuleInputLabel: 'Beschreibe die Regel',
Expand Down
13 changes: 10 additions & 3 deletions src/languages/el.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8960,16 +8960,21 @@ ${reportName}`,
newRule: {
title: 'Νέος κανόνας',
subtitle: 'Τι θέλετε να κάνετε;',
startWithTemplate: 'Ξεκινήστε με ένα πρότυπο',
restrictCardSpend: 'Περιορισμός δαπανών κάρτας',
restrictCardSpendDescription: 'Μπλοκάρετε ή περιορίστε τις δαπάνες στο σημείο πώλησης',
flagForReview: 'Σημείωση για έλεγχο',
flagForReviewDescription: 'Ειδοποίηση εγκριτών όταν τα έξοδα υπερβαίνουν τα όρια κατηγορίας',
flagForReviewDescription: 'Ειδοποίηση όταν πληρούνται οι προϋποθέσεις σας',
requireFields: 'Ορίστε απαιτήσεις πεδίου',
requireFieldsDescription: 'Απαιτήστε συγκεκριμένα πεδία εξόδων ή παραλείψτε την απαίτησή τους.',
requireFieldsShort: 'Απαίτηση πεδίων',
requireFieldsDescription: 'Αποδείξεις, κατηγορίες κ.λπ.',
applyExpenseDefaults: 'Εφαρμογή προεπιλογών δαπανών',
applyExpenseDefaultsDescription: 'Ενημέρωση πεδίων χωρίς να χρειάζεται ο υποβάλλων να κάνει τίποτα',
applyExpenseDefaultsDescription: 'Αυτόματη ενημέρωση πεδίων',
createAgentRule: 'Περιγράψτε τον κανόνα πράκτορα',
createAgentRuleDescription: 'Δημιουργήστε ευέλικτους κανόνες που εκτελούνται όταν τους χρειάζεστε.',
describeItBelow: 'Ή απλώς περιγράψτε τον παρακάτω',
describeRulePlaceholder: 'Αποκλεισμός όλων των δαπανών άνω των 2.000 $',
selectTemplateOrDescribe: 'Επιλέξτε ένα πρότυπο ή περιγράψτε έναν κανόνα για να συνεχίσετε',
describe: 'Περιγραφή',
describeRule: 'Περιγράψτε τον κανόνα σας με απλά λόγια και ο Concierge θα τον δημιουργήσει για εσάς',
describeRuleInputLabel: 'Περιγράψτε τον κανόνα',
Expand Down Expand Up @@ -9261,6 +9266,8 @@ ${reportName}`,
describeRuleHeadline: 'Περιγράψτε τον κανόνα σας',
describeRuleForConcierge: 'Περιγράψτε τον κανόνα σας και το Concierge θα τον δημιουργήσει',
createRule: 'Δημιουργία κανόνα',
fallbackBanner:
'Αυτός δεν είναι ένας τυπικός κανόνας, οπότε τον διαμορφώσαμε ως κανόνα πράκτορα. Οι κανόνες πράκτορα εφαρμόζονται αφού αλλάξει μια δαπάνη ή μια αναφορά, για παράδειγμα κρατώντας τη δαπάνη ή απορρίπτοντας την αναφορά.',
suggestionsTab: 'Προτεινόμενο',
writeTab: 'Επεξεργασία',
findSuggestion: 'Βρείτε έναν κανόνα',
Expand Down
13 changes: 10 additions & 3 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9192,16 +9192,21 @@ const translations = {
newRule: {
title: 'New rule',
subtitle: 'What do you want to do?',
startWithTemplate: 'Start with a template',
restrictCardSpend: 'Restrict card spend',
restrictCardSpendDescription: 'Block or limit spend at the point of sale',
flagForReview: 'Flag for review',
flagForReviewDescription: 'Notify approvers when expenses exceed category limits',
flagForReviewDescription: 'Notify when your conditions are met',
requireFields: 'Set field requirements',
requireFieldsDescription: 'Require specific expense fields or waive requiring them.',
requireFieldsShort: 'Require fields',
requireFieldsDescription: 'Receipts, categories, etc.',
applyExpenseDefaults: 'Apply expense defaults',
applyExpenseDefaultsDescription: 'Update fields without submitter doing anything',
applyExpenseDefaultsDescription: 'Update fields automatically',
createAgentRule: 'Describe agent rule',
createAgentRuleDescription: 'Create flexible rules that run when you need.',
describeItBelow: 'Or just describe it below',
describeRulePlaceholder: 'Block all spend above $2,000',
selectTemplateOrDescribe: 'Select a template or describe a rule to continue',
describe: 'Describe',
describeRule: 'Describe your rule in plain English and have Concierge build the rule for you',
describeRuleInputLabel: 'Describe the rule',
Expand Down Expand Up @@ -9508,6 +9513,8 @@ const translations = {
describeRuleForConcierge: 'Describe your rule and Concierge will build it',
disclaimer: 'AI agents can make mistakes.',
createRule: 'Create rule',
fallbackBanner:
"This isn't a standard rule, so we drafted it as an agent rule. Agent rules act after an expense or report changes, for example by holding the expense or rejecting the report.",
agentCreatedTitle: 'RuleBot has been added to your workspace!',
agentCreatedDescription: (agentsRoute: string) =>
`<muted-text>To enforce your agent rules, we’ve created an agent for you and added it as an admin to your workspace.<br><br>Edit your agent’s details in <a href="${agentsRoute}">Account &gt; Agents</a>.</muted-text>`,
Expand Down
13 changes: 10 additions & 3 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8804,6 +8804,8 @@ ${reportName}`,
describeRuleForConcierge: 'Describe tu regla y Concierge la creará',
gotIt: 'Entendido',
createRule: 'Crear regla',
fallbackBanner:
'Esta no es una regla estándar, así que la redactamos como una regla de agente. Las reglas de agente actúan después de que un gasto o informe cambia, por ejemplo reteniendo el gasto o rechazando el informe.',
},
tabs: {
general: 'General',
Expand Down Expand Up @@ -8866,16 +8868,21 @@ ${reportName}`,
newRule: {
title: 'Nueva regla',
subtitle: '¿Qué quieres hacer?',
startWithTemplate: 'Empieza con una plantilla',
restrictCardSpend: 'Restringir gasto con la tarjeta',
restrictCardSpendDescription: 'Bloquea o limita el gasto en el punto de venta',
applyExpenseDefaults: 'Aplicar valores predeterminados de gastos',
applyExpenseDefaultsDescription: 'Actualizar campos sin que quien los envía haga nada',
applyExpenseDefaultsDescription: 'Actualizar campos automáticamente',
flagForReview: 'Marcar para revisión',
flagForReviewDescription: 'Notificar a los aprobadores cuando los gastos superen los límites de categoría',
flagForReviewDescription: 'Notificar cuando se cumplan tus condiciones',
requireFields: 'Configurar requisitos de campos',
requireFieldsDescription: 'Exige campos específicos de gasto o renuncia a exigirlos.',
requireFieldsShort: 'Exigir campos',
requireFieldsDescription: 'Recibos, categorías, etc.',
createAgentRule: 'Describir regla de agente',
createAgentRuleDescription: 'Crea reglas flexibles que se ejecuten cuando las necesites.',
describeItBelow: 'O simplemente descríbela abajo',
describeRulePlaceholder: 'Bloquear todos los gastos superiores a $2,000',
selectTemplateOrDescribe: 'Selecciona una plantilla o describe una regla para continuar',
describe: 'Describir',
describeRule: 'Describe tu regla con tus propias palabras y Concierge la creará por ti',
describeRuleInputLabel: 'Describe la regla',
Expand Down
13 changes: 10 additions & 3 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8827,6 +8827,8 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
describeRuleForConcierge: 'Décrivez votre règle et Concierge la créera',
gotIt: 'Compris',
createRule: 'Créer une règle',
fallbackBanner:
'Ce n’est pas une règle standard, nous l’avons donc rédigée comme une règle d’agent. Les règles d’agent agissent après la modification d’une dépense ou d’une note de frais, par exemple en bloquant la dépense ou en rejetant la note de frais.',
},
tabs: {
general: 'Général',
Expand Down Expand Up @@ -8889,16 +8891,21 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
newRule: {
title: 'Nouvelle règle',
subtitle: 'Que voulez-vous faire ?',
startWithTemplate: 'Commencer avec un modèle',
restrictCardSpend: 'Limiter les dépenses de la carte',
restrictCardSpendDescription: 'Bloquer ou limiter les dépenses au point de vente',
applyExpenseDefaults: 'Appliquer les valeurs de dépense par défaut',
applyExpenseDefaultsDescription: 'Mettre à jour les champs sans que le déclarant ne fasse quoi que ce soit',
applyExpenseDefaultsDescription: 'Mettre à jour les champs automatiquement',
flagForReview: 'Marquer pour examen',
flagForReviewDescription: 'Avertir les approbateurs lorsque les dépenses dépassent les limites de catégorie',
flagForReviewDescription: 'Avertir lorsque vos conditions sont remplies',
requireFields: 'Définir les exigences des champs',
requireFieldsDescription: 'Rendre certains champs de dépense obligatoires ou renoncer à les exiger.',
requireFieldsShort: 'Exiger des champs',
requireFieldsDescription: 'Reçus, catégories, etc.',
createAgentRule: 'Décrire la règle de l’agent',
createAgentRuleDescription: 'Créez des règles flexibles qui s’exécutent quand vous en avez besoin.',
describeItBelow: 'Ou décrivez-la simplement ci-dessous',
describeRulePlaceholder: 'Bloquer toutes les dépenses supérieures à 2 000 $',
selectTemplateOrDescribe: 'Sélectionnez un modèle ou décrivez une règle pour continuer',
describe: 'Décrire',
describeRule: 'Décrivez votre règle avec vos propres mots et Concierge la créera pour vous',
describeRuleInputLabel: 'Décrivez la règle',
Expand Down
13 changes: 10 additions & 3 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8755,6 +8755,8 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
describeRuleForConcierge: 'Descrivi la tua regola e Concierge la creerà',
gotIt: 'Capito',
createRule: 'Crea regola',
fallbackBanner:
'Questa non è una regola standard, quindi l’abbiamo creata come regola agente. Le regole agente agiscono dopo che una spesa o un report vengono modificati, ad esempio bloccando la spesa o rifiutando il report.',
},
tabs: {
general: 'Generale',
Expand Down Expand Up @@ -8817,16 +8819,21 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
newRule: {
title: 'Nuova regola',
subtitle: 'Che cosa vuoi fare?',
startWithTemplate: 'Inizia con un modello',
restrictCardSpend: 'Limita spesa carta',
restrictCardSpendDescription: 'Blocca o limita la spesa al punto vendita',
applyExpenseDefaults: 'Applica impostazioni predefinite spese',
applyExpenseDefaultsDescription: 'Aggiorna i campi senza che chi invia debba fare nulla',
applyExpenseDefaultsDescription: 'Aggiorna i campi automaticamente',
flagForReview: 'Contrassegna per revisione',
flagForReviewDescription: 'Avvisa gli approvatori quando le spese superano i limiti di categoria',
flagForReviewDescription: 'Avvisa quando le tue condizioni sono soddisfatte',
requireFields: 'Imposta i requisiti del campo',
requireFieldsDescription: 'Richiedi campi specifici per le spese oppure rinuncia a renderli obbligatori.',
requireFieldsShort: 'Richiedi campi',
requireFieldsDescription: 'Ricevute, categorie, ecc.',
createAgentRule: 'Descrivi regola agente',
createAgentRuleDescription: 'Crea regole flessibili che vengono eseguite quando ne hai bisogno.',
describeItBelow: 'Oppure descrivila qui sotto',
describeRulePlaceholder: 'Blocca tutte le spese superiori a 2.000 $',
selectTemplateOrDescribe: 'Seleziona un modello o descrivi una regola per continuare',
describe: 'Descrivi',
describeRule: 'Descrivi la tua regola con parole semplici e Concierge la creerà per te',
describeRuleInputLabel: 'Descrivi la regola',
Expand Down
13 changes: 10 additions & 3 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8644,6 +8644,8 @@ ${reportName}`,
describeRuleForConcierge: 'ルールの内容を入力すると、Concierge が自動作成します',
gotIt: '了解しました',
createRule: 'ルールを作成',
fallbackBanner:
'これは標準ルールではないため、エージェントルールとして作成しました。エージェントルールは、経費やレポートに変更があった後に動作し、例えば経費を保留にしたり、レポートを却下したりします。',
},
tabs: {
general: '一般',
Expand Down Expand Up @@ -8706,16 +8708,21 @@ ${reportName}`,
newRule: {
title: '新しいルール',
subtitle: '何をしたいですか?',
startWithTemplate: 'テンプレートから始める',
restrictCardSpend: 'カード利用を制限',
restrictCardSpendDescription: '販売時点で支出をブロックまたは制限する',
applyExpenseDefaults: '経費のデフォルトを適用',
applyExpenseDefaultsDescription: '申請者が何も操作しなくてもフィールドを更新する',
applyExpenseDefaultsDescription: 'フィールドを自動で更新する',
flagForReview: '確認のためにフラグを付ける',
flagForReviewDescription: '条件が満たされたときに通知します。',
flagForReviewDescription: '条件が満たされたときに通知する',
requireFields: 'フィールドの必須条件を設定',
requireFieldsDescription: '特定の経費項目フィールドを必須にするか、必須条件を免除します。',
requireFieldsShort: '必須フィールド',
requireFieldsDescription: '領収書、カテゴリなど',
createAgentRule: 'エージェントルールの説明',
createAgentRuleDescription: '必要なときに実行される柔軟なルールを作成できます。',
describeItBelow: 'または、下で説明してください',
describeRulePlaceholder: '2,000ドルを超えるすべての支出をブロック',
selectTemplateOrDescribe: '続行するには、テンプレートを選択するかルールを説明してください',
describe: '説明する',
describeRule: 'ルールを自然な言葉で説明すると、Concierge がルールを作成します',
describeRuleInputLabel: 'ルールを説明',
Expand Down
Loading
Loading