- lab-timing.js : computeRegimeStartMs — le régime courant = séquence
terminale de doses à (ester effectif, dose, écart inter-doses) constants
(écart comparé EXACTEMENT) : tout changement récent de dose/ester/
posologie réinitialise la stabilisation. L'ancien proxy (1ʳᵉ dose du
traitement) disait « stabilisée depuis février » malgré des changements
récents (remontée v1.8.0). L'encart porte l'ESTER EFFECTIF de la
dernière dose (override compris).
- home.js : encart « Prochaine prise de sang (suggestion) » sur l'ACCUEIL
(demande) — creux daté + créneau associé + mention de stabilisation
seulement si le régime n'était pas déjà stable.
- 3 nouveaux tests miroirs (155 verts) : dose/intervalle/ester → reset
épinglé. WEB_VERSION 1.8.1. CHANGELOG [1.8.1], README.
- js/pk/lab-timing.js : miroir fidèle de pk/LabTiming.kt — creux prévisionnel
(minimum de la courbe E2 entre 2 injections), saut au premier creux
STABILISÉ (5 × t½ terminale : TFS/WHS analytiques, Estrannaise lue dans
la table via le nouveau pkProfileStore.terminalHalfLifeDays — refactor
de la pente d'extrapolation de sample(), zéro duplication), filtres
honnêtes (injectable actif + Posologie requis, creux ≥ now+6 h et jamais
déjà mesuré, horizon borné → null), shouldSuggestPosology (invite quand
un injectable actif est sans Posologie — demande v1.8.0).
- labs.js : encart « Prochaine prise de sang (suggestion) » ou invite,
mutuellement exclusifs (miroir carte Android).
- i18n FR/EN (labrec_*), WEB_VERSION 1.8.0, assertions E2E.
- tests/lab-timing.test.js : 7 tests miroirs (152 verts au total) + E2E
(encart rendu : titre, creux daté, créneau, stabilisation).
- Doc : §4 arbre, §8 suite + E2E, CHANGELOG [1.8.0], README.