- Biometric: persist preference to SecureStore so it survives restarts;
actually call LocalAuthentication.authenticateAsync() at startup and
block navigation behind a locked screen until the user authenticates
- Workflow run: remove silent error swallowing in triggerWorkflow so
failures surface as toasts; success snackbar only shown on API success
- Execution logs: add includeData=true to fetchExecutionById so n8n
returns node-level data and error messages instead of an empty object
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Config ciblée sur le backend n8n existant — juste le delta à appliquer.
Token requis uniquement hors LAN/IP fixe, LAN reste en accès direct.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- app.json : ajout projectId EAS, owner, permissions biométrie Android
- tsconfig.json : mise à jour de l'include par expo doctor
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
expo-linking, expo-constants, expo-splash-screen, react-native-web
et react-dom sont des dépendances requises par expo-router mais non
installées automatiquement avec npx expo install expo-router.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
EAS build ne trouvait pas babel-preset-expo car il n'était pas
déclaré dans package.json — seule sa présence transitive via expo
ne suffit pas pour npm ci en environnement EAS isolé.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
react-native-reanimated v4.x a extrait worklets dans un package
séparé react-native-worklets. Le plugin babel de reanimated le
cherche explicitement — le build EAS échouait avec ENOMODULE.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
npm ci sur EAS échouait car le lock file était généré avec
--legacy-peer-deps sans que .npmrc le propage. Ajout de
legacy-peer-deps=true dans .npmrc et régénération du lock file.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>