feat(setup): repare les gaps wizard UX W-1 a W-4#107
Merged
Destynova2 merged 6 commits intodevelopfrom Apr 9, 2026
Merged
Conversation
added 6 commits
April 10, 2026 00:22
Apres `grob setup`, l'etape OAuth Anthropic n'etait pas declenchee — un `grob exec -- claude` ulterieur tombait en 502 "no token" parce que le token store restait vide. La correction appelle `auth::auto_flow` en chaine directement a la fin du wizard quand stdin est un TTY, pour que le cold install (brew → setup → exec) marche sans etape manquante. Le helper importe la fonction existante sans la modifier (zone sensible auth 3/3). Non-interactif (CI, tests, pipes) : court-circuit silencieux.
Le wizard forcait un `[[providers]]` OpenRouter herite du preset meme quand l'utilisateur n'en voulait pas, ce qui declenchait au demarrage un warning fantome `$OPENROUTER_API_KEY not set — provider 'openrouter' disabled`. Un nouveau prompt `Aucun / OpenRouter / Gemini / Custom` est desormais toujours affiche, et choisir `Aucun` retire le provider fallback et les `[[models.mappings]]` qui le referencaient avant l'ecriture du fichier. Un snapshot insta (`w2_perf_preset_without_fallback`) ancre le TOML resultant pour bloquer toute future regression du stripping, plus un test unitaire no-op verifie qu'un config sans fallback reste intact. `--yes` bascule sur `None` pour que le cold install ne ramene plus de warning tant que l'utilisateur n'a pas saisi la cle.
Les paliers fixes `$50/$200/custom` forcaient l'utilisateur a un choix pre-decide. Le wizard demande desormais `[1] Illimite / [2] Saisir un montant` et, sur `[2]`, collecte un montant plus une devise (defaut USD, avec USD/EUR/GBP reconnus). Le recap affiche la devise choisie mais le fichier persiste toujours sur `[budget] monthly_limit_usd` parce que grob ne fait pas de forex. Deux tests unitaires : `parse_currency` (cases / defaut / inconnu) et un patch TOML qui garantit que le schema persiste bien `monthly_limit_usd` + `warn_at_percent`, la cle lue par le serveur MCP.
Intercepte `grob -- <cmd>` avant clap et suggere `grob exec -- <cmd>` au lieu d'une erreur generique. Retire le raccourci silencieux trailing_cmd qui masquait l'intention de l'utilisateur.
Le helper qui chaine l'OAuth auto_flow apres le wizard gatait seulement sur IsTerminal(stdin). Un user qui fait `grob setup --yes` depuis un TTY (laptop dev, brew install interactif) tombait quand meme dans le flux OAuth interactif, contraire a la semantique de --yes (skip tous les prompts). Ajoute un early-return sur flags.yes avant le check TTY. Review W-1.
Le tableau etait dans l'ordre historique d'ajout dans Commands, ce qui rend l'audit manuel vs l'enum plus difficile. Tri alphabetique pour faciliter la verification de sync future. Review W-4.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resume
Corrige les 4 gaps UX critiques du wizard detectes avant le sprint.
Commits
W-1
e0a8fa6 feat(setup): chaine l'OAuth auto_flow dans le wizardApres le wizard, un nouveau helper
chain_auto_flow()(danssrc/commands/setup.rs) appelle les fonctions publiquescrate::auth::auto_flow::detect_credentials()+run_interactive_flow()pour enclencher immediatement les flows OAuth manquants. Plus besoin de relancergrob authmanuellement apres un cold install. Ne modifie PASsrc/auth/auto_flow.rs(pur call-site).W-2
2e8ffa4 feat(setup): rend le fallback provider opt-inLe preset
perfne force plus un provider fallback par defaut. Nouveau test snapshotw2_perf_preset_without_fallback. L'utilisateur doit explicitement opt-in via le wizard.W-3
ff45945 feat(setup): permet de saisir un budget cap libreLe wizard accepte maintenant une valeur libre pour le budget cap (helper
parse_currency+budget_patch), au lieu d'imposer un menu de choix predefinis.W-4
2fd47d7 feat(cli): affiche un hint pour grob -- claude sans execNouveau guard
detect_bare_trailing_cmddanssrc/cli/args.rs: quand l'utilisateur tapegrob -- claudeau lieu degrob exec -- claude, un hint explicite est affiche (8 tests).Tests locaux
cargo test --lib commands::setup::: 4 ok (W-2 strip_fallback x2, W-3 parse_currency + budget_patch)cargo test --lib cli::args::: 8 ok (W-4 detect_bare_trailing x8)cargo test --test lib unit::setup_wizard_test: 1 ok (W-1 test_w1_cold_install_chains_to_auto_flow)cargo fmt+cargo clippy --all-features -D warnings: cleanprekpre-push (test/doc/audit/deny/doc-coverage) : tous vertsFichiers touches
src/commands/setup.rssrc/cli/args.rssrc/main.rstests/unit/setup_wizard_test.rstests/unit/mod.rssrc/commands/snapshots/...w2_perf_preset_without_fallback.snapZone sensible
W-1 n'a pas touche
src/auth/auto_flow.rs. Le chainage passe par un wrapperchain_auto_flow()danssrc/commands/setup.rsqui importe les fonctions publiques existantes.git diff --stat src/auth/est vide. Le quorum 3/3 sur la zone sensiblesrc/auth/**ne s'applique donc pas a ce merge.Post-merge
/cli-audit-wizard(seuil 8/10) sera execute apres merge.