في نفس اليوم الذي تم فيه نشر رابط المستودع المفتوح الجديد لعميل Telegram لنظام macOS لمختبري النسخة التجريبية، بدأ فريق العميل بقبول تعديلات المطورين الخارجيين فيه. حتى الساعة 10:19 بالتوقيت العالمي المنسق (UTC) يوم 25 أكتوبر، تم إرسال 81 pull request من 19 مؤلفًا إلى TelegramMessenger/telegram-macos، وتم دمج 30 منها في الفرع الرئيسي (main branch). تصل التعديلات المقبولة إلى نسخة macOS التجريبية في غضون ساعات قليلة، وقد وصل أحدها في أقل من ساعة. ينطبق هذا على المستخدمين المشتركين في قناة النسخة التجريبية لعميل Mac، وعلى المطورين الذين يرغبون في تعديل العميل الرسمي بدلاً من إنشاء نسخة متفرعة (fork) خاصة بهم.

كم عدد التعديلات التي تم إرسالها وكم عدد التي تم قبولها

الـ pull request هو تعديل مقترح على الكود، يمكن لمالك المستودع دمجه في فرعه أو رفضه. وصل أول pull request في 23 أكتوبر الساعة 14:18 بالتوقيت العالمي المنسق، وتم دمج الأول في 17:45 بالتوقيت العالمي المنسق: وهو #3، الذي استبدل علم القراصنة بماسة للأرقام القابلة للتحصيل في قائمة البلدان. في 23 أكتوبر، تم إرسال 17 pull request، وفي 24 أكتوبر 55، وفي الساعات العشر الأولى من يوم 25 أكتوبر، تم إرسال 9 أخرى.

حتى الساعة 10:19 بالتوقيت العالمي المنسق يوم 25 أكتوبر:

الحالةعدد الـ Pull Requests
تم دمجها30
أُغلقت دون دمج14
مفتوحة37

تم إرسال التعديلات المدمجة من قبل 11 مؤلفًا مختلفًا، بإجمالي 7 307 سطرًا مضافًا و 1 089 سطرًا محذوفًا. تم دمج جميع الـ 30 تعديلاً بواسطة حساب واحد، وهو macosswift. يذكر ملفه الشخصي اسم Telegram macOS، وشركة Telegram، وموقع macos.telegram.org. جاءت تسعة تعديلات مدمجة من مؤلف واحد من فروع تحمل البادئة codex/، وهي التسمية الافتراضية التي يطلقها وكيل Codex من OpenAI عليها.

القواعد الجديدة التي ظهرت في اليوم الثاني

في 24 أكتوبر الساعة 16:12 بالتوقيت العالمي المنسق، ظهر ملف CONTRIBUTING.md وقالب الـ pull request في المستودع. يجب أن يحتوي كل pull request الآن على أربعة أقسام: التغيير الرئيسي، السبب، لقطات شاشة أو فيديو "قبل" و "بعد" في نفس السيناريو، ووصف التحقق. إذا لم تكن هناك نتيجة مرئية، يجب توضيح السبب بدلاً من لقطات الشاشة وإرفاق مخرجات التحقق، وبالنسبة لتغييرات السلوك، يجب تحديد إصدار macOS ورقم بناء العميل. الـ pull request الذي يفتقر إلى أي قسم أو لا يحتوي على تأكيد التحقق المحدد لا يعتبر جاهزًا للمراجعة.

بدأ تطبيق القالب في نفس المساء. من الساعة 17:58 إلى 18:09 بالتوقيت العالمي المنسق، تم إغلاق أربعة pull requests مع ملاحظة REJECTED: لم تكن هناك لقطة شاشة أو فيديو تحت قسمي "قبل" و "بعد". من الساعة 19:31 إلى 19:36 بالتوقيت العالمي المنسق، تم ترك نفس الملاحظة تحت 11 pull request أخرى. لم يتم إغلاقها، بل طُلب استكمالها، وتم دمج اثنتين منها في نفس المساء.

أسباب الرفض

