Repository navigation
feat(console): the Sites table has the six columns of the mockup and the legend of the statuses (FRU-270) - #302
Conversation
There was a problem hiding this comment.
Score de confiance : 4/5 ·
🔍 Une revue plus poussée est conseillée : Vérifier que la route GET et le POST des sites du worker renvoient bien les champs notes, via, lastNoteAt et undelivered attendus par sites.tsx.
Commentez @sakuga-review review balanced (environ 5 centimes) ou @sakuga-review review heavy (10 centimes à 1 dollar).
Niveau lite · anthropic/claude-haiku-5.5 · 0,007 $ · Le résumé, le diagramme et la liste des constats sont à la fin de la description de la PR.
There was a problem hiding this comment.
Score de confiance : 4/5 · ✅ Rien de bloquant · Peut être fusionnée après un regard sur les points mineurs : la PR affiche les six colonnes du tableau des sites, et les compteurs, la légende et « il y a » se calculent côté console sans régression visible dans le diff.
Niveau lite · anthropic/claude-haiku-5.5 · 0,006 $ · Le résumé, le diagramme et la liste des constats sont à la fin de la description de la PR.
0378985 to
ce4cafe
Compare
There was a problem hiding this comment.
Score de confiance : 3/5 · ✅ Rien de bloquant · Je ne vois pas de défaut certain dans les parties relues, mais le chemin d'écriture de l'index dans POST /feedback (app.ts) n'est pas dans le diff, donc la PR ne peut pas être validée complètement en l'état.
🔍 Une revue plus poussée est conseillée : Vérifier dans app.ts que l'écriture de l'index (record et refresh) est faite après la planification de la note et ne fait jamais échouer POST /feedback, et que refresh est bien appelé dans le chargeur du cache de lecture.
Commentez @sakuga-review review balanced (environ 5 centimes) ou @sakuga-review review heavy (10 centimes à 1 dollar).
Niveau lite · anthropic/claude-haiku-5.5 · 0,011 $ · Le résumé, le diagramme et la liste des constats sont à la fin de la description de la PR.
…the legend of the statuses (FRU-270) The table of the sites now shows, for each site, its notes by status (a count and a bar whose name says the counts again), how they came (the script or the extension), and the last one, read from the summary of the sites of FRU-237. The legend of the statuses is above the table. A REST address with notes it did not take says how many under its name. The counts are in the answer that lists the sites, so nothing of a row arrives after the row: a test holds the read and checks that the bars are there in the paint of the table, and that nothing a pointer can reach moves. The table is 860 px at the least, as on the mockup: on a phone it scrolls in its frame, and what opens under a row stays in view. ago.ts says how long ago in the words of the mockup, in English and French. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…it (FRU-270) Co-Authored-By: Claude Opus 5.5 <[email protected]>
ce4cafe to
44074b4
Compare
There was a problem hiding this comment.
Score de confiance : 4/5 · ✅ Rien de bloquant · Fusionnable : la logique nouvelle (ago.ts, colonnes du tableau, comptes) est correcte et testée, et les seuls points non vérifiés sont des définitions existantes hors du diff.
Niveau lite · z-ai/glm-5.3 · 0,011 $ · Le résumé, le diagramme et la liste des constats sont à la fin de la description de la PR.
Not critical (one screen of the console, no route). Stacked on #300 (FRU-237), which adds the summary of the sites to
GET /console/workspaces/<id>/sites: merge #300 first. The shape read is the one fru-console announced for #300: per sitenotes: {seeded, green, ripening, ripe, composted},via: ('script' | 'extension')[],lastNoteAt?(absent with no note),asOf?, andundelivered(only for a role that sees the tracker). A site without these fields (the index did not answer) shows « · » in the new cells (« None yet » to a screen reader), and the list stays.Second part of the Sites screen (FRU-243 was the first, #262). It uses Mathieu's decision of 2026-10-13 on Q6: Fruitback keeps an index of the notes.
What changes
StatusBar). The bar is an image whose name says every count again, for example « 12 notes: 3 new, 2 to do, 4 in progress, 2 done, 1 closed ». A status with no note takes no room in the bar. A site with no note says « Waiting for the first note ».ago.ts, with unit tests in English and French.ul aria-label="Statuses") above the table: five drops of 9 px, 13px, gap 6 × 18, 12 px under it. Its line-height isnormal, as on the mockup: the table starts at y 159.2 (159 on the mockup).stickyat the left of what is seen, as wide as the frame, wherever the table is scrolled.<wbr>): « preview.lumen. / studio », and not in the middle of a word.Nothing moves when the list arrives (the rule of #294, #295, #296)
The counts are in the same answer as the rows, so nothing of a row arrives after the row. The test « the counts come with the list » holds
GET …/sites, measures the rail and the title, then releases the read. It checks that the bars are in the paint where the table first appears, that the button of a row does not move afterwards, and that the rail and the title did not move. Planted control: with the counts drawn 400 ms after the rows, that test fails. Restored after.Gaps with the mockup (1440, macOS)
Captures, 1440 and 390, in
agent-coord/scratch/fru-sf-workspace/fru-270/(they cannot be uploaded):sites-list,sites-list-fr,sites-empty,sites-failed,sites-add,sites-add-refused,sites-menu,sites-install,sites-previews,sites-remove,sites-member,sites-guest,sites-empty-member,sites-hover-row,sites-focus2, each-1440.pngand-390.png.French added
Proof
e2e/console-sites.spec.ts, 17 tests, on stubs. It covers the six headers, the legend (words, drops and their colours, sizes), the bar (box, name, empty statuses), the cells, the « · » cells and their hidden words, the held read, a worker with no summary, a guest (counts without « Notes go to »), and 390 px (the table scrolls and what opens under a row stays in the frame, scrolled or not).console-narrow(the hidden words of a cell are anchored: without that they widened the page at 390 px, which this spec found).ago.test.ts: minutes, hours, « Yesterday » by calendar day, the day and the year, a clock ahead, French.Not verified
Firefox, Safari, a screen reader, a touch screen. The boxes against the real worker of FRU-237: stubs only.
🤖 Generated with Claude Code
Sakuga Review · Score de confiance : 4/5
Fusionnable : la logique nouvelle (ago.ts, colonnes du tableau, comptes) est correcte et testée, et les seuls points non vérifiés sont des définitions existantes hors du diff.
Résumé
La PR ajoute la colonne du résumé des notes (comptes par statut, barre), la voie d'arrivée, la dernière note avec un formateur « il y a » (ago.ts), la légende des statuts, et passe la table des Sites à six colonnes avec 860 px minimum et défilement dans son cadre. La logique de ago.ts (minutes, heures, jour calendaire, semaine, date localisée) a été vérifiée case par case, y compris DST via Math.round, dates illisibles et horloge en avance : aucun défaut. Les colSpan, les clés de traduction et les tests unitaires et e2e sont cohérents avec le code.
Non relu
Revues (2) · Dernier commit relu : feat(console): « 3 days ago » for the week, as ... · Niveau
lite·z-ai/glm-5.3· 0,011 $