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

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

Всего: 926 Доступных коммитов | Отфильтровано: 926 Коммиты | Страница: 1 / 93
Сегодня (24.06.2026)
Feature: consistent gated responses for uncaught errors and DB failure
Автор: Eduard Laas | Дата: 15:49 24.06.2026

Uncaught exceptions, fatal errors, and the DB-connection failure now produce a consistent response: the full error detail in debug mode, a clean 500 in production, and never an HTML page inside a non-HTML response. Detail goes to the log; nothing internal is shown to visitors in production.

Core changes:

  1. Error responder (core/security.php):
  2. Add setErrorOut(): recursion-guarded; skips non-HTML requests (go=1/2/3/4/5/asset/captcha/rss/xsl or headers already sent) with a status-only 500; debug shows the detail via setExit() (status 200, so nginx never intercepts it); production renders setError(500)
  3. set_exception_handler() now routes through setErrorOut() and logs the full trace; rendering is decoupled from security.error_log so a clean 500 page appears even with logging off
  4. register_shutdown_function() logs fatals (when enabled) and sets a 500 status without a heavy render (process state may be broken)
  5. setError() status map gains 503 Service Unavailable
  6. Database connection (core/classes/pdo.php):
  7. On PDOException, gate the detail by security.error: debug shows it (setExit), production renders setError(500); the detail is logged in both cases

Technical notes:

  • App-emitted errors render the SLAED page with Cache-Control: no-store; status via http_response_code() (HTTP/2 safe)
  • Debug detail is served as 200 so it survives nginx without fastcgi_intercept_errors off; the full stack trace is written to the log
  • Behavior change: uncaught errors no longer fall through to raw PHP output; production no longer leaks DB internals to the page
Docs: clarify nginx error-page handling for PHP 4xx/5xx
Автор: Eduard Laas | Дата: 15:13 24.06.2026

Document that PHP-generated 404/403/503/500 must pass through (fastcgi_intercept_errors off) so SLAED's branded page and no-store headers reach the client, and separate app-emitted 5xx from infrastructure 5xx (502/504) that only nginx can answer.

Core changes:

  1. Performance guide (docs/PERFORMANCE.md):
  2. New "PHP error pages" subsection under the web-server configuration section
Fix: emit 500/503 instead of 200 for DB failure and maintenance
Автор: Eduard Laas | Дата: 15:13 24.06.2026

A DB-connection failure and the site-closed gate returned 200, which misleads crawlers and monitoring. They now carry the correct status, and the DB error detail is logged instead of shown to visitors.

Core changes:

  1. Database connection (core/classes/pdo.php):
  2. On PDOException, log the detail via Logger and render setError(500) instead of setExit() (was 200; also stops leaking the raw DB message to the page)
  3. Maintenance gate (index.php):
  4. Closed-site response now sends 503 Service Unavailable while keeping the _CLOSE_TEXT page
  5. Error helper (core/security.php):
  6. setError() status map gains 503 Service Unavailable

Technical notes:

  • App-emitted 5xx render the SLAED page (status via http_response_code(), Cache-Control: no-store)
  • captcha JSON 503 left as-is; infra 5xx (502/504) remain nginx's responsibility
Style: brand error page title and drop redirect wording
Автор: Eduard Laas | Дата: 11:10 24.06.2026

Align the error page presentation with the removed auto-redirect.

Core changes:

  1. Error page (templates/lite/pages/message.html):
  2. Render "<title> - <sitename>" when a page title is set
  3. Localization (lang/*.php):
  4. _ERROR_PAGE now invites returning home or using search instead of announcing a redirect (de/en/fr/pl/ru/uk)
Feature: return SEO-correct HTTP 404/403 instead of soft 200/302
Автор: Eduard Laas | Дата: 11:10 24.06.2026

Missing content, out-of-range list pagination and access-restricted pages now emit proper 404/403 instead of redirecting or returning 200, so crawlers stop indexing soft-error pages. Error rendering is consolidated into one setError() helper.

Core changes:

  1. Error helper (core/security.php):
  2. Add setError(int $code): status via http_response_code(), conditional logging, standard error page
  3. Drop the meta-refresh auto-redirect from setExit() (soft-404 / WCAG 2.2.1 anti-pattern)
  4. Route the bootstrap $_GET['error'] handler through setError(), removing the 40-line $http status map
  5. Frontend modules (modules/*/index.php):
  6. view(): 404 when the item does not exist
  7. list/liste(): 404 when a page beyond the first yields no rows
  8. forum: 404 for out-of-range topic pages and unpublished topics, 403 when category read is denied
  9. broken()/loading(): 404 on invalid requests
  10. Module gates (index.php):
  11. view=1 / view=2 access denials now send 403

