Repository navigation
Releases: markusstephany/netdaemon-toolkit
Release list
v0.1.16
Fixed
Follow-up to v0.1.15's compiled-build and multi-project-solution support, found and fixed while running the panel against a real solution end to end:
- Status indicator debounced. A single not-alive reading (noise from a slow relay hop on a remote connection, e.g. Nabu Casa) no longer flips the panel to red by itself; two readings in a row (~20s) does, filtering one-off blips while a real outage still shows within ~20s.
- Rebuild/Rollback/CodegenApp's process spawning is now genuinely async, instead of blocking a thread-pool worker for the whole subprocess lifetime — a long Rebuild could previously starve StatusApp's own heartbeat timer.
- Trace icons matched by domain folder (the kebab-case of
apps/<Domain>/, matching a solution's own trace-key convention), not by class filename — the old per-file matching broke once a solution's class names (XAdapter.cs) stopped matching its own trace key (x). Falls back to the old file-slug match for a flatapps/layout. (Needed a matching fix to allow hyphens in the trace-id validation too.) - bin/obj hidden from the default tree view, same as any non-
.csfile — "show all files" still reveals it. Previously visible unconditionally, and its own MSBuild-generated files (paths containing "generated") could confuse the panel's generated-entities detection into treating them like the real thing. isGenerated()now matches the actual filename (HomeAssistantGenerated.cs) instead of any path containing "generated".- CodegenApp finds and regenerates the existing
HomeAssistantGenerated.csin place, wherever it actually lives (namespace included, read back from that file) — instead of assuming the fixedapps/Generated/path and namespace, which silently corrupted a differently-placed file's namespace on regenerate. - Toggle/trace/regenerate button promotion now correctly lands on the actual owning
apps/<Domain>/folder, never onapps/itself or the tree root, in every case (single generated-entities file, deeply nested class file, etc.). - Reload now shares the busy lock with Rebuild/Rollback/the mode switch — clicking it mid-Rebuild could previously restart into a half-promoted build.
- Rebuild button is only shown once already running compiled, not as a workaround to bootstrap the first-ever compiled build from source mode (which silently switched you to compiled once done — confusing on its own). The Source→Compiled switch now handles that bootstrap case directly: attempting to switch with nothing built yet offers to build right there, and only switches once that succeeds.
- Regenerate-entities success message is mode-aware: "reload to apply" was only ever true in source-deploy mode; compiled mode needs an actual Rebuild.
- Rebuild failures now show the actual compiler error log in the panel instead of just a generic "dotnet build failed." reason.
v0.1.15
Fixed
- The per-app enable toggle (and the trace/regenerate-entities buttons) in the file tree only matched a folder's direct child files. For a flat
apps/X/XApp.cslayout that correctly put the toggle on the app's own folder, but for a layered multi-project solution (e.g.apps/X/Logic/Business/XAdapter.cs, the shape a compiled build of a real solution uses) it landed on whatever deeply-nested subfolder the class file happens to sit in instead. Now promoted to the outermost folder whose subtree narrows to exactly one match.
Docs
README.md and docs/architecture.md described this panel as usable only in source-deploy mode and undercounted the bundled NetDaemon-side apps at three — both stale since compiled builds and RebuildApp landed in 0.1.14. Fixed throughout.
v0.1.14
Compiled builds (new)
Build the same apps/ tree as a real, full-SDK dotnet build instead of NetDaemon's own source-deploy compiler — full NuGet access, no narrow-reference-set workarounds — with Rebuild and Rollback buttons in the panel. Optional and off by default; requires a one-time docker-compose.yml edit to opt in. See docs/architecture.md for setup and details.
- Rebuild: installs the .NET SDK onto NetDaemon's data volume on first use, then builds
apps/viadotnet build. Supports both a flat folder of loose.csfiles (a throwaway wrapper project gets generated) and an existing multi-project solution (built directly). A failed build never touches the running deployment. - Rollback: swaps back to the previous build — works even while NetDaemon is crash-looping.
- Source/Compiled switch: re-points which build NetDaemon launches into and asks it to reload.
Fixes
- Rollback now swaps the
app/app-lastdirectories in place instead of re-pointing the active symlink at a second location — the previous approach could let a later Rebuild silently destroy the build just rolled back to, and made the panel misreport the running mode as "Source" right after a rollback. - Fixed a crash on first use of a compiled build (missing
appsettings.jsonin NetDaemon's working directory).
Verified compiling cleanly under NetDaemon's own narrow source-deploy reference set before release, so existing source-deploy installs aren't affected by the new bundled RebuildApp.cs.
v0.1.13: Add "show all files" toggle to browse/edit non-.cs files
Add a "show all files" toggle to the tree toolbar: browse and edit any file under the configured directory, not just .cs (e.g. a .csproj or appsettings.json alongside the apps). Off by default; when on, new files/renames no longer force a .cs extension.
v0.1.12: Fix folder-level buttons: only promote when exactly one file matches
Fix: folder-level toggle/trace/regenerate buttons now only appear when exactly one file in that folder matches — folders with several independent apps (e.g. _toolkit's Codegen/Control/Status apps) keep per-file buttons instead of merging them into one. apps/ itself now starts expanded by default; only its subfolders start collapsed.
v0.1.11
Folder rows now carry the on/off toggle, trace, and regenerate buttons instead of the individual file (a domain's app + logic files often live together in one folder now). Folders default to collapsed on load.
v0.1.10
Fix: the log view silently returned nothing for any console-log file that isn't Docker's own json-file format (e.g. a stable docker logs -f tail redirected to a file — a common way to avoid updating the bind-mounted path every time the container is recreated). Lines that aren't valid JSON are now shown as-is.
v0.1.9
Fix: the panel's JS cache-buster (?v=) was a hand-bumped literal that had drifted out of sync with actual JS changes, so an update to the panel JS (like 0.1.8's toggle-slug fix) could ship without browsers ever fetching it. Now derived from the integration's own version automatically.
v0.1.8
Fix file-to-toggle slug matching for class names with a digit immediately before an uppercase letter (e.g. O2TvAutostartApp) — the panel now derives the same slug NetDaemon itself uses, so the enable/disable toggle shows up for these apps too.
v0.1.7
Fix: clearing an optional field (e.g. webhook_relays) during reconfigure silently brought back the old value instead of actually clearing it.