Skip to content

Commit d53e062

Browse files
minsoo-webclaude
andauthored
feat: improve UX across preview, apply, and color picker (#10)
* feat: add apply command and saved theme marking in preview Add `chromaport apply` subcommand to apply saved IR themes to additional targets without re-importing from VS Code/Cursor. Theme list now shows "(saved)" marker next to themes that have been saved to ~/chromaport/themes/. Also adds IR serialization (Serialize/Deserialize) and store functions (save_ir, load_ir, list_ir_files) to support the new workflow. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add presets subcommand for bundled theme installation Add `chromaport presets list` and `chromaport presets install` to download and install popular themes from GitHub without requiring VS Code/Cursor. Includes 11 preset themes: One Monokai, Material, Ayu Dark, Dracula, Catppuccin Mocha, Tokyo Night, Solarized Dark/Light, Gruvbox Dark, Nord, GitHub Dark. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add create command for custom theme building Add `chromaport create` to build themes from scratch by picking 3 core colors (background, foreground, accent) via TUI HSL sliders. Remaining colors (ANSI 16, chart 5, UI) are auto-derived using OKLCH color space with WCAG AA contrast enforcement (4.5:1 minimum). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: improve UX across preview, apply, and color picker - Refactor presets HTTP error handling with shared ureq_get helper - Show extension name suffix for duplicate theme labels in preview - Display "Untitled" for themes with empty names in preview title - Add created_at metadata to ThemeIR with auto date stamping on save - Show date and type metadata in apply TUI theme list - Mark already-applied targets with "(applied)" in target selector - Add filter + help bar to apply TUI for saved themes - Add hex input mode (#) to color picker for direct color entry - Bump version to 0.7.0 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add UX test brainstorms, plans, and reports Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: suppress clippy too_many_arguments warnings Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 44f07ac commit d53e062

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+5118
-25
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "chromaport"
3-
version = "0.5.1"
3+
version = "0.7.0"
44
edition = "2021"
55
description = "Migrate VS Code / Cursor themes to Superset, Warp, and more"
66
license = "MIT"

assets/presets/ayu-dark.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"id": "ayu-dark",
3+
"name": "Ayu Dark",
4+
"theme_type": "Dark",
5+
"background": "#0B0E14",
6+
"foreground": "#BFBDB6",
7+
"accent": "#E6B450",
8+
"sidebar_bg": "#0D1017",
9+
"cursor": "#E6B450",
10+
"selection_bg": "#1B1E26",
11+
"border": "#0D1017",
12+
"input_bg": "#0D1017",
13+
"muted_fg": "#565B66",
14+
"terminal": {
15+
"normal": {
16+
"black": "#01060E",
17+
"red": "#EA6C73",
18+
"green": "#91B362",
19+
"yellow": "#F9AF4F",
20+
"blue": "#53BDFA",
21+
"magenta": "#FAE994",
22+
"cyan": "#90E1C6",
23+
"white": "#C7C7C7"
24+
},
25+
"bright": {
26+
"black": "#565B66",
27+
"red": "#F07178",
28+
"green": "#C2D94C",
29+
"yellow": "#FFB454",
30+
"blue": "#59C2FF",
31+
"magenta": "#FFEE99",
32+
"cyan": "#95E6CB",
33+
"white": "#FFFFFF"
34+
},
35+
"foreground": "#BFBDB6",
36+
"background": "#0B0E14",
37+
"cursor": null,
38+
"selection_bg": null
39+
},
40+
"chart_colors": [
41+
"#EA6C73",
42+
"#91B362",
43+
"#F9AF4F",
44+
"#53BDFA",
45+
"#FAE994"
46+
]
47+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"id": "catppuccin-mocha",
3+
"name": "Catppuccin Mocha",
4+
"theme_type": "Dark",
5+
"background": "#1E1E2E",
6+
"foreground": "#CDD6F4",
7+
"accent": "#CBA6F7",
8+
"sidebar_bg": "#181825",
9+
"cursor": "#F5E0DC",
10+
"selection_bg": "#45475A",
11+
"border": "#313244",
12+
"input_bg": "#181825",
13+
"muted_fg": "#6C7086",
14+
"terminal": {
15+
"normal": {
16+
"black": "#45475A",
17+
"red": "#F38BA8",
18+
"green": "#A6E3A1",
19+
"yellow": "#F9E2AF",
20+
"blue": "#89B4FA",
21+
"magenta": "#F5C2E7",
22+
"cyan": "#94E2D5",
23+
"white": "#BAC2DE"
24+
},
25+
"bright": {
26+
"black": "#585B70",
27+
"red": "#F38BA8",
28+
"green": "#A6E3A1",
29+
"yellow": "#F9E2AF",
30+
"blue": "#89B4FA",
31+
"magenta": "#F5C2E7",
32+
"cyan": "#94E2D5",
33+
"white": "#A6ADC8"
34+
},
35+
"foreground": "#CDD6F4",
36+
"background": "#1E1E2E",
37+
"cursor": null,
38+
"selection_bg": null
39+
},
40+
"chart_colors": [
41+
"#F38BA8",
42+
"#A6E3A1",
43+
"#F9E2AF",
44+
"#89B4FA",
45+
"#CBA6F7"
46+
]
47+
}

assets/presets/dracula.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"id": "dracula",
3+
"name": "Dracula",
4+
"theme_type": "Dark",
5+
"background": "#282A36",
6+
"foreground": "#F8F8F2",
7+
"accent": "#BD93F9",
8+
"sidebar_bg": "#21222C",
9+
"cursor": "#F8F8F2",
10+
"selection_bg": "#44475A",
11+
"border": "#191A21",
12+
"input_bg": "#21222C",
13+
"muted_fg": "#6272A4",
14+
"terminal": {
15+
"normal": {
16+
"black": "#21222C",
17+
"red": "#FF5555",
18+
"green": "#50FA7B",
19+
"yellow": "#F1FA8C",
20+
"blue": "#BD93F9",
21+
"magenta": "#FF79C6",
22+
"cyan": "#8BE9FD",
23+
"white": "#F8F8F2"
24+
},
25+
"bright": {
26+
"black": "#6272A4",
27+
"red": "#FF6E6E",
28+
"green": "#69FF94",
29+
"yellow": "#FFFFA5",
30+
"blue": "#D6ACFF",
31+
"magenta": "#FF92DF",
32+
"cyan": "#A4FFFF",
33+
"white": "#FFFFFF"
34+
},
35+
"foreground": "#F8F8F2",
36+
"background": "#282A36",
37+
"cursor": null,
38+
"selection_bg": null
39+
},
40+
"chart_colors": [
41+
"#FF5555",
42+
"#50FA7B",
43+
"#F1FA8C",
44+
"#BD93F9",
45+
"#FF79C6"
46+
]
47+
}

