Commit Graph

16 Commits

Author SHA1 Message Date
Gato 38df116328 fix: suppression de la contrainte FK tasks→projects (DB v3)
La contrainte FOREIGN KEY sur tasks.project_id causait des crashs
systématiques dans une app sync-first où les projets et tâches arrivent
de l'API sans garantie d'ordre strict. La cohérence est gérée côté
serveur Bonsai ; inutile de la dupliquer en base locale.
fallbackToDestructiveMigration() recrée la DB proprement au démarrage.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 10:08:11 +02:00
Gato 4d59f371ac fix: crash SQLiteConstraintException lors de la sync Bonsai
- BonsaiApiClient : optLong/optString avec fallback pour éviter JSONException
  si l'API omet projectId, type, status ou priority dans la réponse
- BonsaiSyncManager : enveloppe sync() dans runCatching pour ne jamais
  propager d'exception non gérée ; chaque insert de tâche est aussi isolé
  pour que les erreurs individuelles ne bloquent pas toute la sync

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 09:54:10 +02:00
Gato 221cf4f80d fix: crash FOREIGN KEY lors de la création de tâche avant sync
Si les projets ne sont pas encore en base Room au moment de l'insertion
(première connexion, sync en cours), vérifie que le projet existe avant
d'insérer la tâche localement. Sinon, déclenche une sync — la tâche est
déjà créée sur l'API et apparaîtra après rafraîchissement.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 09:46:42 +02:00
Gato b268fc13c5 chore: client Keycloak bonsai-android (client public dédié mobile)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 09:35:50 +02:00
Gato ee67139b04 feat: connexion ROPC — formulaire natif sans redirection Keycloak
Remplace le flux PKCE/Custom Tab par un formulaire username/password
natif qui appelle directement le token endpoint Keycloak (grant_type=password).
Le token et le refresh token sont stockés dans EncryptedSharedPreferences.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 09:30:44 +02:00
Gato d099fc7da7 feat: authentification PKCE Keycloak au démarrage de l'application
Remplace le password grant par Authorization Code + PKCE via Custom Tab.
L'utilisateur est redirigé vers Keycloak à l'ouverture si non connecté,
le token est stocké dans EncryptedSharedPreferences et rafraîchi automatiquement.
Le deep link com.planify.mobile://auth/callback capture le code de retour.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 09:24:58 +02:00
Gato b08ceb5574 feat: adapter le thème Material3 à la palette visuelle Bonsai
Remplace les couleurs dynamiques Android 12+ et le schéma Material3
par défaut par la palette extraite du webapp Bonsai (bleu #2563eb,
fond #f9fafb, surface blanche, contours gris). Ajoute la typographie
complète (13 styles) et renomme les libellés "Planify" en "BonsaiTask".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 09:04:45 +02:00
Gato 1dcfb0f525 fix: icône bonsai agrandie pour remplir la safe zone adaptive icon (v0.0.6)
Reporte les coordonnées SVG dans un viewport 108×108 avec scale ×1.286,
centré dans la safe zone (18–90). Background blanc pur.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 08:55:59 +02:00
Gato 47808b2255 feat: pivot vers Bonsai API — authentification Keycloak + sync issues/milestones
- Renomme l'appli en BonsaiTask
- Remplace CalDAV par l'intégration Bonsai API (REST + JWT Keycloak)
- BonsaiAuthManager : login user/password via password grant Keycloak
- BonsaiApiClient : GET projects/issues(Task)/milestones, POST/PUT/DELETE issues
- BonsaiSyncManager : sync API → Room (issues=tâches, milestones=labels)
- Settings : formulaire de connexion Bonsai remplace la gestion CalDAV
- TaskEditViewModel : création/édition poussée vers l'API Bonsai
- Icône Bonsai (VectorDrawable) + fond vert clair
- BackendType.BONSAI ajouté
- v0.0.5

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 08:46:35 +02:00
Gato 93a26722d8 fix: connexion Nextcloud en utilisant le chemin CalDAV direct
Pour Nextcloud, bypass la chaîne PROPFIND (principal → calendar-home)
et accède directement à $baseUrl/calendars/$username/ conformément à
la doc officielle Nextcloud. Ajoute les codes HTTP dans les messages
d'erreur de la discovery générique pour faciliter le debug.

v0.0.4

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 08:26:34 +02:00
Gato 0c00d7d5b0 feat: icône Planify (SVG → PNG adaptatif toutes densités) v0.0.3
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 08:15:57 +02:00
Gato 98b08f0219 fix: CalDAV Nextcloud — fallback principals/users/ pour calendar-home-set (v0.0.2)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 08:12:12 +02:00
Gato f038dbe0ee feat: version v0.0.1 affichée en bas du drawer (BuildConfig.VERSION_NAME)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 08:09:54 +02:00
Gato f308a9507d fix: compileSdk/targetSdk 35 + migration kotlinOptions → compilerOptions 2026-06-06 07:29:03 +02:00
Gato 520971ccaa feat: [#12] dates d'échéance, récurrence (DueDatePickerSheet, RecurrencePickerSheet, RRuleBuilder, @Serializable) 2026-06-06 06:11:02 +02:00
Gato b0b073c8ec feat: [#3] setup projet Android (Kotlin, Compose, Hilt, MVVM) 2026-06-06 05:54:24 +02:00