From fecf8a886f2f002485061701693ef60fe9c8f064 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Sun, 14 Jun 2026 00:56:42 +0200 Subject: [PATCH 1/2] added auto-resolve preset mode (light/dark mode conflict) --- cli/src/zshell/subcommands/scheme.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cli/src/zshell/subcommands/scheme.py b/cli/src/zshell/subcommands/scheme.py index 8cb1feb..6332423 100644 --- a/cli/src/zshell/subcommands/scheme.py +++ b/cli/src/zshell/subcommands/scheme.py @@ -590,8 +590,19 @@ def generate( raise typer.BadParameter( f"Accent '{accent}' not available for '{p_scheme}:{p_variant}'. Available accents: {available}" ) + + requested_mode = mode or config_mode + resolved_mode = requested_mode + if p_scheme in schemes: + meta = schemes[p_scheme] + variant = next( + (vari for vari in meta.variants if vari.id == p_variant), None + ) + if variant and requested_mode not in variant.modes and variant.modes: + resolved_mode = sorted(variant.modes)[0] + palette_obj = get_palette( - p_scheme, p_variant, mode or config_mode, accent=accent + p_scheme, p_variant, resolved_mode, accent=accent ) colors = palette_obj.colors effective_mode = palette_obj.mode From f31a1e224bad2c8ebeaa5aa634f63d90094b81ce Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Sun, 14 Jun 2026 01:08:36 +0200 Subject: [PATCH 2/2] Not using direct write, but tmp write to avoid JSON parse error --- cli/src/zshell/subcommands/scheme.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cli/src/zshell/subcommands/scheme.py b/cli/src/zshell/subcommands/scheme.py index 6332423..70343e5 100644 --- a/cli/src/zshell/subcommands/scheme.py +++ b/cli/src/zshell/subcommands/scheme.py @@ -609,6 +609,17 @@ def generate( name = palette_obj.scheme flavor = palette_obj.variant + display_name = schemes[p_scheme].name + config["colors"]["presets"] = { + "name": display_name, + "variant": p_variant, + "accent": accent or "", + } + tmp = CONFIG.with_suffix(".json.tmp") + with tmp.open("w") as f: + json.dump(config, f, indent=4) + os.replace(tmp, CONFIG) + seed = hex_to_hct(colors.get("primary", "#000000").lstrip("#")) else: image_path = image_path or Path(WALL_PATH)