Si un enregistrement est interrompu, rien n'est perdu
Que se passe-t-il lorsqu'un enregistrement est coupé
Lorsque vous enregistrez un Blink, l'audio est sauvegardé sur le serveur au fur et à mesure. Donc si l'enregistrement s'arrête avant que vous ayez fini — vous verrouillez le téléphone, fermez l'onglet, recevez un appel, perdez le signal — la partie que vous aviez déjà prononcée est en sécurité.
La prochaine fois que vous ouvrez OrbitingFox, cet enregistrement apparaît comme un draft Blink avec un titre qui indique ce que c'est :
Draft — enregistrement interrompu #3, 4 sept. 8:25 AM
Le numéro compte vos interruptions dans l'ordre, et la date et l'heure vous indiquent de laquelle il s'agit — utile lorsque deux sont interrompus dans la même après-midi.
Où les trouver
Les drafts apparaissent à deux endroits, et ce sont les mêmes éléments dans les deux cas :
- Votre liste de Blink ordinaire, mélangée avec tout le reste, chacun marqué d'une petite étiquette Draft pour que vous puissiez le repérer d'un coup d'œil.
- La page des enregistrements interrompus, qui montre uniquement les drafts, avec une explication en haut et les choix à côté de chacun.
Vos trois choix
- Conserver — cela devient un Blink ordinaire. L'enregistrement est attaché à celui-ci, et vous pouvez le renommer quand vous le souhaitez ; le titre du draft est juste un point de départ.
- Modifier — ouvrez-le d'abord et changez le titre ou le texte, puis enregistrez-le comme d'habitude.
- Supprimer — vous ne le vouliez pas. Cela va à votre corbeille comme tout autre élément que vous supprimez, donc un mauvais tapotement est récupérable.
Il n'y a pas de date limite. Un draft attend jusqu'à ce que vous décidiez.
OrbitPilot et vos drafts
OrbitPilot ne lit pas le contenu d'un draft. Un enregistrement interrompu est la moitié d'une pensée — vous n'avez peut-être pas fini la phrase, ou vous pourriez complètement le supprimer — donc l'IA ne l'a pas pour apprendre.
Au moment où vous conservez un draft, il devient un Blink ordinaire, et à partir de ce moment-là, OrbitPilot le traite comme n'importe quel autre : il peut le lire, à moins que vous n'ayez marqué ce Blink comme privé.
Ce qui a changé, et pourquoi
Avant cela, un enregistrement interrompu s'annonçait par une bannière d'avertissement à l'intérieur de n'importe quelle forme de Blink que vous ouvrez ensuite — une bannière par enregistrement interrompu, empilée les unes sur les autres, et l'enregistrement serait attaché à ce que vous écriviez à ce moment-là.
C'était déroutant de deux manières : plusieurs alarmes pour un problème, et un enregistrement finissant à l'intérieur d'un Blink sans rapport. Maintenant, chaque enregistrement interrompu est son propre élément, avec son propre nom, et vous décidez de ce qu'il advient.
Le formulaire Blink ne les annonce plus (BL-451, 2026-09-10)
Jusqu'à présent, le formulaire Blink portait un avis d'une ligne — "Des enregistrements antérieurs ont été interrompus et sauvegardés en tant que drafts — Consultez-les" — à l'intérieur du bloc de note vocale, entre le bouton Commencer l'enregistrement et son texte d'aide. Le propriétaire a conçu cette fonctionnalité comme aucune bannière du tout : les drafts sont visibles dans votre liste de Blink (marqués comme drafts), sur la page Enregistrements interrompus, et derrière la petite pilule de sablier sous la boîte de capture de la page d'accueil. La page d'accueil cachait déjà l'avis du formulaire ; le formulaire lui-même le gardait, et il interrompait exactement au moment où il ne le fallait pas — pendant que vous attrapiez autre chose.
Ce qui a changé. L'avis a disparu du formulaire. Rien au sujet de la récupération n'a changé : lorsque vous ouvrez un formulaire de Blink, la page demande toujours au serveur de vérifier les enregistrements interrompus, et chacun d'eux devient toujours un draft Blink avec un titre honnête. Vous les trouvez là où le design les a placés — la liste de Blink, la page des drafts, la pilule de la page d'accueil — et OrbitPilot peut vous les montrer. Si vous éditez un Blink ordinaire pendant que des drafts attendent, le formulaire ne les mentionne plus non plus ; la page des drafts le fait.
Pour les développeurs. Le conteneur #voice_draft_recovery_banner est supprimé de templates/blink/_wink_voice.html ; checkDrafts() dans _wink_voice_js.html garde son voice_draft_check fetch — l'effet secondaire du GET est la matérialisation, donc le fetch est la récupération — et abandonne la branche d'écriture de bannière ; la règle de dissimulation désormais morte est supprimée de templates/home.html. Le contrat de compte BL-396 reste intact (ses neuf scénarios lisent le point de terminaison, pas la page). Garde : blink/test_draft_form_notice_retired.py. C'est la phase 0 de l'interface du microphone de la page d'accueil (GRP-104 / WO-33 ; copie du dépôt docs/blink/HOME-PAGE-MIC-DESIGN.md).
Discerning vos drafts sans les ouvrir (BL-464, 2026-09-11)
Ce qui a changé. Chaque ligne sur la page des enregistrements interrompus affichait un titre et l'heure à laquelle il avait été enregistré, et rien d'autre. Les titres sont générés, donc huit drafts ressemblaient à huit copies de la même chose — et la seule façon de décider de conserver ou de supprimer un était de l'ouvrir, de regarder et de revenir.
Les mots du propriétaire : "alors l'utilisateur aura une idée générale de ce qu'il y a à l'intérieur de chacun d'eux avant de cliquer sur modifier ou cliquer sur conserver ou cliquer sur supprimer. Donc cette page devrait être plus informative sur les éléments de draft."
Chaque ligne porte maintenant
- Le début de ce qui a été dit. Une courte ligne de la transcription — délibérément courte, et gardée sur une seule ligne peu importe la longueur de l'enregistrement. Une liste de blocs de trois lignes serait le même problème sous une forme différente.
- Un contrôle de lecture, sur tout draft qui a toujours son enregistrement. Appuyez dessus et l'enregistrement se lit sans quitter la page ; appuyez à nouveau pour arrêter.
Un seul joue à la fois. Appuyer sur lecture sur un deuxième draft arrête le premier. Sans cela, parcourir huit drafts pour déterminer lequel est lequel laisse quatre enregistrements parler les uns sur les autres sans moyen évident de les arrêter.
Le contrôle indique Lecture ou Arrêter en mots, pas seulement comme une forme, et le mot change en fonction de ce que l’appui va faire. Rien ici n'a besoin de survoler — il n'y a pas de survol sur un téléphone, et cette leçon a sa propre ligne.
La durée n'est pas encore affichée
Le propriétaire a également demandé la durée totale de chaque enregistrement. Ce n'est pas ici, et c'est délibéré plutôt que oublié : rien ne le stocke aujourd'hui, et la manière évidente de l'ajouter s'est avérée ne pas fonctionner pour cette page. C'est un travail séparé avec sa propre ligne.
Pour les développeurs
Un draft Blink n'a pas de BlinkAudio. C'est la chose à savoir avant de toucher à cette page. materialise_voice_draft() crée le Blink et laisse l'enregistrement sur BlinkVoiceDraft; un BlinkAudio n'est créé que lorsque la personne appuie sur Conserver (promote_voice_draft commit_voice_drafts). Donc le contrôle de lecture et le snippet lisent tous deux blink.voice_draft, et prefetch_related("audios") serait N requêtes retournant rien. La vue utilise déjà select_related("voice_draft"), donc la ligne ne coûte pas de requête supplémentaire — maintenue par un test qui compte les requêtes pour un draft contre quatre.
Le snippet lit voice_draft.transcript et pas blink.description : la description est semée à partir de la transcription au moment de la matérialisation et peut ensuite être modifiée, donc les deux dérivent. La transcription est ce qui a été réellement dit, ce qui est ce qu'une personne parcourant la liste essaie de reconnaître.
Le contrôle est un petit bouton avec un <audio> caché, pas un <audio controls> natif : un lecteur natif fait environ 300px de large et ces lignes portent déjà Éditer, Conserver et Supprimer, donc une envelopperait chaque ligne à 375px. preload="none" empêche une liste de dix lignes de récupérer dix fichiers audio au chargement. Le gestionnaire partagé vit dans static/js/of-draft-play.js ; un play() rejeté remet le bouton et le signale plutôt que de le laisser lire "Arrêter" dans le silence.
Les glyphes proviennent du registre d'icônes — play, pause et microphone ont été enregistrés par adminapp/0080, car aucun d'eux n'existait. Rendre {% of_icon "play" %} contre une clé que le registre ne détient pas retourne la chaîne vide en dehors de DEBUG, ce qui aurait expédié un bouton avec rien dedans. La même migration remplace l'émoji brut 3a4 que la puce de voix en attente a utilisé comme accessoire.
This guide was translated automatically. Read the English original.