Журнал изменений

Фильтр и поиск

Всего: 884 Доступных коммитов | Отфильтровано: 884 Коммиты | Страница: 1 / 89
Сегодня (17.06.2026)
Perf: overhaul page-cache key, headers, GC, invalidation and single-flight
Автор: Eduard Laas | Дата: 09:29 17.06.2026

Rework the full-page HTML cache so it scales for high traffic: normalize the cache key, serve correct browser/CDN headers, retain files by age, invalidate on content change, and collapse concurrent rebuilds. Generation timing now shows on cached responses without baking a stale value into the stored file.

Core changes:

  1. Generation timing on cached pages (core/system.php):
  2. Replace the per-render time string with a GEN_MARK sentinel baked into the body
  3. Add getTimedHtml() to swap the marker for live timing right before output, or strip it when generation timing (db_t) is off

  4. Inject on both the live echo and the page-cache hit path
  5. Cache key normalization (core/classes/cache.php, core/system.php):
  6. Add Cache::filterCacheUrl() to drop tracking parameters (utm_*, gclid, yclid, fbclid, _openstat) and order query groups while preserving array order

  7. Feed it into getPageHash() so equivalent URLs map to one cache file
  8. Browser/CDN headers and conditional GET (index.php, core/classes/cache.php, core/system.php):
  9. Replace the premature public header in index.php with a safe no-store default
  10. Send public Cache-Control plus a real Last-Modified (file mtime) only for cacheable guest pages, and answer If-Modified-Since with 304

  11. Add Cache::checkNotModified(); suppress browser caching while db_t is on so the timing line never goes stale

  12. Retention-based garbage collection (core/classes/cache.php, core/system.php, admin/info/config/ru.md):
  13. Add Cache::deleteStale() to remove page-cache files older than max(cache_tСмайл - 24, 86400)
  14. Switch addCacheGcTask() from a full wipe to the retention sweep
  15. Document that cache_t is HTML freshness, cache_d is browser max-age, and GC retention derives from cache_t

  16. Global epoch invalidation (core/classes/cache.php, core/system.php, core/classes/pdo.php, index.php):
  17. Add Cache::getEpoch()/addEpoch() with a once-per-request flock bump; include the epoch in getPageHash() so a bump invalidates every cached page

  18. Bump from the DB layer on successful state-changing SQL under ADMIN_FILE, which covers all admin content modules through one hook

  19. Bump on frontend comment, post and voting submissions
  20. Single-flight rebuild (core/classes/cache.php, core/system.php, config/global.php):
  21. Add Cache::getRebuildLock()/setRebuildFree() using a non-blocking flock with shutdown release; serve the stale file when another worker already rebuilds

  22. Gate behind the new cache_l config flag, default off

Benefits:

  • Tracking-only URL variants share one cache file instead of fragmenting it
  • Cached pages can be revalidated by the browser/CDN with 304 instead of full sends
  • Disk stays bounded; content edits no longer wait up to cache_t to refresh
  • Concurrent expiry no longer triggers a thundering herd of full rebuilds

Technical notes:

  • New config flag cache_l (default 0); cache_b now also fixes public headers on non-cacheable HTML

  • Epoch and lock files live under storage/cache/pages; deleteStale and deleteAll preserve .htaccess and index.html

  • Single-flight serves stale only when cache_l is enabled; otherwise behavior is unchanged

Вчера (16.06.2026)
Style: add user actions menu trigger and align comment/forum post headers
Автор: Eduard Laas | Дата: 16:00 16.06.2026

Render the consolidated user actions menu as a popover trigger and rework the comment and forum-post header layout for symmetric, browser-independent alignment.

