Commit graph

10 commits

Author SHA1 Message Date
eb1f626d17 fix : le premier membre qui rejoint une classe devient admin
- joinClass : si aucun admin 'réel' (is_creator=0) n'existe, le nouveau membre est admin
- Seed : ne crée plus de membre admin — la première personne qui rejoint gère la classe
- Régression : 'Mathis' rejoignant TERMS2 devient admin au lieu d'élève
- v0.4.1
2026-10-04 21:38:47 +02:00
0cc4b9841a fix : rejoindre avec un pseudo existant reconnecte ce membre au lieu d'en créer un doublon
- joinClass vérifie si un membre porte déjà ce pseudo dans la classe
- Si oui : nouveau jeton + retourne le rôle existant (admin conservé)
- Si non : création d'un nouvel élève
- L'admin peut se reconnecter avec son pseudo pour retrouver ses droits
2026-10-04 21:25:42 +02:00
bf22f65f91 fix : service worker qui causait un écran blanc après mise à jour
- SW v3 : network-first sur index.html (plus de cache périmé)
- Assets versionnés (hash) : cache-first
- index.html : auto-update du SW + rechargement quand une nouvelle version prend le contrôle
- Résout le 'Unable to open asset URL' (référence à un JS/CSS qui n'existe plus)
2026-10-04 20:45:05 +02:00
3ecd57119f fix : mise à jour in-app sans quitter l'application
- @capacitor/filesystem : téléchargement natif de l'APK (OkHttp)
- @capawesome-team/capacitor-file-opener : ouverture de l'installateur Android
- L'APK est écrit dans le cache de l'app puis ouvert via un Intent natif
- Plus de passage par le navigateur — tout se passe dans l'app
- file_paths.xml mis à jour pour couvrir le cache
2026-10-04 20:35:35 +02:00
208ece19fc bump APP_VERSION to 0.4.0 2026-10-04 20:05:47 +02:00
4e9b820686 v0.4.0 — gestion des admins (promotion / rétrogradation)
- DB : colonne is_creator sur members + migration automatique
- API : GET /api/config/members (liste admin), PATCH /api/config/members/:id (rôle)
- Règles : créateur non rétrogradable, admin non auto-rétrogradable, dernier admin protégé
- Front : panneau 'Membres de la classe' dans l'onglet Plus (admin)
- Chaque membre affiche son badge (Créateur / Admin / Élève) + boutons promote/demote
2026-10-04 17:46:12 +02:00
a7c4740d02 docs : procédure de mise à jour in-app, config admin, accès externe, PWA iOS 2026-10-04 17:32:34 +02:00
90adee1eae v0.3.0 — mise à jour in-app pour Android
- Server : GET /api/version (version + APK URL + taille), GET /download/latest.apk
- Server : releases/latest.apk servi avec Content-Type APK
- Web : checkForUpdate() compare version locale vs serveur au démarrage
- Web : modale de mise à jour (télécharger + installer, ou plus tard)
- Web : version affichée dans l'onglet Plus
- Vite : __APP_VERSION__ injecté au build depuis shared/APP_VERSION
- Workflow : bump APP_VERSION → build APK → copier vers server/releases/latest.apk
2026-10-04 17:18:48 +02:00
246f989bdc v0.2.0 — config admin (météo forcée, flash info, édition classe) + PWA
- DB : table day_weather (override admin par jour), flash_message sur classes
- API : PUT/DELETE /api/config/day-weather, PUT /api/config/flash, PATCH /api/config/class
- SSE : day_weather.updated/deleted, flash.updated, class.updated
- Front : bandeau flash info, indicateur 'forcé' sur la frise, modale météo admin
- Onglet Plus : panneau admin (flash info + édition classe), tout admin modifiable
- PWA : manifest.webmanifest, service worker, meta Apple, icônes 192/512
- Web version accessible sur iOS via Safari (Ajouter à l'écran d'accueil)
2026-10-04 17:05:56 +02:00
6d154ed5fb Météo Exam v0.1.0 — calendrier des évaluations en bulletin météo
- API Express + SQLite : classes, évaluations, SSE, auth Bearer
- Front Vite + TS + Tailwind : frise 7 jours, Exam Cards, modales
- Capacitor Android : APK debug, CapacitorHttp natif
- Seed : classe Terminale S2 (code TERMS2)
2026-10-02 19:51:13 +02:00