{
  "version": "1.3.27",
  "release_date": "2026-09-07",
  "download_url": "https://pub-82a77ffa62bd4ab7a9cbd0b9810b3b99.r2.dev/setup_RCSIM.exe",
  "file_size_mb": 616.35,
  "file_size_display": "616.35 MB",
  "sha256": "9587639e2a3e679acd615ae66a31f7960ea9bb8feea12b8197d6ff2597bd15f1",
  "min_required_version": "1.0.0",
  "changelog": "## [v1.3.27] - 2026-09-07\n### 🚨 Critical Safety & Fail-Safe (CRSF / Direct ELRS Stop Protection)\n- **Natychmiastowe Odcięcie Silnika przy DISARM (Emergency Stop & Neutral Snap):**\n- Rozwiązano krytyczny problem braku zatrzymania pojazdu po wyzwoleniu stanu DISARM w protokole CRSF Direct (np. RadioMaster Nomad).\n- Pętla nadawcza 100 Hz (`crsf_transceiver.py`) w stanie wyłączenia stacji (`is_vehicle_armed = False`) natychmiast zeruje bufor `channels_norm` do wartości neutralnych `1500 µs` (wartość 0.0 dla gazu i skrętu).\n- Wymuszenie standardu ExpressLRS dla wyłącznika bezpieczeństwa: kanał AUX1 (CH5) jest automatycznie ustawiany na `1000 µs` (-1.0 / DISARMED), co natychmiast odcina zasilanie silnika w odbiorniku RC i regulatorze ESC.\n- Dodano asynchroniczny *Emergency Flush* – pakiet STOP jest formowany i wysyłany bezpośrednio do portu szeregowego UART bez czekania na kolejny interwał pętli.\n### 🎮 Hardware Input & Fanatec Wheelbase Compatibility\n- **Eliminacja Blokady Bindowania Kolejnych Osi w Kreatorze (Multi-Axis Binding Fix):**\n- Wprowadzono 300 ms okres karencji (warmup) przy otwieraniu okna dialogowego przypisywania, co eliminuje fałszywe zatrzaskiwanie osi ze stałym szumem lub dryftem (np. load cell pedału hamulca Fanatec).\n- Wdrożono dynamiczny filtr `ignored_inputs` w `InputBinder`, dzięki czemu wcześniej przypisana oś (np. skręt lub gaz) jest ignorowana podczas przypisywania kolejnej funkcji tego samego urządzenia.\n- Zastosowano hermetyczne dzielenie identyfikatorów wejść (`rsplit(\":\", 2)`), gwarantujące bezbłędne przetwarzanie GUID-ów kontrolerów zawierających znaki dwukropka.\n- Przeniesiono procedurę zwalniania zasobów dialogu do metody `done(result)`, co zapobiega wyciekom wątków i zawieszaniu nasłuchu po anulowaniu operacji klawiszem Esc lub przyciskiem.\n- **Odblokowanie Force Feedback dla Baz Fanatec (DirectInput SDL):**\n- W `SDLHapticBackend` dodano dynamiczne odblokowywanie DirectInput FFB dla kierownic marki Fanatec (obsługa stałego oporu, siły sprężystości, tłumienia i wibracji wybojów).\n### 🌍 Localization & Multi-Language Audio Synthesis (Cockpit & TTS)\n- **Dynamiczne Tłumaczenie Statusu Połączenia w Kokpicie:**\n- Wdrożono dedykowaną metodę `update_connection_status_display()` w `CockpitTab`, która zachowuje pełne tłumaczenie etykiet (np. `Statut : Connecté`, `Status : Połączono z pojazdem`) po zmianie języka oraz przy dynamicznym przełączaniu stanu portu.\n- Zapewniono pełną retranslacja selektora trybów połączenia (`mode_selector`) w `retranslateUi()`.\n- **Wielojęzyczne Komunikaty Głosowe (TTS Multi-Language Support):**\n- Zaktualizowano `NotificationService` o wielojęzyczne frazy audio (PL, EN, DE, FR, ES) dla komunikatów uzbrojenia/rozbrojenia (ARMED/DISARMED) oraz nawiązania/utraty połączenia radiowego.\n- Skompilowano i zsynchronizowano bazę tłumaczeń francuskich (`fr.ts`, `fr.qm`, `translations_fr.json`).",
  "changelogs": {
    "pl": "## [v1.3.27] - 2026-09-07\n### 🚨 Critical Safety & Fail-Safe (CRSF / Direct ELRS Stop Protection)\n- **Natychmiastowe Odcięcie Silnika przy DISARM (Emergency Stop & Neutral Snap):**\n- Rozwiązano krytyczny problem braku zatrzymania pojazdu po wyzwoleniu stanu DISARM w protokole CRSF Direct (np. RadioMaster Nomad).\n- Pętla nadawcza 100 Hz (`crsf_transceiver.py`) w stanie wyłączenia stacji (`is_vehicle_armed = False`) natychmiast zeruje bufor `channels_norm` do wartości neutralnych `1500 µs` (wartość 0.0 dla gazu i skrętu).\n- Wymuszenie standardu ExpressLRS dla wyłącznika bezpieczeństwa: kanał AUX1 (CH5) jest automatycznie ustawiany na `1000 µs` (-1.0 / DISARMED), co natychmiast odcina zasilanie silnika w odbiorniku RC i regulatorze ESC.\n- Dodano asynchroniczny *Emergency Flush* – pakiet STOP jest formowany i wysyłany bezpośrednio do portu szeregowego UART bez czekania na kolejny interwał pętli.\n### 🎮 Hardware Input & Fanatec Wheelbase Compatibility\n- **Eliminacja Blokady Bindowania Kolejnych Osi w Kreatorze (Multi-Axis Binding Fix):**\n- Wprowadzono 300 ms okres karencji (warmup) przy otwieraniu okna dialogowego przypisywania, co eliminuje fałszywe zatrzaskiwanie osi ze stałym szumem lub dryftem (np. load cell pedału hamulca Fanatec).\n- Wdrożono dynamiczny filtr `ignored_inputs` w `InputBinder`, dzięki czemu wcześniej przypisana oś (np. skręt lub gaz) jest ignorowana podczas przypisywania kolejnej funkcji tego samego urządzenia.\n- Zastosowano hermetyczne dzielenie identyfikatorów wejść (`rsplit(\":\", 2)`), gwarantujące bezbłędne przetwarzanie GUID-ów kontrolerów zawierających znaki dwukropka.\n- Przeniesiono procedurę zwalniania zasobów dialogu do metody `done(result)`, co zapobiega wyciekom wątków i zawieszaniu nasłuchu po anulowaniu operacji klawiszem Esc lub przyciskiem.\n- **Odblokowanie Force Feedback dla Baz Fanatec (DirectInput SDL):**\n- W `SDLHapticBackend` dodano dynamiczne odblokowywanie DirectInput FFB dla kierownic marki Fanatec (obsługa stałego oporu, siły sprężystości, tłumienia i wibracji wybojów).\n### 🌍 Localization & Multi-Language Audio Synthesis (Cockpit & TTS)\n- **Dynamiczne Tłumaczenie Statusu Połączenia w Kokpicie:**\n- Wdrożono dedykowaną metodę `update_connection_status_display()` w `CockpitTab`, która zachowuje pełne tłumaczenie etykiet (np. `Statut : Connecté`, `Status : Połączono z pojazdem`) po zmianie języka oraz przy dynamicznym przełączaniu stanu portu.\n- Zapewniono pełną retranslacja selektora trybów połączenia (`mode_selector`) w `retranslateUi()`.\n- **Wielojęzyczne Komunikaty Głosowe (TTS Multi-Language Support):**\n- Zaktualizowano `NotificationService` o wielojęzyczne frazy audio (PL, EN, DE, FR, ES) dla komunikatów uzbrojenia/rozbrojenia (ARMED/DISARMED) oraz nawiązania/utraty połączenia radiowego.\n- Skompilowano i zsynchronizowano bazę tłumaczeń francuskich (`fr.ts`, `fr.qm`, `translations_fr.json`).",
    "en": "## [v1.3.27] - 2026-09-07\n### 🚨 Critical Safety & Fail-Safe (CRSF / Direct ELRS Stop Protection)\n- **Immediate Motor Disarm & Neutral Throttle Snap (Emergency Stop):**\n- Resolved a critical safety condition in CRSF Direct mode (e.g. RadioMaster Nomad) where models failed to stop upon triggering DISARM.\n- The 100 Hz transmission thread (`crsf_transceiver.py`) immediately resets the `channels_norm` buffer to neutral `1500 µs` (0.0 for throttle and steering) when disarmed (`is_vehicle_armed = False`).\n- Enforced ExpressLRS safety standard: AUX1 (CH5) is forced to `1000 µs` (-1.0 / DISARMED), instantly triggering hardware motor cut-off in the receiver and ESC.\n- Added asynchronous *Emergency Flush* sending the STOP frame immediately to the serial port without waiting for the next 100 Hz cycle.\n### 🎮 Hardware Input & Fanatec Wheelbase Compatibility\n- **Eliminated Multi-Axis Assignment Lockout in Wizard Dialog:**\n- Introduced a 300 ms initial warmup delay when opening the axis assignment dialog, preventing sticky load-cell noise (e.g., Fanatec brake pedal) from triggering false detection.\n- Implemented an `ignored_inputs` filter in `InputBinder`, allowing smooth sequential assignment of throttle, brake, clutch, and steering on the same device.\n- Implemented robust identifier splitting (`rsplit(\":\", 2)`) to handle DirectInput controller GUIDs with embedded colons.\n- Moved listener teardown and signal disconnection to `QDialog.done(result)`, eliminating thread leaks and UI lockups after canceling an assignment.\n- **Unlocked DirectInput Force Feedback for Fanatec Wheelbases (SDL Haptic):**\n- Updated `SDLHapticBackend` to dynamically enable DirectInput FFB effects for Fanatec wheelbases (constant force, spring, damper, and rumble vibrations).\n### 🌍 Localization & Multi-Language Audio Synthesis (Cockpit & TTS)\n- **Dynamic Connection Status Display in Cockpit:**\n- Implemented dedicated `update_connection_status_display()` in `CockpitTab`, maintaining translated labels (e.g., `Statut : Connecté`, `Status: Vehicle Connected`) across language switches and port state transitions.\n- Full retranslation for the connection mode selector dropdown in `retranslateUi()`.\n- **Multi-Language Speech Synthesis (TTS Audio Prompts):**\n- Extended `NotificationService` with localized audio voice prompts (PL, EN, DE, FR, ES) for ARMED/DISARMED states and telemetry link connection/loss.\n- Updated and compiled full French translation database (`fr.ts`, `fr.qm`, `translations_fr.json`)."
  },
  "changelog_items": {
    "pl": [
      {
        "title": "Zabezpieczenie awaryjne CRSF DISARM & Emergency Stop",
        "desc": "Natychmiastowe zerowanie kanałów do 1500 µs oraz wymuszenie AUX1 (CH5) = 1000 µs (DISARM) przy wyłączeniu stacji lub klawiszem SPACJA, natychmiast odcinające napęd w protokole CRSF Direct (np. RadioMaster Nomad)."
      },
      {
        "title": "Wsparcie baz Fanatec, SC Link & Multi-Axis Mapping",
        "desc": "Wdrożono 300 ms warmup eliminujący zakłócenia pedałów load cell, filtr ignorujący przypisane osie w kreatorze bindowania oraz odblokowano DirectInput Force Feedback (FFB) dla kierownic Fanatec."
      },
      {
        "title": "Dynamiczne tłumaczenie Kokpitu & Wielojęzyczny TTS",
        "desc": "Poprawiono dynamiczne etykiety statusu połączenia w Kokpicie, selektor trybów oraz dodano wielojęzyczną syntezę mowy (TTS w językach PL, EN, DE, FR, ES)."
      }
    ],
    "en": [
      {
        "title": "CRSF DISARM Safety Fail-Safe & Emergency Stop",
        "desc": "Immediate neutral snap (1500 µs) and AUX1 forced to 1000 µs (DISARMED) upon disarming via GUI or SPACE key, instantly cutting motor power in CRSF Direct (e.g. RadioMaster Nomad)."
      },
      {
        "title": "Fanatec Wheelbases, SC Link & Multi-Axis Mapping Fix",
        "desc": "Added 300 ms warmup to eliminate sticky load-cell noise, dynamic filter for previously mapped axes, and unlocked DirectInput Force Feedback (FFB) for Fanatec bases."
      },
      {
        "title": "Dynamic Cockpit Localization & Multi-Language TTS",
        "desc": "Implemented dynamic connection status translations, mode selector retranslation, and multi-language text-to-speech voice prompts (PL, EN, DE, FR, ES)."
      }
    ]
  }
}