From 607718ac2149d109f38a6a23f11a6cdf0c5743c0 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 22 Apr 2026 21:55:19 +0800 Subject: [PATCH] fix: correct settings.ui to use get_setting() function instead of get_url --- hermes_web_cli/init.py | 68 +++++++++++++++++++++ wwwroot/settings.ui | 2 +- wwwroot/settings/save/appearance/index.dspy | 9 +-- wwwroot/settings/save/general/index.dspy | 10 +-- wwwroot/settings/save/security/index.dspy | 9 +-- 5 files changed, 78 insertions(+), 20 deletions(-) diff --git a/hermes_web_cli/init.py b/hermes_web_cli/init.py index 997facb..7dd9437 100644 --- a/hermes_web_cli/init.py +++ b/hermes_web_cli/init.py @@ -255,6 +255,72 @@ def generate_session_id() -> str: """Generate a unique session ID.""" return str(uuid.uuid4()) +# Settings management +def get_setting() -> Dict: + """Get current user settings from config file or return defaults.""" + import json + from pathlib import Path + + config_path = Path.home() / ".hermes" / "hermes-web-cli-config.json" + + default_settings = { + "security": { + "require_auth": False, + "encrypt_storage": False + }, + "general": { + "default_model": "", + "session_timeout": 30, + "auto_save": True + }, + "appearance": { + "theme": "dark" + } + } + + if config_path.exists(): + try: + with open(config_path, 'r') as f: + saved_settings = json.load(f) + # Merge with defaults to ensure all keys exist + for section, defaults in default_settings.items(): + if section not in saved_settings: + saved_settings[section] = defaults + else: + for key, value in defaults.items(): + if key not in saved_settings[section]: + saved_settings[section][key] = value + return saved_settings + except (json.JSONDecodeError, IOError): + pass + + return default_settings + +def save_setting(section: str, key: str, value) -> bool: + """Save a specific setting value to config file.""" + import json + from pathlib import Path + + config_path = Path.home() / ".hermes" / "hermes-web-cli-config.json" + + # Ensure directory exists + config_path.parent.mkdir(parents=True, exist_ok=True) + + # Load existing settings or start with defaults + settings = get_setting() + + # Update the specific setting + if section not in settings: + settings[section] = {} + settings[section][key] = value + + try: + with open(config_path, 'w') as f: + json.dump(settings, f, indent=2) + return True + except (IOError, TypeError): + return False + # Module metadata MODULE_NAME = "hermes-web-cli" MODULE_VERSION = "0.1.0" @@ -275,6 +341,8 @@ __all__ = [ 'get_session_by_id', 'validate_service_url', 'generate_session_id', + 'get_setting', + 'save_setting', 'MODULE_NAME', 'MODULE_VERSION' ] \ No newline at end of file diff --git a/wwwroot/settings.ui b/wwwroot/settings.ui index 604eaa3..66cf849 100644 --- a/wwwroot/settings.ui +++ b/wwwroot/settings.ui @@ -16,7 +16,7 @@ "marginBottom": "20px" } }, - {% set settings_data = get_url('/hermes-web-cli/settings/') %} + {% set settings_data = get_setting() %} { "widgettype": "TabPanel", "id": "settings-tabs", diff --git a/wwwroot/settings/save/appearance/index.dspy b/wwwroot/settings/save/appearance/index.dspy index 05d9ade..3764269 100644 --- a/wwwroot/settings/save/appearance/index.dspy +++ b/wwwroot/settings/save/appearance/index.dspy @@ -2,14 +2,11 @@ # This .dspy file uses functions provided by load_hermes_web_cli() try: - theme = request.form.get('theme-select', 'dark') + theme = request.form.get('theme', 'dark') - settings = { - 'theme': theme - } + # Save settings using the module function + save_setting('appearance', 'theme', theme) - # This would call a function from the hermes-web-cli module - # For now, we'll simulate success return {"success": True, "message": "Appearance settings saved successfully"} except Exception as e: diff --git a/wwwroot/settings/save/general/index.dspy b/wwwroot/settings/save/general/index.dspy index a828e1d..077d299 100644 --- a/wwwroot/settings/save/general/index.dspy +++ b/wwwroot/settings/save/general/index.dspy @@ -12,14 +12,10 @@ try: session_timeout = 30 # Save settings using the module function - settings = { - 'default_model': default_model, - 'session_timeout': session_timeout, - 'auto_save': auto_save - } + save_setting('general', 'default_model', default_model) + save_setting('general', 'session_timeout', session_timeout) + save_setting('general', 'auto_save', auto_save) - # This would call a function from the hermes-web-cli module - # For now, we'll simulate success return {"success": True, "message": "General settings saved successfully"} except Exception as e: diff --git a/wwwroot/settings/save/security/index.dspy b/wwwroot/settings/save/security/index.dspy index 9464c6e..fe75949 100644 --- a/wwwroot/settings/save/security/index.dspy +++ b/wwwroot/settings/save/security/index.dspy @@ -5,13 +5,10 @@ try: require_auth = request.form.get('require-auth', 'false') == 'true' encrypt_storage = request.form.get('encrypt-storage', 'false') == 'true' - settings = { - 'require_auth': require_auth, - 'encrypt_storage': encrypt_storage - } + # Save settings using the module function + save_setting('security', 'require_auth', require_auth) + save_setting('security', 'encrypt_storage', encrypt_storage) - # This would call a function from the hermes-web-cli module - # For now, we'll simulate success return {"success": True, "message": "Security settings saved successfully"} except Exception as e: