Skip to content

Page Notes (capture GTD) et lancement desktop en fenêtre-app - #28

Merged
SKOHscripts merged 1 commit into
mainfrom
feature/notes-capture-and-webapp-launch
Jul 23, 2026
Merged

Page Notes (capture GTD) et lancement desktop en fenêtre-app#28
SKOHscripts merged 1 commit into
mainfrom
feature/notes-capture-and-webapp-launch

Conversation

@SKOHscripts

Copy link
Copy Markdown
Owner

Summary

Fait de Kairos le point d'entrée unique de la méthode GTD, en deux volets liés par une même vision, plus un troisième volet support :

1. Page Notes — capture GTD (/kairos/notes)

  • Nouvelle entrée de navigation (topnav + bottom nav Android), positionnée entre Accueil et Jour — la capture précède la triage dans le flux GTD.
  • Capture en texte libre, sans friction : pas de priorité, pas de points, pas d'échéance à choisir sur le moment (Ctrl/Cmd+Entrée pour capturer sans lâcher le clavier).
  • Conversion en un clic : une note devient une tâche titre-seul, qui atterrit directement dans la boîte de réception « À traiter » de la vue Jour. La note d'origine est archivée et liée à la tâche créée (jamais supprimée), consultable dans une section repliée avec un lien de retour.
  • Édition inline (panneau flottant, même patron que l'édition de tâche existante), archivage sans conversion, suppression définitive.
  • Tout en AJAX sans rechargement de page (repli complet en redirection 303 sans JS, même contrat que la vue Jour existante).
  • Nouveau modèle Note (app/tasks_models.py), créé automatiquement en base au démarrage (pas de migration nécessaire, nouvelle table).

2. Lancement desktop en fenêtre-app

  • L'exécutable de bureau (Windows/Linux) s'ouvre désormais en fenêtre d'application (Chromium --app=URL, profil dédié isolé du profil personnel) plutôt qu'un onglet de navigateur classique — le ressenti d'une vraie application de bureau.
  • Forcé par défaut, sans réglage, avec repli automatique et silencieux vers l'ancien comportement (onglet du navigateur par défaut) si aucun navigateur de la famille Chromium (Chrome, Edge, Brave, Vivaldi...) n'est détecté, ou si son lancement échoue pour n'importe quelle raison.
  • Nouveau module dédié app/desktop_browser.py (logique pure, testable indépendamment d'uvicorn/threading/verrou de fichier).
  • Override KAIROS_BROWSER disponible pour forcer un binaire précis (tests/CI, utilisateur avancé).

3. Icône répercutée sur la fenêtre-app

  • packaging/make_icon.py étendu pour générer static/icon-192.png, static/icon-512.png, static/apple-touch-icon.png depuis le même dessin que l'icône .ico existante.
  • Nouveau static/manifest.webmanifest (PWA standard, display: standalone).
  • templates/base.html référence ces assets — embarqués automatiquement par les trois cibles de packaging (dev, PyInstaller desktop, APK Android) sans changement de configuration, static/ étant copié à l'identique partout.

Documentation tracée dans docs/spec/ conformément au workflow spec-first du dépôt : nouveau docs/spec/notes-capture.md (besoin métier + solution technique), mise à jour de accueil-navigation.md (6ᵉ entrée nav), modele-donnees.md (entité Note), packaging-lancement.md (mode app + repli + assets icône), vue-jour-gtd.md (référence croisée).

Méthode : implémenté en 3 volets parallélisés (agents sonnet/haiku sur des fichiers disjoints, worktrees isolés) puis intégré, relu et complété (le panneau d'édition inline des notes manquait à l'intégration — ajouté avec sa couverture de tests avant ce commit).

Test plan

  • pytest (suite complète, 434 tests) — vert
  • Vérification manuelle bout-en-bout (uvicorn local) : capture d'une note (apparition immédiate sans rechargement), édition inline (panneau flottant), conversion en tâche (apparition dans la boîte de réception de la vue Jour, note archivée + lien), archivage, suppression
  • Captures Playwright desktop (1280px) et mobile (393px) : mise en page cohérente avec le reste de l'app, aucun débordement
  • Nav : entrée active uniquement sur /kairos/notes, présente et inactive ailleurs
  • Assets icône : PNG valides (dimensions correctes), manifest.webmanifest JSON valide
  • Lancement réel en fenêtre-app (--app=) et repli — nécessite un poste desktop Windows/Linux avec/sans navigateur Chromium installé, non exécutable dans le sandbox de développement (la détection/le repli sont couverts par les tests unitaires avec sys.platform/shutil.which simulés)

🤖 Generated with Claude Code


Generated by Claude Code

…e-app

Fait de Kairos le point d'entrée unique de la méthode GTD : une nouvelle
page /kairos/notes (entre Accueil et Jour dans la navigation) capture des
idées en texte libre, sans friction, avant toute décision de priorité ou
d'échéance. Chaque note se convertit en un clic en tâche titre-seul, qui
atterrit dans la boîte de réception « À traiter » de la vue Jour ; la note
d'origine est archivée et liée (jamais supprimée), consultable dans une
section repliée avec un lien vers la tâche créée. Capture, édition inline
et actions se font en AJAX sans rechargement de page (repli complet en
303 sans JS, même contrat que la vue Jour).

En parallèle, l'exécutable de bureau (Windows/Linux) s'ouvre désormais en
fenêtre d'application (Chromium --app=URL, profil dédié) plutôt qu'un
onglet de navigateur classique, avec repli automatique et silencieux sur
l'ancien comportement si aucun navigateur de la famille Chromium n'est
installé — aucun réglage, aucune option à activer. L'icône Kairos est
répercutée sur cette fenêtre via un manifest web app + des PNG générés
depuis packaging/make_icon.py, embarqués par les trois cibles de packaging
sans changement de configuration.

Implémenté en 3 volets parallélisés (agents sonnet/haiku, fichiers
disjoints) puis intégré : page Notes, lancement fenêtre-app, assets icône.
Documentation tracée dans docs/spec/ (nouveau notes-capture.md, mise à
jour de accueil-navigation.md/modele-donnees.md/packaging-lancement.md/
vue-jour-gtd.md) conformément au workflow spec-first du dépôt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012rz3jgonqVHP4fzQsJh8oP
@SKOHscripts
SKOHscripts marked this pull request as ready for review July 23, 2026 06:19
@SKOHscripts
SKOHscripts merged commit b362fda into main Jul 23, 2026
1 check passed
@SKOHscripts
SKOHscripts deleted the feature/notes-capture-and-webapp-launch branch July 23, 2026 06:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants