Remove legacy raster icons from the admin and lite themes in favour of Bootstrap Icons, add the bootstrap-icon fragment, and normalize admin and module handlers, config, and styles across the board.
Add the breadcrumb variant galleries under demo/ and a task prompt for the site-wide URL escaping migration (escape at the HTML output boundary, keep getSeoUrl raw).
Rewrite getTplCategoryTrail as an ordered root-to-current walk, dropping the legacy nested-anchor markup and adding a cycle guard. Rich mode renders text crumbs via the new category-crumb fragment; each crumb takes its category tone (ordern % 6) through the shared sl-cat-tone map and reveals it on hover with a sliding underline and a nudging separator. Plain mode keeps flat links for the head banner. Crumb hrefs are escaped at the template boundary for valid ampersands.
Rework the admin sidebar counter block into a data-driven table with a single row helper, switch to COUNT queries, wire sidebar dials, and bring helper names and comments in line with the project rules.
Core changes:
- Sidebar counters (core/admin.php):
- Replace the repeated per-module blocks with a grouped table and loop
- Add getAdminCountRow() using SELECT COUNT(id) instead of materializing rows
- Emit the unified sl-chip badge for counts
- Remove the dead album block
- Naming and comments (core/admin.php, admin/modules/monitor.php):
- Rename admininfo() to getAdminInfo() and db_version() to getDbVersion()
- Migrate call sites
- Add missing function comments, drop in-body comments and blank lines
- Sidebar dials (admin/index.php):
- Build the dial action list once for both grid cards and list rows
- Docs (docs/PERFORMANCE.md):
- Sync the counter reference to the new function name
Benefits:
- Fewer and lighter count queries per admin render
- Less duplication and no dead code
- Naming and comments compliant with the project rules
Technical notes:
- No storage or template contract changes
- Backward compatibility is preserved
Introduce round dial action buttons on the left module list, a shared chip vocabulary aligned with the lite theme, and a borderless module-head icon. Template and CSS layer only.
Core changes:
- Sidebar dial (templates/admin/fragments/*.html):
- Extract the dial markup into a shared fragments/dial.html
- Reuse it from menu-grid-item and menu-list-item
- Unified chips (templates/admin/assets/css/theme.css, fragments/inline-badge.html):
- Add .sl-chip base with .sl-chip-success and .sl-chip-warn tones
- Add chip_tone support to the inline-badge fragment
- Drop the legacy sidebar count-value pill styling
- Module-head icon (assets/css/base.css, theme.css):
- Add the --sl-size-icon-lg token (28px)
- Render the head icon as a bare 28px glyph without frame or background
Benefits:
- One chip vocabulary shared with the lite theme
- Quicker access to module actions from the sidebar
- Less bespoke CSS
Technical notes:
- No PHP or storage changes
- Backward compatibility is preserved
Rename lite theme size variables to semantic icon, chip, control, navigation, display, and forum tokens. The update keeps demo and error pages aligned with the theme token names.
Core changes:
- Lite design tokens (templates/lite/assets/css/base.css, templates/lite/assets/css/theme.css):
Replaced generic numeric size variables with semantic token names
- Icon sizes now use sl-size-icon-* tokens
- Navigation and control sizes now use sl-size-nav-control and sl-size-control
- Display and forum dimensions use dedicated semantic tokens
- Demo and error surfaces (demo/*.html, error.html):
- Updated embedded CSS references to the renamed semantic tokens
- Kept layout dimensions and visual behavior equivalent
Benefits:
- Improves token readability and maintainability
- Aligns lite and demo surfaces with the admin token naming direction
- Reduces reliance on generic numeric CSS custom properties
Technical notes:
- No storage changes
- HTML structure and runtime contracts are unchanged
- Backward compatibility is preserved for rendered behavior
Refresh shared admin control styling for dashboard panels, sidebars, popovers, and icon picker interactions. The update aligns compact icon buttons and panel toggle affordances with the admin design tokens.
Core changes:
- Admin design tokens and controls (templates/admin/assets/css/base.css, templates/admin/assets/css/theme.css):
Split icon and chip sizes into explicit reusable tokens
- Added a dark-surface foreground token
- Added shared mini chip button styling for compact actions
- Refined dial action transitions, sidebar spacing, panel header controls, pager chips, and icon modal scrolling
- Admin templates (templates/admin/fragments/.html, templates/admin/partials/.html):
- Reused the mini chip button class for dashboard dials and popover triggers
- Added open and closed panel toggle icons to dashboard and sidebar headers
- Marked icon picker grid content as non-translatable
Benefits:
- Improves visual consistency for compact admin controls
- Makes dashboard and sidebar collapsed state clearer
- Prevents icon names from being altered by translation tools
Technical notes:
- No PHP or storage changes
- Template data contracts are preserved except for optional icon_name consumption already supplied by callers
- Backward compatibility is preserved
Expand admin dashboard module cards with direct actions for configuration, categories, site view, documentation, and status changes. The update also separates dashboard section labels and reuses a shared category module list.
Core changes:
- Admin dashboard actions (admin/index.php):
Added config, categories, site view, info, edit, and status action links where applicable
- Configuration links are shown only when a module config file and admin config route exist
- Site links are shown only for active frontend modules
- Added distinct dashboard panel labels and icons for admin and site module groups
- Shared module metadata (core/helpers.php, config/modules.php):
- Added getCategoryModules() for shared category-capable module detection
- Reused the helper in category module selects
- Updated the account module icon to match the dashboard visual language
- Admin language constants (admin/lang/*.php):
- Added localized labels for dashboard sections and site view actions across all supported admin locales
Benefits:
- Reduces navigation steps from the module dashboard
- Centralizes category-capable module names for reuse
- Keeps admin labels synchronized across locales
Technical notes:
- No storage changes
- Existing module routes and permission checks are preserved
- Backward compatibility is preserved
Qualify edit query identifiers with module table aliases to avoid ambiguous id resolution when joining user records. This keeps admin edit forms stable for category-based content modules.
Core changes:
- Admin edit queries (modules/faq/admin/index.php, modules/files/admin/index.php, modules/media/admin/index.php, modules/news/admin/index.php):
Replaced bare id filters with explicit module table aliases
- faq uses s.id
- files uses f.id
- media uses m.id
- news uses s.id
Benefits:
- Prevents ambiguous column errors in joined admin edit queries
- Keeps query intent unchanged while improving SQL reliability
Technical notes:
- Storage format is unchanged
- SQL placeholders and admin form contracts are unchanged
- Backward compatibility is preserved
Add the admin icon picker workflow, move shared icon assets into the admin icon namespace, and keep frontend category rendering aligned with the new asset lookup. The change also fixes SQL debug trace collection so early database queries are buffered and rendered consistently in the debug panel.
Core changes:
- Admin icon management (admin/index.php, admin/modules/categories.php, templates/admin):
Add icon picker UI assets, template fragments, and admin styling
- Support centralized icon browsing from the admin interface
- Update admin menu and category/module controls to use the new icon paths
- Move legacy admin and category images into the shared admin icon directory
- Module and category icon references (config/modules.php, modules/*/index.php, core/system.php):
- Normalize icon references to the icons namespace
- Keep category image rendering aligned with the migrated assets
- SQL debug tracing (core/classes/pdo.php, core/system.php):
Buffer raw SQL trace entries before template rendering is available
- Flush buffered entries through the debug visibility gate
- Preserve query counts and detailed SQL rows in the debug panel
- Render SQL trace output through a dedicated Database method
Benefits:
- More consistent admin icon handling
- Reliable database query diagnostics
- Cleaner asset ownership between admin icons and frontend templates
Technical notes:
- Category icon assets are moved from lite categories into the shared icon path
- SQL debug output remains gated by checkDebugView()
- Backward compatibility is preserved for the existing qtime debug HTML consumer