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>
This commit is contained in:
2026-06-06 08:46:35 +02:00
parent 93a26722d8
commit 47808b2255
14 changed files with 757 additions and 483 deletions
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="48"
android:viewportHeight="56">
<!-- Pot (trapezoid) -->
<path
android:fillColor="#C05621"
android:pathData="M14,56 L16,49 L32,49 L34,56 Z"/>
<!-- Pot rim (rounded rect x=12 y=45 w=24 h=5 rx=2) -->
<path
android:fillColor="#9C4221"
android:pathData="M14,45 L34,45 A2,2 0 0,1 36,47 L36,48 A2,2 0 0,1 34,50 L14,50 A2,2 0 0,1 12,48 L12,47 A2,2 0 0,1 14,45 Z"/>
<!-- Trunk -->
<path
android:fillColor="#00000000"
android:strokeColor="#744210"
android:strokeWidth="4"
android:strokeLineCap="round"
android:pathData="M24,45 C24,39 22,33 20,27 C18,22 19,17 22,13"/>
<!-- Branch right -->
<path
android:fillColor="#00000000"
android:strokeColor="#744210"
android:strokeWidth="2.5"
android:strokeLineCap="round"
android:pathData="M21,28 C26,25 31,22 33,18"/>
<!-- Branch left -->
<path
android:fillColor="#00000000"
android:strokeColor="#744210"
android:strokeWidth="2"
android:strokeLineCap="round"
android:pathData="M20,35 C15,32 11,28 10,24"/>
<!-- Foliage left (cx=10 cy=21 r=9) -->
<path
android:fillColor="#276749"
android:pathData="M1,21 a9,9 0 1,0 18,0 a9,9 0 1,0 -18,0"/>
<!-- Foliage right (cx=34 cy=16 r=10) -->
<path
android:fillColor="#276749"
android:pathData="M24,16 a10,10 0 1,0 20,0 a10,10 0 1,0 -20,0"/>
<!-- Foliage top center (cx=22 cy=11 r=11) -->
<path
android:fillColor="#2F855A"
android:pathData="M11,11 a11,11 0 1,0 22,0 a11,11 0 1,0 -22,0"/>
<!-- Foliage overlap highlight (cx=26 cy=17 r=8) -->
<path
android:fillColor="#38A169"
android:pathData="M18,17 a8,8 0 1,0 16,0 a8,8 0 1,0 -16,0"/>
<!-- Foliage small accent (cx=18 cy=16 r=6) -->
<path
android:fillColor="#48BB78"
android:pathData="M12,16 a6,6 0 1,0 12,0 a6,6 0 1,0 -12,0"/>
</vector>
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<solid android:color="#F0FFF4" />
</shape>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
<foreground android:drawable="@drawable/ic_bonsai_foreground" />
</adaptive-icon>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
<foreground android:drawable="@drawable/ic_bonsai_foreground" />
</adaptive-icon>
+3
View File
@@ -0,0 +1,3 @@
<resources>
<string name="app_name">BonsaiTask</string>
</resources>