Feat : QOL - better filter
All checks were successful
release / build (push) Successful in 27s
release / verify-windows (push) Successful in 1m24s

This commit is contained in:
jeanotx32
2026-08-14 21:17:02 -04:00
parent da9952d756
commit 9a019447e7
8 changed files with 565 additions and 86 deletions

View File

@@ -45,6 +45,8 @@ IP publique nécessaire, et obs-websocket reste sur `127.0.0.1`.
profil en direct, agrandie au survol.
- [Étiquettes](#étiquettes) libres sur les streamers, créées à la volée, avec filtrage de la
liste par étiquette.
- [Recherche et tri](#recherche-et-tri) : un champ de recherche sur les deux listes (nom,
pseudo ou étiquette, accents et casse ignorés) et quatre ordres de tri sur la frise.
- [Frise des diffusions](#frise-des-diffusions) : l'historique des streams de chaque profil
suivi, avec en surimpression ce qui en a été capturé — par profil sur sa fiche, ou tous
ensemble dans l'onglet « Timeline ». Une
@@ -794,6 +796,64 @@ Une étiquette survit à la suppression du dernier profil qui la portait — ell
pour la suite. Inversement, ne plus suivre un profil n'emporte que ses rattachements
(`ON DELETE CASCADE` des deux côtés de la table de liaison).
## Recherche et tri
### Chercher un streamer
Un champ de recherche ouvre la barre de filtres des onglets **Streamers** et **Timeline**. Il
filtre **à la frappe**, sans bouton ni validation : les profils sont déjà chargés côté
navigateur, il n'y a rien à attendre d'un aller-retour serveur — et en imposer un
transformerait un tri visuel en formulaire.
Il cherche **à la fois dans le nom affiché, le pseudo et les étiquettes**. Ce sont les trois
façons dont on désigne un profil ; exiger de savoir laquelle s'applique reviendrait à demander
de chercher ce qu'on a déjà trouvé.
**Ni la casse ni les accents ne comptent** : taper `lea` trouve « Léa ». On saisit le pseudo
qu'on a en tête, pas celui qu'on a sous les yeux, et un accent oublié n'est pas une faute qui
mérite une liste vide. Plusieurs mots se cumulent, **dans n'importe quel ordre**`blonde lea`
retrouve « Léa » étiquetée « blonde ».
La recherche **se cumule** avec les autres filtres (statut, étiquettes, « Enregistrés ») : ce
sont des critères de nature différente, les laisser s'élargir les uns les autres ne filtrerait
plus rien. Seules les étiquettes entre elles forment une union (voir
[Étiquettes](#étiquettes)).
Une **croix** apparaît dès que le champ n'est plus vide, et la touche **Échap** fait la même
chose : un filtre qu'on ne sait pas défaire finit par mentir sur ce qu'on croit voir. Pour la
même raison, quand une liste est vide **le message nomme la recherche en cours** plutôt que de
parler d'un « filtre » indéterminé — c'est le critère qu'on oublie le plus facilement, les
autres se voyant à l'écran.
### Trier la frise
L'onglet **Timeline** propose quatre ordres, sélecteur *Trier par* :
| Ordre | Ce qu'il classe | À quoi il répond |
| --- | --- | --- |
| **Activité récente** (défaut) | Dernier signe de vie, diffusion ou capture | « Que s'est-il passé récemment ? » |
| **Temps enregistré** | Durée capturée, **pauses déduites** | « Sur quoi ai-je réellement du fichier ? » |
| **Temps de diffusion** | Durée en public, capturée ou non | « Qui diffuse le plus ? » |
| **Nom (A→Z)** | Libellé, ou pseudo à défaut | Retrouver une voie précise |
Les deux tris par durée **retombent sur l'activité récente à égalité** : des voies à zéro
seconde enregistrée sont fréquentes, et les laisser dans un ordre arbitraire donnerait une
liste qui se réorganise sans raison visible d'un rafraîchissement à l'autre. L'instant de
référence est figé une fois pour toutes au début du tri — relu à chaque comparaison, il ferait
bouger la durée des voies encore ouvertes en plein classement, et l'ordre obtenu pourrait alors
se contredire lui-même.
**Le tri par temps enregistré déduit les pauses**, comme les totaux. Sans ça, un profil souvent
en show privé passerait devant un profil réellement capturé, sur la foi d'un intervalle qui
n'écrivait rien.
**Les totaux de la légende suivent les filtres** : le résumé est posé sous la barre, il décrit
la frise qu'on a sous les yeux et non les données brutes — annoncer un total qui ne correspond
à rien de visible ferait douter du filtre autant que du chiffre. Le libellé le dit (« sur la
sélection » plutôt que « au total »). Une capture jamais rattachée à un profil suivi (lancée à
la main depuis l'onglet **Agents**) n'entre dans aucun total : elle n'a pas de voie où
s'afficher.
## Vignette du flux en direct
Chaque fiche compacte d'un profil **en direct** (onglet Streamers) affiche une image du