Skip to content

نسخه 2.0.0

Latest

Choose a tag to compare

@intellsoft intellsoft released this 11 Sep 06:46
· 3 commits to main since this release
400e718

📋 فهرست تغییرات (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