From 7724c8657236e5b2e1825dacae52771a0d75818e Mon Sep 17 00:00:00 2001 From: NixReaper Date: Sat, 25 Apr 2026 16:58:27 -0500 Subject: [PATCH] chore: bump version to 0.2.0-alpha, update CHANGELOG --- CHANGELOG.md | 91 +++++++++++++++++++++++++++++------- nixclient/src/App.tsx | 4 +- nixpanel-api/Cargo.toml | 2 +- nixpanel-common/Cargo.toml | 2 +- nixpanel-services/Cargo.toml | 2 +- nixpanel-sysinfo/Cargo.toml | 2 +- nixserver/src/App.tsx | 6 +-- 7 files changed, 82 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0b8ecf..92643e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,16 +9,74 @@ Versions follow [Semantic Versioning](https://semver.org/). ## [Unreleased] ### Planned -- NixServer (WHM) — full Rust backend -- NixClient (cPanel) — full Rust backend -- DNS zone editor -- Email account management -- SSL certificate management via Let's Encrypt +- DNS zone editor (CRUD records via PowerDNS API) +- Email account management (Dovecot mailbox provisioning) +- SSL certificate management (Let's Encrypt via Certbot) - File manager -- MySQL/MariaDB database manager +- MySQL/MariaDB database manager (per-account) - WordPress one-click installer - Backup / restore system +- Firewall rule editor (CSF/iptables) - Multi-server support (Agency plan) +- NixClient pages: domains, email, databases, FTP, security, stats + +--- + +## [0.2.0-alpha] — 2026-04-25 + +### Added +- **Rust backend** — Cargo workspace with independently compiled + UPX-compressed section executables + - `nixpanel-common` — shared `SectionRequest` / `SectionResponse` IPC types + - `nixpanel-api` — main Axum HTTP server on port 4000 + - `POST /api/auth/login` — Argon2id password verification, HS256 JWT (8-hour expiry) + - `GET /api/dashboard` — real account/domain/database/email counts + system stats + - `GET /api/services` — live service status via systemctl + - `POST /api/services/:name/:action` — start / stop / restart any managed service + - `GET /api/accounts` — list hosting accounts from MariaDB + - `POST /api/accounts` — create account (system user, home dir, DB record) + - Auto-runs DB schema migrations on first start + - Seeds admin user from `/opt/nixpanel/.admin_user` + `.admin_pass` on first run + - `nixpanel-services` — section binary; reads JSON from stdin, calls systemctl, writes JSON to stdout + - Actions: `list`, `start`, `stop`, `restart`, `reload` + - Reports PID and uptime per service + - `nixpanel-sysinfo` — section binary; reads `/proc/meminfo`, `/proc/stat`, `/proc/loadavg`, `df` + - Actions: `stats` (CPU, RAM, disk, load, hostname, IP, OS, kernel), `versions` (Apache, PHP, MariaDB) +- **Database schema** (`nixpanel-api/migrations/0001_initial.sql`) + - Tables: `users`, `accounts`, `domains`, `dns_records`, `account_databases`, + `email_accounts`, `ftp_accounts`, `ssl_certificates`, `backups` +- **Frontend API clients** (`nixserver/src/api.ts`, `nixclient/src/api.ts`) + - JWT stored in `localStorage`, included in all requests as `Authorization: Bearer` + - Auto-clears token and reloads on 401 + +### Changed +- **NixServer UI** — full redesign matching WHM visual style + - Dark navy / orange-accent theme + - Collapsible sidebar with grouped navigation sections + - Dashboard: live stat bar, server info bar, service manager table, quick-action icon grid + - List Accounts: real data table with search/filter + - Create Account: full form wired to API (creates system user, DB record) + - Login: real JWT auth; session persists across refresh via `localStorage` +- **NixClient UI** — full redesign matching cPanel visual style + - Blue-accent theme + - Feature icon grid grouped by category with live search + - Account sidebar with usage bars + - Login: real JWT auth +- **Installer** (`install.sh`) + - Rust build step now copies all `nixpanel-*` section binaries to `/opt/nixpanel/bin/` + - Installs UPX and compresses each binary after build + - Admin credentials auto-generated with `openssl rand` (no TTY prompts) + - Node.js 20 LTS installed as its own idempotent step (`nodejs.done`) + - NixClient build uses absolute path to avoid wrong-directory check + - npm output visible during build (removed `--silent`) for easier debugging +- **Vite configs** — added `/api` proxy to `localhost:4000` for local development +- **Minifier** — switched both UIs from `terser` (not installed) to `esbuild` + +### Fixed +- Login inputs changed from `type="email"` to `type="text"` with "Username" label +- `sqlx::query!()` macros replaced with non-macro `query()` / `query_as()` / `query_scalar()` + so the binary compiles without a live database connection +- Removed `axum_extra` import that was never added to `Cargo.toml` +- Git clone always removes stale `$SRC_DIR` before cloning (fixes "couldn't find remote ref master" on re-run) --- @@ -28,22 +86,19 @@ Versions follow [Semantic Versioning](https://semver.org/). - **Installer** (`install.sh`) — fully automated Ubuntu 24.04 installer - Self-updating: always fetches the latest version from GitHub before running - Idempotent step tracking — re-runnable after failures without redoing completed steps - - Installs Apache 2, PHP 8.2 + 8.3 (via ondrej/php PPA), MariaDB, PowerDNS, Exim 4, Dovecot, SpamAssassin, Fail2ban, Certbot + - Installs Apache 2, PHP 8.2 + 8.3 (via ondrej/php PPA), MariaDB, PowerDNS, + Exim 4, Dovecot, SpamAssassin, Fail2ban, Certbot - Configures Apache reverse proxy on ports 2083 (NixClient) and 2087 (NixServer) - - Prompts for admin credentials, hostname, and license key during install - - License activation against `https://license.nixpanel.io` with grace period fallback + - Generates admin credentials automatically; displays them in the completion banner + - License activation against `https://license.nixpanel.io` +- **NixServer** — WHM-style admin panel (React 18 + TypeScript + Tailwind + Vite, port 2087) +- **NixClient** — cPanel-style user panel (React 18 + TypeScript + Tailwind + Vite, port 2083) - **Licensing** — license key validated against `https://license.nixpanel.io` during install - Plans: Free, Solo ($9.99/mo), Host ($29.99/mo), Agency ($79.99/mo) - - Server IP binding with grace period fallback -- **nixpanel.io** — customer portal at [nixpanel.io](https://nixpanel.io) - - Stripe subscriptions with monthly and annual billing - - Customer auth: register, login, email verification, password reset - - License management and IP change requests - -### Infrastructure -- `.gitattributes` enforcing LF line endings for `.sh`, `.rs`, `.toml`, `.sql`, `.md` files +- **Infrastructure** — `.gitattributes` enforcing LF line endings --- -[Unreleased]: https://github.com/NixReaper/nixpanel/compare/v0.1.0-alpha...HEAD +[Unreleased]: https://github.com/NixReaper/nixpanel/compare/v0.2.0-alpha...HEAD +[0.2.0-alpha]: https://github.com/NixReaper/nixpanel/compare/v0.1.0-alpha...v0.2.0-alpha [0.1.0-alpha]: https://github.com/NixReaper/nixpanel/releases/tag/v0.1.0-alpha diff --git a/nixclient/src/App.tsx b/nixclient/src/App.tsx index e28391e..80bb41f 100644 --- a/nixclient/src/App.tsx +++ b/nixclient/src/App.tsx @@ -394,7 +394,7 @@ function ClientPanel() { {/* Footer */} ) @@ -500,7 +500,7 @@ export default function App() {
- NixPanel Client v0.1.0 · Manage your hosting account + NixPanel Client v0.2.0-alpha · Manage your hosting account
diff --git a/nixpanel-api/Cargo.toml b/nixpanel-api/Cargo.toml index e09434c..6648191 100644 --- a/nixpanel-api/Cargo.toml +++ b/nixpanel-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nixpanel" -version = "0.1.0" +version = "0.2.0-alpha" edition = "2021" [[bin]] diff --git a/nixpanel-common/Cargo.toml b/nixpanel-common/Cargo.toml index b295aad..5f11326 100644 --- a/nixpanel-common/Cargo.toml +++ b/nixpanel-common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nixpanel-common" -version = "0.1.0" +version = "0.2.0-alpha" edition = "2021" [dependencies] diff --git a/nixpanel-services/Cargo.toml b/nixpanel-services/Cargo.toml index 369ade0..8e7e182 100644 --- a/nixpanel-services/Cargo.toml +++ b/nixpanel-services/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nixpanel-services" -version = "0.1.0" +version = "0.2.0-alpha" edition = "2021" [[bin]] diff --git a/nixpanel-sysinfo/Cargo.toml b/nixpanel-sysinfo/Cargo.toml index 039d665..23989b3 100644 --- a/nixpanel-sysinfo/Cargo.toml +++ b/nixpanel-sysinfo/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nixpanel-sysinfo" -version = "0.1.0" +version = "0.2.0-alpha" edition = "2021" [[bin]] diff --git a/nixserver/src/App.tsx b/nixserver/src/App.tsx index f095751..eb0220b 100644 --- a/nixserver/src/App.tsx +++ b/nixserver/src/App.tsx @@ -622,7 +622,7 @@ function AdminPanel({ username, onLogout }: { username: string; onLogout: () =>
{renderPage()}
@@ -699,7 +699,7 @@ export default function App() { ))} -

NixPanel WHM v0.1.0 · Secured by Fail2ban

+

NixPanel WHM v0.2.0-alpha · Secured by Fail2ban

{/* Login form */} @@ -744,7 +744,7 @@ export default function App() {
Secured by Fail2ban - NixPanel v0.1 + NixPanel v0.2.0-alpha