Version History - MiWiFi XiaoHack Edition


📡 Automatic releases from GitHub

The latest versions are synchronized automatically from GitHub.

Showing 26–30 of 57 releases

📦 v3.3.4 – XiaoHack Edition

Date: 2025-08-02 19:01:47
View original release on GitHub

📝 Changelog — MiWiFi Integration

📦 Version v3.3.4 – 2025-08-02


✨ New Features

  • Directly add unsupported features via service

When a compatibility check fails, you can now use the new service miwifi.add_unsupported to add a model/feature pair directly into unsupported_user.py without editing files manually.

  • Dual-layer check for duplicates

The service now checks both the original __HTML_PLACEHOLDER_0__ and the user __HTML_PLACEHOLDER_1__ before adding entries, avoiding unnecessary duplicates.

  • Dynamic notifications

Added contextual notifications:

  • ➕ Added: When a model/feature is successfully added.
  • ⚠️ Already exists: When the model/feature is already present in either unsupported.py or unsupported_user.py.
  • Multi-language support for new notifications

Added new translation keys for all supported languages for clearer user feedback.


✅ Fixes & Stability

  • Improved dynamic module loading:

Correctly loads unsupported_user.py even when using relative imports.

  • Non-blocking file operations:

File writes for unsupported_user.py now run in a thread-safe manner to prevent blocking the Home Assistant event loop.


⚙️ Backend Improvements

  • Code refactor in __HTML_PLACEHOLDER_0__:

Added get_combined_unsupported() to merge unsupported.py and unsupported_user.py dynamically for compatibility checks.

  • Extended CompatibilityChecker:

Now uses the combined unsupported registry, allowing custom entries to take effect immediately.


✅ Compatibility

  • ✅ Compatible with Home Assistant 2025.7.4 and newer.
  • 🧩 Fully supports all panel versions from 1.3.0+.

📘 How to Update

  1. Replace all files inside your custom_components/miwifi/ folder with the contents of this release.
  2. Restart Home Assistant.
  3. Use the new service miwifi.add_unsupported via Developer Tools → Services to add unsupported features dynamically.

ℹ️ Additional Information

  • File safety:

Your changes are stored in unsupported_user.py and preserved during updates.

  • Dual-layer support:

The integration now reads from both unsupported.py (maintainer entries) and unsupported_user.py (your custom entries).


💖 Support & Donations

If you find this integration useful and want to support continued development, you can make a donation here:

Every contribution helps me dedicate more time to building and improving MiWiFi. Thank you! 🙌

📦 v3.3.3 – XiaoHack Edition

Date: 2025-07-24 18:52:30
View original release on GitHub

📝 Changelog — MiWiFi Integration

📦 Version v3.3.3 – 2025-08-01


✨ New Features

  • Automatic cleanup for log exports:
  • The miwifi.download_logs service now automatically removes old ZIPs, keeping only the latest one.
  • Warm‑up for log handlers:
  • All log files are now opened and pre‑initialized during startup to prevent delays or blocking when the first log is written.

🛠 Critical Fixes

  • Removed blocking I/O in logger initialization:
  • Eliminated Detected blocking call to open() warnings caused by delayed file handler creation.
  • All log handlers now open files outside the event loop, improving startup stability.
  • Fixed __HTML_PLACEHOLDER_0__ service errors:
  • Corrected directory creation using exist_ok=True, resolving [Errno 17] File exists when exporting logs.

✅ Fixes & Stability

  • Increased compatibility detection reliability:
  • CompatibilityChecker now retries up to 5 times (previously 2), reducing false negatives for features like rom_update.
  • Preserved previously detected capabilities:
  • If a feature was detected as supported before, it is no longer marked unsupported due to temporary network or API failures.
  • 🛠️ Fixed panel registration logic:
  • The panel is now only re‑registered if the frontend version changes.
  • Prevents duplicate log messages:
  • [MiWiFi] Loaded local panel version...
  • [MiWiFi] Panel successfully registered...
  • 🛠️ Improved logger initialization:
  • Initialized only once per integration, avoiding re‑creating handlers for each node.
  • Prevents duplicate messages when multiple Mesh nodes are active.
  • 🛠️ Optimized multi‑node handling:
  • Only the main router manages the panel and global services.
  • 🛠 Prevented crash during scheduled router reboots Only v3.3.3rc3:

When the router reboots (e.g., at 3 AM scheduled restart), topo_graph may temporarily return None. Now the integration safely skips compatibility checks in this state, avoiding AttributeError: 'NoneType' object has no attribute 'get'. Added clearer logs indicating when the compatibility check is skipped due to a reboot.


⚙️ Backend Improvements

  • Logging system overhaul:
  • Handlers are now initialized eagerly and warmed up to avoid blocking during runtime.
  • Cleaner log management:
  • Exported ZIP archives are automatically purged, leaving only the most recent archive for download.
  • 🔧 Clearer debugging:
  • Differentiated log prefixes for easier multi‑router diagnostics.
  • More descriptive panel messages during version checks.
  • 🔧 Prepared for future compatibility with dynamic panel updates.
  • Improved logging to clearly indicate when compatibility detection is postponed due to router unavailability (e.g., reboot in progress).

