Skip to content

Releases: TimurTurdyev/Simple-Settings

v6.0.0 — audit без событий, батч-запись

Choose a tag to compare

@TimurTurdyev TimurTurdyev released this 30 Jul 17:18

Ломающие изменения

  • Удалено событие SettingRetrieved (срабатывало на каждое чтение, пользы не приносило).
  • Активити-лог развязан с событиями: пишется напрямую из SettingStorage, достаточно audit.enabled = true, флаг events не нужен. Обратная сторона: withoutEvents() и events = false больше не отключают лог — только audit.enabled.
  • oldValue и existed в SettingSaved/SettingDeleted заполняются всегда при включённых событиях (раньше — только при включённом audit).
  • remove() несуществующего ключа и removeAll() пустой группы больше не эмитят событий и не пишут строк в лог.
  • set([...]) стал атомарным: валидация всех ключей до записи; упала на одном ключе — не сохранился ни один (раньше часть успевала записаться).

Что нового

  • Батч-запись: set([...]) выполняет один upsert-запрос вместо N; audit-строки тоже вставляются одной пачкой.
  • Нормализация типов сведена в CastsValue::normalizeType(); чтение legacy-типа double из старых строк и export-файлов сохранено.
  • Добавлены Makefile (make help) и CI: матрица PHP 8.2–8.5 × Laravel 12–13.
  • Тесты: 72 зелёных (было 66), покрыты все новые сценарии v6.

Обновление

Пошаговый список — в разделе «Обновление до v6» в README.

Полный список изменений

v5.0.2...v6.0.0

v5.0.2 — поддержка PHP 8.5

Choose a tag to compare

@TimurTurdyev TimurTurdyev released this 10 Jun 12:30

Что нового

  • В composer.json явно добавлена поддержка PHP 8.5: ограничение теперь ^8.2|^8.3|^8.4|^8.5.
  • Тесты прогнаны на PHP 8.5.5 — все зелёные (66 тестов).

Изменений в коде нет — только расширение объявленной совместимости платформы.

Полный список изменений

v5.0.1...v5.0.2

v5.0.1

Choose a tag to compare

@TimurTurdyev TimurTurdyev released this 27 May 21:41

Bug Fix

Fix: SettingStorage::all() returns __PHP_Incomplete_Class instead of Collection when using the database cache driver (CACHE_STORE=database).

Root Cause

  1. Cross-request: all() cached a Collection object. The database cache driver uses serialize() — on unserialize() in the next request, if Collection isn't autoloaded yet, PHP returns __PHP_Incomplete_Class.

  2. Within-request: flushCache() used Cache::forget() which only clears the persistent store, leaving the MemoizedStore in-memory layer stale.

Changes

  • all() now caches a plain array (->toArray()) and wraps in collect() on read
  • flushCache() now uses Cache::memo()->forget() to clear both layers
  • Self-healing guard for legacy cached values

Upgrade

No breaking changes. composer update timurturdyev/simple-settings