Refactor settings system and improve context initialization

Backend:
- Add type validation and coercion for settings API
- Implement SettingStorage and SettingType in registry
- Improve CRUD operations for settings

Frontend:
- Refactor Theme, Language, Sidebar, ViewMode contexts
- Simplify admin components (GeneralTab, SettingsTab, UsersTab)
- Add new settings endpoints to API client
- Improve App initialization flow

Infrastructure:
- Update Dockerfile and docker-compose.yml
- Add .dockerignore
- Update Makefile and README

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-15 18:14:47 +01:00
parent 04a0fe4b27
commit ba53e0eff0
31 changed files with 4277 additions and 374 deletions

View File

@@ -328,15 +328,16 @@ register_setting(SettingDefinition(
# =============================================================================
# USER-SPECIFIC SETTINGS (Per-user, Database)
# These settings can be different for each user
# USER-SPECIFIC SETTINGS (Frontend localStorage)
# These settings are managed by the frontend per-browser/user-session.
# If you need cross-device persistence, implement a per-user DB table + API.
# =============================================================================
register_setting(SettingDefinition(
key="user_theme_mode",
type=SettingType.STRING,
scope=SettingScope.USER_SPECIFIC,
storage=SettingStorage.DATABASE,
storage=SettingStorage.LOCAL_STORAGE,
default="system",
description="User's preferred theme mode (light/dark/system)",
category="user_preferences",
@@ -348,7 +349,7 @@ register_setting(SettingDefinition(
key="user_language",
type=SettingType.STRING,
scope=SettingScope.USER_SPECIFIC,
storage=SettingStorage.DATABASE,
storage=SettingStorage.LOCAL_STORAGE,
default="en",
description="User's preferred language",
category="user_preferences",
@@ -360,7 +361,7 @@ register_setting(SettingDefinition(
key="user_sidebar_collapsed",
type=SettingType.BOOLEAN,
scope=SettingScope.USER_SPECIFIC,
storage=SettingStorage.DATABASE,
storage=SettingStorage.LOCAL_STORAGE,
default=False,
description="User's sidebar collapsed state preference",
category="user_preferences",
@@ -371,7 +372,7 @@ register_setting(SettingDefinition(
key="user_view_mode",
type=SettingType.STRING,
scope=SettingScope.USER_SPECIFIC,
storage=SettingStorage.DATABASE,
storage=SettingStorage.LOCAL_STORAGE,
default="admin",
description="User's current view mode (admin/user)",
category="user_preferences",