استعد تيليجرام لنظام iOS لهاتف iPhone Duo القابل للطي، الذي بدأت Apple ببيعه في 23 أكتوبر. يقع الجزء الأكبر من العمل في مستودع Telegram-iOS المفتوح المصدر، ضمن commit واحد c8bb114b بتاريخ 9 أكتوبر: 12,889 سطرًا مضافًا و2,940 سطرًا محذوفًا. في Duo، ينتقل زر "الرجوع" إلى الشريط الجانبي عند حافة الشاشة، وتصبح لوحة علامات التبويب عمودية، وتُفتح القصص على الشاشة الداخلية الكبيرة كبطاقة، تمامًا كما هو الحال على iPad. وصلت التعديلات الأخيرة الخاصة بـ Duo إلى الكود في 22 أكتوبر، قبل أقل من ساعة من تغيير رقم الإصدار إلى 13.1.1، وفي مساء اليوم نفسه، صدر الإصدار 13.1.1 في App Store. هذا التحديث يخص مالكي Duo: على أجهزة iPhone و iPad الأخرى، يبقى التخطيط كما هو، باستثناء بعض الإصلاحات العرضية.

ما الذي يتغير على شاشة Duo

القاعدة الأساسية مدونة في الدليل الموجود في المستودع بجانب الكود: يُوضع زر "الرجوع" أو "إغلاق" في الشريط الجانبي إذا كان موجودًا. تقوم الشاشات القياسية بذلك تلقائيًا، بينما تأخذ الشاشات ذات الرأس المخصص مكان الزر من التخطيط العام.

  • الدردشة. ينقسم الرأس إلى صف علوي وعمود جانبي. يحتوي العمود على زر "الرجوع" وصورة الملف الشخصي للمحادث، ويمتد حقل الإدخال إلى حافة الشريط إذا كان فارغًا.
  • قائمة الدردشات والملف الشخصي. تنتقل الأزرار إلى الشريط، ويتوسط العنوان الجزء المتبقي من الشاشة.
  • لوحة علامات التبويب. بدلاً من الشريط الأفقي في الأسفل، توجد كبسولة عمودية في الشريط الجانبي، مثبتة في الأسفل. على الشاشة الداخلية، حيث توجد قائمة على اليسار ودردشة على اليمين، لا توجد تسميات تحت الأيقونات.
  • الأزرار في أسفل الشاشة ("متابعة"، "إرسال"، لوحات الاختيار) تمتد على العرض الكامل، بما في ذلك الشريط. الاستثناءات: الأزرار الصغيرة في المنتصف (زر التسجيل، "تم" في معاينة الكاميرا)، الأوراق الطويلة القابلة للتمرير مثل "مشاركة"، وحقل الإدخال الذي ينمو للأعلى. تبقى هذه في الجزء الرئيسي من الشاشة: وإلا فإن الزر الصغير سينزاح عن محور المحتوى بمقدار 42 نقطة، وستصل الأزرار في زوايا الورقة الطويلة إلى الكتلة الزاوية، ويشغل حقل الإدخال عرض أسطره.
  • القصص على الشاشة المفتوحة تُعرض كبطاقة بنسبة 9:16 في المنتصف مع خلفية ضبابية، كما هو الحال على iPad. بدون هذا التعديل، كانت القصة تمتد على الشاشة بأكملها وتُقص.
  • "تم" على الشاشات التي تحتوي على مفتاح "تعديل/تم" يبقى في الصف العلوي. في السابق، كان يقفز من الصف إلى دائرة العمود الجانبي.

لماذا يحتاج Duo إلى تخطيط خاص به

