Commit Graph

44 Commits

Author SHA1 Message Date
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 f5fc51c156 fix: parsing XML CalDAV namespace-aware + fallback principal Nextcloud (principals/users/)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 08:05:28 +02:00
Gato e2085a8dc2 fix: FAB rond (CircleShape) + crash ajout tâche (projet Inbox absent + projectId vide)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 07:59:38 +02:00
Gato 6d5feacf45 fix: ajout du FAB + sur tous les écrans (absent de MainScreen.Scaffold)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 07:54:20 +02:00
Gato 0fd300ffdc fix: champ is_deleted manquant dans TaskEntity, ZoneOffset.UTC, sérialisation des labels, toolchain Kotlin 2.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 07:45:48 +02:00
Gato f308a9507d fix: compileSdk/targetSdk 35 + migration kotlinOptions → compilerOptions 2026-06-06 07:29:03 +02:00
Gato 2e59d54de6 feat: sauvegarde du compte CalDAV même si la connexion échoue, avec indicateur visuel 2026-06-06 07:18:34 +02:00
Gato dc6847d205 fix: thème XML android:Theme.Material.Light.NoActionBar (pas de dép externe) 2026-06-06 06:59:52 +02:00
Gato d2c07307c9 fix: thème XML AppCompat au lieu de Material3 (lib View absente des deps) 2026-06-06 06:59:52 +02:00
Gato 8fce0f2578 feat: [#30] export et backup des données (JSON et iCalendar)
- ExportManager : génère backup JSON (BackupPayload sérialisable) et .ics via VTodoGenerator
- FileProvider déclaré dans AndroidManifest + res/xml/file_paths.xml (cache/exports/)
- @Serializable ajouté sur Project, Task, BackendType, ViewStyle, SortBy, ItemType
- TaskRepository/Impl/Dao : ajout getAllTasks() pour export global
- SettingsViewModel : exportJson(), exportIcal(), clearExportUri()
- SettingsScreen : section Export & Backup avec partage via Intent.ACTION_SEND

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 06:55:49 +02:00
Gato 47aa839e3a feat: [#28][#29] écran paramètres (thème, sync, notifs, comptes CalDAV) + thème dynamique Material You piloté par DataStore 2026-06-06 06:55:49 +02:00
Gato ee1dac46cb feat: [#27] sync CalDAV en arrière-plan (WorkManager PeriodicWork, SyncScheduler, reprise au démarrage) 2026-06-06 06:55:49 +02:00
Gato 1316c6555b feat: [#26] filtres intelligents (Toutes, Terminées, Récurrentes, Priorités) + navigation Scheduled/Search/Filter/Labels 2026-06-06 06:39:14 +02:00
Gato 5d1c69484a feat: [#25] drag & drop dans la vue liste du projet (long-press handle, reorderTasks) 2026-06-06 06:39:10 +02:00
Gato 5fc6c8a3d4 feat: [#24] recherche globale (debounce 300ms, min 2 chars, live results) 2026-06-06 06:39:06 +02:00
Gato 1146b146c0 feat: [#23] vue Labels (toutes les tâches associées à un label) 2026-06-06 06:39:03 +02:00
Gato 86aab6c3da feat: [#22] vue Scheduled (tâches planifiées groupées par date : aujourd'hui, demain, cette semaine, plus tard) 2026-06-06 06:39:00 +02:00
Gato 8827c85c82 feat: [#22][#23][#24][#25][#26] extension TaskDao/Repository (scheduled, label, search, completed, repeating, priority, reorder) 2026-06-06 06:38:56 +02:00
Gato 53c597a365 feat: [#19][#20][#21] sync CalDAV initiale/incrémentale + CRUD distant (sync-token, REPORT, PUT, DELETE, EncryptedSharedPreferences) 2026-06-06 06:29:53 +02:00
Gato ab1e59b237 feat: [#18] parser et générateur VTODO (iCalendar RFC 5545, RRULE, CATEGORIES, RELATED-TO) 2026-06-06 06:28:38 +02:00
Gato 254efff4b3 feat: [#16][#17] client CalDAV OkHttp (PROPFIND/REPORT/PUT/DELETE) + découverte serveur CalDAV 2026-06-06 06:27:58 +02:00
Gato 933704ca91 feat: [#15] fiche projet (ProjectEditSheet + ProjectEditViewModel, couleurs, vue liste/tableau) 2026-06-06 06:20:19 +02:00
Gato 5049d4d681 feat: [#11] fiche tâche complète (TaskEditSheet + TaskEditViewModel + ReminderRepository) 2026-06-06 06:19:37 +02:00
Gato 6db1222ff7 feat: [#14] rappels et notifications locales (AlarmManager, BroadcastReceiver, ReminderPickerSheet) 2026-06-06 06:15:55 +02:00
Gato 0f1afda295 feat: [#13] priorités, labels, sous-tâches (PriorityPicker, LabelPicker, SubTaskSection, LabelRepository) 2026-06-06 06:12:32 +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 3ab7a48384 feat: [#9] vue Projet (ProjectScreen liste/board, ProjectViewModel, SectionRepository) 2026-06-06 06:06:05 +02:00
Gato 65a54af66a feat: [#8] vue Today (TodayScreen, TodayViewModel, groupement par projet) 2026-06-06 06:05:03 +02:00
Gato ce22d49824 feat: [#7] vue Inbox (InboxScreen, InboxViewModel, TaskRepositoryImpl) 2026-06-06 06:04:38 +02:00
Gato 38b96c0c72 feat: [#6] navigation principale (NavigationDrawer, NavHost, routes, DrawerViewModel) 2026-06-06 06:03:53 +02:00
Gato 4dfc224eb6 feat: [#10] composants UI réutilisables (TaskRow, PriorityBadge, DueDateChip, LabelChip, SectionHeader, EmptyState) 2026-06-06 06:02:50 +02:00
Gato c83a15c1b1 feat: [#5] base de données Room (entités, DAOs, AppDatabase, module Hilt) 2026-06-06 05:56:23 +02:00
Gato c5fffb93b4 feat: [#4] modèles de données du domaine (Task, Project, Section, Label, Source) 2026-06-06 05:55:12 +02:00
Gato b0b073c8ec feat: [#3] setup projet Android (Kotlin, Compose, Hilt, MVVM) 2026-06-06 05:54:24 +02:00