Redface 2 · issue #874 · arbitrage de design

EgoQuote + EgoPost

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

Thème app
Affichage
Densité
Écran
Vision

01 EgoQuote objet marqué : la citation

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é.

02 EgoPost objet marqué : votre message

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.

03 Repérage global objet marqué : la page

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 . 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.

04 Les six messages du banc

Le pseudo connecté est XaTriX. Deux messages cumulent volontairement deux états, pour que les collisions se voient.

  1. nickoordinaire — le témoin
  2. XaTriXle vôtre, cité 3 fois
  3. thibwvous cite
  4. bitubovous cite et ciblé par la navigation
  5. XaTriXle vôtre, et il se cite
  6. Dintr-un lemnvous cite et sélectionné

05 Pistes explorées, non maquettées

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.

PisteAxeMécanismePourquoi elle n'est pas au banc
Pouls d'entréeles deuxLe 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 saisiepageTant 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 haptiquepagePendant 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'occurrencespageUn 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 pagemessageUn 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.
LettrinemessageLa 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 correcteurcitationDeux 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émessageUn 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.

06 Ce qui occupe déjà la carte

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.

CanalDéjà pris parSurvit à la pleine largeur ?
Teinte du bandeau d'identitédéfaut rose secondaryContainer ; ardoise tertiaryContainer sur le message ciblé (#104)oui
Bordure de carte 2 dpsélection multi-citation (#436)oui, mais elle supprime le filet
Bandeau de pastilles« cité N fois » (#239/#863)oui
Fond de cartesurfaceContainernon — transparent (#884)
Fond du corpsrien — le corps est un slot distinct, il peut porter son propre fondoui
Barre d'accent 4 dp des citationsalternance primary/tertiary par profondeur (#202/#252)oui
Ligne « Citation de … »primary quand le saut vers le message cité est possible (#699)oui
Pinceau du pseudodégradé doré animé des créateurs (#221)oui
Séparateur inter-messagestrait « Dernier message lu » (#600)oui
Ascenseurpoignée de position (#300), réglableoui

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.

07 Ce que le cadrage a tranché

Acquis, vérifié dans le dépôt. Seul le traitement visuel reste ouvert.

Q3 Le message qui se cite lui-même

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.

Q4 Citations imbriquées

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.

Q6 Le trou : session fermée

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.

Q6 Accessibilité

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.

Q6 Auteur bloqué

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.

Q7 Aller au-delà de la page

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.

08 Ce qui reste à trancher

A Un traitement par axe

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.

B Une couleur ou deux

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.

C Les valeurs par défaut

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.

D Le repérage global

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.