DevStackBoxGitHub ↗

Feature Status

Shipped, partial, and planned features.

DevStackBox - Feature Status

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

PhaseStatusNotes
Phase 1 - Core StabilityDONEItems 1.1-1.8 complete. cargo check is clean; current toolchain clippy follow-up is tracked in advanced/troubleshooting ISSUE-017.
Phase 1.8 - User Data RootDONERuntime data now lives in %LOCALAPPDATA%\DevStackBox\ (override via DEVSTACKBOX_DATA_DIR).
Phase 2 - Modularize BackendDONElib.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

SymbolMeaning
DONEFully working and tested
PARTIALCode exists but has bugs or incomplete functionality
STUBUI exists but backend does nothing real
PLANNEDNot started, on the roadmap

Core Infrastructure

FeatureStatusNotes
Tauri 2 setupDONEv2.1, tray-icon, updater plugins
Vite + React 18DONE
Tailwind CSSDONEv3, compiled to ~27KB
shadcn/uiDONEComponents in src/components/ui/
Framer MotionDONEv11
i18next (EN + HI)DONElocales/en.json and locales/hi.json
Dark / Light modeDONETailwind + shadcn theme system
safeInvoke() wrapperDONEBrowser mode fallback works
MSI installerDONE288.9 MB
NSIS installerDONE147.7 MB
GitHub Actions CI/CDDONEBuilds on push to main
App version constantDONEsrc/lib/version.ts
Shared TypeScript typesDONEsrc/types/services.ts
TAURI_COMMANDS constantsDONEsrc/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)DONEAll core binaries ship in installer - no internet required
First-launch onboarding screenDONEWelcome dialog with one-click "Start all services"; remembered in localStorage

Service Management

FeatureStatusNotes
MySQL start / stopDONEstart_mysql, stop_mysql commands work
MySQL status checkDONEPolls process list for mysqld.exe
MySQL version detectDONEReads mysqld --version
MySQL data initDONEAuto-initializes if data dir missing
MySQL config auto-createDONECreates config/my.cnf if missing
Apache start / stopDONEstart_apache, stop_apache commands work
Apache status checkDONEPolls process list for httpd.exe
Apache config testDONEtest_apache_config runs httpd -t
Apache config auto-createDONECreates config/httpd.conf if missing
Apache 32-bit detectionDONEWarns user if 32-bit Apache on 64-bit build
PHP status checkDONEChecks 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/stopSTUBtoggle_php returns true immediately
PHP CGI / FastCGIDONEScriptAlias /php/ php/current/ + Action php-script in httpd.conf; php/current junction auto-follows active version; phpMyAdmin reuses same handler
PHP 8.4 CGI compatibilityDONEpatch_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 servicesDONEstart_all_services Tauri command + Dashboard Start All button
Bulk stop all servicesDONEstop_all_services command + tray menu entry

Service UI

FeatureStatusNotes
ServiceManager componentDONEPolls status every 5 seconds
ServiceCard componentDONEGeneric card for service display
StatusBadge componentDONERunning/Stopped indicator
ServiceActions componentDONEStart/Stop/Open buttons
MySQL service UIDONEmysql-service.tsx
Apache service UIDONEapache-service.tsx
PHP service UIDONEphp-service.tsx
Services pageDONEStart/stop works, log viewer with service tabs, bulk start/stop/restart all wired
Service card primary/overflowDONESecondary 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)DROPPEDReplaced 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 pageDONEShows service overview and quick stats
Dashboard slim-downDONEStatus row + Start All / Stop All / Open Services strip + ServiceManager compact + ErrorLogPreview; stat tiles and Quick Actions grid removed
Dashboard log previewDONEerror-log-preview.tsx tails last lines of Apache/MySQL/PHP logs

Config Management

FeatureStatusNotes
Read config fileDONEread_config command
Write/save config fileDONEupdate_config command
Auto-backup before saveDONESaves to config-backups/
Manual config backupDONEbackup_config command
List config backupsDONElist_config_backups command
Restore config backupDONErestore_config_backup command
Config editor UI (textarea)DONEconfig-editor.tsx - basic textarea
Config editor (Monaco)DONE@monaco-editor/react; language: ini; theme follows dark/light mode; line numbers, word-wrap, auto-layout
Config validation (Apache -t)DONEvalidateConfig button + auto-validation after save in config-editor.tsx calls test_apache_config
Config validation (MySQL)DONEtest_mysql_config runs mysqld --validate-config; auto-validates after save; Validate button shown for mysql service