Core changes:

  1. Popover fragment (templates/lite/fragments/popover.html, templates/admin/fragments/popover.html):
  2. Add is_user_menu flag: user-menu trigger class and bi-menu-button-wide-fill icon
  3. Wrap items/view/edit/delete menu entries in li for valid list markup
  4. Comment header (templates/lite/fragments/comment.html, templates/lite/assets/css/theme.css):
  5. Place the user and editor gear cluster before the post number
  6. Lay out the header on a 1fr auto 1fr grid: fixed-width author column, meta aligned from the left, action cluster on the right

  7. Forum post (templates/lite/fragments/forum-post.html, templates/lite/assets/css/theme.css):
  8. Move the user menu into the meta cluster before the post number
  9. Flex the meta bar and drop its fixed height so date and cluster never overlap the post body

  10. Center the nickname plate with flexbox for consistent cross-browser rendering
  11. Gear styling (templates/lite/assets/css/theme.css):
  12. User gear shares the editor gear styling (grey, brand-blue on hover)

Benefits:

  • Symmetric, consistent post headers regardless of nickname length
  • Valid li/a menu markup in both lite and admin themes

Technical notes:

  • Template markup and CSS only; no behavior change
Refactor: consolidate popover action-menu builders into getActionMenu
Автор: Eduard Laas | Дата: 15:59 16.06.2026

Replace the duplicated action-menu builders (add_menu, getUserMenu and two inline $actionMenu closures) with a single getActionMenu() helper and route comment, forum, private-message and clients menus through it.

Core changes:

  1. Action-menu helper (core/system.php):
  2. Add getActionMenu(array $items, bool $user = false)

    • Wraps each prepared HTML item in list-item and builds the popover
    • Editor gear by default, user menu (is_user_menu, _USER) when $user is true
  3. Remove add_menu() and getUserMenu()
  4. Replace the inline implode(list-item) menu builds in getComments and getVotingView with getActionMenu()

  5. Comment author menu (core/system.php):
  6. Build the user actions menu (personal/message/profile/site) and pass it as btn_user instead of separate btn_personal/btn_pm/btn_profile/btn_web

  7. Forum (modules/forum/index.php):
  8. Fold author actions plus quote-reply into the user menu via getActionMenu(..., true); route the editor menu through getActionMenu

  9. Private messages (core/user.php):
  10. Remove both $actionMenu closures; use getActionMenu() for every menu
  11. Build the PM author menu (profile/site) via getActionMenu(..., true)
  12. Clients (modules/clients/index.php):
  13. Route the row action menu through getActionMenu(explode('||', ...))

Benefits:

  • One menu builder instead of four near-duplicates
  • Consistent user-menu contract across all front-end modules

Technical notes:

  • Behavior preserved; popover fragment items_html API unchanged
Эта неделя (15.06.2026)
Perf: rework final HTML output normalizer for readable, fast view-source
Автор: Eduard Laas | Дата: 16:21 15.06.2026

Replace the cache-only getCompressHtml() with a single getOutputHtml() that normalizes the assembled page in setFoot() before echo and before page-cache write, so users always receive processed HTML even when page-cache is off.

Core changes:

  1. Output normalizer (core/system.php):
  2. Add getOutputHtml(string $html, bool $full = false) replacing getCompressHtml()

    • Protect script/style/pre/code/textarea bodies and comments first, exposing
only the opening tag so multiline <script src> tags get normalized too
  • Squeeze multiline class lists and multiline tags to a single line
  • Keep the template's own indentation; only drop blank lines from false {% if %}
  • full=true keeps the legacy maximal-compression path and strips non-IE comments
  1. Output and cache wiring (core/system.php):
  2. Echo the readable (full=false) output to the user on every request
  3. Compress (full=true) only the copy written to storage/cache/pages/html when cache_c=1, restoring the original cache-only compression contract

Benefits:

  • Heavy parsing runs only on the few multiline matches, not on every tag
  • Real homepage normalization measured at ~0.32 ms vs ~4.3 ms for a tokenizer
  • view-source has no multiline tags, no multiline class, no giant glued lines

