diff --git a/README.md b/README.md
index 0523acd..501e08a 100644
--- a/README.md
+++ b/README.md
@@ -708,6 +708,18 @@ inutile de forcer l'invalidation du cache navigateur en plus.
Se rafraîchit donc au rythme de la veille (`WATCHLIST_INTERVAL_MS`, 30 s par défaut) — un
aperçu, pas un flux temps réel.
+**Sa taille se règle** depuis la barre de filtres de l'onglet Streamers : *Aucun*, *Petit*,
+*Moyen* (par défaut) ou *Grand*. Selon la largeur de l'écran et le nombre de profils suivis,
+un aperçu pleine largeur rend la liste agréable ou la rend illisible à force de faire défiler
+— d'où un réglage plutôt qu'un choix imposé. C'est la **largeur** qui est bridée, pas la
+hauteur : la boîte 16/9 entière rétrécit, là où une hauteur maximale l'aurait recadrée en
+bandeau et rogné l'image.
+
+*Aucun* ne se contente pas de masquer : la vignette n'est alors pas rendue du tout, donc pas
+téléchargée — ce sont des images distantes, autant ne pas les demander quand personne ne les
+regarde. Le choix est mémorisé dans le navigateur : c'est un confort propre à l'écran qu'on a
+sous les yeux, pas un réglage à imposer aux autres postes.
+
## Frise des diffusions
Deux vues sur le même historique : la fiche d'un profil (clic sur sa vignette, onglet
diff --git a/packages/web/src/components/AgentCard.tsx b/packages/web/src/components/AgentCard.tsx
index b79bf96..61b7177 100644
--- a/packages/web/src/components/AgentCard.tsx
+++ b/packages/web/src/components/AgentCard.tsx
@@ -63,8 +63,11 @@ export function AgentCard({
{agent.name}
+ {/* Le nom de machine ne figure plus ici : il redoublait le nom affiché
+ de la VM sans rien en dire de plus. Il reste porté par l'agent, et
+ donc consultable via l'API. */}
- {agent.hostname ?? '—'} · {agent.platform}
+ {agent.platform}
{agent.agentVersion ? ` · v${agent.agentVersion}` : ''}
{status.buildId ? ` · build ${status.buildId}` : ''}
diff --git a/packages/web/src/components/StreamersPage.tsx b/packages/web/src/components/StreamersPage.tsx
index 2f7ce78..38b4820 100644
--- a/packages/web/src/components/StreamersPage.tsx
+++ b/packages/web/src/components/StreamersPage.tsx
@@ -4,12 +4,16 @@ import { DEFAULT_PRIORITY, priorityLabel } from '@stream-control/shared';
import { api } from '../api';
import { formatDateTime, formatDuration, formatRelative } from '../format';
import {
+ PREVIEW_SIZES,
+ loadPreviewSize,
preemption,
previewSrc,
recordingContext,
+ savePreviewSize,
stateLabel,
tagStyle,
usedTags,
+ type PreviewSize,
type RecordingContext,
} from '../streamers';
import { StreamerDetail } from './StreamerDetail';
@@ -44,6 +48,14 @@ export function StreamersPage({
const [openId, setOpenId] = useState(null);
const [selectedTags, setSelectedTags] = useState>(new Set());
const [managingTags, setManagingTags] = useState(false);
+ const [previewSize, setPreviewSize] = useState(loadPreviewSize);
+
+ function changePreviewSize(size: PreviewSize) {
+ setPreviewSize(size);
+ // Mémorisé côté navigateur : c'est un confort d'affichage propre à l'écran
+ // qu'on a sous les yeux, pas un réglage à imposer aux autres postes.
+ savePreviewSize(size);
+ }
// Tirées des profils plutôt que du serveur : la liste arrive déjà entière par
// le flux temps réel, donc toujours à jour, et une étiquette que personne ne
@@ -142,6 +154,21 @@ export function StreamersPage({
))}
+ Aperçus
+ {PREVIEW_SIZES.map((size) => (
+
+ ))}
{visible.length} profil(s)