Skip to content

feat(servel): Phase 8 v1.1.0 — update checker + tray quick-switch + port conflict#9

Merged
devhardiyanto merged 5 commits into
mainfrom
feat/phase-8-v1.1.0
Jul 23, 2026
Merged

feat(servel): Phase 8 v1.1.0 — update checker + tray quick-switch + port conflict#9
devhardiyanto merged 5 commits into
mainfrom
feat/phase-8-v1.1.0

Conversation

@devhardiyanto

Copy link
Copy Markdown
Owner

What

Phase 8 (v1.1.0) — tiga fitur quality-of-life post-MVP: update checker, tray quick-switch versi PHP/Node, dan deteksi konflik port sebelum start service.

Why

MVP v1.0 sudah shippable; ini enhancement opsional pertama di jalur v1.1. Ketiganya low-risk & additive (tak mengubah kontrak config.json) — cocok digabung 1 rilis bersih. Multiple profiles (M9) sengaja ditunda ke sprint sendiri karena mengubah skema config.

How

  • M10 Port conflict — command check_port_conflicts memprobe host port tiap service via TcpListener::bind (portable lintas-OS, tanpa parse netstat), meng-exclude service yang sudah running agar port container servel sendiri tak terhitung konflik. Frontend start() cek dulu → banner amber (service + port) dengan aksi "Tetap mulai" / "Tutup"; tak start diam-diam.
  • M7 Update checkeruseUpdateCheck fetch GET /releases/latest (channel stable) saat launch + tombol manual di Settings › About. Banner "versi baru tersedia" + link rilis bila lebih baru. compareSemver menangani suffix prerelease. CSP connect-src +https://api.github.com. Tanpa background polling.
  • M8 Tray quick-switch — submenu PHP & Node di tray, di-populate async dari php_list_installed/node_list_installed (versi aktif ditandai ●) via set_menu. Klik item → emit event tray-switch-version {kind,version}; usePhp/useNode listen → reuse switchTo (update active + persist config).

Changes

Lapisan File Perubahan
tauri commands/services.rs, lib.rs command + helper check_port_conflicts / probe_host_port + 2 test
frontend useServices.ts, types/service.ts, Dashboard.vue probe konflik + banner
frontend useUpdateCheck.ts (baru), Settings.vue, App.vue update checker + UI
infra tauri.conf.json CSP +api.github.com
tauri tray.rs submenu quick-switch versi + emit event
frontend usePhp.ts, useNode.ts listener tray-switch-versionswitchTo
release package.json, package-lock.json, Cargo.toml, Cargo.lock, tauri.conf.json bump 1.0.0-beta.41.1.0

Verifikasi

  • cargo test 58 pass (2 baru) · vue-tsc --noEmit ✓ · npm run tauri build suksesServel_1.1.0_x64-setup.exe.

Batasan diketahui

  • M8: listener tray-switch aktif hanya saat view pemilik (Dashboard) mounted; versi aktif (●) di menu tak auto-refresh setelah switch sampai app restart.
  • M10: melapor "port X terpakai" tanpa nama proses pemegang (butuh netstat/ss per-OS — descoped demi portabilitas).
  • M7: banner aktif setelah rilis stable ter-publish (/releases/latest masih 404 selama semua rilis = prerelease).

Footer: devhardiyanto

Command check_port_conflicts memprobe host port (bind TcpListener 127.0.0.1)
tiap service yang akan di-start, exclude service yang sudah running agar
port container servel sendiri tak terhitung konflik. Portable lintas-OS
tanpa parse netstat. Identifikasi nama proses pemegang port di-descope.

devhardiyanto
start() memprobe check_port_conflicts untuk service baru; kalau ada port
yang dipakai proses lain, tampilkan banner amber (service+port) dengan aksi
"Tetap mulai" (force, lewati probe) / "Tutup". Tak start diam-diam.

devhardiyanto
Cek rilis stable terbaru (/releases/latest) saat launch + tombol manual
di Settings > About. Banner "versi baru tersedia" + link ke halaman rilis
bila lebih baru dari versi app. compareSemver menangani suffix prerelease.
CSP connect-src ditambah https://api.github.com. Tanpa background polling.

devhardiyanto
Submenu PHP & Node di tray menu, di-populate async dari php_list_installed/
node_list_installed (versi aktif ditandai ●) via set_menu. Klik item emit
event tray-switch-version {kind,version}; usePhp/useNode listen → reuse
switchTo (update active + persist config). Listener aktif saat view pemilik
(Dashboard) mounted.

devhardiyanto
@devhardiyanto
devhardiyanto merged commit f5642dc into main Jul 23, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant