CodeNomad/docs/help/fr/settings.md
Pascal André 1840c71054
Some checks are pending
Publish help / build (push) Waiting to run
Publish help / deploy (push) Blocked by required conditions
fix(timeline): mirror every transcript block in order and keep clicks on the clicked marker (#1086)
## What changes for the user
The timeline now matches the transcript block for block, and a click
lands exactly where it should.

- **One marker per visible block, in transcript order:** each reply,
each thinking run, each tool (or collapsed tool group), each compaction
and each system context. Markers follow Message content: a block that is
hidden in the transcript is hidden in the timeline too.
- **The clicked marker stays active** until you scroll, and its own
block, not just the start of its message, is placed at the reading
position. This also works for history that is not loaded yet.
- **While scrolling,** the active marker is the first block below the
reading line.

## Reproduced in numbers before fixing
We replayed 45 of the user's real sessions (65,241 messages, exported
read-only) into the real `SessionView`, with the outline, windows and
previews served by the real server readers. Each session was measured at
1280×800 with two presets, using 16 real pointer clicks and 8 wheel
scrolls per run. Baseline and fix used the same seeds.

| Metric | Before, Complet | Before, Balanced | After, both presets |
|---|---|---|---|
| Sessions out of sync | 43/45 | 42/45 | 0/90 runs |
| Markers / expected | 68,949 / 130,818 | 68,949 / 98,759 | 130,818 /
130,818 and 98,759 / 98,759 |
| Click: clicked marker active | 53.6% (46.0% the one above) | 57.2% |
1,440 / 1,440 |
| Click: block at reading position | 41.5% (median off by 35 px) | 82.2%
| 1,440 / 1,440 (median 0.27 px) |
| Scroll: reading-line block active | 93.1% | 92.2% | 505 / 505 moving
wheels |

What was wrong with the markers in the Complet runs:
- 29,782 tool markers were collapsed into one marker per step.
- 31,777 thinking blocks and 282 system blocks had no marker.
- There were 10,232 order inversions.

## Causes
1. Once an outline existed, the outline projection replaced the markers
of loaded messages too (`message-section.tsx`). It collapsed a step's
tools into one marker placed before its reply, and dropped system
blocks.
2. Resident segments merged thinking into replies, dropped thinking-only
steps and skipped system parts.
3. After a click or a scroll, the active marker was the message's first
marker. The message itself came from a scroll offset that rounds a row
starting just below the top to the previous message.
4. Clicks navigated to the message, not to the block.
5. Jumps into unloaded history had no row to hold while the target was
not yet rendered.

## How
- **Server (outline):** each assistant step can now carry an optional
`layout` field. It lists the step's visible parts in order: thinking
runs, reply runs and each tool, at most 64 entries. It is computed in
the same bounded SQL. Older plugin copies don't send it, and the client
then falls back to the counts: thinking, then text, then tools.
- **Markers:** `buildTimelineSegments` emits one marker per block, keyed
`messageId:type:ordinal`. Loaded messages keep their exact markers.
Unloaded steps are placed at their native position from `layout`.
- **Click and scroll:** the list's `scrollToKey(key, selector)` holds
the selected block on every frame, survives row remounts, and follows
Virtua's estimate until the row renders. `timeline-transcript-blocks.ts`
maps markers to blocks and finds the block at the reading line.
- **Saved indexes:** outline indexes saved without `layout` are
revalidated once.
- **Docs and help:** updated in `dev-docs/SESSION_HISTORY_NAVIGATION.md`
and in the help pages for all 10 locales.

## Behaviour to be aware of
- **The timeline has more markers:** about +90% with Complet and +43%
with Balanced on this sample, because every tool, thinking and system
block now has its own marker.
- **Tool icons for unloaded steps:** a step not loaded yet shows its
first tool's icon on all of its tool markers, until its window loads.
- **Plugin requirement:** the pruning plugin must ship with the new
`layout` field.

