Détacher le navigateur de discussion de la fenêtre qu'il maximise

Featurekamo-internal
Expédié
27 août 2026 à 20:05 UTC
Auteur
kamo
Commite
8b5ccc0

Le navigateur de la conversation était un support enfant de ToolWindowShell, rendu à l'intérieur de la boîte de contenu de la fenêtre maximisée. Cliquer une rangée dans elle s'ouvre qui la conversation a maximisé, ce qui rétrograde la fenêtre en la tenant - donc le un navigateur non monté et remontant à chaque utilisation. Le membre navigué par détruire la chose avec laquelle ils naviguaient: seau, position de défilement et recherchez le texte de recherche tous réinitialiser l'instant où ils ont cliqué. C'est maintenant un frère ou une sœur au niveau du banc des accusés. ToolDock monte exactement un ChatNavigatorPanel, fixe le bord gauche, et les arrêts de fenêtre maximisés après en dessous (l'OftInset) au lieu d'être dessiné en dessous. Au cours d'un swap le panneau ne monte jamais, donc du point de vue de React rien n'arrive à c'est ça. La graine de seau est congelée au premier outilId il a jamais vu, donc la liste ne se réfilte pas de plus en plus d'un membre qui vient de cliquer sur une ligne. Le mouvement est le plomb et le traînage: maxima, le navigateur ressort de la gauche bord et la fenêtre s'étend en ce qui est laissé derrière elle 70 ms plus tard; la restauration joue le retournement, la fenêtre d'abord, le navigateur traînant de 90 ms. Aucun des composants ne mémorise une direction - les deux retards dérivent de "maximized", donc le drapeau est la direction. Les horaires partagés sont en direct dans maximisationMotion.ts Parce que les deux moitiés ne peuvent plus voir l'état de l'autre. Un clic de rangée est chorégraphié séparément (useMaximizedSwap): la vitre gèle Et les deux conversations dissoudre à l'intérieur, plutôt qu'une fenêtre voler jusqu'au quai tandis qu'un autre vole hors de lui à côté d'un navigateur debout c'est parfaitement encore. La fenêtre rétrogradée maintient la géométrie de la vitre pendant qu'elle s'estompe. puis se fait un battement de battement à son créneau d'accueil avec des transitions toujours éteintes, donc il réapparaît en s'évanouissant au lieu de se retirer de l'autre côté de la fenêtre. Opacité et transformation du CSS à la mouvement de cadre: une transition CSS ne peut pas "commencer à partir de 8px inférieur" pour un élément déjà monté, qui C'est ce qu'une fenêtre s'estompe dans la vitre doit faire. La géométrie reste sur CSS encadrement re-mesurerait calc(100vw - Npx) chaque trame. préfère-réduction-mouvement Laisse tout tomber dans un échange d'opacité. Élévateurs à l'état d'effondrement en utilisationChatNavigatorCollapse: ToolDock a besoin de la la largeur du navigateur pour dimensionner la fenêtre, et un composant possédant sa propre largeur ne pouvait pas le dire. Pas de nouvelles clés i18n. Vérifié: tsc clean, 144 essais passent entre les outils/et et conversations/, tous les scripts de garde passent. Les deux comportements porteurs (semence de seau congelée, pane maintenue par la dissolution) ont été testés par mutation. Pas vérifié visuellement - ce repo n'a pas de navigateur sans tête.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation