Журнал изменений
Theme updates backing the unified float/tip/list work in both themes.
Core changes:
- Float panels (lite + admin theme.css):
Closed panels use display none with an allow-discrete transition so hidden menus stop inflating scrollWidth (phantom scrollbar under every moderator list table); @starting-style keeps the fade-in
One generic open rule (.sl-float:hover / :focus-within) replaces the menu- and tip-scoped variants; dead .sl-dropdown* blocks removed
- List tables (lite):
td.sl-cell-ellipsis becomes the flexible truncating column (width 100% + max-width 0) instead of a fixed 450px link cap
- sl-table-col-num keeps the gear+number pair on one line
- Tip + name pairs are flex rows: exact 6px gap, centred icon
- Page layout (lite):
40px side gutters between 769-1400px keep the fixed idea/feedback tabs off the content column
Login toggle styled as a span trigger; the dropdown arrow reuses the shared .sl-float-panel::after geometry instead of a custom pair
- Debug (lite + admin):
min-inline-size 0 on .sl-debug-section stops unbreakable tokens from stretching the page on mobile
Benefits:
- No horizontal scrollbars from invisible panels or wide titles
- Consistent popover arrows and hover behaviour everywhere
The legacy click dropdown on user names is gone. Everywhere the "i" tip shows profile facts on hover and a click on the name navigates to the profile; hover previews, click navigates.
Core changes:
- Shared helpers (core/helpers.php, core/system.php):
getUserTip() builds the hover tip (group, points, regdate, gender, origin, warnings) once for comments, forum posts and PM; guests get "Status: Guest", orphaned uids without a name "Status: User deleted"
user_info() takes an icon flag; name links next to the tip render without the person icon
- New _USERDEL constant in all six languages
- Call sites (setComShow, forum, PM in core/user.php):
report + username_html replace the per-site dropdown data keys; guest names show as entered, empty ones fall back to _ANONYM
- Favorites list cells reordered to match its header
- Templates (comment, forum-post, account-profile, login-nav):
- Click dropdown markup removed; tip + bold name pair instead
Profile: name is plain text (final point), Message/Back moved into the "..." user menu next to the admin actions menu
- Login is a hover/focus trigger; no toggle-control navigation stub
- Float behaviour (slaed.js):
mouseleave keeps a panel open while focus is inside (login form), focusout ignores focus moves between inner fields
Benefits:
- One mechanism instead of four ad-hoc dropdown variants
- Login form no longer closes mid-typing
Every frontend list now renders the moderator gear menu before the number anchor in one cell and moves the date column into the info tip before the title, freeing ~120px for titles.
Core changes:
- Generic list row (table-row.html, table.html):
Moderator popover merged into the sl-table-col-num cell, the separate "Functions" column and its col_func header removed
Date cell replaced by a report tip before the title link; data-sort keeps tablesort clean; col_date header removed
- List modules (files, pages, news, links, media, faq, help, shop):
- time_text/time_iso/time_label replaced by one getTplTitleTip call
- col_func / col_date dropped from table_open
- Voting and content:
- voting-home.html: gear menu ordered before the number anchor
content: cells reordered to match the header (title, number) fixing the header/body column misalignment
Benefits:
- Identical gear+number pattern across all modules
- Header and body columns always match for guests and moderators
The toolbar classifier measured a mid-parse column width and never re-ran, so icons spilled over the sidebar; the editor mount div also shrink-wrapped to the toolbar instead of matching the other fields.
Core changes:
- Toolbar refit (slaed-tags.js):
Pin the toolbar to the real remaining row width (minus md tabs) so the native ResizeObserver reclassifies against honest numbers
- Re-run on window load, window resize and editor changeMode
- Editor sizing and reflash (slaed-icons.css):
Mount div gets flex basis / width 100% like every .sl-field input, in both markdown and wysiwyg modes
overflow-x clip on the toolbar row keeps the brief all-icons re-render inside the frame; dropdown and popups stay visible
Benefits:
- Icons never paint over the sidebar at any viewport width
- Surplus icons land in the native "..." dropdown as designed
The voting button relied on HTMX implicitly including the enclosing form's token; make it explicit like the other form-based ajax actions (addComment, addPrivateMessage).
Core changes:
- Voting widget (core/system.php):
- Pass hx_include => '#form'.$votid to the vote action so the form (token + answers) is included
- Action fragment (templates/{lite,admin}/fragments/comment-action-ajax.html):
- Render an optional hx-include attribute when provided (no-op for other callers)
A stale or missing CSRF token on a go=1/2/5 request died with a raw "Illegal file access". Return the localized alert instead, and make the token constant available on the front end where the gate runs.
Core changes:
- Ajax gate (index.php):
- On token mismatch return the _TOKENMISS alert fragment instead of a bare die()
- Language constants:
- Add _TOKENMISS to all front-end lang files (loaded first at bootstrap, before the gate)
- Remove the now-duplicate _TOKENMISS from admin lang files
Callouts nested inside list items were emitted as raw "> [!...]" text instead of rendering as alert blocks.
Core changes:
- auto_links / changelog admin help (modules/*/admin/info/ru.md):
- Move the [!TIP]/[!IMPORTANT] callouts to top level so they render as .sl-alert
The *NN smiley rule matched the digits of bold markup and longer numbers, rendering a stray smiley (e.g. 12 ... produced smiley 12).
Core changes:
- BB block parser (core/classes/parser.php):
- Match smilies as (?<!\)\(0[1-9]|1[0-8])(?!\d): not after another asterisk, not inside a longer number
- Bold like 12 and numbers like *180 stay as text;
..
still render
Remove the redundant control-panel path from the first line of every admin help page, and restructure the ratings help so a non-technical admin can grasp all the rules at a glance.
Core changes:
- All admin help (admin/info/, modules//admin/info/*):
- Strip the "(
admin.php?name=xxx)" reference from the section intro (44 pages) - Reword the search help sentence that spelled out the path
- Ratings help (admin/info/ratings/ru.md):
- Group the content into: where rating works, the three per-module settings, and anti-farm protection
- Document the built-in protections (self-vote block, existing/published target only, no points for profile rating, daily point cap, 1-5 clamp)
- Move callouts to top level so they render, and drop bold that collided with the smiley syntax