Dernière étape du portage mobile #39 : génère et versionne le projet natif Android (`npx cap add android`) que les phases 1 à 3 (jeton Bearer, passe responsive, plomberie web) préparaient déjà. - `apps/web/android/` — projet natif Capacitor 8.5. Permission `INTERNET` présente par défaut, `applicationId` = `fr.kyuno.batchcooking`. - Thème natif aligné sur la palette « Mise en Place » (`_theme.scss`) : `colors.xml` redéfinit `colorPrimary`/`Dark`/`Accent` (basilic/vermillon) par-dessus les défauts Material de la lib capacitor-android ; barre de statut basilic foncé, fond de fenêtre « porcelaine » pour ne pas flasher blanc au démarrage à froid ; `postSplashScreenTheme` pour la transition. - Icône adaptative + splash (clair et sombre, toutes densités) générés depuis `apps/web/assets/logo.svg` (monogramme « bC », géométrie seule, pas de `<text>`) via `@capacitor/assets` ; sources et commande de régénération documentées dans `apps/web/assets/README.md`. `@capacitor/assets` n'est pas ajouté aux dépendances (il tire `sharp`, hors `onlyBuiltDependencies`) — lancé via `npx`. - `.gitignore` racine : ignore `/.idea/` (Android Studio ouvre désormais le dépôt comme projet). `biome.json` : exclut `apps/web/android` du lint. - README : section « Application mobile (Android) » (prérequis + flux de build `build:capacitor` → `cap sync` → Android Studio). Le bundle web copié sous `android/app/src/main/assets/public/` reste git-ignoré (régénéré par `pnpm build:capacitor && npx cap sync android`). Build de l'APK + test sur appareil : à finir dans Android Studio — la CI self-hosted ne build pas Android. Vérifs : `pnpm build` + `pnpm lint` OK ; `npx cap sync android` OK ; tous les XML natifs bien formés. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
65 lines
1.4 KiB
JSON
65 lines
1.4 KiB
JSON
{
|
|
"$schema": "https://biomejs.dev/schemas/2.5.9/schema.json",
|
|
"vcs": {
|
|
"enabled": true,
|
|
"clientKind": "git",
|
|
"useIgnoreFile": true
|
|
},
|
|
"files": {
|
|
"ignoreUnknown": false,
|
|
"includes": [
|
|
"**",
|
|
"!**/dist",
|
|
"!**/coverage",
|
|
"!**/node_modules",
|
|
"!**/.pnpm-store",
|
|
"!**/cypress/videos",
|
|
"!**/cypress/screenshots",
|
|
"!apps/web/android"
|
|
]
|
|
},
|
|
"formatter": {
|
|
"enabled": true,
|
|
"indentStyle": "space",
|
|
"indentWidth": 2,
|
|
"lineWidth": 100
|
|
},
|
|
"assist": { "actions": { "source": { "organizeImports": "on" } } },
|
|
"linter": {
|
|
"enabled": true,
|
|
"rules": {
|
|
"preset": "recommended",
|
|
"complexity": {
|
|
"noUselessCatch": "off"
|
|
},
|
|
"nursery": {
|
|
"noFloatingPromises": "error"
|
|
},
|
|
"style": {
|
|
"noNonNullAssertion": "warn",
|
|
"useConsistentArrayType": {
|
|
"level": "error",
|
|
"options": { "syntax": "shorthand" }
|
|
},
|
|
"useConsistentTypeDefinitions": {
|
|
"level": "error",
|
|
"options": { "style": "interface" }
|
|
}
|
|
},
|
|
"suspicious": {
|
|
"noConsole": {
|
|
"level": "error",
|
|
"options": { "allow": ["error", "warn", "info", "debug", "table", "assert"] }
|
|
},
|
|
"noExplicitAny": "error"
|
|
}
|
|
}
|
|
},
|
|
"javascript": {
|
|
"formatter": {
|
|
"quoteStyle": "double",
|
|
"semicolons": "always",
|
|
"trailingCommas": "all"
|
|
}
|
|
}
|
|
}
|