assets/presets/github-dark.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"id": "github-dark",
3+
"name": "GitHub Dark",
4+
"theme_type": "Dark",
5+
"background": "#0D1117",
6+
"foreground": "#C9D1D9",
7+
"accent": "#58A6FF",
8+
"sidebar_bg": "#010409",
9+
"cursor": "#C9D1D9",
10+
"selection_bg": "#163764",
11+
"border": "#30363D",
12+
"input_bg": "#010409",
13+
"muted_fg": "#8B949E",
14+
"terminal": {
15+
"normal": {
16+
"black": "#484F58",
17+
"red": "#FF7B72",
18+
"green": "#3FB950",
19+
"yellow": "#D29922",
20+
"blue": "#58A6FF",
21+
"magenta": "#BC8CFF",
22+
"cyan": "#39D2C0",
23+
"white": "#B1BAC4"
24+
},
25+
"bright": {
26+
"black": "#6E7681",
27+
"red": "#FFA198",
28+
"green": "#56D364",
29+
"yellow": "#E3B341",
30+
"blue": "#79C0FF",
31+
"magenta": "#D2A8FF",
32+
"cyan": "#56D4DD",
33+
"white": "#F0F6FC"
34+
},
35+
"foreground": "#C9D1D9",
36+
"background": "#0D1117",
37+
"cursor": null,
38+
"selection_bg": null
39+
},
40+
"chart_colors": [
41+
"#FF7B72",
42+
"#3FB950",
43+
"#D29922",
44+
"#58A6FF",
45+
"#BC8CFF"
46+
]
47+
}

assets/presets/gruvbox-dark.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"id": "gruvbox-dark",
3+
"name": "Gruvbox Dark",
4+
"theme_type": "Dark",
5+
"background": "#282828",
6+
"foreground": "#EBDBB2",
7+
"accent": "#FE8019",
8+
"sidebar_bg": "#1D2021",
9+
"cursor": "#EBDBB2",
10+
"selection_bg": "#3C3836",
11+
"border": "#3C3836",
12+
"input_bg": "#1D2021",
13+
"muted_fg": "#928374",
14+
"terminal": {
15+
"normal": {
16+
"black": "#282828",
17+
"red": "#CC241D",
18+
"green": "#98971A",
19+
"yellow": "#D79921",
20+
"blue": "#458588",
21+
"magenta": "#B16286",
22+
"cyan": "#689D6A",
23+
"white": "#A89984"
24+
},
25+
"bright": {
26+
"black": "#928374",
27+
"red": "#FB4934",
28+
"green": "#B8BB26",
29+
"yellow": "#FABD2F",
30+
"blue": "#83A598",
31+
"magenta": "#D3869B",
32+
"cyan": "#8EC07C",
33+
"white": "#EBDBB2"
34+
},
35+
"foreground": "#EBDBB2",
36+
"background": "#282828",
37+
"cursor": null,
38+
"selection_bg": null
39+
},
40+
"chart_colors": [
41+
"#CC241D",
42+
"#98971A",
43+
"#D79921",
44+
"#458588",
45+
"#B16286"
46+
]
47+
}

