Redface 2 · issue #874 · arbitrage de design
Les deux fonctions marquent deux objets différents : « on vous cite » qualifie une citation, « c'est le vôtre » qualifie un message. Le banc les traite donc sur deux axes séparés, qui se choisissent indépendamment. Tout est rendu avec les couleurs et la géométrie réelles de l'application ; les réglages pilotent l'app simulée, pas cette page.
branche dev commit 0e9c7e3e palette Color.kt, accent rose par défaut géométrie DisplayMetrics · TopicListLayout · PostCardShell cadrage relu par Sol (GPT-5 Codex, xhigh) pistes élargies par Fable 5
Neuf façons de marquer la citation qui vous reprend, à l'intérieur du message de celui qui vous répond. Q1 et Q2 isolent chacune une seule variable — la couleur, puis le mot — pour qu'on sache lequel des deux porte réellement le repérage, et Q3 est leur somme exacte. Q4 à Q7 travaillent la surface et le contour ; Q8 et Q9 changent de registre, en passant par l'image et par la luminance plutôt que par la teinte. Chaque baie montre un message témoin, puis deux messages qui vous citent, dont le second est aussi celui où la navigation vous a déposé.
Neuf façons de marquer vos propres messages : deux par la surface (P1-P2), quatre par le trait (P3-P5, P7), une par la saillie hors des bornes (P6), une par la géométrie seule (P8), plus le traitement écarté gardé comme témoin (P9). Le troisième message de chaque baie est le vôtre et contient une auto-citation : c'est là que se voit l'intérêt de séparer les deux axes — chacun marque son objet, sans règle de priorité à écrire. Les citations ne sont pas marquées ici : chaque section n'exerce qu'un seul axe.
Un axe de plus, orthogonal aux deux précédents : plutôt que d'attendre d'arriver sur le message, dire d'emblée combien et où. L'ascenseur existe déjà (#300, réglable) — il peut porter des repères. C'est la réponse directe à bitubo : « sur les gros sujets, sans repère on relit trois pages pour retrouver qui a répondu ». Se combine avec n'importe quel traitement des deux sections précédentes.
Le pseudo connecté est XaTriX. Deux messages cumulent volontairement deux états,
pour que les collisions se voient.
Issues de la même passe d'élargissement. Elles ne sont pas au banc soit parce qu'un rendu statique ne les montrerait pas, soit parce qu'un défaut identifié les place derrière celles ci-dessus. Elles restent disponibles si aucune des dix-huit ne convainc.
| Piste | Axe | Mécanisme | Pourquoi elle n'est pas au banc |
|---|---|---|---|
| Pouls d'entrée | les deux | Le marqueur statique bat une fois, 300 ms, quand le message entre à l'écran. La vision périphérique capte le mouvement même en défilement rapide. | Ce n'est pas un marqueur mais un amplificateur : il rend n'importe quel choix visible au moment exact du besoin. Invisible sur une capture. Rejoué à chaque aller-retour de scroll il devient irritant — il faut un garde-fou d'état. |
| Tamisage à la saisie | page | Tant que le doigt tient la poignée de l'ascenseur, les messages non concernés tombent à 55 % d'opacité. On relâche, tout revient. | Éphémère par construction, donc non capturable. N'aide que ceux qui saisissent la poignée — pas le fling au pouce, qui est le geste majoritaire. |
| Cliquet haptique | page | Pendant le drag de la poignée, un tick à chaque message concerné franchi : double pour une citation, simple pour un de vos messages. | Canal non visuel. Muet si les vibrations sont coupées, et les moteurs haptiques sont très inégaux d'un appareil à l'autre : strictement un bonus. |
| Navigateur d'occurrences | page | Un chip « 3 ⌄ » dans la barre du haut : tap pour sauter au suivant, appui long pour le précédent. Le n/N d'une recherche. | Déplace le problème — naviguer — au lieu de le résoudre en ambiant — repérer. Et la barre du haut est déjà disputée sur 360 dp. |
| Corne de page | message | Un triangle de 14 dp au coin haut, avec un trait de pliure : la page cornée d'un livre qu'on veut retrouver. | Ce coin héberge déjà le bouton « ⋯ ». Et le skeuomorphisme détonne dans une interface Material 3 plate. |
| Lettrine | message | La première lettre de vos messages passe en lettrine sur deux lignes, sans aucune couleur. | Fragile : un message qui ouvre sur une citation, un smiley ou un lien n'a pas de première lettre exploitable. Et toucher à la typographie du contenu hérissera les habitués. |
| Crochets de correcteur | citation | Deux angles isolés bornant le côté départ du bloc cité, comme un correcteur qui borne un passage au crayon. | Concurrence directe avec la barre d'accent, au même bord : l'ensemble se lit comme cassé, surtout en citation imbriquée. |
| Anneau décollé | message | Un filet tracé 3 dp à l'extérieur de la carte : le vide entre les deux est le signal. | Cumulé à la bordure de sélection sur un même message, cela fait deux cadres concentriques — chargé, et l'ordre de lecture devient ambigu. |
Sept canaux visuels sont déjà attribués. C'est la contrainte qui élimine des traitements avant qu'on parle de goût — et c'est aussi ce qui rend la piste « marquer la citation » économique : elle réutilise deux canaux au lieu d'en ouvrir un.
| Canal | Déjà pris par | Survit à la pleine largeur ? |
|---|---|---|
| Teinte du bandeau d'identité | défaut rose secondaryContainer ; ardoise tertiaryContainer sur le message ciblé (#104) | oui |
| Bordure de carte 2 dp | sélection multi-citation (#436) | oui, mais elle supprime le filet |
| Bandeau de pastilles | « cité N fois » (#239/#863) | oui |
| Fond de carte | surfaceContainer | non — transparent (#884) |
| Fond du corps | rien — le corps est un slot distinct, il peut porter son propre fond | oui |
| Barre d'accent 4 dp des citations | alternance primary/tertiary par profondeur (#202/#252) | oui |
| Ligne « Citation de … » | primary quand le saut vers le message cité est possible (#699) | oui |
| Pinceau du pseudo | dégradé doré animé des créateurs (#221) | oui |
| Séparateur inter-messages | trait « Dernier message lu » (#600) | oui |
| Ascenseur | poignée de position (#300), réglable | oui |
Contrainte de palette : en thème clair, primaryContainer et
secondaryContainer sont strictement le même rose (#FFDAD9),
errorContainer en est indiscernable à l'œil (#FFDAD6), et
tertiaryContainer est déjà pris. Aucun rôle conteneur Material n'est libre — un
signal coloré doit sortir de la palette, comme l'ont fait les couleurs de drapeaux.
Acquis, vérifié dans le dépôt. Seul le traitement visuel reste ouvert.
Trois états — et deux axes les rendent inoffensifs.
On calcule own, quotesMe et ownAndQuotesMe. Dès lors
que chaque fonction marque son propre objet, le cas cumulé n'a plus besoin d'arbitrage : le
message porte sa marque, la citation porte la sienne.
Premier niveau uniquement.
quotedAuthors descend dans les citations de citations : bon pour masquer un
auteur bloqué, faux pour « on me répond ». On dérive de content.blocks en
s'arrêtant à la première citation. Reste à décider : une citation à la racine mais
enveloppée dans un spoiler.
isOwnPostEffective ne suffit pas.
Les messages en cache ne sont pas purgés à la déconnexion — choix documenté. Le champ
isOwnPost survit donc au logout et le marqueur s'allumerait pour un lecteur
anonyme sur les messages du compte précédent. Garde de session obligatoire.
Jamais la couleur seule.
Basculez « Vision » : bleu et violet convergent en deutéranopie. D'où l'intérêt des traitements qui changent aussi le texte — « Votre citation » se lit sans couleur, et c'est ce que le lecteur d'écran annonce.
Le marqueur ne doit pas trahir le masque.
Si un auteur de votre liste noire vous cite, le message est masqué. Marquer la citation plutôt que l'en-tête aide ici : la citation d'un auteur bloqué est déjà remplacée par un placeholder, donc le marqueur disparaît avec elle.
Le lien « cité N fois » avant la recherche.
HFR rend déjà, sous chaque message cité, un lien listant ses citations — compté et stocké, jamais suivi. Rendre la pastille cliquable est le pas le plus court. La recherche intra-sujet reste le socle d'un balayage complet.
Les deux axes se choisissent séparément — y compris « rien » sur l'un des deux. La combinaison la plus économique est Q1 + P3 : elle n'ajoute aucune surface colorée et ne consomme aucun canal neuf.
Puisque les objets marqués diffèrent, une couleur unique « ego » suffirait peut-être. Deux couleurs distinguent les fonctions mais chargent la palette — et convergent en deutéranopie.
EgoQuote activé, EgoPost désactivé ? Regardez la section 02 avec deux de vos messages sur six : un gros posteur verrait une page entièrement allumée.
Les repères d'ascenseur sont un chantier à part — plus utile sur les gros sujets que n'importe quel marqueur local, mais il touche un composant partagé.
Couleurs de thème, rayons, gouttières et styles de texte relevés dans Color.kt,
DisplayMetrics.kt, TopicListLayout.kt, PostCardShell.kt,
RedfaceUserAvatar.kt, PostRenderer.kt et Type.kt, sur
l'accent rose par défaut. Ne viennent pas du dépôt et restent des propositions : le bleu et le
violet des marqueurs, et tous les mécanismes proposés (liseré, contours, onglet, hirondelles,
médaillon, miroir, repères d'ascenseur). Le rendu est une simulation
navigateur — crénage, anticrénelage et gestion des couleurs d'un écran Android diffèrent. On
tranche la grammaire visuelle, pas le pixel.