Repository navigation
📋 فهرست تغییرات (Changelog)
🔑 لایسنس
- ✅ سیاست جدید: پس از فعالسازی موفق، لایسنس دائمی میشود و دیگر هیچ بررسی دورهای انجام نمیشود
- ✅ حذف کامل تایمر بررسی ۲۴ ساعته لایسنس از پنجره اصلی
- ✅ بررسی لایسنس فقط در یک حالت: وقتی کاربر همه دوربینها را حذف کرده و بخواهد دوربین جدید اضافه کند (چک آنلاین، غیرمسدود، با نمایش وضعیت روی دکمه)
- ✅ خطاهای موقت (قطع اینترنت، خطای سرور) مانع افزودن دوربین نمیشوند؛ فقط پاسخ صریح «نامعتبر/منقضی» مسدود میکند
- ✅ ثابت شدن
device_idبا ذخیره در فایل.device_id→ ریستارت، Hibernate و تغییر کارت شبکه دیگر لایسنس را نمیپراند - ✅ غیرفعالسازی دستی لایسنس اکنون ضبط را نیز بهطور کامل متوقف میکند
- ✅ حذف منطق «دوره امان آفلاین» و فایل
.license_state(به دلیل سیاست جدید، دیگر نیازی نبود) - ✅ شروع برنامه با لایسنس ذخیرهشده بدون نیاز به اینترنت
⚙️ پایداری و قابلیت اطمینان
- ✅ رفع کرشهای ناگهانی: حذف ساخت
QPixmapدر تردهای پسزمینه (استفاده ازQImageو تبدیل در ترد اصلی) - ✅ حذف درخواست HTTP همگام از ترد ضبط (رفع خطر هنگ ۱۵ ثانیهای چرخه ضبط)
- ✅ جایگزینی
subprocess.runباsubprocess.Popen+ حلقه نظارت → کشتن فوری FFmpeg هنگام توقف/تایماوت، بدون پروسه زامبی و بدون هنگ هنگام خروج - ✅ مکانیزم توقف فوری تردها با
license_invalid_event(بدون مسدودسازی) - ✅ توقف خودکار تردهای ضبط قدیمی پس از حذف همه دوربینها (رفع باگ باقی ماندن ضبطهای حذفشده)
- ✅ توقف ایمن ترد جستجوی دوربین هنگام بستن پنجره جستجو (رفع نشت ترد)
💾 پیکربندی (Config)
- ✅ نوشتن اتمیک (Atomic Write) فایل کانفیگ → قطع برق حین ذخیره دیگر باعث خرابی/صفر شدن
config.jsonنمیشود - ✅ بازیابی خودکار از فایل پشتیبان (
.json.bak) در صورت خرابی فایل اصلی
🖥️ گالری (بازطراحی کامل به سبک VMS)
- ✅ کاشیهای مستطیلی با نسبت ۱۶:۹ و چیدمان خودکار بهینه (۱، 2x2، 3x3، ...) بر اساس تعداد دوربین و اندازه پنجره
- ✅ بزرگنمایی با کلیک روی کاشی و بازگشت با کلیک مجدد
- ✅ ورود به پخش تصاویر با دابلکلیک روی کاشی (با تایمر تفکیک کلیک از دابلکلیک)
- ✅ رفع باگ کلیک: ویجت تصویر رویدادهای ماوس را میبلعید (
WA_TransparentForMouseEvents) - ✅ رفع باگ عدم نمایش تصاویر: جستجوی آخرین تصویر اکنون ساختار ۳ سطحی
سال/ماه/روزرا پوشش میدهد (مسیر سریع پوشه امروز + جستجوی کامل) - ✅ رفع ناپدید شدن تصاویر حین پخش: خط لوله دیکد در پسزمینه + کش LRU + پیشبارگذاری ۳ فریم جلو
- ✅ ظاهر اتاق کنترل: پسزمینه تیره، قاب با هایلایت آبی روی هاور/بزرگنمایی، نام دوربین و تایماستامپ سبز روی تصویر، حالت
NO SIGNAL - ✅ بروزرسانی خودکار دیوار زنده هر ۱۰ ثانیه
- ✅ دکمه «Live Wall» برای بازگشت سریع از پخش به دیوار تصویری
- ✅ بازترسیم خودکار تصویر با تغییر اندازه پنجره
📁 فایلهای تغییر کرده
| فایل | نوع تغییر |
|---|---|
main_window.py |
حذف چک دورهای لایسنس، متد invalidate_license، رفع باگ توقف تردها |
gui/config_tab.py |
چک لایسنس هنگام افزودن دوربین در لیست خالی |
gui/license_dialog.py |
اتصال غیرفعالسازی به توقف ضبط |
gui/gallery_tab.py |
بازنویسی کامل (دیوار VMS + خط لوله تصاویر) |
gui/rtsp_search_dialog.py |
توقف ایمن جستجو هنگام بستن پنجره |
config.py |
نوشتن اتمیک + بازیابی از بکآپ |
workers.py |
مدیریت پروسه FFmpeg + توقف رویدادمحور |
utils.py |
کش device_id |
📁 فایلهای بدون تغییر
main.py، license_client.py، rtsp_finder.py، gui/styles.py، gui/about_tab.py، gui/log_tab.py، gui/log_redirector.py، gui/password_dialog.py، gui/settings_dialog.py