في هاتف iPhone العادي، يحجز النظام حواف الشاشة: من الأعلى يوجد نتوء الساعة، ومن الأسفل شريط إيماءة "الرئيسية". في Duo، الحجز هو كتلة مستطيلة في إحدى الزوايا، حيث توجد الساعة وأيقونات الاتصال والكاميرا. يوسع نظام iOS هذه الكتلة لتشمل مسافة بادئة على طول الحافة بالكامل، وبالتالي فإن التطبيق الذي يلتزم بالمسافات البادئة للنظام ببساطة يفقد شريطًا بعرض 84 نقطة على طول الحافة. يواصل تيليجرام الالتزام بالمسافات البادئة للنظام، ولكنه يأخذ أحجام الكتل الزاوية من جدوله الخاص لكل وضع للجهاز. القيم الحية للنظام بعد الدوران والطي تكون انتقالية لمدة تصل إلى 0.6 ثانية، لذلك لا تُقرأ.

الوضعالنافذة، بالنقاطالكتلة الزاويةما يتبقى على الجانب
مطوي، عمودي466 × 678أعلى اليمين، 84 × 170شريط على اليمين أسفل الكتلة
مطوي، مدور لليسار678 × 466أسفل اليمين، 84 × 82شريط على اليمين فوق الكتلة
مطوي، مدور لليمين678 × 466أعلى اليسار، 84 × 84شريط على اليسار أسفل الكتلة
مفتوح، عمودي669 × 951أعلى اليمين، 134 × 82لا يوجد شريط، "جزيرة" في الأعلى
مفتوح، أفقي951 × 669أعلى اليمين، 84 × 120شريط على اليمين أسفل الكتلة

من هنا يأتي الفخ الرئيسي الذي يذكره الدليل أولاً: في Duo المطوي، توجد مسافة بادئة جانبية في الاتجاه العمودي، بينما يفترض كود أي تطبيق iPhone عادةً أنه لا توجد مسافات بادئة جانبية في الوضع الرأسي.

ثلاث ميزات أخرى للجهاز تطلبت تغيير الكود:

  • UIScreen.main على Duo يعيد دائمًا الشاشة الخارجية، حتى عندما يكون الهاتف مفتوحًا. إضاءة الفلاش عند التقاط الصور بالكاميرا الأمامية ورسائل الفيديو، وسطوع عرض رمز QR، والوضع الليلي التلقائي كانت تغير سطوع الشاشة الخاطئة.
  • انحناءات زوايا الشاشة الخارجية مختلفة: 8 نقاط من جانب الطي و59 من الخارج. أما الشاشة الداخلية فجميع زواياها 55 نقطة. الآن، تُقوّس الأوراق والانتقالات بين الشاشات وتحريك قائمة الدردشات عند فتح كاميرا القصص لكل زاوية على حدة.
  • يعتبر النظام Duo المفتوح أفقيًا شاشة "عرض عادي"، مثل iPad، على الرغم من أنه هاتف. كانت عمليات التحقق "هل هذا iPad؟" بناءً على عرض الشاشة تتعطل، ولا يقوم Duo المفتوح بتدوير الشاشة من التطبيق على الإطلاق.
كيف بدت أخطاء التخطيط

يسرد الدليل الأخطاء النموذجية التي لا تظهر على الأجهزة الأخرى لأن المسافات البادئة على اليسار واليمين متساوية هناك. كانت المسافة البادئة للحافة اليسرى تُطبق أيضًا على اليمين. كانت الكتلة بعرض الجزء الرئيسي من الشاشة تتوسط الشاشة بأكملها وتنزاح بمقدار 42 نقطة نحو الشريط. كان الزر الموجود على الحافة اليمنى يُحسب من المسافة البادئة اليسرى. كانت معاينة الكاميرا بنسبة 9:16 تظهر أعلى الشاشة: على Duo المطوي بمقدار 150 نقطة. كانت الأزرار السفلية، المحسوبة من حافة الشاشة وفقًا للثوابت القديمة لأجهزة iPhone المزودة بزر "الرئيسية"، تستقر على شريط الإيماءة. يجب أن يعود كل تعديل إلى التعبير السابق عندما لا توجد كتل زاوية وتكون المسافات البادئة متساوية، لذلك ترسم الأجهزة الأخرى نفس الشيء بايتًا بايتًا كما كان من قبل.

كيف تم فحص 298 شاشة

سُجل سير العمل في تقرير فحص الشاشات. استمر فرع feature/reserved-corners من 25 سبتمبر إلى 9 أكتوبر، واستغرق الفحص نفسه يومي 8 و 9 أكتوبر. تم فحص 298 شاشة، أي جميع وحدات التحكم في شاشات التطبيق، باستثناء وحدتي اختبار وهميتين. قرأها وكلاء ممنوعون من تغيير الكود، وحصلت كل شاشة على سطر في جدول الفحص: إما اكتشاف أو سبب لعدم الحاجة إلى تعديل. أُجريت التصحيحات في ملفاتها الخاصة فقط، وقام ثلاثة مراجعين بمقارنة كل فرق مع القواعد. تم توقيع الـ commit الرئيسي وجميع الـ commits اللاحقة تقريبًا بواسطة المؤلف المشارك Claude Opus 5.5. إجمالاً، وفقًا لرسالة الـ commit، تم إصلاح حوالي 65 اكتشافًا.

بالتوازي، تم العثور على أخطاء أكثر خطورة من المسافات البادئة غير المتساوية:

  • كانت شاشة "سمات الدردشة" تُغلق بخطأ عند التمرير، لأن عناصر القائمة لم تُنشأ في الخيط الرئيسي؛
  • كان زر في إعدادات البث المباشر على Duo أوسع من المساحة المتاحة بجانب الشريط وتجاوز حافة الشاشة بمقدار 12 نقطة؛
  • كان زر تفويض Telegram Passport في الوضع الأفقي المطوي يقع تحت الكتلة الزاوية.

أُجريت الفحوصات على الشاشة في محاكي Duo بنظام iOS 27.1. لا يمكن طي المحاكي أو فتحه من سطر الأوامر، لذلك تم التحقق من معظم التعديلات الخاصة بالوضع الأفقي المفتوح فقط عن طريق البناء وقراءة الكود. هذا مسجل مباشرة في قسم التقرير الخاص بالثغرات. كما تم تضمين الشاشات التي لم تكن موجودة في حساب الاختبار: أزرار الاشتراك في Premium (الحساب لديه اشتراك بالفعل)، استيراد الدردشات، والمكالمات الحية.

ما تم إنجازه قبل إطلاق الجهاز

بعد الـ commit الرئيسي، استمرت التعديلات الخاصة بـ Duo. في 18 أكتوبر، توقفت القصص المجاورة عن الظهور في الشريط الجانبي: على الهاتف العادي، تقف خلف حافة الشاشة، ولكن على Duo، كانت قطعة من قصة أخرى مرئية دائمًا تحت الساعة. في اليوم نفسه، تم تصحيح مفتاح علامات تبويب المحفظة ورسوم متحركة الصورة الرمزية في العمود الجانبي. في 22 أكتوبر، رفعت كاميرا القصص والمحرر الأزرار فوق شريط إيماءة "الرئيسية"، وتوقف حقل البحث في قائمة الدردشات على الشاشة الأفقية المفتوحة عن الاختفاء جزئيًا خلف الحافة العلوية.

في ملف versions.json، ظهر الرقم 13.1.1 في 22 أكتوبر الساعة 12:11 بالتوقيت العالمي المنسق، بعد تسع دقائق من آخر تعديل خاص بـ Duo. في App Store، صدر الإصدار 13.1.1 في اليوم نفسه الساعة 18:45 بالتوقيت العالمي المنسق، مع وصف "Bug fixes, minor improvements, and more". يظهر iPhone Duo في قائمة الأجهزة المدعومة للتطبيق، لكن هذه القائمة تشير فقط إلى أن التطبيق يمكن تثبيته، وليس أنه تم تكييفه مع الشاشة. تتطابق النسخة التي يتلقاها مالكو Duo مع الكود المفتوح من حيث الرقم والتاريخ، ولم يتم التحقق من تطابق الملف الثنائي من App Store مع الكود.