🚫 Capabilities

  • Improved handling of intermittent failures in compatibility checks — now less likely to incorrectly mark features as unsupported.

🆕 Compatibility Model

  • *(No new models added in this prerelease)*

🧹 Code Cleanup

  • Refactored compatibility checker to use cached capability states where available.
  • Simplified the log export service with clearer cleanup and error handling.

✅ Compatibility

  • ✅ Compatible with Home Assistant 2025.5.0 and newer.
  • 🧩 Compatible with all panel versions from 1.3.0+.

📘 How to Update

  1. Replace all files inside your custom_components/miwifi/ folder with the contents of this release.
  2. Restart Home Assistant.
  3. (Optional) Use the miwifi.download_logs service to confirm the new log export behavior.

ℹ️ This prerelease focuses on stability improvements and reducing false positives in capability detection.

💖 Support & Donations

If you find this integration useful and want to support continued development, you can make a donation here:

Every contribution helps me dedicate more time to building and improving MiWiFi. Thank you! 🙌

📦 v3.3.2 – XiaoHack Edition

Date: 2025-07-15 12:02:09
View original release on GitHub

📝 Changelog — MiWiFi Integration

📦 Version v3.3.2 – 2025-07-16


✨ New Features

  • 🔍 Detailed router connection error reporting during configuration:

Now displays specific error reasons (e.g. timeout, refused, 500 error) directly in the UI when adding or editing the router. This helps diagnose connection issues more clearly and avoids vague "unknown error" messages.

🧪 Example: > ❌ Error al conectar con el router: Timeout reading from 192.168.31.1

  • 📦 New service: __HTML_PLACEHOLDER_0__

Allows users to download all MiWiFi logs as a ZIP archive directly from the integration panel or via Home Assistant services. A clickable link is automatically generated for easy saving or sharing.

  • 🧹 New service: __HTML_PLACEHOLDER_0__

Deletes all .log files and instantly recreates them without requiring a manual integration restart. Useful for clearing logs from the frontend or via automations.

  • 💬 Localized and centralized notifications

All notifications (new device detected, router not supported, logs ready, password generated, etc.) are now dynamically translated based on the Home Assistant language setting.

  • 🧭 Unified __HTML_PLACEHOLDER_0__ class

All notification and translation handling is now managed through a single reusable class. This improves maintainability and ensures consistency across all services.

  • 🌐 Added support translation in Simplified Chinese (zh-Hans)

✅ Fixes & Stability

  • 🔁 Reduced repetitive logs when reading the frontend panel version:

Cached the loaded version (read_local_version) in memory to avoid flooding the logs with Loaded local panel version: .... Ensures this message appears only once per update cycle or on first install.

  • 🧹 Prevented repeated "Panel up-to-date" logs during panel monitoring:

Now logged only once unless the version changes. Keeps Home Assistant logs cleaner and more readable.

  • ✅ Improved the configuration form behavior to provide clearer error messages when router connection fails.
  • ✅ Now logs the exact HTTP error code (403, 404, 408, etc.) and reason (Failed to get token, Connect call failed, etc.) during initial access validation.

⚙️ Backend Improvements

  • 🧠 Internal logic now stores and reuses the last-checked frontend version, improving overall efficiency and performance.
  • save_local_version() clears the internal version cache to force a reload when needed.
  • 🛠 Refactored async_verify_access() to return both HTTP code and error reason for improved diagnosis.
  • 🧾 Errors are now logged in detail and translated into clear messages for the user via router.error_with_reason.
  • 🧱 Full refactor of internal persistent_notification logic using the MiWiFiNotifier class.
  • 🌍 Dynamic translations are now loaded from disk if not already cached in memory.
  • 📚 Full key coverage in translation files: new_device, download_ready, unsupported_router, self_check, calc_passwd, suggest_unsupported.
  • 🧠 Added debug-level logging in config_flow.py, helper.py, and updater.py to diagnose connection failures before the integration is even set up.
  • 💡 Error system now generates error keys like router.error_with_reason::reason_text so the exact message appears in the UI.
  • 🧾 Error reasons like "Failed to get token" or "Connect call failed" now show up clearly to users, helping distinguish between invalid IPs, wrong passwords, or unsupported routers.
  • 🧠 Replaced the old condition based on topo_graph.is_main with a proper feature detection via capabilities["portforward"].

This ensures NAT rules are only fetched when the router officially supports it.

  • 🧪 Added a new compatibility check: portforward.

This dynamically verifies if the router supports the xqnetwork/portforward API using the CompatibilityChecker.

  • 📊 The MiWiFi NAT Rules sensor is now populated only on routers that explicitly support NAT features — reducing errors and false positives on mesh nodes or unsupported models.
  • ✅ Eliminated unnecessary dependency on mesh topology detection (topo_graph) for NAT-related features.

✅ Compatibility

  • 🌐 Added support translation in Simplified Chinese (zh-Hans)
  • ✅ Compatible with Home Assistant 2025.5.0 and newer.
  • 🧩 Compatible with all panel versions from 1.3.0+.

