[UI mobile] Onglet "Paramètres d'application" #100

Merged
kyuno merged 1 commit from feat/mobile-app-settings into main 2026-09-07 17:40:03 +02:00
Owner

Contenu

Nouvelle route /parametres/application + entrée dans SETTINGS_ITEMS (partagée par le sidebar desktop et le "Plus" mobile). Thème et "rejouer un tutoriel" restent inchangés dans /parametres/preferences-utilisateur (décision explicite du chantier — hors scope ici).

Le contenu affiché diffère réellement selon la plateforme, pas par simple choix cosmétique — chaque moitié de la page est inerte sur l'autre plateforme, pas juste hors-sujet :

  • Version installée + "Vérifier les mises à jour" (natif seulement) : useAppUpdateCheck (déjà utilisé par la bannière silencieuse existante) gagne un checkNow() qui relance la même comparaison sans attendre le throttle de 6h, en réutilisant la logique existante plutôt qu'en la dupliquant (fetchLatestVersionResult extraite en fonction partagée par le check en tâche de fond et le déclenchement manuel). Nouveau hook useInstalledVersion (App.getInfo() natif, __APP_VERSION__ web).
  • "Toujours rester sur le site web" (web seulement, tout appareil) : pilote STAY_ON_WEB_PREFERENCE_KEY (déjà exporté par mobile-app-redirect.ts, ticket #84). Volontairement masqué côté natif : le WebView Capacitor tourne sur sa propre origine https://localhost, un localStorage totalement séparé de celui du vrai site web que lit attemptOpenNativeApp — modifier la préférence depuis l'app ne changerait donc jamais rien pour un visiteur mobile réel. Documenté explicitement dans le commentaire de la page pour ne pas réintroduire ce contrôle-fantôme plus tard.

Tests

  • Nouveau app-settings-page.cy.ts — contenu web (version affichée, section native absente) + persistance du toggle "stay on web" après reload.
  • sidebar.cy.ts étendu pour couvrir le nouveau lien.
  • Le déclenchement natif réel (App.getInfo(), l'appel réseau de checkNow) n'a pas de point d'entrée testable depuis un run Cypress web — même posture déjà acceptée pour useAppUpdateCheck/UpdateBanner (aucun des deux n'a de couverture e2e non plus) ; la logique de comparaison pure reste couverte par version-compare.cy.tsx, inchangé.
  • Suite complète : biome check, tsc -b --force, build, 146/146 e2e, 71/71 composants — tous verts.

Closes #86

🤖 Generated with Claude Code

## Contenu Nouvelle route `/parametres/application` + entrée dans `SETTINGS_ITEMS` (partagée par le sidebar desktop et le "Plus" mobile). Thème et "rejouer un tutoriel" restent inchangés dans `/parametres/preferences-utilisateur` (décision explicite du chantier — hors scope ici). Le contenu affiché diffère réellement selon la plateforme, pas par simple choix cosmétique — **chaque moitié de la page est inerte sur l'autre plateforme**, pas juste hors-sujet : - **Version installée + "Vérifier les mises à jour"** (natif seulement) : `useAppUpdateCheck` (déjà utilisé par la bannière silencieuse existante) gagne un `checkNow()` qui relance la même comparaison sans attendre le throttle de 6h, en réutilisant la logique existante plutôt qu'en la dupliquant (`fetchLatestVersionResult` extraite en fonction partagée par le check en tâche de fond et le déclenchement manuel). Nouveau hook `useInstalledVersion` (`App.getInfo()` natif, `__APP_VERSION__` web). - **"Toujours rester sur le site web"** (web seulement, tout appareil) : pilote `STAY_ON_WEB_PREFERENCE_KEY` (déjà exporté par `mobile-app-redirect.ts`, ticket #84). Volontairement masqué côté natif : le WebView Capacitor tourne sur sa propre origine `https://localhost`, un `localStorage` totalement séparé de celui du vrai site web que lit `attemptOpenNativeApp` — modifier la préférence depuis l'app ne changerait donc jamais rien pour un visiteur mobile réel. Documenté explicitement dans le commentaire de la page pour ne pas réintroduire ce contrôle-fantôme plus tard. ## Tests - Nouveau `app-settings-page.cy.ts` — contenu web (version affichée, section native absente) + persistance du toggle "stay on web" après reload. - `sidebar.cy.ts` étendu pour couvrir le nouveau lien. - Le déclenchement natif réel (`App.getInfo()`, l'appel réseau de `checkNow`) n'a pas de point d'entrée testable depuis un run Cypress web — même posture déjà acceptée pour `useAppUpdateCheck`/`UpdateBanner` (aucun des deux n'a de couverture e2e non plus) ; la logique de comparaison pure reste couverte par `version-compare.cy.tsx`, inchangé. - Suite complète : `biome check`, `tsc -b --force`, `build`, 146/146 e2e, 71/71 composants — tous verts. Closes #86 🤖 Generated with [Claude Code](https://claude.com/claude-code)
kyuno added 1 commit 2026-09-07 17:20:18 +02:00
feat(settings): onglet "Paramètres d'application" (#86)
Some checks failed
CI / lint (push) Successful in 2m54s
CI / build (push) Successful in 2m56s
CI / intent-service-test (push) Successful in 4m44s
CI / e2e (push) Successful in 9m40s
CI / test (push) Failing after 17m34s
CI / build-android (push) Has been skipped
e1589e63d0
Nouvelle route /parametres/application + entrée dans SETTINGS_ITEMS
(desktop et sheet mobile, un seul tableau partagé). Thème et "rejouer
un tutoriel" restent inchangés dans /parametres/preferences-utilisateur
(décision explicite du chantier).

Le contenu affiché diffère réellement selon la plateforme, pas par
simple choix cosmétique — chaque moitié de la page est inerte sur
l'autre plateforme, pas juste hors-sujet :

- Version installée + "Vérifier les mises à jour" (natif seulement) :
  useAppUpdateCheck (déjà utilisé par la bannière silencieuse
  existante) gagne un checkNow() qui relance la même comparaison sans
  attendre le throttle de 6h, réutilisant la logique existante plutôt
  que de la dupliquer (fetchLatestVersionResult extraite en fonction
  partagée). Nouveau hook useInstalledVersion (App.getInfo() natif,
  __APP_VERSION__ web).

- "Toujours rester sur le site web" (web seulement, tout appareil) :
  pilote STAY_ON_WEB_PREFERENCE_KEY (déjà exporté par
  mobile-app-redirect.ts, ticket #84). Volontairement masqué côté natif
  : le WebView Capacitor tourne sur sa propre origine https://localhost,
  un localStorage totalement séparé de celui du vrai site web que lit
  attemptOpenNativeApp — modifier la préférence depuis l'app ne
  changerait donc jamais rien pour un visiteur mobile réel. Documenté
  explicitement dans le commentaire de la page pour ne pas réintroduire
  ce contrôle-fantôme plus tard.

Couverture Cypress : nouveau app-settings-page.cy.ts (contenu web,
persistance du toggle après reload) ; sidebar.cy.ts étendu pour couvrir
le nouveau lien. Le déclenchement natif réel (App.getInfo(), l'appel
réseau de checkNow) n'a pas de point d'entrée testable depuis un run
Cypress web — même posture déjà acceptée pour useAppUpdateCheck/
UpdateBanner, la logique de comparaison pure reste couverte par
version-compare.cy.tsx (inchangé). Suite complète : biome check,
tsc -b --force, build, 146/146 e2e, 71/71 composants — tous verts.

Closes #86

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kyuno merged commit c82f0969a8 into main 2026-09-07 17:40:03 +02:00
Sign in to join this conversation.
No reviewers
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: kyuno/batchCooking#100
No description provided.