diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a9892b..c1d1c3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,24 +4,29 @@ All notable changes to DevStackBox are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). -## [0.1.8] - 2026-06-09 +## [0.1.8] - 2026-07-23 ### Added +- New DevStackBox branding and logo across the app, installer, and website - One-click in-place upgrade dialog when installing a newer version over an existing install - Automatic Apache and MySQL shutdown before upgrade file copy - `www` folder preservation during upgrade when websites already exist +- Signed Windows NSIS installer with auto-update support (`latest.json` on GitHub Releases) +- MDX documentation structure synced to [devstackbox.com/docs](https://www.devstackbox.com/docs) ### Changed - Installer details log: phase order, duration timing, summary copy, and spacing - README install section uses evergreen GitHub Releases download link +- Expanded upgrade and installer documentation ### Fixed - NSIS `DsbExecSilent` comma-split build failure in force-stop macro - Negative install duration on systems with long uptime (`GetLocalTime`-based timing) - Duplicate `Output folder` noise from redundant `SetOutPath` in PREINSTALL hook +- NSIS upgrade flow preserves user configs, MySQL data, SSL certs, and `www` projects ## [0.1.7] - 2026-06-01 diff --git a/SECURITY.md b/SECURITY.md index ea6fd61..2db6145 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -8,8 +8,8 @@ | Version | Security Fixes | | -------- | ----------------------- | -| v0.1.6+ | Yes | -| < v0.1.6 | No - update immediately | +| v0.1.8+ | Yes | +| < v0.1.8 | No - update immediately | --- diff --git a/docs/advanced/troubleshooting.mdx b/docs/advanced/troubleshooting.mdx index 7153e93..9ac41a8 100644 --- a/docs/advanced/troubleshooting.mdx +++ b/docs/advanced/troubleshooting.mdx @@ -349,7 +349,7 @@ Paste the private key content into GitHub repository secrets: **Status:** Release verification pending **Description:** -The development workspace is working, but the MSI and NSIS installers still need clean-machine validation before v0.1.7 can be treated as release-ready. +The NSIS installer was validated for v0.1.8. Re-run clean-machine checks before each new release if bundled binaries or install hooks change. **Required checks:** @@ -436,10 +436,10 @@ During installer verification, confirm the bundled `www/` seed files are present | `switch_php_version` could not call `mklink` directly | Uses `cmd /C mklink /J` | v0.1.6 | | Dev-machine path used as production fallback | Removed `C:\xampp\htdocs\DevStackBox` from production fallback paths | v0.1.6 | | `DebugPanel` visible in production | Guarded behind development mode | v0.1.6 | -| Raw frontend command strings | Centralized in `src/lib/commands.ts`; no raw `safeInvoke("...")` matches found | v0.1.7-dev | -| localhost 500 on PHP 8.4 due to `session.sid_*` deprecations | `patch_php_ini()` comments out deprecated directives | v0.1.7-dev | -| phpMyAdmin timeout or 500 on PHP 8.4 due to deprecation flood | `patch_php_ini()` sets compatible `error_reporting` and disables `html_errors` | v0.1.7-dev | -| localhost and phpMyAdmin broke after adding a vhost | configVersion 7 template keeps localhost VirtualHost and phpMyAdmin Alias together | v0.1.7-dev | +| Raw frontend command strings | Centralized in `src/lib/commands.ts`; no raw `safeInvoke("...")` matches found | v0.1.7 | +| localhost 500 on PHP 8.4 due to `session.sid_*` deprecations | `patch_php_ini()` comments out deprecated directives | v0.1.7 | +| phpMyAdmin timeout or 500 on PHP 8.4 due to deprecation flood | `patch_php_ini()` sets compatible `error_reporting` and disables `html_errors` | v0.1.7 | +| localhost and phpMyAdmin broke after adding a vhost | configVersion 7 template keeps localhost VirtualHost and phpMyAdmin Alias together | v0.1.7 | --- diff --git a/docs/development/architecture.mdx b/docs/development/architecture.mdx index 0081f88..a5e3806 100644 --- a/docs/development/architecture.mdx +++ b/docs/development/architecture.mdx @@ -5,8 +5,8 @@ icon: "Layers" --- # DevStackBox - Architecture Overview -**Version**: v0.1.7-dev -**Last Updated**: May 2026 +**Version**: v0.1.8 +**Last Updated**: July 2026 **Single Source of Truth**: This file describes how all parts of DevStackBox connect. Update this file whenever you change the architecture. --- diff --git a/docs/development/building.mdx b/docs/development/building.mdx index de2f7a0..59298d2 100644 --- a/docs/development/building.mdx +++ b/docs/development/building.mdx @@ -87,8 +87,7 @@ npm run tauri:build Produces: -- `src-tauri/target/release/bundle/msi/DevStackBox_0.1.6_x64_en-US.msi` -- `src-tauri/target/release/bundle/nsis/DevStackBox_0.1.6_x64-setup.exe` +- `src-tauri/target/release/bundle/nsis/DevStackBox_0.1.8_x64-setup.exe` **Pre-build check:** @@ -339,9 +338,9 @@ const { t } = useTranslation(); Version must be identical in all three files. Change all three at once: -1. `package.json` - `"version": "0.1.7"` -2. `src-tauri/Cargo.toml` - `version = "0.1.7"` -3. `src-tauri/tauri.conf.json` - `"version": "0.1.7"` +1. `package.json` - `"version": "0.1.8"` +2. `src-tauri/Cargo.toml` - `version = "0.1.8"` +3. `src-tauri/tauri.conf.json` - `"version": "0.1.8"` Rule: Version must be clean semver only: `X.Y.Z` - no hyphens, no letters (MSI requirement). diff --git a/docs/development/components.mdx b/docs/development/components.mdx index 80083ce..4f8d3f3 100644 --- a/docs/development/components.mdx +++ b/docs/development/components.mdx @@ -370,7 +370,7 @@ export interface PHPVersion { | `getMockServiceStatus()` | `lib/tauri.ts` | Returns fake status for browser-mode dev | | `getMockBinariesStatus()` | `lib/tauri.ts` | Returns fake binary status for browser-mode dev | | `cn(...classes)` | `lib/utils.ts` | Merges Tailwind class names (from shadcn) | -| `APP_VERSION` | `lib/version.ts` | Current version string ("0.1.6") | +| `APP_VERSION` | `lib/version.ts` | Current version string ("0.1.8") | --- diff --git a/docs/development/release-process.mdx b/docs/development/release-process.mdx index cdf7a9f..c9fab82 100644 --- a/docs/development/release-process.mdx +++ b/docs/development/release-process.mdx @@ -7,17 +7,19 @@ icon: "Rocket" **The exact checklist for every release. Follow this every time without shortcuts.** +**Current stable release:** v0.1.8 + --- ## Release Types | Type | When | Example | | ----- | ----------------------------------- | ----------------- | -| Patch | Bug fix only, no new features | `0.1.6` → `0.1.7` | -| Minor | New working feature added | `0.1.6` → `0.2.0` | +| Patch | Bug fix only, no new features | `0.1.8` → `0.1.9` | +| Minor | New working feature added | `0.1.8` → `0.2.0` | | Major | Breaking changes or large milestone | `0.x.x` → `1.0.0` | -Version format: `X.Y.Z` - always clean semver. No hyphens, no pre-release text. (MSI requirement) +Version format: `X.Y.Z` - always clean semver. No hyphens, no pre-release text. --- @@ -41,7 +43,7 @@ Change version in ALL THREE files at the same time: ```json { - "version": "0.1.7" + "version": "0.1.9" } ``` @@ -49,14 +51,14 @@ Change version in ALL THREE files at the same time: ```toml [package] -version = "0.1.7" +version = "0.1.9" ``` ### `src-tauri/tauri.conf.json` ```json { - "version": "0.1.7" + "version": "0.1.9" } ``` @@ -75,7 +77,7 @@ grep '"version"' src-tauri/tauri.conf.json Add an entry at the top: ```markdown -## v0.1.7 - 2026-MM-DD +## [0.1.9] - 2026-MM-DD ### Fixed @@ -96,14 +98,19 @@ Keep the format consistent. Do not delete old entries. ## Step 4 - Build Release -```bash +Set signing key (required for auto-update): + +```powershell +$env:TAURI_SIGNING_PRIVATE_KEY = "path-or-content-of-your-private-key" pnpm tauri build ``` Expected output files: -- `src-tauri/target/release/bundle/msi/DevStackBox_0.1.7_x64_en-US.msi` -- `src-tauri/target/release/bundle/nsis/DevStackBox_0.1.7_x64-setup.exe` +- `src-tauri/target/release/bundle/nsis/DevStackBox_0.1.9_x64-setup.exe` +- `src-tauri/target/release/bundle/nsis/DevStackBox_0.1.9_x64-setup.exe.sig` + +Create `latest.json` in the repo root (use the v0.1.8 file as a template). Paste the `.sig` file content into the `signature` field. If the build fails: @@ -115,11 +122,11 @@ If the build fails: ## Step 5 - Smoke Tests -Run this checklist on the **MSI installer** (not dev mode) on a clean Windows 11 machine or VM: +Run this checklist on the **NSIS installer** (not dev mode) on a clean Windows 11 machine or VM: **Installation:** -- [ ] MSI installs without errors +- [ ] NSIS installer installs without errors - [ ] App opens from Start Menu - [ ] App opens without antivirus immediately blocking it @@ -149,16 +156,13 @@ Run this checklist on the **MSI installer** (not dev mode) on a clean Windows 11 --- -## Step 6 - Generate SHA-256 Hashes - -Generate hashes for both installers (required for security transparency): +## Step 6 - Generate SHA-256 Hash (optional) ```powershell -Get-FileHash "src-tauri\target\release\bundle\msi\DevStackBox_0.1.7_x64_en-US.msi" -Algorithm SHA256 -Get-FileHash "src-tauri\target\release\bundle\nsis\DevStackBox_0.1.7_x64-setup.exe" -Algorithm SHA256 +Get-FileHash "src-tauri\target\release\bundle\nsis\DevStackBox_0.1.9_x64-setup.exe" -Algorithm SHA256 ``` -Include these in the GitHub Release description. +Include the hash in the GitHub Release description if you want transparency for users. --- @@ -167,17 +171,17 @@ Include these in the GitHub Release description. 1. Create a git tag: ```bash - git tag v0.1.7 - git push origin v0.1.7 + git tag v0.1.9 + git push origin v0.1.9 ``` 2. Go to [GitHub Releases](https://github.com/DevStackBox/DevStackBox/releases/new) 3. Fill in: - - **Tag:** `v0.1.7` - - **Title:** `DevStackBox v0.1.7` - - **Description:** Copy from CHANGELOG.md + paste SHA-256 hashes - - **Attach files:** Both MSI and NSIS installers + - **Tag:** `v0.1.9` + - **Title:** `v0.1.9` + - **Description:** Copy from CHANGELOG.md + - **Attach files:** `DevStackBox_0.1.9_x64-setup.exe` and `latest.json` 4. Click Publish Release. @@ -186,21 +190,25 @@ Include these in the GitHub Release description. ## Step 8 - Post-Release - [ ] Verify the download links in the GitHub Release page work -- [ ] Update `README.md` version badge if necessary +- [ ] Verify `releases/latest/download/latest.json` shows the new version - [ ] Close GitHub Issues that were fixed in this release - [ ] Update `feature-status` if feature status changed --- -## Auto-Updater (Phase 4 - Not Yet Active) +## Auto-Updater + +The in-app updater is **active** as of v0.1.8. Every release must include: + +1. Signed NSIS build (`TAURI_SIGNING_PRIVATE_KEY` set during `pnpm tauri build`) +2. `latest.json` in the repo root signature from the `.sig` file, download URL matching the uploaded `.exe` +3. Upload **`latest.json`** as a release asset named exactly `latest.json` -When the auto-updater is configured, an additional step will be needed: +Updater endpoint (configured in `tauri.conf.json`): -1. Generate `latest.json` with new version info, download URLs, and signatures -2. Upload to the updater endpoint URL -3. Test that an older installation picks up the update +`https://github.com/DevStackBox/DevStackBox/releases/latest/download/latest.json` -The updater flow is not active yet. See `advanced/troubleshooting` ISSUE-011. +After publishing, test **About → Check for updates** from an older install. --- @@ -208,8 +216,8 @@ The updater flow is not active yet. See `advanced/troubleshooting` ISSUE-011. | Problem | Fix | | ----------------------------------- | ------------------------------------------------------------ | -| MSI refuses to install | Version has hyphens or letters - use clean semver only | | Build fails with "version mismatch" | One of the three version files is different | | Antivirus blocks installer | Publish SHA-256 hash - users can verify and allow | -| GitHub Actions build fails | Check for emoji in .yml files - see advanced/troubleshooting | -| MSI is larger than expected | Check that `src-tauri/target/` was not accidentally included | +| GitHub Actions build fails | Check for emoji in .yml files - see advanced/troubleshooting | +| Auto-update fails | Check `latest.json` signature matches `.sig`; URL matches `.exe` filename | +| `releases/latest` wrong version | Ensure release is not marked pre-release; `latest.json` uploaded | diff --git a/docs/feature-status.mdx b/docs/feature-status.mdx index 9b1132c..02e3f61 100644 --- a/docs/feature-status.mdx +++ b/docs/feature-status.mdx @@ -8,8 +8,8 @@ icon: "ListChecks" **THE single source of truth for what is built, what is in progress, and what is planned.** Update this file every time a feature changes status. Do not maintain feature status in README.md, TODO.md, or CHANGELOG.md separately - those should reference this file. -**Last Updated:** May 2026 -**Current Version:** v0.1.7-dev +**Last Updated:** July 2026 +**Current Version:** v0.1.8 --- @@ -294,7 +294,8 @@ Update this file every time a feature changes status. Do not maintain feature st | Version | Key Changes | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | -| v0.1.7-dev | PHP 8.4 CGI compatibility (session.sid_*, error_reporting, html_errors); configVersion 7 vhost fix; .gitignore cleanup | +| v0.1.8 | Branding and logo refresh; signed NSIS installer; in-place upgrade with `www` preservation; MDX docs site | +| v0.1.7 | PHP 8.4 CGI compatibility (session.sid_*, error_reporting, html_errors); configVersion 7 vhost fix; NSIS-only releases | | v0.1.6 | MSI fixed, CSS restored, GitHub Actions fixed, both installers working | | v0.1.5 | Build system improvements | | v0.1.0 - v0.1.4 | Early alpha, architecture setup | diff --git a/docs/roadmap.mdx b/docs/roadmap.mdx index 41b61aa..ad89dd1 100644 --- a/docs/roadmap.mdx +++ b/docs/roadmap.mdx @@ -52,9 +52,9 @@ Do NOT require users to download core components on first launch. Bad first-laun --- -## Current State: v0.1.7-dev +## Current State: v0.1.8 -Phases 1, 2, and 3 are complete. The focus is now Phase 4 (installer / distribution) and incremental Phase 5 polish. Current validation: `cargo check` and `pnpm exec tsc --noEmit` are clean; `cargo clippy --all-targets -- -D warnings` has two release-hardening warnings tracked in `advanced/troubleshooting` ISSUE-017. +Phases 1, 2, and 3 are complete. v0.1.8 is the current stable release on GitHub. The focus is now Phase 4 (installer / distribution) and incremental Phase 5 polish. Current validation: `cargo check` and `pnpm exec tsc --noEmit` are clean; `cargo clippy --all-targets -- -D warnings` has two release-hardening warnings tracked in `advanced/troubleshooting` ISSUE-017. --- @@ -376,7 +376,8 @@ DevStackBox uses **MySQL** as its bundled database server. | Version | Goal | | --------- | --------------------------------------------------------------------------------------------------------------- | | v0.1.6 | Architecture and docs complete, MSI/NSIS builds working, zero dead code, zero Rust warnings | -| v0.1.7 | PHP 8.4 CGI compatibility, configVersion 7 vhost fix, docs refresh | -| v0.2.0 | Phase 4 - MSI bundle verification, code signing, safe auto-update enabled | +| v0.1.7 | PHP 8.4 CGI compatibility, configVersion 7 vhost fix, docs refresh, NSIS-only releases | +| v0.1.8 | Branding refresh, signed installer, in-place upgrade with data preservation, MDX docs on devstackbox.com | +| v0.2.0 | Phase 4 complete; Phase 5 polish HTTPS localhost, tray polish, startup-on-login | | v0.3.0 | Phase 5 - HTTPS localhost, tray polish, startup-on-login, PHP error visibility | | v1.0.0 | Phase 6 - workspace UI refresh, real Settings, useful About, all Phase 6 items done | diff --git a/latest.json b/latest.json new file mode 100644 index 0000000..9450fa7 --- /dev/null +++ b/latest.json @@ -0,0 +1,11 @@ +{ + "version": "0.1.8", + "notes": "DevStackBox v0.1.8 - new branding and logo, signed Windows installer.", + "pub_date": "2026-07-23T13:12:46Z", + "platforms": { + "windows-x86_64": { + "url": "https://github.com/DevStackBox/DevStackBox/releases/download/v0.1.8/DevStackBox_0.1.8_x64-setup.exe", + "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRMTM4U1RGRFJNV2gyUVNNOEVJdDVpV0RNZXlQaDl5bzZ4NVJldUVuajNGdTQrZ0JHU2hOK0E1SkRBYTVNN0UzZ2xzWnF0T1R2KzI1RjNjeFlaVWRyVWV4WnNDaFQ3VWdrPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg0ODEyMzY2CWZpbGU6RGV2U3RhY2tCb3hfMC4xLjhfeDY0LXNldHVwLmV4ZQo3OTBQR0h4K2xPS0EwUDJrZldDNjF5dWFLYUtsdkkyVjJTWXp6WjJLK04xRDdMSS81ZWptejU1NDNEa0ZZZVU3Qjh6MEwxdkdnQ1FxWXpXUWI1a0FCdz09Cg==" + } + } +} diff --git a/src/components/system-tray/README.md b/src/components/system-tray/README.md index 8d4b773..4f3c913 100644 --- a/src/components/system-tray/README.md +++ b/src/components/system-tray/README.md @@ -214,8 +214,8 @@ Access the complete testing interface at `/system-tray` route: --- **Implementation Status**: ✅ Complete -**Last Updated**: August 10, 2025 -**Version**: DevStackBox v0.1.6+ +**Last Updated**: July 2026 +**Version**: DevStackBox v0.1.8+ ## 🤝 Contributing