📘 How to Update

  1. Replace all files inside your custom_components/miwifi/ folder with the contents of this release.
  2. Restart Home Assistant.
  3. Check that the MiWiFi panel loads successfully and that repetitive logs are gone from Developer Tools > Logs.

ℹ️ This release improves log clarity and backend performance by eliminating repeated status messages from panel version checks.

💖 Support & Donations

If you find this integration useful and want to support continued development, you can make a donation here:

Every contribution helps me dedicate more time to building and improving MiWiFi. Thank you! 🙌

📦 v3.3.1 – XiaoHack Edition

Date: 2025-07-14 12:08:12
View original release on GitHub

📝 Changelog — MiWiFi Integration

📦 Version v3.3.1 – 2025-07-14

✅ Fixes & Stability

  • 🧵 Prevented event loop blocking when loading translations:
  • Replaced direct load_json() calls with await hass.async_add_executor_job(...) when reading translation files from disk. #42
  • This fixes the Home Assistant warning:

_“Detected blocking call to open(...) inside the event loop...”_


⚙️ Improvements

  • 🌐 Automatically fetches the latest frontend panel version on first install:
  • When the local version file (.storage/miwifi/miwifi_panel_version.json) does not exist (fresh install), the integration now fetches the latest available panel version from GitHub using version.json.
  • This replaces the hardcoded DEFAULT_PANEL_VERSION fallback logic.

✅ Compatibility

  • ✅ Compatible with Home Assistant 2025.6.0 and later.
  • 🔁 Fully backward-compatible with previously installed panels (version 1.2.3 and above).

📘 How to Update

  1. Replace all files inside your custom_components/miwifi/ folder with the contents of this release.
  2. Restart Home Assistant.
  3. Check that the MiWiFi panel loads successfully and no blocking call to open warnings appear in the logs.

ℹ️ This release improves first-time install behavior and ensures long-term compatibility with upcoming Home Assistant versions.

💖 Support & Donations

If you find this integration useful and want to support continued development, you can make a donation here:

Every contribution helps me dedicate more time to building and improving MiWiFi. Thank you! 🙌

📦 v3.3.0 – XiaoHack Edition

Date: 2025-07-12 13:17:52
View original release on GitHub

📦 Version v3.3.0 – 2025-07-12

🚨 Important Notice

After updating to v3.3.0, you may receive one persistent notification per device currently connected.
This is expected and only occurs once, as the new version creates a persistent store of known MACs.
Once this initial sweep is complete, future notifications will only appear for genuinely new devices.

✅ Fixes & Stability

  • 🧠 Reworked the notification system to ensure translations are loaded reliably, even on first run.
  • 🐞 Fixed an ImportError that occurred when trying to use build_nested_translations from a non-existent helper.
  • 🔄 Unified translation loading logic between panel_update and device_tracker, ensuring consistent behavior across components.

⚙️ Improvements

  • 📢 Localized persistent notifications for new devices:
  • New devices (MAC not seen before) now trigger persistent notifications fully translated into the Home Assistant language.
  • Example (FR):

_"📶 Nouveau dispositif connecté : Mon Téléphone\n💻 MAC: 12:34:56:78:9A:BC\n🌐 IP: 192.168.1.100\n📡 Connexion : Wi-Fi 2.4G"_

  • Translations included for:
  • Device connection types (LAN, Wi-Fi 2.4G, 5G, Guest, 5G Gaming)
  • Notification messages and titles
  • 🛡️ Service: __HTML_PLACEHOLDER_0__:
  • Now sends persistent localized notifications when a device is blocked or unblocked from WAN access.
  • Fully translated messages with dynamic placeholders (device name, status).
  • Example (ES): _"Dispositivo Juan’s PC ha sido BLOQUEADO automáticamente."_
  • 💾 New MAC-based persistent notification store:
  • A persistent storage file is now used to remember which MAC addresses have already triggered a notification.
  • This prevents duplicate notifications and allows the system to detect truly new devices.
  • 🌐 Language-aware notifications:
  • Translations are now loaded directly from the correct translations/<lang>.json file if not cached.
  • Works reliably with any supported Home Assistant language (en, es, fr, de, etc.).

✅ Compatibility

  • Fully compatible with Home Assistant 2025.6.0 and newer.
  • Tested on multilingual setups using Spanish, German, and French.
  • Compatible with routers: AX3600, AX6, AX1800, and mixed mesh networks.

📘 How to Update

  1. Replace all files in your custom_components/miwifi/ directory with this release.
  2. Ensure you have the updated translations/en.json, translations/es.json, and optionally fr.json, de.json.
  3. Restart Home Assistant completely.
  4. Trigger a new device connection or use the block_device service to test localized notifications.

ℹ️ This version delivers persistent multilingual notifications, a real-time device tracker, and a stable translation system — making MiWiFi smarter and more user-aware than ever.
Xiaohack Chatbot Asistente XiaoHack

Xiaohack V 3.3 | © Copyright 2024 | Users Online: 0 | Estado: Offline