You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Roadmap Phase Status
Phase
Status
Notes
Phase 1 - Core Stability
DONE
Items 1.1-1.8 complete. cargo check is clean; current toolchain clippy follow-up is tracked in KNOWN_ISSUES.md ISSUE-017.
Phase 1.8 - User Data Root
DONE
Runtime data now lives in %LOCALAPPDATA%\DevStackBox\ (override via DEVSTACKBOX_DATA_DIR).
Phase 2 - Modularize Backend
DONE
lib.rs reduced to ~150 lines. Commands split into commands/{mysql,apache,php,config,logs,system,tray}.rs; helpers in utils/{paths,process}.rs; shared types in types.rs; default web templates in src-tauri/templates/. Build check clean.
Status Key
Symbol
Meaning
DONE
Fully working and tested
PARTIAL
Code exists but has bugs or incomplete functionality
STUB
UI exists but backend does nothing real
PLANNED
Not started, on the roadmap
Core Infrastructure
Feature
Status
Notes
Tauri 2 setup
DONE
v2.1, tray-icon, updater plugins
Vite + React 18
DONE
Tailwind CSS
DONE
v3, compiled to ~27KB
shadcn/ui
DONE
Components in src/components/ui/
Framer Motion
DONE
v11
i18next (EN + HI)
DONE
locales/en.json and locales/hi.json
Dark / Light mode
DONE
Tailwind + shadcn theme system
safeInvoke() wrapper
DONE
Browser mode fallback works
MSI installer
DONE
288.9 MB
NSIS installer
DONE
147.7 MB
GitHub Actions CI/CD
DONE
Builds on push to main
App version constant
DONE
src/lib/version.ts
Shared TypeScript types
DONE
src/types/services.ts
TAURI_COMMANDS constants
DONE
src/lib/commands.ts grouped (system/services/php/config/tray/terminal/security/ssl); zero hardcoded command strings remain in frontend components
Bundled stack (Apache+PHP+DB)
DONE
All core binaries ship in installer - no internet required
First-launch onboarding screen
DONE
Welcome dialog with one-click "Start all services"; remembered in localStorage
Service Management
Feature
Status
Notes
MySQL start / stop
DONE
start_mysql, stop_mysql commands work
MySQL status check
DONE
Polls process list for mysqld.exe
MySQL version detect
DONE
Reads mysqld --version
MySQL data init
DONE
Auto-initializes if data dir missing
MySQL config auto-create
DONE
Creates config/my.cnf if missing
Apache start / stop
DONE
start_apache, stop_apache commands work
Apache status check
DONE
Polls process list for httpd.exe
Apache config test
DONE
test_apache_config runs httpd -t
Apache config auto-create
DONE
Creates config/httpd.conf if missing
Apache 32-bit detection
DONE
Warns user if 32-bit Apache on 64-bit build
PHP status check
DONE
Checks php/current/php.exe first (active junction), falls back to php/8.3/php.exe; runs php --version to surface the actual version string
PHP as service start/stop
STUB
toggle_php returns true immediately
PHP CGI / FastCGI
DONE
ScriptAlias /php/ php/current/ + Action php-script in httpd.conf; php/current junction auto-follows active version; phpMyAdmin reuses same handler
PHP 8.4 CGI compatibility
DONE
patch_php_ini() disables deprecated session.sid_* directives, forces error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT and html_errors = Off to prevent CGI header corruption on PHP 8.4
Bulk start all services
DONE
start_all_services Tauri command + Dashboard Start All button
Bulk stop all services
DONE
stop_all_services command + tray menu entry
Service UI
Feature
Status
Notes
ServiceManager component
DONE
Polls status every 5 seconds
ServiceCard component
DONE
Generic card for service display
StatusBadge component
DONE
Running/Stopped indicator
ServiceActions component
DONE
Start/Stop/Open buttons
MySQL service UI
DONE
mysql-service.tsx
Apache service UI
DONE
apache-service.tsx
PHP service UI
DONE
php-service.tsx
Services page
DONE
Start/stop works, log viewer with service tabs, bulk start/stop/restart all wired
Service card primary/overflow
DONE
Secondary actions live in a MoreVertical overflow menu (service-overflow-menu.tsx); Config items show filename right-aligned (httpd.conf / my.cnf / php.ini); cards keep Start/Stop + one Open visible
Service workspace (split panel)
DROPPED
Replaced by single-source-of-truth navigation: card overflow Logs routes to the Logs page (with the right tab pre-selected) and Config opens the shared Config editor. The duplicate inline workspace tabs were removed.
Dashboard page
DONE
Shows service overview and quick stats
Dashboard slim-down
DONE
Status row + Start All / Stop All / Open Services strip + ServiceManager compact + ErrorLogPreview; stat tiles and Quick Actions grid removed
Dashboard log preview
DONE
error-log-preview.tsx tails last lines of Apache/MySQL/PHP logs
validateConfig button + auto-validation after save in config-editor.tsx calls test_apache_config
Config validation (MySQL)
DONE
test_mysql_config runs mysqld --validate-config; auto-validates after save; Validate button shown for mysql service
Log Viewer
Feature
Status
Notes
Read log file (last 1000 lines)
DONE
get_service_logs command
LogViewer component (static)
DONE
Renders text, no streaming
Log display on services page
DONE
Uses LogViewer with search and copy/download actions
Real-time log streaming
DONE
Frontend polls get_service_logs every 2s while auto-refresh is on. Tauri Channel streaming still planned for Phase 4
Log filtering / search
DONE
Search bar in LogViewer filters lines in place
Log tabs per service
DONE
shadcn Tabs on services page switches MySQL / Apache / PHP
Dedicated Logs page
DONE
pages/logs.tsx provides a top-level Logs route with the same tabs and search
Log auto-scroll toggle
DONE
Auto-scroll checkbox in LogViewer header, independent from the 2s poll toggle
Terminal-style log viewer
DONE
Styled <pre> (mono, zinc-950 terminal bg, per-line coloring for ERROR/WARN/INFO/DEBUG)
Sticky log search bar
DONE
Search row is sticky top-0 inside LogViewer with backdrop-blur so it stays visible while scrolling
PHP Version Management
Feature
Status
Notes
List PHP versions (installed)
DONE
get_php_versions scans php/ dir
PHP version selector UI
DONE
php-version-selector.tsx
Switch PHP version
DONE
Creates php/current junction (Windows)
Download PHP version
DONE
download_php_version streams the real zip from windows.php.net, extracts to php/{branch}/, writes a default php.ini, and emits php-download-progress events
PHP Extension management
DONE
list_php_extensions / toggle_php_extension Tauri commands rewrite php.ini (comment / uncomment / append extension=NAME); PhpExtensionsDialog opened from the PHP card overflow + context menu shows a searchable list of ext/*.dll with a Switch per row
get_autostart / set_autostart Tauri commands write HKCU\...\Run\DevStackBox via reg.exe (no admin)
Auto-check updates (preference)
DONE
See Auto-Update table
Config shortcuts (Apache/MySQL)
DONE
Config accessed via three-dots (MoreVertical) overflow menu on each service card; removed from Settings page
About
Feature
Status
Notes
About page (basic)
DONE
App version + author + GitHub/Docs/BugReport buttons
About page (extracted)
DONE
src/pages/about.tsx (AboutPage) is mounted through the router
System Information block
DONE
get_system_info Tauri command surfaces OS/arch, Windows version, app + Tauri version, Apache/MySQL/PHP versions; About page renders them in a definition list with Skeleton while loading
"MySQL CLI" button spawns terminal tab with mysql -u root as initial command
Composer CLI in terminal
PLANNED
Composer binary not bundled yet
One-Click App Installers
Feature
Status
Notes
WordPress installer
PLANNED
Laravel installer
PLANNED
Project template system
PLANNED
Security & Analyzer
Feature
Status
Notes
Bug reporting via GitHub Issues
DONE
bug-report-dialog.tsx opens a pre-filled GitHub issue with environment metadata
Security config analyzer
DONE
security.tsx page + analyze_security Rust command. Checks PHP ini, Apache conf, MySQL (anonymous users, remote root, empty root password, test DB). Findings grouped by severity (error/warning/info) with expandable details and recommendations.
HTTPS / SSL for local sites
DONE
Local Root CA architecture. get_ssl_status, generate_ssl_cert, enable_ssl, disable_ssl Tauri commands. generate_ssl_cert creates a 4096-bit DevStackBox Local CA (20-year, config/ssl/ca.crt) then signs a 2048-bit localhost cert (config/ssl/localhost.crt) with SAN for localhost, 127.0.0.1, ::1. User imports ca.crt into Windows trusted roots once - all future per-host certs are trusted automatically. enable_ssl writes ssl.conf with mod_ssl + mod_socache_shmcb and port-443 VirtualHost; Include appended to httpd.conf. disable_ssl removes the Include (cert files kept). Frontend shows CA status row and displays ca_path in trust instructions.
Definitions persisted in %LOCALAPPDATA%\DevStackBox\config\vhosts.json; vhosts.conf auto-regenerated and included via IncludeOptional in httpd.conf (configVersion 7)
Enable / disable per-vhost toggle
DONE
Toggled vhosts are removed from vhosts.conf; re-enabled ones are added back
Dashboard card lists all configured vhosts with enabled/disabled badge and a Manage link to the vhosts page
localhost always works with user vhosts
DONE
configVersion 7 template places localhost VirtualHost first with phpMyAdmin Alias inside, preventing name-based vhost mode from breaking localhost/phpmyadmin
HTTPS per virtual host
PLANNED
Extend SSL feature to sign per-vhost certs
Full Backup & Restore
Feature
Status
Notes
Create full backup zip
DONE
create_full_backup - zips config/, www/, mysql/all-databases.sql (mysqldump); returns mysql_included flag