Technical notes:

  • http_response_code() is HTTP/2-safe; error responses keep Cache-Control: no-store
  • Backward compatible; php -l and phpstan clean
Вчера (23.06.2026)
Fix: news block content init and fieldset top margin
Автор: Eduard Laas | Дата: 15:43 23.06.2026

Core changes:

  1. News block (blocks/news.php):
  2. Initialize $content before the result loop to avoid an undefined variable
  3. Base styles (templates/lite/assets/css/base.css):
  4. Fieldset uses margin-top instead of an all-sides margin
Fix: associate user-info block login inputs with labels (a11y)
Автор: Eduard Laas | Дата: 15:43 23.06.2026

Wrap the nickname/password inputs of the user-info block login form in <label> for implicit association, matching the block-login-form fix.

Core changes:

  1. block-user-info.html:
  2. Wrap nickname and password inputs in <label>
Fix: mobile and desktop horizontal overflow in lite theme
Автор: Eduard Laas | Дата: 15:41 23.06.2026

Remove horizontal scroll across phone, tablet and laptop widths in the lite theme and tidy the touched comments to the project style.

Core changes:

  1. Footer grid (theme.css):
  2. Mobile grid tracks use minmax(0, 1fr) and grid items get min-width:0 so content wraps instead of forcing the column wider than the viewport
  3. Header and side elements (theme.css):
  4. Login dropdown closed state is position:fixed on mobile so its off-screen box no longer widens the page; the JS-opened state still positions in view
  5. Demo-line version pane wraps on narrow screens; header version pane is hidden on mobile (duplicate of the demo-line and footer CTA)
  6. Remove the -30px bleed margins on the logo and header pane that pushed them past both viewport edges on laptops (<=1352px)
  7. Hide the fixed left-edge idea/feedback tabs on mobile (they overlapped the menu and blocked taps)
  8. Comments (theme.css):
  9. Single-line, no trailing period, ASCII per .rules/global.md

Benefits:

  • scrollWidth == clientWidth from 320px to 1680px
  • No clipped logo, button or footer text; no tap-blocking overlays on mobile
Fix: explicit image dimensions and form labels in lite theme
Автор: Eduard Laas | Дата: 15:41 23.06.2026

Reserve layout space for the logo, footer wordmark and footer flag, and give the block login/search inputs accessible names, cutting CLS and fixing the Lighthouse "image elements lack width/height" and "form elements must have labels" audits.

Core changes:

  1. Image dimensions (core/system.php, lite layouts):
  2. Add getImageBox() to resolve intrinsic [w,h] from an SVG viewBox or via getimagesize
  3. setHead() passes logo_w/logo_h so the configurable header logo gets a correct width/height
  4. home.html/app.html: width/height on the header logo, footer wordmark (355x110) and de flag (60x40)
  5. Form labels (lite fragments):
  6. block-login-form: wrap nickname/password inputs in <label> for implicit association
  7. block-search-form: add aria-label to the search input

Benefits:

  • Lower CLS from dimensioned images
  • Accessible names for login and search controls

Technical notes:

  • Logo dimensions are computed server-side so any configured logo stays correct
Docs: server-side static caching and compression guide
Автор: Eduard Laas | Дата: 13:43 23.06.2026

Document the portable caching strategy for distributors on different servers, splitting the PHP-served bundle from server-served static files and giving ready Apache and nginx configurations.

Core changes:

  1. Performance reference (docs/PERFORMANCE.md):
  2. New section on static asset caching and compression
  3. nginx gzip/expires snippet and font-versioning caveat
  4. Admin editor help (admin/info/editor/ru.md):
  5. Caching/compression snippet for the .htaccess tab plus nginx note

Benefits:

  • Clear per-server guidance for varied SLAED installations

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

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

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