Desanexar o navegador de chat da janela que maximiza

Featurekamo-internal
Shipped
27 de agosto de 2026 às 20:05 UTC
Author
kamo
Commit
8b5ccc0

O navegador de conversa era um adereço infantil do ToolWindowShell, renderizado dentro da caixa de conteúdo da janela maximizada. Clicando em uma linha nela abre que conversação maximizada, que desmotiva a janela segurando - assim o navegador desmontado e montado novamente em cada uso. O membro navegado por destruindo o que eles estavam navegando com: balde, posição de rolagem e texto de busca todo reset no instante em que clicaram. Agora é um irmão de nível da doca. ToolDock monta exatamente um ChatNavigatorPanel, fixou a borda esquerda e a janela maximizada parou Em vez de ser puxado por baixo, a menos que seja ('leftInset'). Através de um swap o painel nunca desmonta, então do ponto de vista do React nada acontece com Ele. A semente do balde está congelada no primeiro toolId que viu, então a lista não refiltra de baixo de um membro que apenas clicou uma linha. Moção é chumbo-e-trail: maximizando, o navegador salta para fora da esquerda borda e a janela se expande para o que é deixado para trás 70ms mais tarde; restaurando execuções o reverso, janela primeiro, navegador seguindo por 90ms. Nenhum dos componentes armazena uma direcção — ambos os atrasos resultam de «máximo», Então a bandeira é a direcção. Tempos compartilhados vivem em maximizeMotion.ts porque as duas metades já não conseguem ver o estado um do outro. Um clique de linha é coreografado separadamente (useMaximizedSwap): o painel congela e as duas conversas dissolvem-se dentro dela, em vez de uma janela voando para a doca enquanto outro voa para fora dela ao lado de um navegador em pé perfeitamente imóvel. A janela rebaixada mantém a geometria do painel enquanto desaparece, Em seguida, obter um ajuste batida em seu slot dock com transições ainda fora, por isso ele reaparece desaparecendo em vez de voar de volta através do viewport. Opacidade e transformar movimento de CSS para framer-motion: uma transição CSS não pode expressar "iniciar a partir de 8px mais baixo" para um elemento já montado, que é o que uma janela que desvanece no painel tem de fazer. A geometria permanece no CSS — o framer re-medeia o calc(100vw - Npx) cada frame. prefere o movimento reduzido Deixa tudo para uma troca de opacidade. Recolher elevadores de estado para usarChatNavigatorCollapse: ToolDock precisa do largura do navegador para dimensionar a janela, e um componente possuindo sua própria largura não podia dizer. Sem novas chaves I18n. Verificado: tsc limpo, 144 testes passam através de ferramentas / e conversas/, todos os scripts de guarda passam. Os dois comportamentos de carga (semente de balde congelado, painel mantido através da dissolução) foram testadas mutações. Não verificado visualmente — este repositório não tem navegador sem cabeça.

All changes

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços