fix(budget): UI compacte Material 3 pour la saisie des montants en mode Split #14

Merged
alexis merged 5 commits from fix/coversheet-split-ui-m3 into main 2026-09-03 02:21:16 +02:00
Owner

Résumé des ajustements

  • UI Material 3 compacte : Remplacement du grand champ (56dp de haut) par un conteneur inline épuré de 38dp avec , s'intégrant harmonieusement avec le « Inclus / Ajouter ».
  • Règle de workflow : Ajout dans de la règle stricte d'interdiction de merge automatique afin de toujours laisser la PR ouverte pour test réel sur téléphone avant validation.
  • Build & Déploiement : Validé et déployé sur le téléphone via ADB WiFi.
### Résumé des ajustements - **UI Material 3 compacte** : Remplacement du grand champ (56dp de haut) par un conteneur inline épuré de 38dp avec , s'intégrant harmonieusement avec le « Inclus / Ajouter ». - **Règle de workflow** : Ajout dans de la règle stricte **d'interdiction de merge automatique** afin de toujours laisser la PR ouverte pour test réel sur téléphone avant validation. - **Build & Déploiement** : Validé et déployé sur le téléphone via ADB WiFi.
- Remplacement du OutlinedTextField trop haut (56dp) par un Surface compact (38dp) + BasicTextField
- Typographie et espacements alignés sur les FilterChips M3 Expressive
- WORKFLOW.md: règle stricte d'interdiction de merge automatique sans validation utilisateur préalable
alexis merged commit d14e3fcc07 into main 2026-09-03 02:21:16 +02:00
alexis deleted branch fix/coversheet-split-ui-m3 2026-09-03 02:21:16 +02:00
Author
Owner

🤖 AI Review (opencode-free via 9router)

Résumé (2 lignes)

Modification UI d'un champ texte dans CoverSourceRow pour un style plus compact et Material 3. Ajout de directives de workflow pour le test automatisé et la validation visuelle sur téléphone.

Problèmes

  1. Fichier docs/WORKFLOW.md : Diff affiché vide/incomplet (impossible de valider le contenu ajouté). Vérifier le merge.
  2. BasicTextField non importé : androidx.compose.foundation.text.BasicTextField utilisé en qualifié complet, ce qui fonctionne mais est inhabituel dans un codebase qui utilise déjà des imports. Aucun impact fonctionnel.
  3. surfaceContainerHigh : Assurer que le thème M3 du projet expose bien cette couleur (disponible depuis M3 1.1).

Suggestions

  1. Extraire Modifier.width(96.dp).height(38.dp) dans un Modifier commun si réutilisé.
  2. Ajouter @Preview pour CoverSourceRow avec splitMode = true/false afin de vérifier visuellement sans émulateur.
  3. Ajouter un test unitaire minimal : assert(splitMode) bloque bien le clickable (si splitMode est une donnée, un simple test de logique suffit).
  4. Valider que le Spacer(Modifier.width(2.dp)) est le bon espacement (penser à 8.dp grid Material 3).
  5. Envisager un OutlinedTextField custom au lieu de BasicTextField si un style Material 3 est souhaité (moins de code, natif M3).

Verdict : LGTM

<!-- ai-review --> ## 🤖 AI Review (`opencode-free` via 9router) ## Résumé (2 lignes) Modification UI d'un champ texte dans `CoverSourceRow` pour un style plus compact et Material 3. Ajout de directives de workflow pour le test automatisé et la validation visuelle sur téléphone. ## Problèmes 1. **Fichier `docs/WORKFLOW.md`** : Diff affiché vide/incomplet (impossible de valider le contenu ajouté). Vérifier le merge. 2. **`BasicTextField` non importé** : `androidx.compose.foundation.text.BasicTextField` utilisé en qualifié complet, ce qui fonctionne mais est inhabituel dans un codebase qui utilise déjà des imports. Aucun impact fonctionnel. 3. **`surfaceContainerHigh`** : Assurer que le thème M3 du projet expose bien cette couleur (disponible depuis M3 1.1). ## Suggestions 1. Extraire `Modifier.width(96.dp).height(38.dp)` dans un `Modifier` commun si réutilisé. 2. Ajouter `@Preview` pour `CoverSourceRow` avec `splitMode = true/false` afin de vérifier visuellement sans émulateur. 3. Ajouter un test unitaire minimal : `assert(splitMode)` bloque bien le `clickable` (si `splitMode` est une donnée, un simple test de logique suffit). 4. Valider que le `Spacer(Modifier.width(2.dp))` est le bon espacement (penser à `8.dp` grid Material 3). 5. Envisager un `OutlinedTextField` custom au lieu de `BasicTextField` si un style Material 3 est souhaité (moins de code, natif M3). ## Verdict : **LGTM**
Author
Owner

Hey @alexis — nice focused PR. The three BudgetScreen changes (conditional row click, custom text field, chip sizing) are clean and the WORKFLOW doc additions are well-structured.

🟢 The mandatory testing rule in docs/WORKFLOW.md (lines 121-127) is written as a numbered sub-list with concrete ADB commands, making it actionable rather than vague guidance.

Minor note (non-blocking): BudgetScreen.kt line 1532 uses a fully-qualified androidx.compose.foundation.text.BasicTextField instead of a top-level import. Works fine, just a style inconsistency with the rest of the file — low priority cleanup if you ever revisit.

Looks good to merge.

Hey @alexis — nice focused PR. The three BudgetScreen changes (conditional row click, custom text field, chip sizing) are clean and the WORKFLOW doc additions are well-structured. 🟢 The mandatory testing rule in `docs/WORKFLOW.md` (lines 121-127) is written as a numbered sub-list with concrete ADB commands, making it actionable rather than vague guidance. **Minor note (non-blocking):** `BudgetScreen.kt` line 1532 uses a fully-qualified `androidx.compose.foundation.text.BasicTextField` instead of a top-level import. Works fine, just a style inconsistency with the rest of the file — low priority cleanup if you ever revisit. Looks good to merge.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
alexis/demo_m3!14
No description provided.