feat: asset-based image/video sources, notification sounds, UI improvements
Some checks failed
Lint & Test / test (push) Has been cancelled
Some checks failed
Lint & Test / test (push) Has been cancelled
- Replace URL-based image_source/url fields with image_asset_id/video_asset_id on StaticImagePictureSource and VideoCaptureSource (clean break, no migration) - Resolve asset IDs to file paths at runtime via AssetStore.get_file_path() - Add EntitySelect asset pickers for image/video in stream editor modal - Add notification sound configuration (global sound + per-app overrides) - Unify per-app color and sound overrides into single "Per-App Overrides" section - Persist notification history between server restarts - Add asset management system (upload, edit, delete, soft-delete) - Replace emoji buttons with SVG icons throughout UI - Various backend improvements: SQLite stores, auth, backup, MQTT, webhooks
This commit is contained in:
@@ -34,6 +34,7 @@ from wled_controller.storage.sync_clock_store import SyncClockStore
|
||||
from wled_controller.storage.color_strip_processing_template_store import ColorStripProcessingTemplateStore
|
||||
from wled_controller.storage.gradient_store import GradientStore
|
||||
from wled_controller.storage.weather_source_store import WeatherSourceStore
|
||||
from wled_controller.storage.asset_store import AssetStore
|
||||
from wled_controller.core.processing.sync_clock_manager import SyncClockManager
|
||||
from wled_controller.core.weather.weather_manager import WeatherManager
|
||||
from wled_controller.core.automations.automation_engine import AutomationEngine
|
||||
@@ -80,6 +81,12 @@ cspt_store = ColorStripProcessingTemplateStore(db)
|
||||
gradient_store = GradientStore(db)
|
||||
gradient_store.migrate_palette_references(color_strip_store)
|
||||
weather_source_store = WeatherSourceStore(db)
|
||||
asset_store = AssetStore(db, config.assets.assets_dir)
|
||||
|
||||
# Import prebuilt notification sounds on first run
|
||||
_prebuilt_sounds_dir = Path(__file__).parent / "data" / "prebuilt_sounds"
|
||||
asset_store.import_prebuilt_sounds(_prebuilt_sounds_dir)
|
||||
|
||||
sync_clock_manager = SyncClockManager(sync_clock_store)
|
||||
weather_manager = WeatherManager(weather_source_store)
|
||||
|
||||
@@ -98,6 +105,7 @@ processor_manager = ProcessorManager(
|
||||
cspt_store=cspt_store,
|
||||
gradient_store=gradient_store,
|
||||
weather_manager=weather_manager,
|
||||
asset_store=asset_store,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -190,6 +198,7 @@ async def lifespan(app: FastAPI):
|
||||
weather_source_store=weather_source_store,
|
||||
weather_manager=weather_manager,
|
||||
update_service=update_service,
|
||||
asset_store=asset_store,
|
||||
)
|
||||
|
||||
# Register devices in processor manager for health monitoring
|
||||
|
||||
Reference in New Issue
Block a user