Technical notes:

  • storage/cache/templates keeps compiled PHP only; final HTML is never written there
  • Output is idempotent; script/style/pre/code/textarea bodies stay byte-for-byte
  • Behavior change: live echo is now normalized for readability on every request; with cache_c=1 a cache hit still serves compressed HTML while a miss serves readable HTML, matching the previous cache-only compression semantics

Style: Update lite theme controls and spacing
Автор: Eduard Laas | Дата: 15:03 15.06.2026

This commit refines lite theme layout spacing, rating control presentation, and floating feedback links. It removes the separate contact-block partial now that both layouts render the feedback link directly.

Core changes:

  1. Theme spacing and controls (theme.css, base.css):
  2. Add a shared grid gap variable and apply it to card and post grids.

    • Adjust full-view width and metadata alignment rules.
    • Refine rating badges, star hover preview, and mobile metadata stacking.
  3. Update floating idea and feedback tabs to grow from the screen edge.

    • Uses sideways writing mode where supported.
    • Avoids edge gaps during hover and focus states.
  4. Lite layouts (app.html, home.html):
  5. Render the feedback tab directly in both layouts.
  6. Keep the layout output independent of a separate partial payload.
  7. Theme foot variables (index.php, contact-block.html):
  8. Remove contactblock generation from theme foot variables.
  9. Delete the unused contact-block partial.

Benefits:

  • Reduces one template indirection in the lite footer path.
  • Improves consistency of grid spacing and floating controls.
  • Keeps rating UI states clearer for interactive and static displays.

Technical notes:

  • No database or storage changes.
  • Template output changes are limited to the lite theme.
  • Backward compatible for existing theme data except the removed internal contactblock variable.
Refactor: Consolidate rating ajax workflow
Автор: Eduard Laas | Дата: 15:03 15.06.2026

This commit unifies rating rendering and voting request handling so star and like controls share one data contract. It also switches live rating actions to POST requests with CSRF headers.

Core changes:

  1. Rating rendering helper (core/helpers.php):
  2. Collapse duplicate star and like rendering branches into one shared template payload.

    • Builds a common vote query and live-state wrapper.
    • Provides CSRF token data for live HTMX requests.
  3. Rating request handler (core/system.php):
  4. Replace repeated module-specific branches with a table and field map.

    • Keeps duplicate-vote checks by user, ip, and cookie.
    • Persists votes through prepared statements and returns the refreshed rating block.
  5. Rating fragments (rating-bar.html, rating-like.html):
  6. Use the shared vote_query payload for live interactions.

    • Sends votes with hx-post instead of hx-get.
    • Adds CSRF headers to live rating containers.

Benefits:

  • Removes duplicated rating control rendering logic.
  • Makes rating vote handling easier to audit and extend.
  • Aligns state-changing rating actions with POST semantics.

Technical notes:

  • No database schema changes.
  • The template payload for rating controls is updated.
  • Backward compatible for existing persisted rating values.
Fix: Harden runtime edge cases from PHP logs
Автор: Eduard Laas | Дата: 15:02 15.06.2026

This commit prevents malformed requests and concurrent cache writes from generating PHP warnings or TypeErrors. It keeps pagination and cache writes bounded before they reach runtime-sensitive PHP APIs.

Core changes:

  1. Search pagination (modules/search/index.php):
  2. Clamp page size and requested page before calculating the array slice offset.

    • Prevents oversized numeric input from overflowing into a float offset.
    • Passes the normalized page to the pager renderer.
  3. Forum topic view (modules/forum/index.php):
  4. Clamp requested topic pages to the available page range before building the SQL offset.

    • Handles empty result sets before reading the first row.
    • Casts category permission fields before calling is_acess().
  5. Cache writes (core/classes/cache.php):
  6. Use a unique temporary file for atomic cache writes.

    • Avoids rename/unlink warnings from concurrent writers sharing one .tmp path.

Benefits:

  • Reduces noisy PHP log entries from crawler input.
  • Prevents request-level TypeErrors from invalid pagination values.
  • Improves reliability of concurrent cache generation.

