batchCooking/apps/web/src
Nicolas d6cf4aa63d
Some checks failed
CI / lint (push) Successful in 3m35s
CI / build (push) Successful in 4m33s
CI / intent-service-test (push) Successful in 4m43s
CI / e2e (push) Successful in 15m5s
CI / test (push) Failing after 15m28s
CI / build-android (push) Has been skipped
feat(mobile): redirection vers l'appli + page de telechargement
Ticket #84 du chantier UI mobile & tablette. Aucune infra de deep-link
n'existait (verifie en amont : pas de scheme personnalise, pas d'App
Links, pas d'assetlinks.json, pas de listener appUrlOpen).

- lib/mobile-app-redirect.ts : attemptOpenNativeApp() (pattern "smart
  app banner" classique - tente le scheme batchcooking://, bascule sur
  onFallback si la page est toujours visible passe un court delai) et
  isAndroidPhoneBrowser() (UA Android+Mobile, deliberement distinct de
  useIsMobileViewport() - une question de plateforme, pas de largeur).
  Respecte une preference "rester sur le web" (localStorage, cle
  exportee pour que l'onglet Parametres d'application - ticket #86 -
  la reutilise) sans jamais forcer la redirection.
- AndroidManifest.xml : nouvel intent-filter additif (scheme
  batchcooking, sans toucher au filtre MAIN/LAUNCHER existant).
- Nouvelle page /telecharger (publique, hors RequireAuth - un visiteur
  deja connecte sur le web mais sans l'appli sur cet appareil a une
  raison legitime d'y atterrir) : lien direct vers le proxy existant
  ${API_BASE_URL}/mobile/download (rien a changer cote API), bouton
  "reessayer d'ouvrir l'appli".

Deliberement pas de changement sur la landing page ici (lien discret
actuel laisse tel quel) - c'est le ticket #85, separe pour rester
petit/revuable.

Verifie en local : tsc -b --force, biome check, build de prod, suite
Cypress e2e complete (141/141 sur cette branche - #91 n'est pas encore
merge, layout.cy.ts y est donc encore dans son etat pre-#91) et
composants (69/69, incluant le nouveau mobile-app-redirect.cy.tsx).
Note technique : le premier essai de test du composant tentait un vrai
window.location.href vers le scheme personnalise depuis Cypress/
Electron, ce qui bloquait le runner indefiniment (protocole inconnu
mal gere par Electron) - corrige en rendant ce seul appel injectable
(openAppUrl, reserve aux tests) sans toucher au comportement reel.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-07 12:20:16 +02:00
..
api feat(mobile): proxie le telechargement de l'APK via l'API (pas de CORS) 2026-09-06 23:40:06 +02:00
components/ui feat(web): passe responsive téléphone pour le contenu des pages (#39 phase 3) 2026-09-06 03:24:13 +02:00
features feat(mobile): proxie le telechargement de l'APK via l'API (pas de CORS) 2026-09-06 23:40:06 +02:00
i18n Centralize error handling + code quality pass (comments, SCSS theming) (#7) 2026-08-16 18:40:53 +02:00
layouts fix(auth): la deconnexion retombe sur / plutot que /login 2026-09-06 23:59:18 +02:00
lib feat(mobile): redirection vers l'appli + page de telechargement 2026-09-07 12:20:16 +02:00
locales/fr feat(mobile): redirection vers l'appli + page de telechargement 2026-09-07 12:20:16 +02:00
pages feat(mobile): redirection vers l'appli + page de telechargement 2026-09-07 12:20:16 +02:00
services Centralize error handling + code quality pass (comments, SCSS theming) (#7) 2026-08-16 18:40:53 +02:00
styles chore(web): session de polish global — version, checkbox, danger zone, icônes (#20) 2026-08-18 20:52:12 +02:00
App.tsx feat(mobile): redirection vers l'appli + page de telechargement 2026-09-07 12:20:16 +02:00
main.tsx feat(web): moteur de tutoriel guidé driver.js (#42) 2026-09-06 06:17:06 +02:00
vite-env.d.ts chore(web): session de polish global — version, checkbox, danger zone, icônes (#20) 2026-08-18 20:52:12 +02:00