Log Viewer

FeatureStatusNotes
Read log file (last 1000 lines)DONEget_service_logs command
LogViewer component (static)DONERenders text, no streaming
Log display on services pageDONEUses LogViewer with search and copy/download actions
Real-time log streamingDONEFrontend polls get_service_logs every 2s while auto-refresh is on. Tauri Channel streaming still planned for Phase 4
Log filtering / searchDONESearch bar in LogViewer filters lines in place
Log tabs per serviceDONEshadcn Tabs on services page switches MySQL / Apache / PHP
Dedicated Logs pageDONEpages/logs.tsx provides a top-level Logs route with the same tabs and search
Log auto-scroll toggleDONEAuto-scroll checkbox in LogViewer header, independent from the 2s poll toggle
Terminal-style log viewerDONEStyled <pre> (mono, zinc-950 terminal bg, per-line coloring for ERROR/WARN/INFO/DEBUG)
Sticky log search barDONESearch row is sticky top-0 inside LogViewer with backdrop-blur so it stays visible while scrolling

PHP Version Management

FeatureStatusNotes
List PHP versions (installed)DONEget_php_versions scans php/ dir
PHP version selector UIDONEphp-version-selector.tsx
Switch PHP versionDONECreates php/current junction (Windows)
Download PHP versionDONEdownload_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 managementDONElist_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

Database Management

FeatureStatusNotes
phpMyAdmin integrationDONEServed via Apache at /phpmyadmin
MySQL database backup (all)DONEbackup_mysql_database using mysqldump
MySQL user management UIDONElist/create/drop/set_password Tauri commands; Databases > Users sub-route has Add/Set Password/Drop dialogs
Database listDONElist_mysql_databases lists user databases on the Databases page
Database list metadataDONElist_mysql_databases_detailed returns name + table count + size (data + index bytes) from information_schema.tables
Database searchDONESticky search input on the Databases page filters rows by name
Database row context menuDONERight-click row -> Backup, Open in phpMyAdmin (deep link to ?db=NAME), Copy DB name
Database-specific backupDONEbackup_mysql_database_named per-database backup wired into Databases page
Database restoreDONErestore_mysql_database accepts SQL piped from a .sql file picked in the UI

FeatureStatusNotes
Sidebar navigationDONEsidebar.tsx
Command palette (Ctrl+P)DONEcommand-palette.tsx
Top bar with actionsDONEIn App.tsx header
Context menusDONEshadcn ContextMenu wired into Apache, MySQL, PHP service cards via service-card.tsx
Breadcrumb navigationDONETopbar breadcrumb reflects current page
Window controls (custom)DONEWindowControls.tsx

System Tray

FeatureStatusNotes
Tray icon appearsDONETauri tray-icon plugin
Minimize to trayDONEX close button hides to tray (CloseRequested intercepted in lib.rs); first-time OS notification shown via notify.ts
Tray context menuDONEShow / Hide / Toggle MySQL / Toggle Apache / Quit; wired to same start-stop pipeline as the UI
Tray click opens appDONELeft-click on tray icon shows the main window (lib.rs)
Tray service status displayDONEset_tray_tooltip updated every 5s by ServiceManager with Apache/MySQL/PHP state
Tray service start/stopDONETray menu emits tray-toggle-service; ServiceManager routes to the same toggle pipeline as the UI
Notifications from trayDONEService start/stop and crash notifications via src/lib/notify.ts

Auto-Update

FeatureStatusNotes
Tauri updater plugin configuredDONEtauri-plugin-updater in Cargo.toml
Update check on startupDONEauto-updater.tsx checks on launch (2s delay) and every 6h; respects autoCheckUpdates pref; toast shown when up to date on manual check
Install update promptDONEDialog shows current vs new version, release notes, bytes-accurate progress bar, install-and-relaunch
Update from GitHub ReleasesPARTIALCode + CI ready (release.yml uses tauri-action with signing). Needs TAURI_PRIVATE_KEY + TAURI_KEY_PASSWORD secrets added to GitHub repo settings
Auto-check updates toggleDONESettings page switch persisted to localStorage.devstackbox.settings.autoCheckUpdates; auto-updater.tsx honours it (poll on launch + every 6h when on)

