O Telegram para iOS se preparou para o iPhone Duo dobrável, que a Apple começou a vender em 23 de outubro. A maior parte do trabalho está no repositório aberto Telegram-iOS em um único commit c8bb114b de 9 de outubro: 12.889 linhas adicionadas e 2.940 removidas. No Duo, o botão «Voltar» se move para a faixa lateral na borda da tela, a barra de abas (tab bar) se torna vertical, e as histórias na tela interna grande abrem como um cartão, similar ao iPad. As últimas alterações para o Duo foram incorporadas ao código em 22 de outubro, menos de uma hora antes da mudança do número da versão para 13.1.1, e na noite do mesmo dia, a versão 13.1.1 foi lançada na App Store. Isso afeta os proprietários do Duo: nos demais iPhones e iPads, o layout permanece o mesmo, com exceção de algumas correções secundárias.
O que muda na tela do Duo
A regra principal está registrada no guia, que se encontra no repositório junto ao código: o botão «Voltar» ou «Fechar» é posicionado na faixa lateral, se ela estiver presente. As telas padrão fazem isso automaticamente, enquanto as telas com cabeçalho próprio utilizam o espaço do botão da marcação geral.
- Chat. O cabeçalho é dividido em uma linha superior e uma coluna lateral. Na coluna, estão o botão «Voltar» e o avatar do contato, e o campo de entrada se estende até a borda da faixa, se estiver livre.
- Lista de chats e perfil. Os botões se movem para a faixa, e o título é centralizado na parte restante da tela.
- Barra de abas (Tab Bar). Em vez de uma faixa horizontal na parte inferior, há uma cápsula vertical na faixa lateral, alinhada à parte inferior. Na tela interna, onde há uma lista à esquerda e um chat à direita, não há legendas sob os ícones.
- Botões na parte inferior da tela («Continuar», «Enviar», painéis de seleção) se estendem por toda a largura, incluindo a faixa. Exceções: botões pequenos no centro (botão de gravação, «Pronto» na prévia da câmera), sheets altos com rolagem como «Compartilhar» e o campo de entrada que cresce para cima. Eles permanecem na área principal da tela: um botão pequeno, de outra forma, se deslocaria 42 pontos do eixo do conteúdo, os botões nos cantos de um sheet alto alcançariam o bloco de canto, e o campo de entrada ocupa a largura de suas linhas.
- Histórias na tela desdobrada são exibidas como um cartão 9:16 centralizado com fundo desfocado, como no iPad. Sem essa correção, a história se estenderia por toda a tela e seria cortada.
- «Pronto» nas telas com o alternador «Editar/Pronto» permanece na linha superior. Anteriormente, ele saltava da linha para o círculo da coluna lateral.
Por que o Duo precisa de um layout próprio
Em um iPhone comum, o sistema reserva as bordas da tela: um entalhe com o relógio na parte superior e a barra de gestos «Início» na parte inferior. No Duo, a reserva é um bloco retangular em um canto, onde estão o relógio, os ícones de conexão e a câmera. O iOS expande esse bloco para um recuo de toda a altura da borda, e um aplicativo que simplesmente respeita os recuos do sistema perde uma faixa de 84 pontos de largura ao longo da borda. O Telegram continua a respeitar os recuos do sistema, mas obtém os tamanhos dos blocos de canto de sua própria tabela para cada posição do dispositivo. Os valores dinâmicos do sistema após a rotação e o dobramento são transitórios por até 0,6 segundos, portanto, não são lidos.
| Posição | Janela, pontos | Bloco de canto | O que resta na lateral |
|---|---|---|---|
| Dobrado, vertical | 466 × 678 | superior direito, 84 × 170 | faixa à direita sob o bloco |
| Dobrado, girado para a esquerda | 678 × 466 | inferior direito, 84 × 82 | faixa à direita acima do bloco |
| Dobrado, girado para a direita | 678 × 466 | superior esquerdo, 84 × 84 | faixa à esquerda sob o bloco |
| Desdobrado, vertical | 669 × 951 | superior direito, 134 × 82 | sem faixa, "status island" na parte superior |
| Desdobrado, horizontal | 951 × 669 | superior direito, 84 × 120 | faixa à direita sob o bloco |
Daí a principal armadilha, que o guia menciona primeiro: no Duo dobrado, o recuo lateral existe na orientação vertical, e o código de qualquer aplicativo para iPhone geralmente parte do princípio de que não há recuos laterais no modo retrato.
Outras três características do dispositivo que exigiram alterações no código:
UIScreen.mainno Duo sempre retorna a tela externa, mesmo quando o telefone está desdobrado. A iluminação ao tirar fotos com a câmera frontal e enviar mensagens de vídeo, o brilho ao exibir um código QR e o modo noturno automático alteravam o brilho da tela errada.- Os arredondamentos dos cantos da tela externa são diferentes: 8 pontos no lado da dobra e 59 na parte externa. Na tela interna, todos os cantos têm 55 pontos. Sheets, transições entre telas e o deslocamento da lista de chats ao abrir a câmera de histórias agora são arredondados para cada canto separadamente.
- O Duo desdobrado horizontalmente é considerado pelo sistema como uma tela de "largura normal", como a de um iPad, embora seja um telefone. As verificações "é um iPad?" pela largura da tela falhavam, e o Duo desdobrado não executa a rotação da tela a partir do aplicativo.
Como eram os erros de layout
O guia lista erros típicos que são imperceptíveis em outros dispositivos, porque os recuos esquerdo e direito são iguais. O recuo da borda esquerda era aplicado também à direita. Um bloco com a largura da área principal da tela era centralizado em toda a tela e se deslocava 42 pontos em direção à faixa. Um botão na borda direita era calculado a partir do recuo esquerdo. A prévia da câmera 9:16 ficava acima da tela: no Duo dobrado, 150 pontos acima. Os botões inferiores, calculados a partir da borda da tela com as constantes antigas para iPhones com botão «Início», ficavam sobre a barra de gestos. Cada correção deve ser revertida à expressão anterior quando não há blocos de canto e os recuos são iguais, de modo que os outros dispositivos desenham byte a byte o mesmo que antes.
Como as 298 telas foram verificadas
O progresso do trabalho está registrado no relatório de verificação das telas. A branch feature/reserved-corners foi mantida de 25 de setembro a 9 de outubro, e a própria verificação ocorreu em 8 e 9 de outubro. Foram verificadas 298 telas, ou seja, todos os view controllers do aplicativo, exceto dois stubs de teste. Eles foram lidos por agentes que não tinham permissão para alterar o código, e cada tela recebeu uma linha na tabela de verificação: uma descoberta ou o motivo pelo qual a correção não era necessária. As correções foram feitas apenas em seus próprios arquivos, e três revisores compararam cada diff com as regras. O commit principal e quase todos os subsequentes foram assinados pelo coautor Claude Opus 5.5. No total, de acordo com a mensagem do commit, cerca de 65 descobertas foram corrigidas.
No processo, foram encontrados erros mais sérios do que um recuo irregular:
- a tela «Temas de Chats» fechava com um erro ao rolar, porque os elementos da lista não eram criados na thread principal;
- o botão nas configurações de transmissão ao vivo no Duo era mais largo que o espaço livre ao lado da faixa e se estendia 12 pontos além da borda da tela;
- o botão de autorização do Telegram Passport na posição horizontal dobrada ficava sob o bloco de canto.
As verificações na tela foram realizadas no simulador Duo com iOS 27.1. Não é possível dobrar e desdobrar o simulador a partir da linha de comando, portanto, a maior parte das correções para a posição horizontal desdobrada foi verificada apenas pela compilação e leitura do código. Isso está explicitamente registrado na seção do relatório sobre lacunas. Também foram incluídas as telas que não estavam disponíveis na conta de teste: botões de assinatura Premium (a conta já possui uma assinatura), importação de chats e chamadas ao vivo.
O que foi finalizado para o lançamento do dispositivo
Após o commit principal, as correções para o Duo continuaram. Em 18 de outubro, as histórias adjacentes pararam de aparecer na faixa lateral: em um telefone comum, elas ficam fora da borda da tela, mas no Duo, um pedaço de outra história estava sempre visível sob o relógio. No mesmo dia, o alternador de abas da carteira e a animação do avatar na coluna lateral foram corrigidos. Em 22 de outubro, a câmera de histórias e o editor moveram os botões acima da barra de gestos «Início», e o campo de busca na lista de chats na tela horizontal desdobrada parou de desaparecer pela metade na borda superior.
No arquivo versions.json, o número 13.1.1 apareceu em 22 de outubro às 12:11 UTC, nove minutos após a última correção para o Duo. Na App Store, a versão 13.1.1 foi lançada no mesmo dia às 18:45 UTC, com a descrição «Bug fixes, minor improvements, and more». Na lista de dispositivos do aplicativo, o iPhone Duo está listado, mas essa lista indica apenas que o aplicativo pode ser instalado, e não que foi adaptado para a tela. A build que os proprietários do Duo recebem coincide com o código aberto pelo número e pela data, e o binário da App Store não foi comparado com o código.