بالإضافة إلى القالب الفارغ، يتم إغلاق التعديلات بناءً على جوهرها، مع شرح في التعليق:

  • #6، لوحة جانبية مسطحة وعلامات تبويب للمجلدات المفضلة، يغير الواجهة والمنتج، والفريق "لا يخطط لقبول مثل هذه التغييرات في الوقت الحالي".
  • #13 كان يعرض زر محرر AI من الحرف العاشر، بينما وفقًا للتصميم، يظهر من ثلاثة أسطر. كانت خانة الإدخال تقفز بمقدار 30 نقطة. اعتبر الجزء الخاص بتحرير الرسائل المرسلة قابلاً للتطبيق، وتم دمجه بشكل منفصل في #22.
  • #53 قام بتعديل السلاسل الروسية يدويًا فقط، بينما تتم ترجمات العميل على translations.telegram.org لجميع اللغات في وقت واحد.
  • #23، البناءات المحلية وتوقيع التطبيق: وعد الفريق بتغيير إعدادات البناء والتوقيع بنفسه، وفي هذا التعديل، تعطل اختبار البناء في CI.
  • #32 كان يعرض في المجلدات محادثات لا يشارك فيها المستخدم، بينما #40 كان يعطل البحث. تم ترك لقطة شاشة وفيديو للعطل تحته.

تحت #14، كُتب في البداية أن الكود لا يتم تجميعه، وطُلب التحقق من البناء قبل الإرسال. تم دمجه لاحقًا. #75 مع شريط علامات التبويب العائم تم إعادته أيضًا بملاحظة: بعد عدة تبديلات، كانت الصورة الرمزية تختلف عن حلقة التحديد. قام المؤلف بتصحيح ذلك في 07:39 بالتوقيت العالمي المنسق، وفي 08:09 بالتوقيت العالمي المنسق، تم دمج التعديل.

كيف تصل التعديلات إلى النسخة التجريبية

تُصدر نسخة macOS التجريبية عبر إصدارات التحديثات مع نفس الملاحظة "Bug fixes, minor improvements, and more". يتضح أن التعديلات الخارجية قد تم تضمينها في البناء من خلال ملفه الثنائي (binary): تظهر سلاسل من الكود الخاص بها حيث لم تكن موجودة من قبل.

صدر البناء 13.1.0.283377 في 24 أكتوبر الساعة 21:27 بالتوقيت العالمي المنسق. يحتوي لأول مرة على السلاسل "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 بالتوقيت العالمي المنسق، مما يعني أنها وصلت إلى النسخة التجريبية في غضون 2 ساعة و 43 دقيقة إلى 5 ساعات و 37 دقيقة.

صدر البناء 13.1.0.283380 في 25 أكتوبر الساعة 09:06 بالتوقيت العالمي المنسق، بعد 57 دقيقة من دمج #75. ظهرت فيه الأسماء TabBarItemControl و SelectionGesture من كود هذا التعديل.

كاد جزء كود الفريق أن يلحق بالنسخة التجريبية. في 23 أكتوبر الساعة 17:04 بالتوقيت العالمي المنسق، تم دمج commit "Merge branch 'release' into master (13.1)" في الفرع الرئيسي، وارتفع رقم البناء في Info.plist من 283305 إلى 283357، وتمت إضافة أكثر من مليون سطر. كانت النسخة التجريبية بحلول ذلك الوقت 283368. لا يزال مكون HTMLBubbles، الذي يرسم الرسائل بتنسيق HTML و JavaScript في النسخة التجريبية، غير موجود في الكود المفتوح، ويتحقق نصان برمجيان في المستودع من عدم وصوله إلى هناك.

ما تم دمجه بالفعل

Pull Requestما يغيره
#2إعدادات الإشعارات كما في Telegram لنظام iOS: الفئات، الاستثناءات، التفاعلات
#27إشعارات القصص وقسم إعدادات القصص
#75شريط علامات تبويب عائم كما في iOS، يمكن سحب المؤشر
#36مدة "سنة واحدة" لإنهاء الجلسات غير النشطة تلقائيًا
#31، #37خيار "إزالة من المجلد" وحذف الصورة الرمزية للمجلد
#22محرر AI عند تحرير رسالة مرسلة
#20أخطاء تصدير المحادثات مرئية لكل محادثة
#34، #9نسخ الصورة يضع الصورة نفسها في الحافظة، وتُنسخ الرسائل مع التاريخ
#29، #30الترجمة إلى اللغة الإقليمية للواجهة (مثل pt-br) وإدخال الحروف ذات علامات التشكيل في الاستطلاعات والمهام والملاحظات الخاصة بجهة الاتصال

في #75، هناك ملاحظة من المؤلف: تأثير العدسة على المؤشر، كما في iOS، لم يتم تضمينه في التعديل. في iOS، يتم رسمه بواسطة مكون UIKit مغلق غير موجود في SDK لنظام macOS، ولا يمكن تكراره إلا باستخدام عارض (renderer) خاص يعتمد على Metal.