
Um relatório traz um estado desde o dia em que existem relatórios, e até ontem nada na interface conseguia mudar um. Dava para filtrar por ele a partir de três ecrãs e só dava para o definir pela API, o que significava que cada relatório ficava pendente para sempre e o distintivo no cartão era decoração.
O controlo de estado está agora na lista de relatórios recebidos, na linha de ações de cada cartão, ao lado do controlo de visibilidade. A triagem é uma coisa que se faz a uma fila e não a um relatório de cada vez, por isso pertence ao sítio onde está a fila: ler o cartão, definir o estado, passar ao seguinte, nunca abrir nada.
Quem pode usá-lo decorre do âmbito que o ecrã já tinha. Um relatório chega à sua caixa porque está na equipa dona do domínio para o qual foi enviado, por isso um relatório atribuído a nenhum site não mostra controlo algum em vez de mostrar um que recusa.
Enviar um relatório a quem tem de o corrigir
Um relatório privado abre para a equipa dona do domínio e para quem o enviou. A pessoa que ele costuma ter de alcançar não é nenhuma dessas: quem programa e recebe o erro, segue a ligação e ouve dizer que o relatório não existe.
A volta que havia era deixar as definições da equipa abertas noutro separador e lembrar-se do endereço. Existe agora um convite no próprio relatório. Traz essa pessoa para a equipa, porque é isso que aqui significa ler um relatório privado: não há uma segunda via de acesso nem uma ligação que dê acesso a quem a tiver na mão.
O gravador usa o plano inteiro
A nota da semana passada acabava com uma confissão: todos os planos vendiam uma duração de gravação que o seu próprio limite de envio recusava, tínhamos subido os tetos do servidor para condizerem, e o próprio gravador continuava a parar nos dez minutos certos para toda a gente.
A extensão 1.5.0 chegou ontem à Chrome Web Store e fecha isso. O painel grava durante o tempo que o plano vende - cinco minutos no Free, dez no Starter, trinta no Professional - e as duas pontas do cano já concordam sobre o mesmo número.
A mesma versão corrige uma coisa que era pior do que parecia. Nenhum botão dentro do painel fazia nada sempre que o painel corria como janela própria em vez de acoplado: My Replays, a ligação para a loja, a página de boas-vindas. O início de sessão era o pior caso, porque esperava por um separador que nunca ia abrir e deixava o painel indefinidamente em “Waiting for sign-in…”. Uma aplicação web instalada é onde alguém se depara com isso primeiro. Os separadores abrem agora numa janela de navegador a sério, esteja o painel onde estiver.
Session Replay
Extensão do Chrome gratuita. Um clique na página que se está a portar mal captura a captura de ecrã, a consola e o registo de rede, e entrega-lhe uma ligação para colar no ticket.
A página do MCP já diz o que escrever
A página que saiu na semana passada entregava o endereço e dizia que a autorização era OAuth 2.1 com PKCE. As duas coisas verdadeiras, e nenhuma delas uma instrução: o endereço vai para sítio diferente em cada cliente, cada um autentica-se à sua maneira, e quem tinha o URL estava exatamente onde começou.
O passo da ligação traz agora um separador por cliente, cada um com o endereço no lugar onde esse cliente o recebe e com o comando que o autoriza.
O último passo mudou por um motivo aparentado. Mostrava antes três envelopes JSON-RPC em cru e chamava-lhes a sua primeira chamada, o que ensinava a única coisa de que quem lê nunca precisa - escrever envelopes é o trabalho inteiro do agente que acabou de ligar - e pedia trabalho que ninguém ia fazer. Mostra agora cinco frases para dizer em voz alta ao agente, construídas a partir do seu próprio relatório mais recente e do seu próprio domínio verificado. Uma equipa ainda sem relatórios recebe uma primeira frase mais simples que nomeia o domínio.
Há também agora um ficheiro público em /agents/install.md: o domínio, a etiqueta de
verificação, as duas vias de carregamento, o markup do botão, identify() e o que depende do
plano, servido como texto simples e sem início de sessão. Se a via mais rápida para ter um botão
no seu site for entregar o trabalho ao agente de código que já tem aberto, é esse o URL a dar-lhe.
Sendo público, não guarda nada que pertença a um site em particular: o token é um marcador entre
parênteses retos e o ficheiro diz para lhe pedirem a si o verdadeiro.
Três ferramentas MCP que agora cabem numa resposta
Vale a pena escrever isto com clareza, porque a primeira versão de cada uma estava errada de uma maneira que só aparecia num relatório a sério.
get_report devolvia o documento inteiro. Uma gravação de trinta e dois segundos dava 114 442
caracteres, dos quais 42 302 eram o registo de rede e 22 947 os seus cabeçalhos, o que passa
daquilo que um cliente aceita num único resultado de ferramenta: a principal ferramenta de
leitura da superfície não conseguia ler um relatório de todo. Passa agora a receber um argumento
opcional sections que nomeia qualquer um de network, console e interactions. O que pedir
volta inteiro, menos os cabeçalhos, os cookies e as cadeias de consulta que não trazem sinal
nenhum que o URL do pedido já não traga. O que não pediu vem resumido.
set_status serializava o relatório inteiro de volta depois de mudar uma coluna, por isso uma
escrita que já tinha chegado era comunicada a quem chamou como uma falha. Responde agora com um
recibo: o token de partilha, em que ponto está o relatório e quando foi resolvido.
get_frame recebe uma posição na gravação, e nada no documento do relatório conseguia nomear
uma. Cada entrada trazia uma hora absoluta de relógio e nenhum desvio, e quem lesse o relatório
de fora da aplicação não conseguia daí deduzir o início da gravação, por isso na prática o desvio
era adivinhado contra a duração - o que sobrevive a uma captura curta e a nada mais longo. O
relatório traz agora os desvios que a ferramenta pede.
As cinco ferramentas também declaram sem rodeios os seus action hints: as quatro leituras são só
de leitura, set_status não é, e nenhuma delas é destrutiva. Um hint omitido não é lido como
falso por um cliente: recai na resposta prudente e pergunta a uma pessoa antes de cada leitura.
O painel da consola repete-se menos
As linhas de consola repetidas só eram agrupadas quando eram erros. Todo o resto ficava com uma linha por ocorrência, o que deixava precisamente os níveis que mais se repetem como os expandidos por inteiro.
Chegou um relatório com vinte e seis linhas de consola, das quais vinte e duas eram o mesmo aviso de terceiros ao nível de depuração dentro de um único milissegundo. Noutro, a única linha que nomeava o erro era a vigésima sexta. As linhas são agora agrupadas por nível, mensagem e URL em conjunto, em todos os níveis. Dois frames que falham da mesma maneira continuam a ser duas entradas, e as mesmas palavras registadas em dois níveis continuam a ser duas entradas.
Coisas mais pequenas
- Quem administra uma equipa pode mudar-lhe o nome. O nome era escrito uma vez na inscrição e nunca mais, por isso quem se inscreveu antes de preencher o seu nome ficou para sempre com uma equipa chamada “someone@example.com’s team”, e é esse o nome que os colegas leem no seletor.
- O painel está no menu de utilizador de quem tem sessão iniciada, onde as pessoas o procuravam.
- Os dados do plano na página da equipa são um cartão em vez de quatro.
- As páginas de erro planas cumprem o contraste AA, e o botão de contorno escuro lê-se em modo escuro.
- O início de sessão web tem limite de tentativas. Estava protegido na API e não no formulário de entrada, contra as mesmas contas.