Skip to content

chore(ui): drop AdminLTE 2, Bootstrap 3 and the rest of the dead front end - #1333

Merged
mastacontrola merged 1 commit into
working-1.6from
chore-drop-adminlte2-bootstrap3
Aug 24, 2026
Merged

chore(ui): drop AdminLTE 2, Bootstrap 3 and the rest of the dead front end#1333
mastacontrola merged 1 commit into
working-1.6from
chore-drop-adminlte2-bootstrap3

Conversation

@mastacontrola

Copy link
Copy Markdown
Member

FOG moved to AdminLTE 4 / Bootstrap 5 and the old bundles were never removed.

Nothing loaded them. Page declares every stylesheet and script in one
place (lib/fog/page.class.php, plus swagger on the API docs page), no plugin
declares its own assets, and the only references anywhere in the tree were
sourceMappingURL comments inside other minified files. So this was ~1.2 MB
of vendored code shipping in every release, sitting in every backup, and
answering "which bootstrap is this" with the wrong version.

It also actively misled: bootstrap5.min.css carries
sourceMappingURL=bootstrap.min.css.map, and the map of that name in the tree
was Bootstrap 3's — its sources begin less/normalize.less, the LESS
build BS3 used and BS5 does not. Devtools was resolving BS5 rules against BS3
sources.

Removed

Files
AdminLTE 2 AdminLTE.min.css, adminlte-skins.min.css, adminlte.min.js
Bootstrap 3 bootstrap.min.css, its .map, bootstrap.min.js, css/less/ (71 LESS sources — there is no build step), and the glyphicons-halflings faces, which no loaded stylesheet has defined a rule for since the migration
Superseded bootstrap-datetimepicker.min.{css,js}js/fog/datetimepicker-shim.js re-implements $.fn.datetimepicker for the call sites still on the BS3-era API. jquery.color.min.jsshade() in fog.dashboard.js; the comment there already said so
Redundant datatables.bootstrap5.min.{css,js}datatables.min.css is a combined downloader build that already contains the Bootstrap 5 integration
Dead markup the <!--[if lt IE 9]--> block in other/index.php, which is the shell for every page and pointed at dist/js/html5shiv.min.js and dist/js/respond.min.js — neither has ever existed in this tree, and Bootstrap 5 dropped IE outright

Tests

tests/retired-frontend-bundles.test.php, 23 checks, three mutation-verified:
a retired bundle reappearing, the datetimepicker shim being gutted, and
page.class.php starting to reference a retired file.

The replacements are checked by what they provide$.fn.datetimepicker,
shade(), the --dt-row-selected rules — so gutting a file still fails,
rather than passing because the file happens to exist.

Verified live

Deployed to a 1.6 install (copybacktrunk rsyncs with --delete, so the
removals propagate) and then loaded in a browser:

  • host list renders 86 rows and 144 sidebar links with zero failed
    resource requests
  • every asset the login page references returns 200
  • bootstrap5.min.css, adminlte4.min.css, datatables.min.css,
    font-awesome.min.css and the datetimepicker shim all still present and
    serving

Follow-up

Font Awesome is still 4.7.0. That is a separate change with a real blast
radius (the plugins repo uses fa fa-* too) and is being done next.

Downstream

None — no plugin references any removed file.

…t end

FOG moved to AdminLTE 4 / Bootstrap 5 and the old bundles were never
removed. Nothing loaded them: Page declares every stylesheet and script in
one place (lib/fog/page.class.php, plus swagger on the API docs page), no
plugin declares its own assets, and the only references anywhere in the
tree were sourceMappingURL comments inside other minified files. So this
was ~1.2 MB of vendored code shipping in every release and sitting in every
backup, answering "which bootstrap is this" with the wrong version.

It also actively misled. bootstrap5.min.css carries
`sourceMappingURL=bootstrap.min.css.map`, and the map of that name in the
tree was BOOTSTRAP 3's -- its `sources` start `less/normalize.less`, the
LESS build BS3 used and BS5 does not. Devtools resolved BS5 rules against
BS3 sources.

Removed:

  AdminLTE 2   AdminLTE.min.css, adminlte-skins.min.css, adminlte.min.js
  Bootstrap 3  bootstrap.min.css, its .map, bootstrap.min.js, css/less/
               (71 LESS sources -- there is no build step), and the
               glyphicons-halflings faces, which no loaded stylesheet has
               defined a rule for since the migration
  Superseded   bootstrap-datetimepicker.min.{css,js}, replaced by
               js/fog/datetimepicker-shim.js, which re-implements
               $.fn.datetimepicker for the call sites still using the
               BS3-era API
               jquery.color.min.js, replaced by shade() in
               fog.dashboard.js -- the comment there already said so
  Redundant    datatables.bootstrap5.min.{css,js}; datatables.min.css is a
               combined downloader build that already contains the
               Bootstrap 5 integration
  Dead markup  the <!--[if lt IE 9]--> block in other/index.php, which is
               the shell for EVERY page and pointed at
               dist/js/html5shiv.min.js and dist/js/respond.min.js --
               neither of which has ever existed in this tree, and
               Bootstrap 5 dropped IE outright

tests/retired-frontend-bundles.test.php, 23 checks, three
mutation-verified: a retired bundle reappearing, the datetimepicker shim
being gutted, and page.class.php starting to reference a retired file.
The replacements are checked by what they PROVIDE -- $.fn.datetimepicker,
shade(), the --dt-row-selected rules -- so gutting a file still fails
rather than passing because the file exists.

Verified on a live 1.6 install after deploying (copybacktrunk rsyncs with
--delete, so the removals propagate): the host list renders 86 rows and 144
sidebar links with ZERO failed resource requests, and every asset the login
page references returns 200.

Co-Authored-By: Claude <noreply@anthropic.com>
@mastacontrola
mastacontrola force-pushed the chore-drop-adminlte2-bootstrap3 branch from 28d8ddd to 089f710 Compare August 24, 2026 01:15
@mastacontrola
mastacontrola merged commit 2063dd6 into working-1.6 Aug 24, 2026
7 checks passed
@mastacontrola
mastacontrola deleted the chore-drop-adminlte2-bootstrap3 branch August 24, 2026 01:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant