
---- تحديث v2 ----
- الموسيقى: طلب music_token كان بيرجع نص مش JSON (ناقص dataType) فكان بيفشل دايماً برسالة
  "حصلت مشكلة في تشغيل الملف". اتصلّح، وكمان تجهيز الصوت جوه الضغطة (لازم للموبايل/iOS).
- الطلوع على المقعد: السيرفر بيرقّي صلاحية النشر على نفس اتصال LiveKit بدل إعادة اتصال كاملة.
- حماية من اتصالين متداخلين بنفس الهوية (كانت بتعمل تأخير وقطع على الشبكات البطيئة).
- تجهيز الميكروفون مسبقاً لحظة الضغط على المقعد.
- إصلاح: بعد انقطاع الاتصال المايك القديم كان بيفضل عالق ومش بيتنشر تاني.

---- تحديث v3 ----
- رسائل الخطأ والتنبيهات كانت مش بتظهر خالص لأن السكربت الأساسي مفيهوش دالة showToast.
  دلوقتي فيه إشعار حقيقي بيظهر أسفل الشاشة (خطأ الموسيقى/المايك/الاتصال).
- رسائل تقدم للموسيقى: "جاري تجهيز الأغنية..." ثم "تم تشغيل الموسيقى".
- رقم الإصدار (v3) ظاهر في إعدادات الإضافة وفي console للتأكد إن النسخة الجديدة اتحمّلت.

---- تحديث v4 (الشكل الجديد) ----
- شريط المقاعد: 5 دواير 46px (الفاضي أزرق بحلقة فاتحة + أيقونة مايك، والقاعد صورته بحلقة زرقا) والأرقام/الأسماء تحتها،
  على لوحة زجاجية شفافة، وتحتها خط أزرق بزرارين دايرين في النص (↕ إخفاء/إظهار، ⚙ خيارات المايك).
- نافذة "خيارات المايك" بتتفتح من الترس: كتم صوت المايكات، كتم صوت الأغاني، وتكوين فريق (لو معاك صلاحية الإدارة).
  (بنود "تحويل النقاط" و"كارت الحظ" مش موجودة في الإضافة فمش معمولة.)
- كارت الموسيقى تحت الخط الأزرق: اسم الأغنية + "شغالة بواسطة ..." + شريط تقدّم + زرار تشغيل/إيقاف (أزرق) + زرار إلغاء (أحمر).
  للباقي في الغرفة بيظهر نفس الكارت للعرض بس.
- إصلاح: زرار "كتم صوت المايكات" كان مربوط بـ id مختلف عن الموجود في الصفحة فكان مابيعملش حاجة؛ اتصلح.
- ملاحظة: شلت أزرار ±10 ثواني وتحكم الصوت والتصغير من واجهة المشغّل (الشريط بيغطي التقديم/التأخير)؛ المنطق كله لسه موجود في الكود.

---- تحديث v4.1 (إصلاح: المقاعد مش بتظهر / تنصيب ناقص) ----
- أي مفتاح لغة ناقص بقى بيتكمّل تلقائياً من ملف لغة الإضافة (قبل كده لو الكور فيه مفاتيح ms_* قديمة كانت لغة الإضافة بتتخطّى،
  وساعتها مفتاح جديد ناقص كان بيطبع تحذير PHP جوه الجافاسكريبت فيكسر رسم المقاعد وتفضل الأزرار بس).
  وكل استخدامات اللغة بقت عن طريق msT() اللي مابتطبعش تحذيرات أبداً.
- إصلاح ذاتي للتنصيب: لو الجداول أو صف الإعدادات ناقصين بيتعملوا تلقائياً أول طلب (من غير ما يمسح بيانات). ملف العلامة: system/.schema_ok
- لو تحميل المقاعد فشل بتظهر رسالة حمرا "تعذر تحميل المقاعد (السبب)" بدل الصمت، والتفاصيل في console (voice_seats: get_seats failed).
- حالة إخفاء المقاعد المحفوظة في المتصفح اتصفّرت (مفتاح جديد) عشان لو كان مخفي من النسخة القديمة يرجع يظهر.

---- تحديث v4.2 (إصلاح: HTTP 403 على action.php) ----
السبب: ملفات الإضافة اتفكّت بصلاحيات 660 والمجلدات 770 (قراءة للمالك والجروب بس) + ملف system/.htaccess الجديد؛
فالـ Apache مابيقدرش يقرا المجلد/الـ .htaccess ويرجّع 403 لطلبات المتصفح على addons/voice_seats/system/action.php
(صفحات PHP الداخلية بتشتغل عادي، عشان كده الأزرار بتظهر والمقاعد لأ).
الإصلاح (تلقائي):
1) الإضافة بتظبط صلاحيات مجلدها لوحدها أول تحميل: مجلدات 755 وملفات 644 (علامة: system/.perm_ok).
2) بوابة بديلة system/action/voice_seats_proxy.php بتتعمل تلقائياً، والجافاسكريبت بيتحوّل لها لوحده لو جاله 403/404.
   لو السيرفر مايسمحش للـ PHP يكتب في system/action: ارفع الملف اللي في _extra/system/action/voice_seats_proxy.php هناك يدوي.
3) الزيب ده نفسه بقى بصلاحيات 755/644 صح.
يدوياً لو عايز: chmod -R 755 على المجلدات و 644 على الملفات داخل addons/voice_seats.