Settings & Preferences

FeatureStatusNotes
Settings pageDONEsrc/pages/settings/ nested routes provide General and Backup & Restore views
Theme preferenceDONEInline shadcn Select (light/dark/system) inside Settings (uses useTheme)
Language preferenceDONEInline shadcn Select (English / Hindi) inside Settings (i18next.changeLanguage)
Launch on Windows startupDONEget_autostart / set_autostart Tauri commands write HKCU\...\Run\DevStackBox via reg.exe (no admin)
Auto-check updates (preference)DONESee Auto-Update table
Config shortcuts (Apache/MySQL)DONEConfig accessed via three-dots (MoreVertical) overflow menu on each service card; removed from Settings page

About

FeatureStatusNotes
About page (basic)DONEApp version + author + GitHub/Docs/BugReport buttons
About page (extracted)DONEsrc/pages/about.tsx (AboutPage) is mounted through the router
System Information blockDONEget_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

Developer Terminal

FeatureStatusNotes
Open PHP terminal (Windows cmd)DONEopen_php_terminal opens cmd.exe
Embedded xterm.js terminalDONE@xterm/xterm + addon-fit + addon-web-links; terminal-panel.tsx component; pages/terminal.tsx with tabbed sessions; sidebar entry
MySQL CLI in terminalDONE"MySQL CLI" button spawns terminal tab with mysql -u root as initial command
Composer CLI in terminalPLANNEDComposer binary not bundled yet

One-Click App Installers

FeatureStatusNotes
WordPress installerPLANNED
Laravel installerPLANNED
Project template systemPLANNED

Security & Analyzer

FeatureStatusNotes
Bug reporting via GitHub IssuesDONEbug-report-dialog.tsx opens a pre-filled GitHub issue with environment metadata
Security config analyzerDONEsecurity.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 sitesDONELocal 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.

Virtual Host Management

FeatureStatusNotes
List / add / remove vhosts via UIDONElist_vhosts, add_vhost, remove_vhost, toggle_vhost Tauri commands; src/commands/vhosts.rs
vhosts.json store + vhosts.conf generationDONEDefinitions persisted in %LOCALAPPDATA%\DevStackBox\config\vhosts.json; vhosts.conf auto-regenerated and included via IncludeOptional in httpd.conf (configVersion 7)
Enable / disable per-vhost toggleDONEToggled vhosts are removed from vhosts.conf; re-enabled ones are added back
Windows hosts file managementDONEget_hosts_entries reads DevStackBox marker block; update_hosts_entry writes/removes 127.0.0.1 domain via elevated PowerShell (UAC prompt)
Show active vhosts on dashboardDONEDashboard card lists all configured vhosts with enabled/disabled badge and a Manage link to the vhosts page
localhost always works with user vhostsDONEconfigVersion 7 template places localhost VirtualHost first with phpMyAdmin Alias inside, preventing name-based vhost mode from breaking localhost/phpmyadmin
HTTPS per virtual hostPLANNEDExtend SSL feature to sign per-vhost certs

Full Backup & Restore

FeatureStatusNotes
Create full backup zipDONEcreate_full_backup - zips config/, www/, mysql/all-databases.sql (mysqldump); returns mysql_included flag
List saved backupsDONElist_full_backups - scans backups/full/*.zip, returns filename/size/date
Restore from backupDONErestore_full_backup - extracts config + www, pipes SQL to mysql.exe; path-traversal protected
Delete backupDONEdelete_full_backup - validated to backups/full/ only
Open backups folderDONEopen_backups_folder - opens Explorer at backups/full/
MySQL-skipped warningDONEReturns mysql_included: false when MySQL is not running; UI shows warning banner

Planned Future Features (Not Scheduled)

  • Mail testing (Mailhog)
  • Portable mode
  • Bundled tools (curl, git, node, npm)

Version History Summary

VersionKey Changes
v0.1.7-devPHP 8.4 CGI compatibility (session.sid_*, error_reporting, html_errors); configVersion 7 vhost fix; .gitignore cleanup
v0.1.6MSI fixed, CSS restored, GitHub Actions fixed, both installers working
v0.1.5Build system improvements
v0.1.0 - v0.1.4Early alpha, architecture setup
Last updated: July 17, 2026Edit this page