sean2077_obsidian-dynamic-t.../src/utils
sean2077 62d855ffbd
feat: decompose plugin and settings into service-oriented architecture
Extract 6 core services from the monolithic plugin.ts (819→284 lines):
- EventBus: unified typed event system replacing 3 ad-hoc notification mechanisms
- TimeRuleScheduler: pure time-rule matching and scheduling logic
- StyleManager: CSS variable injection, image analysis with size caching
- BackgroundManager: lifecycle, timer management, and background selection
- BackgroundPersistence: immutable vault file I/O (no longer mutates BackgroundItem)
- Logger: centralized logging with consistent prefix

Decompose settings-tab.ts (1417→147 lines) into 4 focused sections:
- BasicSettingsSection, ModeSettingsSection, BgManagementSection, ApiSettingsSection

Additional improvements:
- Enable TypeScript strict mode
- Pin all devDependency versions for reproducible builds
- Template method pattern for provider updateImageCache/deinit/fetchPage
- Move safeString() to BaseWallpaperApi, consolidate ID generation
- Fix 26 bugs: deleteApi missing deinit, getImages infinite loop, settings-view
  memory leak, manual mode bounds check, statusBar DOM leak, test API ID collision,
  rule lookup by .name→.id, DragSort cleanup, perPage ordering, and more
2026-03-17 18:34:41 +08:00
..
drag-sort.ts feat: decompose plugin and settings into service-oriented architecture 2026-03-17 18:34:41 +08:00
dropdown-tooltip.ts feat: Enhance background management and settings 2025-08-07 18:44:52 +08:00
index.ts feat: Enhance background management and settings 2025-08-07 18:44:52 +08:00
utils.ts feat: decompose plugin and settings into service-oriented architecture 2026-03-17 18:34:41 +08:00