widget - afficher sous-taches est tres lents #71
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/simpl-liste#71
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
Quand l'utilisateur tape sur le bouton « expand » d'une tache dans le widget Android pour voir ses sous-taches, l'operation prend plusieurs secondes. Les sous-taches sont deja prechargees dans
widget:state(cf.widgetSync.ts:176-186) — la lenteur n'est donc pas due a un fetch SQLite a chaud.Trois sources de latence possibles :
Travail a faire
console.time/timeEndautour de chaque etape du handlerTOGGLE_EXPAND(entree handler,getWidgetState(), mutation,setWidgetState(),renderWithState()). Lancer un build dev sur appareil reel, taper expand, lire les logs viaadb logcat. Confirmer ou va le temps.TOGGLE_EXPAND,TOGGLE_COMPLETE,TOGGLE_SUBTASK) — appelerrenderWithState/renderWidgetAVANT leawait setWidgetState()(write async non-bloquant pour le rendu). Evaluer si le debounce 2s peut tomber a 300-500ms.Fichiers concernes
src/widgets/widgetTaskHandler.ts— instrumentation Phase 1 + render optimiste Phase 2 (handlersTOGGLE_EXPANDligne 83-105,TOGGLE_COMPLETEligne 65-81,TOGGLE_SUBTASKligne 107-133)src/services/widgetSync.ts— eventuellement separerexpandedTaskIdsdans son propre key AsyncStorage si Phase 2 montre que la serialisation JSON est le bottleneckSurface de test
src/widgets/**n'a pas de tests)Options
Option A — Quick win : render optimiste sur les 3 TOGGLE_*
await setWidgetState), pas de risque de regression sur le format de stockageOption B — Split state :
widget:expandedsepare duwidget:stateOption C — Non actionnable cote JS : cold start OS
Criteres d'acceptation
Complexite estimee
Medium — Phase 1 (mesure) est simple. Phase 2 depend des resultats : Option A est simple, Option B est medium.
Decisions