همان روزی که لینک مخزن عمومی جدید کلاینت Telegram برای macOS در اختیار تست‌کنندگان بتا قرار گرفت، تیم کلاینت شروع به پذیرش اصلاحات از توسعه‌دهندگان شخص ثالث در آن کرد. تا ساعت 10:19 UTC در 25 اکتبر، 81 پول ریکوئست از 19 نویسنده به TelegramMessenger/telegram-macos ارسال شده بود که 30 مورد از آن‌ها در شاخه اصلی (main branch) ادغام شده‌اند. اصلاحات پذیرفته شده ظرف چند ساعت به نسخه بتای macOS می‌رسند؛ یکی از آن‌ها در کمتر از یک ساعت رسید. این موضوع شامل کسانی می‌شود که در کانال بتای کلاینت Mac هستند و توسعه‌دهندگانی که می‌خواهند کلاینت رسمی را اصلاح کنند، نه اینکه فورک خود را بنویسند.

چه تعداد اصلاحیه ارسال شد و چه تعداد پذیرفته شد

پول ریکوئست یک پیشنهاد برای اصلاح کد است که صاحب مخزن می‌تواند آن را در شاخه خود ادغام کند یا رد کند. اولین پول ریکوئست در 23 اکتبر ساعت 14:18 UTC ارسال شد و اولین مورد در ساعت 17:45 UTC ادغام شد: این مورد #3 بود که پرچم دزدان دریایی را با الماس برای شماره‌های کلکسیونی در لیست کشورها جایگزین می‌کرد. در 23 اکتبر 17 پول ریکوئست، در 24 اکتبر 55 پول ریکوئست و در ده ساعت اول 25 اکتبر 9 پول ریکوئست دیگر ارسال شد.

تا ساعت 10:19 UTC در 25 اکتبر:

وضعیتپول ریکوئست‌ها
ادغام شده30
بسته شده بدون ادغام14
باز37

اصلاحات ادغام شده توسط 11 نویسنده مختلف ارسال شده‌اند که در مجموع 7 307 خط اضافه و 1 089 خط حذف شده است. هر 30 مورد توسط یک حساب کاربری به نام macosswift ادغام شده‌اند. در پروفایل او، نام Telegram macOS، شرکت Telegram و وب‌سایت macos.telegram.org ذکر شده است. نه مورد از اصلاحات ادغام شده یک نویسنده از شاخه‌هایی با پیشوند codex/ آمده‌اند که به طور پیش‌فرض توسط عامل Codex از OpenAI نام‌گذاری می‌شوند.

چه قوانینی در روز دوم اضافه شد

در 24 اکتبر ساعت 16:12 UTC، فایل CONTRIBUTING.md و قالب پول ریکوئست در مخزن ظاهر شدند. اکنون هر پول ریکوئست باید شامل چهار بخش باشد: تغییر اصلی، دلیل، اسکرین‌شات یا ویدیوی «قبل» و «بعد» در یک سناریوی مشابه، و توضیحات مربوط به تست. اگر نتیجه قابل مشاهده‌ای وجود ندارد، به جای اسکرین‌شات باید توضیح داده شود که چرا و خروجی تست پیوست شود، و برای تغییرات رفتاری، نسخه macOS و شماره بیلد کلاینت باید مشخص شود. پول ریکوئستی که فاقد هر یک از این بخش‌ها باشد یا تأیید تست در آن علامت‌گذاری نشده باشد، آماده بررسی نیست.

استفاده از این قالب از همان شب آغاز شد. از ساعت 17:58 تا 18:09 UTC، چهار پول ریکوئست با برچسب REJECTED بسته شدند: زیر بخش‌های «قبل» و «بعد» هیچ اسکرین‌شات یا ویدیویی وجود نداشت. از ساعت 19:31 تا 19:36 UTC، همین نکته برای 11 پول ریکوئست دیگر نیز ذکر شد. این پول ریکوئست‌ها بسته نشدند، بلکه از نویسندگان خواسته شد تا آن‌ها را تکمیل کنند، و دو مورد از آن‌ها در همان شب ادغام شدند.

دلایل رد شدن

علاوه بر قالب خالی، اصلاحات به دلایل ماهوی و با توضیح در کامنت رد می‌شوند:

  • #6، پنل کناری تخت و تب‌های پوشه‌های مورد علاقه، رابط کاربری و محصول را تغییر می‌دهد، و تیم «در حال حاضر قصد پذیرش چنین تغییراتی را ندارد»؛
  • #13 دکمه ویرایشگر AI را از کاراکتر دهم نشان می‌داد، در حالی که طبق طراحی باید از سه خط ظاهر شود. در این حالت، فیلد ورودی 30 نقطه بالا و پایین می‌پرید. بخش مربوط به ویرایش پیام‌های ارسال شده کارآمد تشخیص داده شد و به صورت جداگانه در #22 ادغام شد؛
  • #53 فقط رشته‌های روسی را به صورت دستی اصلاح می‌کرد، در حالی که ترجمه‌های کلاینت در translations.telegram.org به طور همزمان برای همه زبان‌ها انجام می‌شود؛
  • #23، بیلدهای محلی و امضای برنامه: تیم قول داده بود که تنظیمات بیلد و امضا را خودشان تغییر دهند، و در این اصلاحیه تست بیلد در CI خراب می‌شد؛
  • #32 چت‌هایی را در پوشه‌ها نشان می‌داد که کاربر عضو آن‌ها نبود، و #40 جستجو را خراب می‌کرد. زیر آن اسکرین‌شات و ویدیوی خرابی قرار داده شده است.