assets/presets/index.json

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
{
2+
"version": 1,
3+
"themes": [
4+
{
5+
"slug": "one-monokai",
6+
"name": "One Monokai",
7+
"author": "azemoh",
8+
"license": "MIT",
9+
"source_url": "https://marketplace.visualstudio.com/items?itemName=azemoh.one-monokai"
10+
},
11+
{
12+
"slug": "material-theme",
13+
"name": "Material Theme",
14+
"author": "Mattia Astorino",
15+
"license": "MIT",
16+
"source_url": "https://marketplace.visualstudio.com/items?itemName=Equinusocio.vsc-material-theme"
17+
},
18+
{
19+
"slug": "ayu-dark",
20+
"name": "Ayu Dark",
21+
"author": "teabyii",
22+
"license": "MIT",
23+
"source_url": "https://marketplace.visualstudio.com/items?itemName=teabyii.ayu"
24+
},
25+
{
26+
"slug": "dracula",
27+
"name": "Dracula",
28+
"author": "Dracula Theme",
29+
"license": "MIT",
30+
"source_url": "https://marketplace.visualstudio.com/items?itemName=dracula-theme.theme-dracula"
31+
},
32+
{
33+
"slug": "catppuccin-mocha",
34+
"name": "Catppuccin Mocha",
35+
"author": "Catppuccin",
36+
"license": "MIT",
37+
"source_url": "https://marketplace.visualstudio.com/items?itemName=Catppuccin.catppuccin-vsc"
38+
},
39+
{
40+
"slug": "tokyo-night",
41+
"name": "Tokyo Night",
42+
"author": "enkia",
43+
"license": "MIT",
44+
"source_url": "https://marketplace.visualstudio.com/items?itemName=enkia.tokyo-night"
45+
},
46+
{
47+
"slug": "solarized-dark",
48+
"name": "Solarized Dark",
49+
"author": "Ryan Olson",
50+
"license": "MIT",
51+
"source_url": "https://marketplace.visualstudio.com/items?itemName=ryanolsonx.solarized"
52+
},
53+
{
54+
"slug": "solarized-light",
55+
"name": "Solarized Light",
56+
"author": "Ryan Olson",
57+
"license": "MIT",
58+
"source_url": "https://marketplace.visualstudio.com/items?itemName=ryanolsonx.solarized"
59+
},
60+
{
61+
"slug": "gruvbox-dark",
62+
"name": "Gruvbox Dark",
63+
"author": "jdinhify",
64+
"license": "MIT",
65+
"source_url": "https://marketplace.visualstudio.com/items?itemName=jdinhlife.gruvbox"
66+
},
67+
{
68+
"slug": "nord",
69+
"name": "Nord",
70+
"author": "arcticicestudio",
71+
"license": "MIT",
72+
"source_url": "https://marketplace.visualstudio.com/items?itemName=arcticicestudio.nord-visual-studio-code"
73+
},
74+
{
75+
"slug": "github-dark",
76+
"name": "GitHub Dark",
77+
"author": "GitHub",
78+
"license": "MIT",
79+
"source_url": "https://marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme"
80+
}
81+
]
82+
}

assets/presets/material-theme.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"id": "material-theme",
3+
"name": "Material Theme",
4+
"theme_type": "Dark",
5+
"background": "#263238",
6+
"foreground": "#EEFFFF",
7+
"accent": "#89DDFF",
8+
"sidebar_bg": "#1E272C",
9+
"cursor": "#FFCC00",
10+
"selection_bg": "#344046",
11+
"border": "#2C3B41",
12+
"input_bg": "#1E272C",
13+
"muted_fg": "#546E7A",
14+
"terminal": {
15+
"normal": {
16+
"black": "#000000",
17+
"red": "#FF5370",
18+
"green": "#C3E88D",
19+
"yellow": "#FFCB6B",
20+
"blue": "#82AAFF",
21+
"magenta": "#C792EA",
22+
"cyan": "#89DDFF",
23+
"white": "#FFFFFF"
24+
},
25+
"bright": {
26+
"black": "#546E7A",
27+
"red": "#FF5370",
28+
"green": "#C3E88D",
29+
"yellow": "#FFCB6B",
30+
"blue": "#82AAFF",
31+
"magenta": "#C792EA",
32+
"cyan": "#89DDFF",
33+
"white": "#FFFFFF"
34+
},
35+
"foreground": "#EEFFFF",
36+
"background": "#263238",
37+
"cursor": null,
38+
"selection_bg": null
39+
},
40+
"chart_colors": [
41+
"#FF5370",
42+
"#C3E88D",
43+
"#FFCB6B",
44+
"#82AAFF",
45+
"#C792EA"
46+
]
47+
}

0 commit comments

Comments
 (0)