Журнал изменений
Complete the 'theme owns visuals, plugin owns mechanics' migration: every SLAED-authored visual asset now lives in the theme, plugins keep only logic and versioned vendor engines, and switching a theme changes the entire look.
Core changes:
- Editor asset contract (core/classes/editor.php, plugins/editors/toastui/):
Theme skin moved to templates/<theme>/assets/editors/toastui/skin.css
- loaded by Editor::getThemeSkin() right after the engine CSS
- resolved from the effective editor key after all fallbacks
- deduplicated per theme:key pair, missing declared skin is logged
Dialog markup moved to theme partials editor-toastui-{dialogs,files,templates}.html
- dialogs partial renders window headers via a template loop
- EditorToastTemplate bypass class deleted, standard getHtmlPart() used
Plugin JS builds no markup: emoji panel and file manager clone theme-owned <template> blocks and fill textContent/src/data-* only
Plugin JS renamed to editor-{tags,emoji,upload}.js; dead unminified vendor build toastui-editor.js removed
- Theme structure validator (core/system.php):
checkThemeAssets() checks the canonical structure including editor assets declared in editor manifests
applied on all theme selection paths: user list/save, admin user edit, global config, getTheme() runtime guard
- Avatars (core/user.php, modules/account/index.php, setup/):
- system avatars and presets live in templates/<theme>/images/avatars/
getUserAvatarUrl() resolves presets/system from the active theme and accepts only the canonical presets/<name>.<ext> format
idempotent upgrade migration added to table_update6_3.sql with a PHP-side verification counter in setup
- Icons and tokens (templates/, core/security.php):
- Bootstrap Icons vendor directory renamed to assets/vendor/bootstrap-icons/
canonical token dictionary normalized: primary, bg-soft, text-muted, shadow-panel replace brand-link, surface, muted, shadow-medium everywhere
setExit() uses getThemeAssets() for emergency pages, getThemeCssFiles() and the manual icon CSS include removed
- editor classes renamed to sl-editor-icon- / sl-editor-emoji-
- toolbar icon color now follows --sl-color-text-muted
- img_find() renamed to getThemeImagePath()
Multilingual search (lang/, plugins/editors/toastui/assets/i18n/, templates/admin/assets/js/):
emoji set stored as plain symbols, names and search keywords generated from Unicode CLDR for de/en/fr/pl/ru/uk with localized tooltips
editor labels moved to language constants (_EEMOJI*, _ETABS) in all six locale files
admin icon picker searches by official Bootstrap Icons tags plus CLDR-derived locale term maps, lazy-loaded on first open
Benefits:
- A theme is a complete, replaceable visual package validated on activation
- Editor CSS order is deterministic: engine first, theme skin second
- No innerHTML markup in plugin JS; designers restyle without touching plugins
- Reproducible avatar migration for existing installations
Unify editor dialogs, upload validation, localization, and full-width form layout while keeping Toast UI resources independent from site themes.
Core changes:
- Toast UI editor (plugins/editors/toastui):
- Add unified upload and file-manager dialogs with drag, fullscreen, and attachment modes
- Move editor templates and translations into the plugin
- Upload handling (core and modules):
- Validate file types, dimensions, sizes, and aggregate upload limits
- Surface clear localized upload errors and help text
- Shared interface assets (plugins/bootstrap-icons):
- Consolidate Bootstrap Icons outside individual themes
- Align editor controls, dialog buttons, inputs, and responsive behavior
- Module forms (modules and templates/lite):
- Expand editors and intuitive fields to the available width
- Preserve explicit labels where additional field context is required
- Browser verification (tools/browser-audit.mjs):
- Extend authenticated browser checks for editor and upload workflows
Benefits:
- Consistent editor behavior across themes and modules
- Clearer upload limits and failure messages
- Reduced theme duplication and simpler maintenance
Technical notes:
- Existing CKEditor and TinyMCE drivers load the shared icon assets
- Toast UI templates no longer depend on theme partials
- Existing parser attachment behavior remains compatible
Add a responsive profile redesign showcase centered on the refined Dense Split concept, with complete account details, trust signals, ratings, module activity, and administrative actions.
Core changes:
- User profile showcase (demo/user-profile-2026.html):
- Add sixteen responsive profile design variants based on the lite theme system
- Refine Dense Split with complete user data, trust proofs, rating controls, module statistics, and social and administrative actions
- Add switchable activity feeds with threshold-based auto-scrolling and system chips for dates, ratings, and bookmarks
Benefits:
- Provides a detailed visual foundation for the production profile redesign
- Reuses established theme controls, tokens, icons, and interaction patterns
Technical notes:
- Keeps demo-specific CSS and JavaScript inline in the standalone HTML file
- Does not change backend APIs, database schema, routes, or production templates
- Preserves existing production behavior
Replace the legacy raster avatar gallery with a scalable SVG set and expose the required upload placeholders to version control.
Core changes:
- Default avatar gallery (uploads/avatars/default):
- Replace 54 PNG avatars with 56 SVG avatars
- Refresh guest, user, and deleted fallback artwork
- Upload placeholders (.gitignore):
- Track upload assets and directory index guards
- Add index guards for file and news uploads
Benefits:
- Reduces avatar asset size and improves scaling
- Keeps required upload directory guards in the repository
Technical notes:
- Breaking change: legacy default avatar filenames 01.png through 54.png are removed
- Existing stored references to removed PNG avatars fall back until migrated
Keep the guest user block compact and prevent session-bound tokens from breaking its read-only Live refresh.
Core changes:
- Live session endpoints (index.php):
- Exempt only public read-only session summary and row requests from CSRF validation
- Keep login and state-changing routes protected
- Guest presentation (templates/lite):
- Restore the online chip and correct greeting order
- Smooth guest action hover states and remove artificial vertical gaps
Benefits:
- Prevents intermittent token mismatch alerts during Live refresh
- Keeps the Dense Login layout compact and predictable
Technical notes:
- No database schema changes
- Public session endpoints remain read-only
- Existing protected actions retain CSRF validation
Redesign the user sidebar around the Dense Split layout and carry the selected Live audience behavior into the production template system.
Core changes:
- User and guest states (blocks/user_info.php):
- Add group color, rank image, level progress, compact navigation, and guest login presentation data
- Rebuild the shared user block partial for authenticated and guest sessions
- Live audience summary (core/system.php):
- Add member, bot, and guest percentages for the audience ring
- Preserve popup rows across refreshes and add overflow-aware automatic scrolling with hover and accessibility pauses
- Theme and design labs (templates/lite):
- Consolidate the Dense Split visuals into the Lite theme and shared partials
- Add the selected 2026 demo variants for future comparison
Benefits:
- Provides one consistent user block for guest and authenticated states
- Reuses the existing template, theme, HTMX, and Live UI infrastructure
- Keeps group identity and online audience data visible without increasing block size
Technical notes:
- No database schema or route changes
- Existing user block and session helper interfaces remain backward compatible
Add reusable sharing, favorites, live-status, and modal interactions across frontend and admin views. Consolidate browser behavior and template hooks, refresh localized labels, and replace obsolete UI demos with focused component examples.
Core changes:
- Interactive controls (core/system.php, core/user.php, plugins/system/slaed.js):
Add canonical sharing with QR, copy, and social network actions
- Keep comment and forum links stable across pagination and HTMX updates
- Reuse global confirmation and share dialogs
- Optimize favorite-state rendering and add live refresh controls
- Template integration (templates/admin, templates/lite):
- Add reusable modal, favorite, freshness, live-chip, and share fragments
- Align admin and frontend styles with the consolidated interaction model
- Module and demo coverage (modules, demo, lang):
- Wire sharing and favorite controls into supported content modules
- Synchronize interface labels across all active locales
- Replace outdated demo laboratories with focused UI reference pages
Benefits:
- Consistent interactive behavior across modules and asynchronous updates
- Fewer duplicate controls and database lookups
- Clearer template ownership and reusable frontend primitives
Technical notes:
- No database schema changes
- Existing public routes and module contracts remain compatible
Migrate frontend and admin actions to the shared speed-dial and HTMX contracts, align multilingual labels and documentation, and make content persistence aware of plain, Markdown, and HTML editor formats.
Core changes:
- Action menus and requests (core, modules, templates):
Replace legacy popover and comment-action fragments with structured dial and link items
- Use the gear trigger for moderator actions and the three-dot trigger for user actions
- Add CSRF tokens to state-changing inline requests
- Consolidate frontend action rendering across comments, forum, voting, account, shop, and content modules
- Editor storage pipeline (core/classes/editor.php, core/security.php, core/helpers.php):
Resolve storage formats from editor manifests
- Keep Plain line-break compatibility
- Preserve Markdown source line endings
- Retain trusted HTML for admin HTML editors
- Remove duplicate forum filtering and safely restore legacy content for editing
- Start Toast UI in Markdown mode to preserve SLAED source tags
- UI, languages, and documentation (templates, lang, docs):
- Add the reusable lite dial fragment and update shared link contracts
- Align action labels and category/block sorting guidance across all languages
- Update frontend dial architecture documentation and related theme styles
Benefits:
- Consistent compact action controls across modules
- Reliable editor round trips without duplicated break tags
- Safer state-changing actions and textarea output escaping
Technical notes:
- No database schema or route contract changes
- Legacy stored content remains readable through the existing parser pipeline
- Removed superseded popover and comment-action fragments
Documents the audit of the moderator edit menus on the lite frontend (liste tables, cards, view pages, votings) where the hover popover covers neighbouring rows, and the six-step migration plan to the sl-dial fan: getTplEditMenu() as the single data source, a lite dial fragment and styles, and the fan click toggle moved into the shared slaed.js.
Technical notes:
- plan only, no runtime changes; see docs/FRONTEND-DIAL.md
Adds the live HTML labs used to choose the final admin list UI: they load the real admin theme CSS and demonstrate every considered variant with working drag-and-drop, collapsing and dial interactions.
Core changes:
Blocks ordering labs (demo/admin-blocks-dnd-lab.html, demo/admin-blocks-infly-lab.html, demo/admin-blocks-final.html):
- five drag-and-drop variants plus six free-block marking variants
- the approved combination as the final target view
Row actions and categories labs (demo/admin-row-actions-lab.html, demo/admin-categories-dnd-lab.html, demo/admin-categories-final.html):
- six row action patterns including the chosen sl-dial overlay fan
four category tree ordering variants and the approved final view with collapsible module groups
Technical notes:
- self-contained pages under demo/, not linked from the runtime