## Validation
- **New regression test:** `tests/browser/timeline-sync.test.ts` passes
4/4 and fails 4/4 on unmodified dev. Fixtures are synthetic.
- **Measurement harness:** the opt-in qualification `npm run
qualify:browser:timeline-sync`.
- **Browser suites:**

  | Suite | Result |
  |---|---|
  | history-navigation | 65 |
  | message-scroll | 128 |
  | session-rendering | 47 |
  | render-cost | 17 |
  | full-source-copy | 12 |
  | search-highlight | 11 |
  | system-messages | 10 |
  | timeline-tool-filters | pass |
| streaming-outline (no full reprojection over 64 token deltas) | pass |
  | session-search | pass |
  | transcript-presets | pass |

- **Other checks:** UI unit tests 75/75, server session-pruning 70/70,
help 9/9 and the UI typecheck pass.
- **After rebasing on dev:** the typecheck passes, along with
timeline-sync 4/4, timeline-tool-filters, full-source-copy 12/12,
usage-metrics 5/5 and streaming-outline.

Oversized files touched: `message-section.tsx` (~1,637 lines),
`virtual-follow-list.tsx` (~1,368), `message-timeline.tsx` (~508),
`message-timeline.css` (204).
2026-10-22 05:32:43 +02:00

12 KiB
Raw Permalink Blame History

Paramètres et disposition

Ouvrir les paramètres et identifier leur portée

  1. Ouvrez Paramètres avec l’engrenage Ouvrir les paramètres de la barre d’onglets ou de l’accueil. Des raccourcis comme Gérer les fournisseurs dans le sélecteur de modèle, l’engrenage du panneau Missions ou Paramètres dans l’historique des notifications ouvrent directement la section correspondante.
  2. Sélectionnez une section. Les fenêtres locales Electron et Tauri ouvrent ou focalisent une unique fenêtre native Preferences ; les vues navigateur et distantes utilisent l’écran de paramètres intégré.
  3. Vérifiez la portée du réglage et toute action Enregistrer avant de quitter.

La plupart des choix s’appliquent immédiatement, y compris les préférences de Missions, qui enregistrent chaque changement au fur et à mesure. La voix, les couleurs de palette personnalisées et les fichiers de configuration gardent un Enregistrer explicite. Un échec d’enregistrement ne confirme pas que le changement a pris effet ; rouvrez ou actualisez la section concernée avant de réessayer. Les explications se trouvent derrière le i à côté du titre d’un réglage : survolez-le ou focalisez-le, ou touchez-le sur un écran tactile.

État Ce qu’il contrôle
Configuration CodeNomad Préférences d’interface, voix, SideCars et paramètres serveur pour les clients de cette configuration. Les préférences sans badge ne sont pas non plus enregistrées par appareil ; Paramètre serveur signale une configuration côté serveur comme la voix, les SideCars, le Contrôle à distance et les variables d’environnement.
Disposition de fenêtre/d’onglet de projet Panneaux ouverts, onglets sélectionnés, état du lecteur et brouillons/disposition restaurables. Ce n’est pas de la configuration OpenCode.
Paramètres OpenCode Global/Projet Changements de plugins/configuration natifs à la portée affichée. Les commandes Projet nécessitent un projet/une Location actif.
Profil de données de bureau Fenêtres natives, état de restauration et stockage navigateur, indépendamment du fichier de configuration et du service OpenCode partagé. Voir Fenêtres de bureau et données.

Stats couvre tout le service OpenCode connecté (tous les projets, clones indépendants et sous-sessions), pas seulement le dossier ouvert, sur les 7, 30, 90 ou 365 derniers jours. Il nécessite un projet ouvert et affiche les tokens et coûts enregistrés par OpenCode, pas les factures des fournisseurs ni les allocations d’abonnement ; les derniers totaux enregistrés peuvent s’afficher pendant l’actualisation. Les quotas de forfait relèvent de la section Statut Utilisation.

