Skip to content

Releases: nks-hub/webdev-console

v0.3.1

28 Apr 15:52

Choose a tag to compare

v0.2.25

25 Apr 10:58

Choose a tag to compare

Full Changelog: v0.2.24...v0.2.25

v0.2.24

24 Apr 15:10

Choose a tag to compare

Full Changelog: v0.2.23...v0.2.24

v0.2.23

24 Apr 14:33

Choose a tag to compare

Full Changelog: v0.2.22...v0.2.23

v0.2.22

24 Apr 13:05

Choose a tag to compare

Full Changelog: v0.2.21...v0.2.22

v0.2.21

24 Apr 12:55

Choose a tag to compare

Full Changelog: v0.2.20...v0.2.21

v0.2.20

24 Apr 12:42

Choose a tag to compare

Full Changelog: v0.2.19...v0.2.20

v0.2.19

24 Apr 11:31

Choose a tag to compare

v0.2.19 — stability + UX batch

Device sync + daemon

  • /healthz now 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-5019 to 17280-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.
  • CatalogHeartbeatService posts to the correct /api/v1/sync/config route. Device push + presence in the cloud admin UI works end-to-end again.
  • App.vue mirrors the signed-in account token from localStorage → daemon sync.accountToken on mount AND on every daemon reconnect (previously only happened when user opened Settings).
  • Tray → Quit + before-quit now call shutdownDaemon() — 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 settings SQLite 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's ReloadAsync() 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/plugins exposes serviceId + type, no hardcoded allow-list in the frontend.

Site wizard + detail

  • PHP dropdown shows full version string PHP 8.5.5 (active) instead of just 8.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: true default 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/:443 for HTTPS sites, :80 alone otherwise.
  • Silent SSL failure toast — if the user asks for HTTPS but mkcert isn't available, an ElMessage.warning explains and links to Binaries.

Apache

  • httpd.conf template always emits Listen 443 (previously gated on HasAnySslCerts(), 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.conf template seals <Directory "/"> with AllowOverride None + Require all denied so Apache stops walking UP from docroot looking for .htaccess once it reaches root. Previously only the immediate parent was sealed, which meant MAMP-leftover ~/Sites/.htaccess with <IfModule> triggered 500 on every request. (Apache plugin 1.0.9 → 1.0.10.)

PHP

  • PhpCliAliasManager now 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 plugin 1.0.11 → 1.0.12.)

Hardening / stability

  • ServiceCard guarded with root v-if="service" + snapshot in act() — kills the race where Vue flushes an undefined prop between reactive ticks (Sentry FRONT-2/5/7/B).
  • MetricsChart defaults props.data ?? [] (Sentry FRONT-4/8).
  • isDaemonAlive() validates service === "nks-wdc-daemon" + version match in /healthz response; 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.icns regenerated at 1024×1024 with full iconset (ic07-ic14, @1x + @2x). Previous single-ic09 icns looked noisy on Retina dock because macOS had to upscale.
  • Tray icons now have @2x variants (32×32) shipped in extraResources so Retina menu bars render crisp.
  • icon.ico regenerated 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 /healthz handshake and force-restarts the old daemon. Expect one brief "reconnecting" flash in the tray on first open.
  • If you'd customised daemon.catalogUrl to a legacy 127.0.0.1:8765 dev sidecar, the daemon auto-ignores loopback catalog URLs now and falls back to https://wdc.nks-hub.cz. Re-point via Settings → Advanced if you run a self-hosted catalog.

v0.2.18

24 Apr 07:37

Choose a tag to compare

Full Changelog: v0.2.17...v0.2.18

v0.2.17

23 Apr 21:55

Choose a tag to compare

Full Changelog: v0.2.16...v0.2.17