Hi everyone 👋 !
As technology progresses, I too, have started using AI tools to assist with parts of the development work. This helps me focus more on designing features and improving the overall user experience.
That said, AI is a tool and not a decision-maker. I’m strict about code quality, and everything still goes through review and validation. Bugs will happen, with or without AI, and I remain committed to fixing issues quickly to keep the project stable long-term.
AI has helped reduce the maintenance burden of what’s now a fairly large codebase. It enabled things I likely wouldn’t have tackled otherwise, like building out 500+ test cases to catch regressions, or the current DB refactor and frontend performance improvements.
However, it’s easy to fall into the trap of “AI can do everything,” which can lead to rushed decisions, poor design, and ultimately project instability. It also makes it tempting to compete with the shiny UIs of “vibe-coded” projects, or to accept every feature request that comes up.
I’m intentionally pushing back against that. The focus remains on stability, quality, and usability, and not speed for its own sake.
I’m also relying on you, the community, to help keep things honest and battle-tested. Running a separate netalertx-dev instance or providing detailed bug reports after releases or for dev images makes a huge difference 🙏 (thank you @corasaniti, @dtech77pl)
Now onto the changes in this release 🏗️.
I've refactored the DB schema so it's easier to be consumed by GraphQL. This allows for better front end data retrieval. The performance should significantly improve for Event and Plugin lists if you have thousands of entries. For example in my production instance I have 50 000 Events, 12 000 sessions, 50 000 plugin entries, and 230 000 plugin history entries. This is a sizeable chunk of data for a SQLite DB and I'd say the performance is more than acceptable. There are still things to improve, but this is a step into the right direction.
What is probably most exciting are new features 🆕.
This release introduces a set of NTFPRCS_TEXT_ settings so you gain control over the format of the sent notifications. These settings only apply to the TEXT format, the HTML and json formats are predetermined, however, note the breaking change about data changes in case you use the json format for integrations.
Thanks for your patience and support, and, feedback is always welcome.
Screenshots
💔 Breaking changes
Sometimes I have to introduce breaking changes
Warning
- 🔺NEXT RELEASE REMOVAL: If you have implemented external applications using the OLD API endpoints, please migrate to the NEW API endpoints.
- 🔺THIS RELEASE: Notification Field Name Standardization
We're standardizing the field names used across all notification sections. Currently, the down_devices and down_reconnected sections use raw database column names (e.g., devName, eve_MAC) while new_devices and events use friendly names (e.g., Device name, MAC). This will break notification automations or integrations in 3rd party stystems (possibly HASS) that rely on e.g. the JSON having a specific structure. We suggest disabling automated upgrades, spin up the new version once released and migrate your integrations and to the new format. See the JSON notifications format under Monitoring -> Sent Reports -> Select report -> Select Format: JSON
🆕New capabilities
- Text notification template override support
✨Fixes and Improvements
FREEBOXplugin fixes by @KayJay7 and @Lucide #1575- Clarification on AI use in the project in CONTRIBUTING.md
- DB migration to
camelCasefor better GraphQL support which allowed exposing Plugin objects and Events via GraphQL endpoints, improving performance of respective listing pages - API fixes to align Homepage widget device counts #1569
SYNCplugin would fail syncing on newly discovered devices #1562MQTTdidn't respect time zone offset leading to incorrect timestamps in Home Assistant #1587ordeable->orderablecleanup by @sebingel 🙏- jQuery script issues mitigation by @navnitan-7 🙏
https://github.com/netalertx/netalertx/releases
Target release frequency:
- Monthly
What's Changed
- sync by @jokob-sk in #1559
- Next release by @jokob-sk in #1560
- BE: lazy SQL execution caused devIsSleeping to be missing and tiles n… by @jokob-sk in #1572
- DOCS: pin mkdocs version by @jokob-sk in #1574
- FREEBOX plugin version 2 by @KayJay7 in #1575
- feat(api): Enhance session events, plugin objects API with pagination, sorting, and filtering by @jokob-sk in #1576
- feat(plugins): Optimize badge fetching by using lightweight JSON inst… by @jokob-sk in #1577
- feat(plugins): Implement auto-hide functionality for empty plugin tabs by @jokob-sk in #1578
- feat(plugins): Refactor auto-hide functionality to leverage Bootstrap… by @jokob-sk in #1579
- feat(plugins): Optimize plugin badge fetching and rendering to preven… by @jokob-sk in #1580
- feat(plugins): Implement /plugins/stats endpoint for per-plugin row c… by @jokob-sk in #1581
- Potential Vulnerability in Cloned Code by @navnitan-7 in #1582
- feat(docs): Update coding standards to clarify database storage guide… by @jokob-sk in #1583
- Fix elementOptions: rename typo 'ordeable' to 'orderable' by @sebingel in #1585
- sync by @jokob-sk in #1588
- Next release by @jokob-sk in #1589
- Fix timezone handling in format_date_iso: ensure fallback to UTC for … by @jokob-sk in #1590
New Contributors
- @navnitan-7 made their first contribution in #1582
- @sebingel made their first contribution in #1585
Full Changelog: v26.3.15...v26.4.6