Translated from findings-report.md. Each Phase ends with a VERSION bump (
VERSIONfile +config.phpAPP_VERSION+CHANGELOG.mdentry) so every milestone is shippable.
Baseline: 1.0.1 → target 1.0.6
- 1.1.1 Add global
verifyCSRFToken(string $token): boolwrapper inincludes/helpers.phpnext to existinggetCSRFToken() - 1.1.2 Delegate to
\Nucleus\Core\Security::verifyCSRFToken() - 1.1.3 No signature change required — the 6 API files keep working
- 1.2.1 Remove placeholder
t($key, $fallback)fromincludes/helpers.php(~:1130) - 1.2.2 Confirm
includes/i18n.phpregisters the realt()after load order fix - 1.2.3 Spot-check sidebar/dashboard still label correctly (en only is fine)
- 1.3.1
index.php:1032change selectorproject-card-container→project-card - 1.3.2
index.php:1038same for the empty-state reload check
- 1.4.1 Bump
VERSIONfile →1.0.2 - 1.4.2 Bump
config.phpAPP_VERSION→1.0.2 - 1.4.3 Add
CHANGELOG.mdentry for 1.0.2
- 2.1.1 Replace
findComposer()Laravelbin/composer/composer.pharcheck →composerfrom PATH - 2.1.2 Replace
findNPM()Laravelnpm.cmdcheck →npmfrom PATH, thennpxfallback - 2.1.3 Replace
findGit()Laravelgit.execheck →gitfrom PATH - 2.1.4 Delete the three now-unused functions and their
LARAGON_ROOTbranches
- 2.2.1
findMySQLDump()→ search PATH formysqldumpthenmariadb-dump - 2.2.2 Update error string
'mysqldump.exe not found'→'mysqldump not found; install mariadb-client / mysql-client' - 2.2.3 Verify
createBackup()DB path uses PATH binary correctly
- 2.3.1
getAppVersion()fallback'4.0.0'→APP_VERSIONconstant - 2.3.2 Remove backslash-normalization
str_replace('\\','/')insaveDashboardPreferences()+ BASE_URL detection - 2.3.3 Remove
LARAGON_DASHBOARD_PASSWORDenv fallback (keepNUCLEUS_PASSWORD) - 2.3.4 Update stale comments referencing
Laragon-Dashboard,laragon-dashboard.local, PHP built-in server
- 2.4.1 Fix
Version: 4.0.0header →1.0.x - 2.4.2 Rewrite PowerShell comment at
:789 - 2.4.3 Remove dead
getLaragonVersion()(:241) - 2.4.4 Remove duplicate
getLaragonConfig()(:1093) [config.php is canonical]
- 2.5.1 Update user-facing errors in
api/services.php,api/tools.php,api/backup.php→ "Install root not defined"
- 2.6.1 Bump version (VERSION, config.php, CHANGELOG)
- 3.1.1
api/tools.php,api/backup.php,api/services.php,api/databases.php,api/env_editor.php,api/config.php:catch (Exception)+catch (Error)→ singlecatch (\Throwable $e)
- 3.2.1
clearAllCaches()(helpers.php:970) → targetcache/cache/(i.e.CACHE_ROOT), drop deadtemp/dirs
- 3.3.1 grep usages first; if unused, remove from
helpers.php
- 3.4.1
partials/navbar.php,partials/sidebar.php:45,includes/i18n.php:27— validate againsti18n/languages.phpwhitelist before use
- 3.5.1 Block
/data,/cache,/logs,/uploaded,.git, dotfiles - 3.5.2 Replace misleading
<FilesMatch>extension list with explicit protection
- 3.6.1 Bump version (VERSION, config.php, CHANGELOG)
- 4.1.1 Remove duplicate
<meta name="viewport">(head.php:42) - 4.1.2 Re-indent meta/OG block & language-selector consistency
- 4.2.1 Remove fake "Share"/"Delete" links or route them to real actions
- 4.2.2 Delete → warn-and-
api/delete_project.php; Share → copy project URL to clipboard with toast
- 4.3.1 Simplify
index.phplimit (count($changelog) > 5) into a cleanarray_slice(…, 0, 5)
- 4.4.1 "Check for Updates" gets disabled state + spinner while running
- 4.5.1 Bump version + CHANGELOG
- 5.1.1 Add
uploaded/,temp/,BeitNoura/(untracked project dir), node marker dirs - 5.1.2 Re-run
git status --porcelain→ confirm only Nucleus files + Intentional housekeeping
- 5.2.1 Update
README.mdversion badge, platform support, contribution notes - 5.2.2 Final
findings-report.md/planner.mdrefresh
- 5.3.1
php -levery modified script - 5.3.2 Spot-check: dashboard renders,
t(), CSRF flow, services action reaches real systemctl - 5.3.3
git statusclean-ish; stage, commit, tagv1.0.6
- 5.4.1 Commit & push to local Gitea (
origin,main) - 5.4.2 Push to GitHub
LebToki/Nucleus(need remote added) if all pass - 5.4.3 Restore npm of plan at end of every phase (CHANGELOG bump + tag + stable push)
- F-1 (S-7) Split 145KB
partials/scripts.phpinto per-page modules (huge win, higher risk — queued for next minor) - F-2 (S-8) Move
index.phpinline JS intoassets/js/ - F-3 Enable strict CSP (requires F-2)
- F-4 Add real
optimizeDatabases()backed byNucleus\Core\Databases - F-5 Unit tests for
helpers.php+Core/Security.php