refactor(webui): separate core/lib + core/boot into sub-system folders

core/lib held 18 loose .js; core/boot held 10. Grouped by responsibility,
mirroring the components/* sub-system layout:

  core/lib/task/    task kernel (8): event-bus, commands, actions, router,
                    global-functions, manager, refresh-coordinator,
                    parameter-preserve
  core/lib/config/  config helpers (2): config-shared, config-options
  core/lib/util/    generic utils (7): data-loader, dom-helpers, ui-helpers,
                    lp-ui, router, system-live, dismissible
  core/boot/setup/  first-run wizard (3): setup-detector, setup-wizard,
                    setup-completion-watcher
  core/boot/controls/ form widgets (2): custom-number, custom-select

core/lib is now purely subfolders. backup-app-card.js was misfiled in lib (it's
a UI card) — moved to core/ui/. core/boot keeps the genuine bootstrap singletons
at root (system-loader, system-orchestrator, auth-manager, loading-ui,
theme-registry).

Path-only moves (git mv); all 35 referenced core paths verified to resolve,
full node --check sweep of 100 frontend .js files clean.

Signed-off-by: librelad <librelad@digitalangels.vip>
This commit is contained in:
librelad 2026-05-30 19:32:09 +01:00
parent 78c463d3ac
commit aa563f1fed
29 changed files with 31 additions and 31 deletions

View File

@ -1287,10 +1287,10 @@ class AppsManager {
// Only load scripts if they're not already loaded // Only load scripts if they're not already loaded
const scripts = [ const scripts = [
{ name: 'TaskManager', src: '/core/lib/task-manager.js' }, { name: 'TaskManager', src: '/core/lib/task/task-manager.js' },
{ name: 'TaskCommands', src: '/core/lib/task-commands.js' }, { name: 'TaskCommands', src: '/core/lib/task/task-commands.js' },
{ name: 'TaskActions', src: '/core/lib/task-actions.js' }, { name: 'TaskActions', src: '/core/lib/task/task-actions.js' },
{ name: 'TaskRouter', src: '/core/lib/task-router.js' }, { name: 'TaskRouter', src: '/core/lib/task/task-router.js' },
{ name: 'TasksManager', src: '/components/tasks/js/tasks-manager.js' } { name: 'TasksManager', src: '/components/tasks/js/tasks-manager.js' }
]; ];

View File

@ -31,7 +31,7 @@ LP.features.register({
'/components/backup/configuration/js/backup-configuration.js', '/components/backup/configuration/js/backup-configuration.js',
'/components/backup/configuration/js/backup-retention-presets.js', '/components/backup/configuration/js/backup-retention-presets.js',
'/components/backup/configuration/js/backup-engine-details.js', '/components/backup/configuration/js/backup-engine-details.js',
'/core/lib/backup-app-card.js', '/core/ui/backup-app-card.js',
], ],
async mount(ctx) { async mount(ctx) {

View File

@ -39,8 +39,8 @@ class SystemLoader {
global: 'configManager', global: 'configManager',
dependencies: ['data'], dependencies: ['data'],
scripts: [ scripts: [
'/core/lib/config-options.js', '/core/lib/config/config-options.js',
'/core/lib/config-shared.js', '/core/lib/config/config-shared.js',
'/components/admin/config/js/config-validator.js', '/components/admin/config/js/config-validator.js',
'/components/admin/config/js/toggle-manager.js', '/components/admin/config/js/toggle-manager.js',
'/components/admin/config/js/config-core.js', '/components/admin/config/js/config-core.js',
@ -167,13 +167,13 @@ class SystemLoader {
global: 'tasksManager', global: 'tasksManager',
dependencies: [], dependencies: [],
scripts: [ scripts: [
'/core/lib/task-event-bus.js', '/core/lib/task/task-event-bus.js',
'/core/lib/task-commands.js', '/core/lib/task/task-commands.js',
'/core/lib/task-actions.js', '/core/lib/task/task-actions.js',
'/core/lib/task-router.js', '/core/lib/task/task-router.js',
'/core/lib/task-global-functions.js', '/core/lib/task/task-global-functions.js',
'/core/lib/task-manager.js', '/core/lib/task/task-manager.js',
'/core/lib/task-parameter-preserve.js', '/core/lib/task/task-parameter-preserve.js',
'/components/tasks/js/tasks-manager.js', // base: class + constructor + init + bus wiring '/components/tasks/js/tasks-manager.js', // base: class + constructor + init + bus wiring
// prototype-augment clusters (load after base; ordered via async=false): // prototype-augment clusters (load after base; ordered via async=false):
'/components/tasks/js/tasks-format.js', '/components/tasks/js/tasks-format.js',
@ -214,8 +214,8 @@ class SystemLoader {
dependencies: ['data'], dependencies: ['data'],
scripts: [ scripts: [
'/components/apps/port-manager/js/port-manager.js', '/components/apps/port-manager/js/port-manager.js',
'/core/lib/task-manager.js', // Add TaskManager for backup functionality '/core/lib/task/task-manager.js', // Add TaskManager for backup functionality
'/core/lib/backup-app-card.js', '/core/ui/backup-app-card.js',
'/components/apps/services/js/services-manager.js', '/components/apps/services/js/services-manager.js',
'/components/apps/tools/js/tools-manager.js', '/components/apps/tools/js/tools-manager.js',
'/components/apps/routing/js/routing-manager.js', '/components/apps/routing/js/routing-manager.js',

View File

@ -371,7 +371,7 @@ class LibrePortalSPAClean {
// loadScript is idempotent — subsequent /backup navigations are no-ops. // loadScript is idempotent — subsequent /backup navigations are no-ops.
await Promise.all([ await Promise.all([
this.loadScript('/components/backup/core/js/backup-page.js'), this.loadScript('/components/backup/core/js/backup-page.js'),
this.loadScript('/core/lib/backup-app-card.js') this.loadScript('/core/ui/backup-app-card.js')
]); ]);
const html = await this.fetchContent('/components/backup/core/html/backup-content.html'); const html = await this.fetchContent('/components/backup/core/html/backup-content.html');
this.loadContent(html, 'Backups'); this.loadContent(html, 'Backups');

View File

@ -78,7 +78,7 @@
<div class="mobile-drawer-page-section" id="mobile-drawer-page-section"></div> <div class="mobile-drawer-page-section" id="mobile-drawer-page-section"></div>
<div class="topbar-controls"> <div class="topbar-controls">
<select id="theme-selector" class="theme-selector" aria-label="Theme"> <select id="theme-selector" class="theme-selector" aria-label="Theme">
<!-- Options populated by ThemeRegistry — see js/system/theme-registry.js --> <!-- Options populated by ThemeRegistry — see /core/boot/theme-registry.js -->
</select> </select>
<button class="donate-btn">Donate</button> <button class="donate-btn">Donate</button>
<button class="logout-btn" id="logout-btn" title="Logout"> <button class="logout-btn" id="logout-btn" title="Logout">

View File

@ -67,8 +67,8 @@
})(); })();
</script> </script>
<script src="/core/boot/theme-registry.js"></script> <script src="/core/boot/theme-registry.js"></script>
<script src="/core/boot/custom-select.js"></script> <script src="/core/boot/controls/custom-select.js"></script>
<script src="/core/boot/custom-number.js"></script> <script src="/core/boot/controls/custom-number.js"></script>
</head> </head>
<body> <body>
<!-- Topbar Container --> <!-- Topbar Container -->
@ -89,21 +89,21 @@
<!-- Essential Bootstrap --> <!-- Essential Bootstrap -->
<!-- LpUi runs first so body.lp-ui--advanced / lp-ui--dev are set <!-- LpUi runs first so body.lp-ui--advanced / lp-ui--dev are set
before any page/component renders → no FOUC of advanced sections. --> before any page/component renders → no FOUC of advanced sections. -->
<script src="/core/lib/lp-ui.js"></script> <script src="/core/lib/util/lp-ui.js"></script>
<script src="/core/lib/dom-helpers.js"></script> <script src="/core/lib/util/dom-helpers.js"></script>
<script src="/core/lib/ui-helpers.js"></script> <script src="/core/lib/util/ui-helpers.js"></script>
<script src="/core/lib/router.js"></script> <script src="/core/lib/util/router.js"></script>
<script src="/core/lib/data-loader.js"></script> <script src="/core/lib/util/data-loader.js"></script>
<script src="/core/lib/system-live.js"></script> <script src="/core/lib/util/system-live.js"></script>
<script src="/core/lib/dismissible.js"></script> <script src="/core/lib/util/dismissible.js"></script>
<script src="/core/ui/eo-modal.js"></script> <script src="/core/ui/eo-modal.js"></script>
<script src="/core/lib/task-refresh-coordinator.js"></script> <script src="/core/lib/task/task-refresh-coordinator.js"></script>
<script src="/components/dashboard/js/dashboard.js"></script> <script src="/components/dashboard/js/dashboard.js"></script>
<script src="/core/boot/system-loader.js"></script> <script src="/core/boot/system-loader.js"></script>
<script src="/core/boot/loading-ui.js"></script> <script src="/core/boot/loading-ui.js"></script>
<script src="/core/boot/setup-detector.js"></script> <script src="/core/boot/setup/setup-detector.js"></script>
<script src="/core/boot/setup-wizard.js"></script> <script src="/core/boot/setup/setup-wizard.js"></script>
<script src="/core/boot/setup-completion-watcher.js"></script> <script src="/core/boot/setup/setup-completion-watcher.js"></script>
<script src="/core/boot/system-orchestrator.js"></script> <script src="/core/boot/system-orchestrator.js"></script>
<!-- Feature-module kernel. Currently passive: defines window.LP.features and <!-- Feature-module kernel. Currently passive: defines window.LP.features and
loads the page manifest; spa.js consults it for routing. See loads the page manifest; spa.js consults it for routing. See