El mismo día en que se compartió con los beta-testers el enlace al nuevo repositorio abierto del cliente de Telegram para macOS, el equipo del cliente comenzó a aceptar contribuciones de desarrolladores externos. Para el 25 de octubre a las 10:19 UTC, se habían enviado 81 pull requests de 19 autores a TelegramMessenger/telegram-macos, y 30 de ellos ya se habían fusionado con la rama principal. Las contribuciones aceptadas llegan a la beta de macOS en cuestión de horas; una de ellas lo hizo en menos de una hora. Esto beneficia tanto a quienes utilizan el canal beta del cliente para Mac como a los desarrolladores que desean mejorar el cliente oficial en lugar de crear su propio fork.
Cuántas contribuciones se enviaron y cuántas se aceptaron
Un pull request es una propuesta de cambio de código que el propietario del repositorio puede fusionar en su rama o rechazar. El primero llegó el 23 de octubre a las 14:18 UTC, y el primero en ser fusionado fue a las 17:45 UTC: se trata del #3, que reemplaza la bandera pirata por un diamante en los números coleccionables de la lista de países. El 23 de octubre se enviaron 17 pull requests, el 24 de octubre 55, y en las primeras diez horas del 25 de octubre, otros 9.
A las 10:19 UTC del 25 de octubre:
| Estado | Pull requests |
|---|---|
| Fusionados | 30 |
| Cerrados sin fusionar | 14 |
| Abiertos | 37 |
Las contribuciones fusionadas fueron enviadas por 11 autores diferentes, sumando 7 307 líneas añadidas y 1 089 eliminadas. Los 30 pull requests fueron fusionados por una única cuenta, macosswift. Su perfil indica como nombre Telegram macOS, como empresa Telegram y como sitio web macos.telegram.org. Nueve de las contribuciones fusionadas de un mismo autor provenían de ramas con el prefijo codex/, que es como el agente Codex de OpenAI las nombra por defecto.
Qué reglas surgieron al segundo día
El 24 de octubre a las 16:12 UTC, aparecieron en el repositorio CONTRIBUTING.md y una plantilla de pull request. Ahora, cada pull request debe incluir cuatro secciones: el cambio principal, la razón, capturas de pantalla o videos "antes" y "después" en el mismo escenario, y una descripción de la verificación. Si no hay un resultado visible, en lugar de capturas de pantalla, se debe explicar por qué y adjuntar el resultado de la verificación, y para los cambios de comportamiento, especificar la versión de macOS y el número de build del cliente. Un pull request sin alguna de estas secciones o sin la confirmación de verificación marcada no estará listo para su revisión.
La plantilla comenzó a aplicarse esa misma tarde. Entre las 17:58 y las 18:09 UTC, cuatro pull requests fueron cerrados con la etiqueta REJECTED: no había capturas de pantalla ni videos para el "antes" y "después". Entre las 19:31 y las 19:36 UTC, se dejó la misma observación en otros 11 pull requests. Estos no fueron cerrados, sino que se les pidió que los completaran, y dos de ellos fueron fusionados esa misma tarde.
Por qué se rechazan
Además de las plantillas vacías, las contribuciones se cierran por motivos sustantivos, con una explicación en el comentario:
- #6, un panel lateral plano y pestañas de carpetas favoritas, cambia la interfaz y el producto, y el equipo "no planea aceptar tales cambios por ahora";
- #13 mostraba el botón del AI editor a partir del décimo carácter, pero según el diseño, aparece a partir de tres líneas. El campo de entrada saltaba 30 puntos. La parte de edición de mensajes enviados se consideró funcional y se fusionó por separado en #22;
- #53 solo corregía manualmente cadenas en ruso, mientras que las traducciones del cliente se realizan en translations.telegram.org para todos los idiomas simultáneamente;
- #23, builds locales y firma de la aplicación: el equipo prometió cambiar la configuración de build y firma internamente, y esta contribución rompía la prueba de build en CI;
- #32 mostraba en las carpetas chats en los que el usuario no participaba, y #40 rompía la búsqueda. Se adjuntaron una captura de pantalla y un video del fallo.
En #14 se escribió inicialmente que el código no compilaba y se pidió verificar el build antes de enviarlo. Más tarde, fue fusionado. #75, con la tab bar flotante, también fue devuelto con una observación: después de varias conmutaciones, la imagen de perfil se desalineaba con el anillo de selección. El autor lo corrigió a las 07:39 UTC, y a las 08:09 UTC la contribución fue fusionada.
Cómo llegan las contribuciones a la beta
La beta de macOS se lanza a través de versiones de actualización con la misma descripción "Bug fixes, minor improvements, and more". Que un build incluya contribuciones de terceros se puede verificar en su binario: las cadenas de su código aparecen donde antes no estaban.
El build 13.1.0.283377 se lanzó el 24 de octubre a las 21:27 UTC. En él, por primera vez, se encuentran las cadenas "Could not load message history" y "Message history pagination did not advance" de #20 (los errores de exportación de chats ahora se muestran por cada chat, en lugar de perderse silenciosamente), "Failed to persist the custom application icon at %@" de #10 (cambio de icono de la aplicación), nombres de servicio de #2 y #27 (configuración de notificaciones) y de #16 (comandos de bots). Estas cinco contribuciones fueron fusionadas entre las 15:50 y las 18:45 UTC, lo que significa que llegaron a la beta en un tiempo de entre 2 h 43 min y 5 h 37 min.
El build 13.1.0.283380 se lanzó el 25 de octubre a las 09:06 UTC, 57 minutos después de la fusión de #75. En él aparecieron los nombres TabBarItemControl y SelectionGesture del código de esta contribución.
La parte del código del equipo casi ha alcanzado a la beta. El 23 de octubre a las 17:04 UTC, se fusionó en la rama principal el commit "Merge branch 'release' into master (13.1)", el número de build en Info.plist aumentó de 283305 a 283357, y se añadió más de un millón de líneas. La beta para esa hora ya era la 283368. El módulo HTMLBubbles, que renderiza mensajes en HTML y JavaScript en la beta, sigue sin estar en el código abierto, y dos scripts en el repositorio verifican que no haya llegado allí.
Qué ya se ha fusionado
| Pull request | Qué cambia |
|---|---|
| #2 | Configuración de notificaciones como en Telegram para iOS: categorías, excepciones, reacciones |
| #27 | Notificaciones de historias y sección de configuración de historias |
| #75 | Tab bar flotante como en iOS, el indicador se puede arrastrar |
| #36 | Plazo de "1 año" para el cierre automático de sesiones inactivas |
| #31, #37 | Opción "Eliminar de la carpeta" y eliminación de la imagen de perfil de la carpeta |
| #22 | AI editor al editar un mensaje enviado |
| #20 | Los errores de exportación de chats son visibles por cada chat |
| #34, #9 | Copiar una foto guarda la imagen en el portapapeles, y los mensajes se copian junto con la fecha |
| #29, #30 | Traducción a un idioma de interfaz regional (por ejemplo, pt-br) e introducción de letras con diacríticos en encuestas, tareas y notas de contacto |
En #75, el autor aclara que el efecto de lente en el indicador, como en iOS, no se incluyó en la contribución. En iOS, lo dibuja un componente privado de UIKit que no está en el SDK de macOS, y solo se puede replicar con un renderizador propio en Metal.




