Releases: nks-hub/webdev-console
Releases · nks-hub/webdev-console
v0.3.1
Full Changelog: v0.2.24...v0.3.1
v0.2.25
Full Changelog: v0.2.24...v0.2.25
v0.2.24
Full Changelog: v0.2.23...v0.2.24
v0.2.23
Full Changelog: v0.2.22...v0.2.23
v0.2.22
Full Changelog: v0.2.21...v0.2.22
v0.2.21
Full Changelog: v0.2.20...v0.2.21
v0.2.20
Full Changelog: v0.2.19...v0.2.20
v0.2.19
v0.2.19 — stability + UX batch
Device sync + daemon
/healthznow reports{service, version}for version-aware handshake. Electron detects frontend/daemon skew across auto-updates and force-stops the stale daemon before spawning the bundled one.- Daemon port range moved from
5000-5019to17280-17299— 5000 is hot-squatted by macOS ControlCenter (AirPlay Receiver), which used to make stale port files resolve to AirPlay's HTTP responder and silently break device push. CatalogHeartbeatServiceposts to the correct/api/v1/sync/configroute. Device push + presence in the cloud admin UI works end-to-end again.App.vuemirrors the signed-in account token from localStorage → daemonsync.accountTokenon mount AND on every daemon reconnect (previously only happened when user opened Settings).- Tray → Quit +
before-quitnow callshutdownDaemon()— HTTP/api/admin/shutdown+ child-process kill + port-file cleanup. Kills orphan daemons from prior installs too, not only the one we spawned ourselves.
Settings
- Danger zone (Settings → Advanced): Reset nastavení wipes the
settingsSQLite table (ports, paths, catalog URL, sync tokens), Tovární reset additionally truncates sites/databases/plugins/services/metrics. Daemon exits with code 99 → Electron respawns with the empty DB.POST /api/admin/reset?scope=settings|factory(scope mandatory). - Port changes (
ports.http,ports.https,ports.mysql,ports.redis,ports.mailpit*) propagate to live plugin configs via reflection hydration — boot hook seeds ApacheConfig/RedisConfig/… from SettingsStore, PUT hook live-updates + calls each module'sReloadAsync()so changes take effect without a restart. - Per-plugin auto-start toggle moved from a Settings grid to each plugin's card and detail page (shared
<PluginAutostartSwitch>). Backend-driven —/api/pluginsexposesserviceId+type, no hardcoded allow-list in the frontend.
Site wizard + detail
- PHP dropdown shows full version string
PHP 8.5.5 (active)instead of just8.5. Auto-picks the currently-active installed version, refreshes on dialog open (so a PHP install in another tab is immediately visible). - Templates no longer hardcode
phpVersion: "8.4"— pressing WordPress/Laravel/Symfony/Nette/PHP-generic keeps the wizard's active-PHP default intact.sslEnabled: truedefault for every PHP template. - Sites list auto-refreshes after create (store re-fetches from daemon instead of trusting optimistic push).
- Port badge is SSL-aware:
:80/:443for HTTPS sites,:80alone otherwise. - Silent SSL failure toast — if the user asks for HTTPS but mkcert isn't available, an
ElMessage.warningexplains and links to Binaries.
Apache
httpd.conftemplate always emitsListen 443(previously gated onHasAnySslCerts(), which kept HTTPS off until the first per-site cert existed). mod_ssl is loaded whenever the build ships it; TCP-accept with no SSL vhost is a harmless drop.vhost.conftemplate seals<Directory "/">withAllowOverride None+Require all deniedso Apache stops walking UP from docroot looking for.htaccessonce it reaches root. Previously only the immediate parent was sealed, which meant MAMP-leftover~/Sites/.htaccesswith<IfModule>triggered 500 on every request. (Apache plugin1.0.9 → 1.0.10.)
PHP
PhpCliAliasManagernow symlinks each generated shim (php85,php83, …) into~/.local/bin/on Unix so the aliases resolve from any shell without PATH tweaking. Idempotent, user-writable, no sudo. (PHP plugin1.0.11 → 1.0.12.)
Hardening / stability
ServiceCardguarded with rootv-if="service"+ snapshot inact()— kills the race where Vue flushes an undefined prop between reactive ticks (Sentry FRONT-2/5/7/B).MetricsChartdefaultsprops.data ?? [](Sentry FRONT-4/8).isDaemonAlive()validatesservice === "nks-wdc-daemon"+ version match in/healthzresponse; treats mismatch as stale (fix for case where port file pointed at AirPlay or an older daemon binary from a pre-upgrade install).
Icons
icon.icnsregenerated at 1024×1024 with full iconset (ic07-ic14, @1x + @2x). Previous single-ic09icns looked noisy on Retina dock because macOS had to upscale.- Tray icons now have
@2xvariants (32×32) shipped inextraResourcesso Retina menu bars render crisp. icon.icoregenerated with 16/32/48/64/128/256 variants.
Sentry
- 10 frontend issues resolved, 1 native minidump archived. No unresolved issues in any of the 3 WDC projects (frontend / backend / catalog).
Compat notes
- First launch after upgrade: Electron detects the daemon version mismatch via the new
/healthzhandshake and force-restarts the old daemon. Expect one brief "reconnecting" flash in the tray on first open. - If you'd customised
daemon.catalogUrlto a legacy127.0.0.1:8765dev sidecar, the daemon auto-ignores loopback catalog URLs now and falls back tohttps://wdc.nks-hub.cz. Re-point via Settings → Advanced if you run a self-hosted catalog.
v0.2.18
Full Changelog: v0.2.17...v0.2.18
v0.2.17
Full Changelog: v0.2.16...v0.2.17