-
app-core: LRUCache class (max 3 entries, LRU eviction), exported to window
-
app-core: isStorageAvailable replaces typeof localStorage checks
-
app-core: Notification.show() — убраны inline-стили конфликтующие с CSS, reflow fix
-
app-core: fadeIn/fadeOut — очистка transition после завершения анимации
-
search-window: lawsCache Map → LRUCache(3), память ограничена 3 серверами
-
search-window: renderLaws/renderRules рефактор — вынесены buildPenaltyHTML, buildEmptyState, buildLawItemHTML, buildRuleItemHTML; дублированный SVG удалён
-
search-window: убраны переменные-пустышки textClass/noteClass/expClass/excClass
-
search-window: setTimeout(0) → requestAnimationFrame везде
-
search-window: opacityListenersSetup флаг теперь реально выставляется
-
settings-manager: resetAllSettings — localStorage.clear() → точечное удаление только ключей настроек (кэш данных больше не стирается)
-
settings-manager: настройки объединены в app_settings JSON, миграция со старых ключей
-
main-window: 7 магических setTimeout → transitionend + double rAF
-
main-window: убран setTimeout(50) в DOMContentLoaded