Conversation
…mme un message de l'utilisateur Cause racine : le binaire renomme `isMeta` en `isSynthetic` sur le wire live (vérifié 2.1.217, probe + lecture du binaire : les trois émetteurs `case"user"` yieldent `isSynthetic: o.isMeta || o.isVisibleInTranscriptOnly`, le schéma zod public ne déclare que `isSynthetic`). `UserMsg` ne désérialisait pas ce champ → le garde `is_meta` de `ingest_user` était du code mort en production, et TOUTE ligne injectée par le CLI fuyait en bulle utilisateur. Live uniquement : au reload le jumeau disque `isMeta:true` était bien filtré, d'où le « c'est là en live, plus là quand je reviens ». Cœur (indissociables) : - `protocol.rs` : `UserMsg.is_synthetic`. - `assembler.rs` : garde sur la branche BULLE, jamais un `return` anticipé — une ligne synthétique peut porter des `tool_result` qu'un drop global avalerait. - `assembler.rs` : flag skill armé aussi depuis `content_block_start` (4 cas disque où la ligne assistant arrive APRÈS le corps injecté). - `history.rs` : le reload honore le sur-ensemble `isVisibleInTranscriptOnly` / `isCompactSummary` (le résumé de /compact, 14-20 Ko, n'a pas d'`isMeta`). Formes sans aucun drapeau, classées par texte dans un corps partagé par les deux surfaces (`classify_injected_text`, pattern `is_goal_command_noise`) et rendues en `Notice` — jamais droppées en silence : `[Request interrupted by user]` (136 occ.), le `<local-command-stdout>` des autres commandes (33 occ.), la bannière `<ide_opened_file>` (strippée du prompt qu'elle précède). Aussi : - parité du chip de commande (une commande tapée s'affichait en texte brut en live, en chip au reload) ; - rewind : `check_rewind_target` valide la cible AVANT de tuer la session ; - parité des images (un tour image-only distant était invisible en live) ; - sous-agent : le prompt d'ouverture est attribué à Claude, pas à l'utilisateur ; - Historique : `first_user_text` applique enfin les mêmes filtres que le fil (134 excerpts en XML brut, dont certains servaient de titre) ; - Codex : `local_images` lu, tours distants surfacés via `clientId`, threads internes d'auto-titre marqués et exclus, `thread_rolled_back` honoré. Garde-fou structurel : table de parité live↔disque (`mod parity_tests`). Les deux chemins sont du code séparé keyé sur des champs DIFFÉRENTS, donc chaque moitié pouvait régresser au vert seule — c'est précisément ce qui s'est produit. Vérifié par mutation : retirer le garde fait tomber 3 tests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… soit son type Un PDF ou une image ouvert(e) dans le panneau pouvait rester sur une version périmée après une écriture de l'agent — silencieusement, comme si c'était la version courante. Quatre trous distincts : - resyncOpenBuffers sautait volontairement les onglets image/PDF (coût d'une relecture complète des octets à chaque switch de conversation) : un fichier réécrit pendant qu'on était sur une AUTRE conversation restait périmé ; - le watcher filtre build/, dist/, target/, .next/, .cache/ : un PDF généré dans build/ n'émet aucun événement, même sur la conversation active ; - le watch fs n'existe que si le panneau éditeur est monté, et il est unique pour toute l'app (un fichier hors du cwd surveillé, ou un watcher mort, n'a plus aucune voie de rafraîchissement) ; - PdfViewer repassait par « Loading PDF… » et perdait la position de scroll à chaque nouvelle version. L'empreinte disque (taille + mtime) est désormais posée sur chaque buffer, et resyncOpenBuffers couvre TOUS les types : un stat batché décide qui relire, si bien qu'un PDF de 15 Mio non modifié coûte un syscall au lieu d'un aller-retour base64. Le même passage tourne aussi sur un tick périodique — la seule voie possible pour les écritures qu'aucun événement ne rapporte. Le PdfViewer échange ses pages en place (docRev force le repaint quand le nombre de pages ne bouge pas), et l'aperçu d'artefact se recharge quand sa page est republiée. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…bar + Flight Deck) Ajoute un onglet Réglages « Reordering » avec 4 toggles (conversations/repos × sidebar/Flight Deck) pour désactiver le tri automatique par récence/statut, plus un toggle « ordre partagé » entre les deux vues. En mode manuel, l'ordre est figé (rien ne remonte, même une conv en attention) ; les nouveaux éléments arrivent en tête (tri par createdAt/addedAt immuables). Drag-and-drop via @dnd-kit : toute la carte/ligne est saisissable (pas de poignée), clic vs glissé distingué au seuil de 6px, clic post-drag avalé. Persistance localStorage (tosse:manualorder, slots shared/sidebar/flightdeck) — aucun changement Rust ni de bindings. Drag en mode récence = éphémère (re-trié au prochain event). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…u step-row des tools Le toggle ne gate plus QUE le nom de fichier de la ligne de step d'un tool (Read/Write/Edit) — celui dont le clic dispute avec le dépliage de la carte — via `stepRowInert`. Les chemins en prose, les liens Markdown fichier et le nom en tête d'un encadré diff/snippet restent cliquables partout, pref OFF comprise. Corrige la régression où le flag `inert` du FileMentionProvider éteignait TOUS les chemins cliquables de l'app (conversation ET Flight Deck). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ment The Flight Deck drag ghost rendered <Ico name="grip">, but no `grip` path existed in WF_PATHS, so it silently fell back to the `dots` glyph. Add a proper six-dot drag-handle path. Also fix RepoLane's doc-comment, which still said "drag the grip" though the whole header is the drag surface. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v1.3.0 — embarque tout l'état courant de
devdepuis v1.2.0.Nouveautés / correctifs (user-facing) :
clickableFileMentionsresserré au nom de fichier des lignes Read/Write ; chemins en prose/liens/entêtes toujours cliquables.Détail : commits de
devdepuis v1.2.0.🤖 Generated with Claude Code