Skip to content

Release/0.5.2#296

Merged
bbstudioapp merged 6 commits into
mainfrom
release/0.5.2
May 31, 2026
Merged

Release/0.5.2#296
bbstudioapp merged 6 commits into
mainfrom
release/0.5.2

Conversation

@bbstudioapp
Copy link
Copy Markdown
Owner

No description provided.

Les axes gorgeCrossingsBpm{Throat,Full} n'avaient pas de cas dans
_fromOf/_toOf → ch.to == null. Le contrôleur incrémente le compteur de
franchissements sur e.to == ch.to ; avec ch.to null le compteur reste
figé à 0, la condition de fin (count >= targetCrossings) n'est jamais
atteinte et le builder émet des segments indéfiniment → boucle infinie.

Ajoute head→throat (throat) et mid→full (full), alignés sur les jumeaux
rhythmBpmCeil{Throat,Full} qui fonctionnent et sur les pools des builders.
Régression couverte dans challenge_service_test.
…nfinite-loop

fix(challenges): défi à franchissements gorge ne se termine jamais
Les défis dynamiques (rythme, franchissement gorge, biffle, endurance)
imposaient la même tenue continue du doigt que les holds statiques —
ergonomiquement coûteux quand le geste entre en compétition avec l'acte
(retour stefsub : deepthroat rapide + doigt pinné sur 3-4 min).

Deux modes d'input désormais, aiguillés sur le mode du step :
- hold (statique) : tenue du doigt inchangée (release = abandon/validation)
- tapToggle (dynamique) : tap DÉMARRE, le défi tourne sur sa propre horloge,
  bouton STOP plein largeur = abandon en live / validation au seuil.
  L'extension bonus reste passive (ne pas taper = continuer), miroir exact
  du hold.

ChallengeInputMode dérivé du mode (getter, pas de champ). Helpers
_failChallengeLive/_bankChallengeFromAtSeuil partagés hold/tap. Capture
de présence globale (touch + clavier) neutralisée en mode tap. Phrases
TTS attempt/extension + 6 clés ARB (fr/en/de) en variante tap.

Test challenge_input_mode_test fige la règle axe -> mode -> input.
feat(challenges): input tap GO/STOP pour les défis dynamiques
Sur iOS Safari/PWA, start() restait bloqué en idle : WakelockPlus.enable()
(et potentiellement _tts/_beep.init()) peut lever une exception — la Wake
Lock API exige un contexte de geste, indisponible depuis le Timer de prep
appelé 7 s après « JE SUIS PRÊTE ». L'exception se propageait avant
`_state = running` (le try n'avait qu'un finally, pas de catch), laissant
la séance en idle. Or en prod l'écran de jeu n'a aucun bouton play (gated
derrière le toggle debug showSessionControls) → soft-lock : l'utilisatrice
ne voyait que les sliders de volume (retour iOS v0.4.0).

Les trois inits deviennent best-effort (try/catch + debugPrint) : aucun
n'est un prérequis du passage en running. La séance démarre toujours, au
pire sans wakelock. Android/desktop inchangés (ces appels n'y throwent pas).
@bbstudioapp bbstudioapp merged commit 225753b into main May 31, 2026
5 checks passed
@bbstudioapp bbstudioapp deleted the release/0.5.2 branch May 31, 2026 09:30
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.

1 participant