No mesmo dia em que o link para o novo repositório aberto do cliente Telegram para macOS foi disponibilizado para os beta-testers, a equipe do cliente começou a aceitar contribuições de desenvolvedores externos. Até 25 de outubro às 10:19 UTC, 81 pull requests de 19 autores foram enviados para TelegramMessenger/telegram-macos, e 30 deles foram incorporados à main branch. As alterações aceitas são enviadas para a beta do macOS em poucas horas; uma delas chegou em menos de uma hora. Isso se aplica tanto aos usuários do canal beta do cliente para Mac quanto aos desenvolvedores que desejam corrigir o cliente oficial, em vez de criar seu próprio fork.
Quantas Contribuições Foram Enviadas e Aceitas
Um pull request é uma alteração de código proposta que o proprietário do repositório pode incorporar à sua branch ou rejeitar. O primeiro chegou em 23 de outubro às 14:18 UTC, e o primeiro foi incorporado às 17:45 UTC: é o #3, um diamante em vez de uma bandeira pirata para números colecionáveis na lista de países. Em 23 de outubro, 17 pull requests foram enviados; em 24 de outubro, 55; e nas primeiras dez horas de 25 de outubro, mais 9.
Até 25 de outubro às 10:19 UTC:
| Status | Pull Requests |
|---|---|
| Incorporados | 30 |
| Fechados sem merge | 14 |
| Abertos | 37 |
As alterações incorporadas foram enviadas por 11 autores diferentes, totalizando 7.307 linhas adicionadas e 1.089 linhas removidas. Todos os 30 foram incorporados por uma única conta, macosswift. Em seu perfil, estão listados o nome Telegram macOS, a empresa Telegram e o site macos.telegram.org. Nove das alterações incorporadas de um único autor vieram de branches com o prefixo codex/, que é como o agente Codex da OpenAI as nomeia por padrão.
Quais Regras Surgiram no Segundo Dia
Em 24 de outubro às 16:12 UTC, o repositório ganhou CONTRIBUTING.md e um template de pull request. Cada um agora deve ter quatro seções: a principal alteração, o motivo, capturas de tela ou vídeos "antes" e "depois" no mesmo cenário, e a descrição da verificação. Se não houver resultado visível, em vez de capturas de tela, é preciso explicar o motivo e anexar a saída da verificação, e para alterações de comportamento, indicar a versão do macOS e o número da build do cliente. Um pull request sem alguma seção ou sem a confirmação de verificação marcada não está pronto para revisão.
O template começou a ser aplicado na mesma noite. Das 17:58 às 18:09 UTC, quatro pull requests foram fechados com a anotação REJECTED: não havia captura de tela nem vídeo para o "antes" e "depois". Das 19:31 às 19:36 UTC, a mesma observação foi deixada em outros 11 pull requests. Eles não foram fechados, mas foi solicitado que fossem complementados, e dois deles foram incorporados na mesma noite.
Por Que São Rejeitados
Além do template vazio, as alterações são fechadas por questões de mérito, com uma explicação no comentário:
- #6, um painel lateral plano e abas de pastas favoritas, muda a interface e o produto, e a equipe "não planeja aceitar tais mudanças no momento";
- #13 mostrava o botão do editor de IA a partir do 10º caractere, mas, de acordo com o design, ele aparece a partir de três linhas. O campo de entrada saltava 30 pontos. A parte de edição de mensagens enviadas foi considerada funcional e foi incorporada separadamente, no #22;
- #53 corrigia manualmente apenas as strings em russo, enquanto as traduções do cliente são feitas em translations.telegram.org para todos os idiomas de uma vez;
- #23, builds locais e assinatura do aplicativo: a equipe prometeu mudar as configurações de build e assinatura internamente, e essa alteração quebrava o teste de build no CI;
- #32 mostrava chats em pastas nos quais o usuário não participava, e #40 quebrava a pesquisa. Uma captura de tela e um vídeo da falha foram anexados a este último.
Em #14, inicialmente foi escrito que o código não compilava, e foi solicitado que a build fosse verificada antes do envio. Mais tarde, foi incorporado. O #75 com o tab bar flutuante também foi devolvido com uma observação: após várias trocas, a foto de perfil se desalinhavava com o anel de seleção. O autor corrigiu isso às 07:39 UTC, e às 08:09 UTC a alteração foi incorporada.
Como as Alterações Chegam à Beta
A beta do macOS é lançada através das versões de atualização com a mesma descrição "Bug fixes, minor improvements, and more". Que as alterações de terceiros foram incluídas na build é visível pelo seu binário: strings de seus códigos aparecem onde antes não existiam.
A build 13.1.0.283377 foi lançada em 24 de outubro às 21:27 UTC. Nela, pela primeira vez, há as strings "Could not load message history" e "Message history pagination did not advance" do #20 (erros de exportação de chats agora são mostrados para cada chat, em vez de serem perdidos silenciosamente), "Failed to persist the custom application icon at %@" do #10 (mudança do ícone do aplicativo), nomes de serviço do #2 e #27 (configurações de notificações) e do #16 (comandos de bots). Essas cinco alterações foram incorporadas das 15:50 às 18:45 UTC, ou seja, elas chegaram à beta em um período de 2 horas e 43 minutos a 5 horas e 37 minutos.
A build 13.1.0.283380 foi lançada em 25 de outubro às 09:06 UTC, 57 minutos após o merge do #75. Nela, apareceram os nomes TabBarItemControl e SelectionGesture do código dessa alteração.
A parte do código da equipe quase alcançou a beta. Em 23 de outubro às 17:04 UTC, o commit "Merge branch 'release' into master (13.1)" foi incorporado à main branch, o número da build no Info.plist aumentou de 283305 para 283357, e mais de um milhão de linhas foram adicionadas. A beta já estava na versão 283368 até aquela hora. O módulo HTMLBubbles, que renderiza mensagens em HTML e JavaScript na beta, ainda não está no código aberto, e dois scripts no repositório verificam que ele não foi incluído.
O Que Já Foi Incorporado
| Pull Request | O que muda |
|---|---|
| #2 | Configurações de notificações como no Telegram para iOS: categorias, exceções, reações |
| #27 | Notificações de Stories e seção de configurações de Stories |
| #75 | Tab bar flutuante como no iOS, o indicador pode ser arrastado |
| #36 | Prazo de "1 ano" para encerramento automático de sessões inativas |
| #31, #37 | Opção "Remover da pasta" e exclusão da foto de perfil da pasta |
| #22 | Editor de IA ao editar uma mensagem enviada |
| #20 | Erros de exportação de chats visíveis para cada chat |
| #34, #9 | Copiar foto coloca a imagem na área de transferência, e mensagens são copiadas junto com a data |
| #29, #30 | Tradução para o idioma regional da interface (por exemplo, pt-br) e entrada de letras com diacríticos em enquetes, tarefas e notas de contato |
No #75, há uma ressalva do autor: o efeito de lente no indicador, como no iOS, não foi incluído na alteração. No iOS, ele é desenhado por um componente fechado do UIKit, que não está no SDK do macOS, e só pode ser replicado com um renderizador próprio em Metal.