Technical notes:

  • No storage format changes.
  • No public API changes.
  • Backward compatible behavior for valid requests.
09.06.2026
Refactor: replace the inline footer feedback form with a contact link
Автор: Eduard Laas | Дата: 17:31 09.06.2026

Drop the dropdown feedback form from the footer and link straight to the contact module, removing the per-request captcha and token work behind it.

Core changes:

  1. Footer block (templates/lite/partials/contact-block.html):
  2. Replace the dropdown form with a plain link to index.php?name=contact
  3. Theme hook (templates/lite/index.php):
  4. Stop building the feedback fields, captcha and token in getThemeFootVars(); pass only the label

Benefits:

  • Less work per page render (no captcha/token for the footer)
  • Smaller markup surface

Technical notes:

  • The contact page keeps its own form, captcha and token, reachable via the link

  • The matching form-only styles are removed in the lite style commit
Style: migrate the lite theme to sl-float and modernise the side tabs
Автор: Eduard Laas | Дата: 17:31 09.06.2026

Bring the frontend theme onto the shared .sl-float / .sl-float-panel contract, give the side tabs a modern vertical-text layout pinned to the left edge, and make the id badge a circle-or-pill.

Core changes:

  1. Floating popovers (templates/lite/assets/css/theme.css):
  2. Map tip/menu/dropdown panels onto .sl-float-panel with the sl-is-open state and viewport-fixed placement

  3. Drive click dropdowns through opacity/visibility so they fade in place
  4. Transition opacity only (not position) so panels no longer slide in or up
  5. Side tabs (#block-idea / #block-feedback):
  6. Pin both tabs to the left edge, stacked symmetrically around the vertical centre with writing-mode vertical text

  7. On hover slide out to the right with the label; a same-colour left shadow keeps the screen edge covered

  8. Id badge (.sl-card-id):
  9. Size to the 24px token; min-width plus a pill radius render a circle for a single digit and widen for more

  10. Footer feedback styles:
  11. Remove the now-unused .sl-block-feedback-form / .sl-bff-* and #block-feedback dropdown rules

Benefits:

  • One floating mechanism shared with the admin theme
  • Side tabs no longer clipped by the right-hand scrollbar
  • Cleaner, token-driven badges and tabs

Technical notes:

  • Frontend (lite) theme only
Style: refine the admin sl-float contract and the Server Status monitor
Автор: Eduard Laas | Дата: 17:30 09.06.2026

Adopt the .sl-float / .sl-float-panel contract in the admin theme and polish the monitor page: fix the gauge percentage colours, drop the unwanted info-block scroll, align the chart tooltip surface and add jump links from the Software panel.

Core changes:

  1. Admin theme (templates/admin/assets/css/theme.css):
  2. Collapse the paired .sl-tip / .sl-menu rules onto .sl-float-panel and the sl-is-open state

  3. Server Status: let the % text inherit the gauge colour by dropping the static colour override

  4. Remove the info-grid overflow-x that forced a vertical scrollbar
  5. Match the chart tooltip surface to the popover tokens
  6. Turn the Software items into smooth-scrolling jump links
  7. Monitor markup (templates/admin/partials/basic-monitor.html):
  8. Add anchor ids to the Server/PHP/MySQL blocks and link the Software rows
  9. Monitor module (admin/modules/monitor.php):
  10. Render the diagnostic cells through the unified popover (icon + value)
  11. Bump the chart tip corner radius to match the panel

Benefits:

  • Consistent floating UI and monitor styling
  • Clearer at-a-glance Server Status colours
  • Quicker navigation inside the monitor page

Technical notes:

  • Admin-only; no behaviour change outside the monitor

Всего: 884 на 89 страницах по 10 на каждой странице

1 2 3 4 5 6 7 8 9 10 89

Хотите опробовать SLAED CMS в действии?

Идеи и предложения
Обратная связь