زیر #14 ابتدا نوشته شد که کد کامپایل نمی‌شود و درخواست شد که بیلد قبل از ارسال بررسی شود. بعدها این مورد ادغام شد. #75 با پنل تب‌های شناور نیز با یک نکته بازگردانده شد: پس از چندین بار جابجایی، آواتار با حلقه انتخاب همخوانی نداشت. نویسنده این مشکل را در ساعت 07:39 UTC برطرف کرد و در ساعت 08:09 UTC اصلاحیه ادغام شد.

چگونه اصلاحات به نسخه بتا می‌رسند

نسخه بتای macOS از طریق نسخه‌های به‌روزرسانی با همان عنوان «Bug fixes, minor improvements, and more» منتشر می‌شود. اینکه اصلاحات شخص ثالث در بیلد گنجانده شده‌اند، از طریق باینری آن قابل مشاهده است: رشته‌های کد آن‌ها در جایی ظاهر می‌شوند که قبلاً وجود نداشتند.

بیلد 13.1.0.283377 در 24 اکتبر ساعت 21:27 UTC منتشر شد. در آن برای اولین بار رشته‌های «Could not load message history» و «Message history pagination did not advance» از #20 (خطاهای اکسپورت چت‌ها اکنون برای هر چت نشان داده می‌شوند، نه اینکه بی‌صدا از بین بروند)، «Failed to persist the custom application icon at %@» از #10 (تغییر آیکون برنامه)، نام‌های سرویس از #2 و #27 (تنظیمات اعلان‌ها) و از #16 (دستورات ربات‌ها) وجود دارند. این پنج اصلاحیه از ساعت 15:50 تا 18:45 UTC ادغام شدند، یعنی در مدت زمان 2 ساعت و 43 دقیقه تا 5 ساعت و 37 دقیقه به نسخه بتا رسیدند.

بیلد 13.1.0.283380 در 25 اکتبر ساعت 09:06 UTC، یعنی 57 دقیقه پس از ادغام #75، منتشر شد. در آن نام‌های TabBarItemControl و SelectionGesture از کد این اصلاحیه ظاهر شدند.

بخش کد تیم تقریباً به نسخه بتا رسیده است. در 23 اکتبر ساعت 17:04 UTC، کامیت «Merge branch 'release' into master (13.1)» در شاخه اصلی قرار گرفت، شماره بیلد در Info.plist از 283305 به 283357 افزایش یافت و بیش از یک میلیون خط اضافه شد. نسخه بتا تا آن ساعت 283368 بود. ماژول HTMLBubbles که پیام‌ها را در نسخه بتا با HTML و JavaScript رندر می‌کند، همچنان در کد عمومی وجود ندارد، و دو اسکریپت در مخزن بررسی می‌کنند که این ماژول به آنجا راه پیدا نکرده باشد.

چه مواردی تاکنون ادغام شده‌اند

پول ریکوئستچه چیزی را تغییر می‌دهد
#2تنظیمات اعلان‌ها مانند Telegram برای iOS: دسته‌بندی‌ها، استثناها، واکنش‌ها
#27اعلان‌های استوری‌ها و بخش تنظیمات استوری‌ها
#75پنل تب‌های شناور مانند iOS، نشانگر قابل کشیدن است
#36مدت زمان «1 سال» برای پایان خودکار نشست‌های غیرفعال
#31، #37گزینه «حذف از پوشه» و حذف آواتار پوشه
#22ویرایشگر AI هنگام ویرایش پیام ارسال شده
#20خطاهای اکسپورت چت‌ها برای هر چت قابل مشاهده هستند
#34، #9کپی کردن عکس، خود تصویر را در کلیپ‌بورد قرار می‌دهد، و پیام‌ها همراه با تاریخ کپی می‌شوند
#29، #30ترجمه به زبان منطقه‌ای رابط کاربری (مثلاً pt-br) و وارد کردن حروف با دیاکریتیک در نظرسنجی‌ها، وظایف و یادداشت‌های مخاطب

در #75، نویسنده یک نکته را ذکر کرده است: افکت لنز روی نشانگر، مانند iOS، در این اصلاحیه گنجانده نشده است. در iOS، این افکت توسط یک کامپوننت بسته UIKit رندر می‌شود که در SDK macOS وجود ندارد، و تکرار آن تنها با رندرکننده اختصاصی بر پایه Metal امکان‌پذیر است.