Changer les préférences d’affichage ne redémarre pas OpenCode et ne rejoue pas de prompt. Configuration native, maintenance du service et identifiants ont des effets distincts : voir Configuration d’OpenCode, Fournisseurs et Intégrations.

Langue et apparence

  1. Dans Général, sélectionnez Langue : anglais, espagnol, français, russe, japonais, chinois simplifié, hébreu, allemand, népalais ou turc.
  2. Dans Palette de couleurs, choisissez Mode : Auto, Sombre ou Clair. Auto suit le système d’exploitation.
  3. Choisissez une palette pour l’apparence affichée. Les sélections claire et sombre sont enregistrées indépendamment ; Auto utilise celle qui correspond.
  4. Pour des couleurs personnalisées, utilisez les échantillons et Enregistrer ; Réinitialiser restaure les couleurs d’une palette intégrée. Utilisez Nouveau pour nommer une palette distincte et Supprimer pour retirer une palette que vous avez créée.

L’interface se met à jour sans redémarrer de conversation. L’hébreu utilise une disposition de droite à gauche ; code et valeurs techniques restent lisibles dans leur propre sens. La sélection de langue change les textes d’interface, pas la langue des messages existants ou instructions d’agent. Les menus natifs du bureau passent à la langue de l’interface dès qu’une fenêtre CodeNomad est chargée.

Si les couleurs deviennent difficiles à lire, sélectionnez une palette intégrée ou réinitialisez celle modifiée. Changer de palette peut demander d’abandonner les modifications de couleur non enregistrées ; cela n’abandonne pas un brouillon de conversation.

Panneaux et sections Statut

  1. Utilisez Volet gauche et Volet droit aux coins extérieurs de l’en-tête, ou leurs entrées du menu Affichage, pour afficher ou masquer chaque panneau.
  2. Ouvrez Personnaliser le panneau droit dans le panneau droit. Utilisez les cases pour choisir les onglets intégrés et sections Statut ; au moins une section Statut reste visible.
  3. Faites glisser les onglets du panneau droit pour les réordonner. Utilisez Réinitialiser pour restaurer les choix de disposition intégrée.

Statut inclut les informations de tokens, le mode Yolo, l’utilisation fournisseur, les shells en arrière-plan, MCP et Plugins. Masquer une section ne désactive pas son service et ne révoque pas de permissions. Les dispositions étroites font flotter les panneaux sur la conversation au lieu de la comprimer ; ouvrir un panneau flottant ferme l’autre.

La disposition intégrée est propre à la fenêtre, pas une modification du projet. Les cases d’extension sont différentes : elles activent du code dans tous les projets utilisant la configuration. Réinitialiser ne change pas le consentement aux extensions. Voir Extensions de panneau.

Détail de transcription et taille de saisie

  1. Ouvrez Chat pour choisir les niveaux de détail par défaut. Les préréglages sont Rien, Minimal, Équilibré et Tout ; les changements individuels produisent Personnalisé.
  2. Réglez l’État par défaut de chaque ligne (Masqué, Réduit ou Développé) pour la réflexion, les diagnostics, les entrées d’outils, les tokens, les messages système et chaque type d’outil, ou utilisez le menu Contenu des messages de la conversation, qui partage ces choix.
  3. Dans Général, cochez au besoin Afficher la chronologie des messages, Scinder les diffs des appels d’outils et Mettre les prompts envoyés en file d’attente (mettre en file les prompts envoyés pendant qu’une session travaille au lieu de l’orienter).
  4. Redimensionnez la zone de saisie avec sa commande ; les longs brouillons défilent dans le champ.

La chronologie a un marqueur pour chaque réponse, réflexion, outil, compactage et contexte système affiché dans la conversation, dans le même ordre. Ses marqueurs suivent Contenu des messages : masquer à cet endroit un type d’outil, la réflexion ou les messages système masque aussi leurs marqueurs, sauf celui d’un outil avec une autorisation en attente, et Rien masque tous les marqueurs d’outils. Les réglages de visibilité et de développement changent seulement la présentation. Ils ne retirent pas les outils/raisonnements enregistrés et ne compactent pas le contexte du modèle. Voir Historique et nettoyage pour les opérations destructrices.

