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.pyorunsupported_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
- Replace all files inside your
custom_components/miwifi/folder with the contents of this release. - Restart Home Assistant.
- Use the new service
miwifi.add_unsupportedvia 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_logsservice 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 existswhen exporting logs.
✅ Fixes & Stability
- Increased compatibility detection reliability:
CompatibilityCheckernow retries up to 5 times (previously 2), reducing false negatives for features likerom_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
- Replace all files inside your
custom_components/miwifi/folder with the contents of this release. - Restart Home Assistant.
- (Optional) Use the
miwifi.download_logsservice 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_notificationlogic using theMiWiFiNotifierclass. - 🌍 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, andupdater.pyto diagnose connection failures before the integration is even set up. - 💡 Error system now generates error keys like
router.error_with_reason::reason_textso 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_mainwith a proper feature detection viacapabilities["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 Rulessensor 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
- Replace all files inside your
custom_components/miwifi/folder with the contents of this release. - Restart Home Assistant.
- 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 withawait 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 usingversion.json. - This replaces the hardcoded
DEFAULT_PANEL_VERSIONfallback logic.
✅ Compatibility
- ✅ Compatible with Home Assistant 2025.6.0 and later.
- 🔁 Fully backward-compatible with previously installed panels (version
1.2.3and above).
📘 How to Update
- Replace all files inside your
custom_components/miwifi/folder with the contents of this release. - Restart Home Assistant.
- Check that the MiWiFi panel loads successfully and no
blocking call to openwarnings 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
ImportErrorthat occurred when trying to usebuild_nested_translationsfrom a non-existent helper. - 🔄 Unified translation loading logic between
panel_updateanddevice_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>.jsonfile if not cached. - Works reliably with any supported Home Assistant language (
en,es,fr,de, etc.).
✅ Compatibility
- Fully compatible with Home Assistant
2025.6.0and newer. - Tested on multilingual setups using Spanish, German, and French.
- Compatible with routers: AX3600, AX6, AX1800, and mixed mesh networks.
📘 How to Update
- Replace all files in your
custom_components/miwifi/directory with this release. - Ensure you have the updated
translations/en.json,translations/es.json, and optionallyfr.json,de.json. - Restart Home Assistant completely.
- Trigger a new device connection or use the
block_deviceservice 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.
Asistente XiaoHack
Xiaohack V 3.3 | © Copyright 2024 | Users Online: 0 | Estado: Offline