La hauteur de saisie suit la conversation visible, y compris le clavier logiciel : minimum 8 % avec un plancher de 44 px, maximum 60 %. La hauteur manuelle est mémorisée proportionnellement ; une largeur étroite et un long texte n’augmentent pas ces limites. Une autorisation/question développée réduit temporairement la saisie sans changer sa hauteur enregistrée ni son brouillon. Repliez ou réglez la demande pour reprendre le redimensionnement.

Notifications et badges

  1. Ouvrez Notifications. Pour chaque type de notification, cochez où elle apparaît : À l'écran (une bulle temporaire), Historique (conservée dans l’historique des notifications de la cloche de la barre d’onglets) et Système (une notification du système d’exploitation).
  2. Cocher une case Système demande l’autorisation si nécessaire. Sous Notifications système, Demander relance la demande tant que l’autorisation manque.
  3. Activez Notifier lorsque l'application est au premier plan pour garder les notifications système pendant que cette fenêtre est visible.

Par défaut, Une session attend votre réponse et Une session est terminée vont uniquement vers Système, afin que les états passagers des sessions ne s’accumulent pas dans l’Historique ; elles concernent les sessions principales, pas les sous-agents, et une session que vous arrêtez vous-même n’est pas annoncée. Les erreurs apparaissent toujours à l’écran et dans l’Historique, quoi qu’indique le tableau, et les courts messages de progression restent uniquement à l’écran.

La permission navigateur/système appartient à l’appareil et à l’origine applicative ; une préférence enregistrée ne peut pas contourner un refus. Si elle est bloquée, activez les notifications dans les paramètres du navigateur ou du système, puis revenez ici. Les environnements non pris en charge gardent la colonne Système désactivée.

Le nombre de non-lus de la cloche/de l’historique, qui ne compte que les notifications dirigées vers l’Historique, pilote le point de favicon et le badge de l’application native. Les badges natifs agrègent les fenêtres principales actives ; ils ne comptent pas les sessions en cours et ne prouvent pas qu’une notification système a été livrée. Cette fonctionnalité ne fournit pas de badges de lanceur PWA.

Options avancées

  1. Ouvrez Avancé.
  2. Cochez ou décochez seulement les options nécessaires ; chaque changement est enregistré via les préférences CodeNomad. Pour changer l’environnement d’exécution des sessions, dépliez le groupe replié Variables d'environnement à la fin.
  3. Vérifiez la vue résultante ou l’envoi suivant plutôt que de redémarrer spéculativement le service partagé.
Option Effet et précaution
Nettoyage auto des sessions vides Nettoie les sessions vides à la création de nouvelles ; laissez désactivé pour les conserver.
Conserver les marqueurs d’inactivité des sous-agents Conserve les marqueurs d’inactivité non vus jusqu’à consultation plutôt que de les masquer après cinq secondes.
Focaliser la fenêtre existante au second lancement Bureau natif seulement ; change le comportement de fenêtre au second lancement, pas la création d’onglets.
Solde de crédits du fournisseur Affiche les soldes complémentaires dans Utilisation ; n’achète pas de crédits et ne change pas de compte.
Masquer les changements d’espaces Omet les fichiers non indexés ne différant que par espaces/fins de ligne de Changements et ses actions groupées ; les fichiers indexés restent visibles. Voir Fichiers.
Retenir les longues réponses de l’assistant Arrête le suivi automatique lorsqu’une réponse en cours dépasse la zone visible.
Variables d’environnement Appliquées côté serveur avant chaque prompt ou commande de session ; les lectures ne mettent pas à jour une exécution déjà active. Voir Configuration d’OpenCode.

Pour configurer le clavier, voir Raccourcis clavier ; pour les commandes vocales, voir Saisie et lecture vocales. La restauration au démarrage et la suppression de profils de bureau enregistrés sont décrites dans Fenêtres de bureau et données.