osdy-pi 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,8 +6,12 @@ Osdy Pi gives [Pi](https://github.com/earendil-works/pi) a themed, responsive te
6
6
 
7
7
  ## Release highlights
8
8
 
9
+ **1.9.0 adds Halloween and Halloween Killer**, bringing the bundle to **20 themes**. The table below summarizes these additions and existing features.
10
+
9
11
  | Area | What ships |
10
12
  | --- | --- |
13
+ | New themes (1.9.0) | Halloween and Halloween Killer add two dark palettes, bringing the bundle to 20 themes. |
14
+ | Themes introduced in 1.8.0 | Gruvbox Dark, Nord, Rosé Pine base dark, and Daniela Cute. |
11
15
  | Message cards | Pi-native colored user cards without emojis and plain assistant Markdown preceded by a separate `🦝` transcript row. |
12
16
  | Header and mascot | A theme-aware `neon` header and selectable `bts` mascot, both responsive and persisted independently. |
13
17
  | Accounts | `/osdy-account` switches Codex profiles in place with atomic activation, rollback, bounded auth files, and process-safe locks. |
@@ -42,7 +46,7 @@ Osdy Pi gives [Pi](https://github.com/earendil-works/pi) a themed, responsive te
42
46
  pi
43
47
  ```
44
48
 
45
- Osdy Pi's own extension and all **14 themes** are bundled with this installation—do not install them separately. Launch through `osdy-pi` (or `npm run pi:dev`) to activate a valid Osdy default account into Pi's shared agent directory before Pi starts. With no default, Pi remains unmanaged; run `/osdy-account` to create a profile and establish a default. On session start, Osdy Pi restores its persisted enabled state when a UI is available and preserves your selected Pi theme. When disabled, it leaves Gentle Shell (or Pi's native UI) untouched.
49
+ Osdy Pi's own extension and themes are bundled—do not install them separately. Version **1.9.0** bundles **20 themes**: Gruvbox Dark, Nord, Rosé Pine base dark, and Daniela Cute were introduced in 1.8.0; Halloween and Halloween Killer are added in 1.9.0. Check your installed npm version to see which themes are available. Launch through `osdy-pi` (or `npm run pi:dev`) to activate a valid Osdy default account into Pi's shared agent directory before Pi starts. With no default, Pi remains unmanaged; run `/osdy-account` to create a profile and establish a default. On session start, Osdy Pi restores its persisted enabled state when a UI is available and preserves your selected Pi theme. When disabled, it leaves Gentle Shell (or Pi's native UI) untouched.
46
50
 
47
51
  ### Optional: isolated `osdy` command
48
52
 
@@ -246,7 +250,7 @@ Before rename or removal, close this Pi process when it uses the target and **ma
246
250
 
247
251
  | Area | Included behavior |
248
252
  | --- | --- |
249
- | Themes | 14 built-in themes, including Osdy, Kanagawa, Dracula, Catppuccin, Matrix, and Lucent Orange palettes |
253
+ | Themes | 20 built-in themes, including Osdy, Kanagawa, Dracula, Gruvbox, Nord, Rosé Pine, Daniela Cute, Halloween, Halloween Killer, Catppuccin, Matrix, and Lucent Orange palettes |
250
254
  | Header and mascot | Independently selectable `osdy-theme`/`neon` headers and `current`/`bts` mascots |
251
255
  | Messages | Native colored user cards without emojis and plain assistant Markdown with a separate assistant `🦝` row |
252
256
  | Input | Responsive auto editor by default, with selectable simple Pi-native or extended framed modes |
@@ -260,6 +264,11 @@ Before rename or removal, close this Pi process when it uses the target and **ma
260
264
 
261
265
  ### Themes
262
266
 
267
+ Version **1.9.0** contains **20 themes**. Gruvbox Dark, Nord, Rosé Pine base dark, and Daniela Cute were introduced in **1.8.0**; **1.9.0** adds Halloween and Halloween Killer. To try the themes from a checkout:
268
+
269
+ 1. Run `npm run pi:dev` from the 1.9.0 checkout, or `/reload` if that checkout is already loaded in Pi.
270
+ 2. Open `/settings` → **Theme** and select `osdy-pi-gruvbox-dark`, `osdy-pi-nord`, `osdy-pi-rose-pine`, `osdy-pi-daniela-cute`, `osdy-pi-halloween`, `osdy-pi-halloween-killer`, or another name below.
271
+
263
272
  | Theme | Use |
264
273
  | --- | --- |
265
274
  | `osdy-pi-new` | Landing palette: cyan, violet, silver, and navy. |
@@ -270,6 +279,12 @@ Before rename or removal, close this Pi process when it uses the target and **ma
270
279
  | `osdy-pi-kanagawa-dragon` | Kanagawa Dragon dark palette. |
271
280
  | `osdy-pi-kanagawa-lotus` | Kanagawa Lotus light palette. |
272
281
  | `osdy-pi-dracula` | Dracula Classic dark palette. |
282
+ | `osdy-pi-gruvbox-dark` | [Gruvbox](https://github.com/morhetz/gruvbox#palette) dark palette: warm, retro colors on the medium-contrast background. |
283
+ | `osdy-pi-nord` | [Nord](https://www.nordtheme.com/docs/colors-and-palettes) dark palette: cool, restrained Polar Night, Snow Storm, Frost, and Aurora colors. |
284
+ | `osdy-pi-rose-pine` | [Rosé Pine](https://rosepinetheme.com/palette/ingredients/) base dark palette: soft colors, not Moon or Dawn. |
285
+ | `osdy-pi-daniela-cute` | Daniela Cute: navy panels/export page (`#0B1220`), blue cards (`#111F33`), borders (`#253A55`), blue accents (`#3584E4`), main text (`#D8E2EF`), secondary text (`#93A6BE`), and selection (`#193655`). Distinct status and syntax colors remain; the terminal background remains unchanged. |
286
+ | `osdy-pi-halloween` | Pumpkin orange, spectral violet, and lime accents on dark plum panels, with warm text and distinct success/error colors. |
287
+ | `osdy-pi-halloween-killer` | Gothic/slasher dark palette: near-black panels, blood-red and violet accents, bone-colored text, and sage success indicators distinct from red errors. |
273
288
  | `osdy-pi-catppuccin-latte` | Catppuccin Latte light palette. |
274
289
  | `osdy-pi-catppuccin-frappe` | Catppuccin Frappé dark palette. |
275
290
  | `osdy-pi-catppuccin-macchiato` | Catppuccin Macchiato dark palette. |
@@ -408,7 +408,8 @@ void test("every registered theme defines native user message colors", () => {
408
408
  readFileSync(new URL("../../package.json", import.meta.url), "utf8"),
409
409
  ) as { pi: { themes: string[] } };
410
410
 
411
- assert.equal(manifest.pi.themes.length, 14);
411
+ assert.equal(manifest.pi.themes.length, 20);
412
+ assert.equal(new Set(manifest.pi.themes).size, 20, "theme registrations must be unique");
412
413
  for (const themePath of manifest.pi.themes) {
413
414
  const theme = JSON.parse(
414
415
  readFileSync(
@@ -427,6 +428,33 @@ void test("every registered theme defines native user message colors", () => {
427
428
  }
428
429
  });
429
430
 
431
+ void test("new dark themes are explicitly registered with unique matching names", () => {
432
+ const manifest = JSON.parse(
433
+ readFileSync(new URL("../../package.json", import.meta.url), "utf8"),
434
+ ) as { pi: { themes: string[] } };
435
+ const names = manifest.pi.themes.map((path) => {
436
+ const theme = JSON.parse(readFileSync(new URL(`../../${path}`, import.meta.url), "utf8")) as { name: string };
437
+ assert.equal(path, `./themes/${theme.name}.json`);
438
+ return theme.name;
439
+ });
440
+ assert.equal(new Set(names).size, names.length, "theme names must be unique");
441
+ for (const name of ["osdy-pi-gruvbox-dark", "osdy-pi-nord", "osdy-pi-rose-pine", "osdy-pi-daniela-cute", "osdy-pi-halloween", "osdy-pi-halloween-killer"]) {
442
+ assert.equal(manifest.pi.themes.filter((path) => path === `./themes/${name}.json`).length, 1);
443
+ assert.equal(names.filter((registered) => registered === name).length, 1);
444
+ }
445
+ });
446
+
447
+ void test("README documents all 20 themes including both Halloween palettes", () => {
448
+ const readme = readFileSync(new URL("../../README.md", import.meta.url), "utf8");
449
+ assert.match(readme, /\*\*20 themes\*\*/);
450
+ assert.match(readme, /20 built-in themes/);
451
+ assert.doesNotMatch(readme, /\b18 (?:built-in )?themes\b/);
452
+ assert.equal(readme.match(/^\| `osdy-pi-[^`]+` \|/gm)?.length, 20);
453
+ assert.match(readme, /\| `osdy-pi-daniela-cute` \| Daniela Cute/);
454
+ assert.match(readme, /\| `osdy-pi-halloween` \|.*[Pp]umpkin.*violet.*lime/);
455
+ assert.match(readme, /\| `osdy-pi-halloween-killer` \|.*[Gg]othic.*blood.red.*violet/);
456
+ });
457
+
430
458
  void test("Tokyo Night retains its approved native user card colors", () => {
431
459
  const theme = JSON.parse(
432
460
  readFileSync(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "osdy-pi",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "description": "Osdy Pi package: themes, header, and custom editor for Pi.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -41,6 +41,12 @@
41
41
  "./themes/osdy-pi-kanagawa-dragon.json",
42
42
  "./themes/osdy-pi-kanagawa-lotus.json",
43
43
  "./themes/osdy-pi-dracula.json",
44
+ "./themes/osdy-pi-gruvbox-dark.json",
45
+ "./themes/osdy-pi-nord.json",
46
+ "./themes/osdy-pi-rose-pine.json",
47
+ "./themes/osdy-pi-daniela-cute.json",
48
+ "./themes/osdy-pi-halloween.json",
49
+ "./themes/osdy-pi-halloween-killer.json",
44
50
  "./themes/osdy-pi-catppuccin-latte.json",
45
51
  "./themes/osdy-pi-catppuccin-frappe.json",
46
52
  "./themes/osdy-pi-catppuccin-macchiato.json",
@@ -0,0 +1,85 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
3
+ "name": "osdy-pi-daniela-cute",
4
+ "appearance": "dark",
5
+ "vars": {
6
+ "navy": "#0B1220",
7
+ "card": "#111F33",
8
+ "border": "#253A55",
9
+ "cobalt": "#3584E4",
10
+ "selection": "#193655",
11
+ "text": "#D8E2EF",
12
+ "muted": "#93A6BE",
13
+ "dim": "#7895BA",
14
+ "green": "#32D583",
15
+ "red": "#FF5364",
16
+ "yellow": "#FFC247",
17
+ "cyan": "#22D3EE",
18
+ "violet": "#A970FF",
19
+ "orange": "#FF963C",
20
+ "pink": "#F54DB8"
21
+ },
22
+ "colors": {
23
+ "accent": "cobalt",
24
+ "border": "border",
25
+ "borderAccent": "cobalt",
26
+ "borderMuted": "border",
27
+ "success": "green",
28
+ "error": "red",
29
+ "warning": "yellow",
30
+ "muted": "muted",
31
+ "dim": "dim",
32
+ "text": "text",
33
+ "thinkingText": "muted",
34
+ "selectedBg": "selection",
35
+ "scrollbarTrack": "card",
36
+ "scrollbarThumb": "cobalt",
37
+ "searchMatchBg": "yellow",
38
+ "searchMatchText": "navy",
39
+ "userMessageBg": "card",
40
+ "userMessageText": "text",
41
+ "customMessageBg": "card",
42
+ "customMessageText": "text",
43
+ "customMessageLabel": "cyan",
44
+ "toolPendingBg": "navy",
45
+ "toolSuccessBg": "navy",
46
+ "toolErrorBg": "navy",
47
+ "toolTitle": "cyan",
48
+ "toolOutput": "text",
49
+ "mdHeading": "cyan",
50
+ "mdLink": "cyan",
51
+ "mdLinkUrl": "muted",
52
+ "mdCode": "green",
53
+ "mdCodeBlock": "text",
54
+ "mdCodeBlockBorder": "border",
55
+ "mdQuote": "muted",
56
+ "mdQuoteBorder": "cobalt",
57
+ "mdHr": "border",
58
+ "mdListBullet": "orange",
59
+ "toolDiffAdded": "green",
60
+ "toolDiffRemoved": "red",
61
+ "toolDiffContext": "muted",
62
+ "syntaxComment": "dim",
63
+ "syntaxKeyword": "violet",
64
+ "syntaxFunction": "cyan",
65
+ "syntaxVariable": "text",
66
+ "syntaxString": "green",
67
+ "syntaxNumber": "orange",
68
+ "syntaxType": "yellow",
69
+ "syntaxOperator": "pink",
70
+ "syntaxPunctuation": "muted",
71
+ "thinkingOff": "dim",
72
+ "thinkingMinimal": "cobalt",
73
+ "thinkingLow": "cyan",
74
+ "thinkingMedium": "green",
75
+ "thinkingHigh": "violet",
76
+ "thinkingXhigh": "orange",
77
+ "thinkingMax": "pink",
78
+ "bashMode": "green"
79
+ },
80
+ "export": {
81
+ "pageBg": "navy",
82
+ "cardBg": "card",
83
+ "infoBg": "navy"
84
+ }
85
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
3
+ "name": "osdy-pi-gruvbox-dark",
4
+ "appearance": "dark",
5
+ "vars": {
6
+ "bg0": "#282828",
7
+ "bg1": "#3c3836",
8
+ "bg2": "#504945",
9
+ "bg3": "#665c54",
10
+ "bg4": "#7c6f64",
11
+ "gray": "#928374",
12
+ "fg0": "#fbf1c7",
13
+ "fg1": "#ebdbb2",
14
+ "fg2": "#d5c4a1",
15
+ "fg3": "#bdae93",
16
+ "fg4": "#a89984",
17
+ "red": "#fb4934",
18
+ "green": "#b8bb26",
19
+ "yellow": "#fabd2f",
20
+ "blue": "#83a598",
21
+ "purple": "#d3869b",
22
+ "aqua": "#8ec07c",
23
+ "orange": "#fe8019"
24
+ },
25
+ "colors": {
26
+ "accent": "yellow",
27
+ "border": "gray",
28
+ "borderAccent": "orange",
29
+ "borderMuted": "bg2",
30
+ "success": "green",
31
+ "error": "red",
32
+ "warning": "yellow",
33
+ "muted": "fg4",
34
+ "dim": "gray",
35
+ "text": "fg1",
36
+ "thinkingText": "fg4",
37
+ "selectedBg": "bg2",
38
+ "scrollbarTrack": "bg1",
39
+ "scrollbarThumb": "gray",
40
+ "searchMatchBg": "yellow",
41
+ "searchMatchText": "bg0",
42
+ "userMessageBg": "bg1",
43
+ "userMessageText": "fg1",
44
+ "customMessageBg": "bg1",
45
+ "customMessageText": "fg1",
46
+ "customMessageLabel": "aqua",
47
+ "toolPendingBg": "bg0",
48
+ "toolSuccessBg": "bg1",
49
+ "toolErrorBg": "bg1",
50
+ "toolTitle": "yellow",
51
+ "toolOutput": "fg1",
52
+ "mdHeading": "yellow",
53
+ "mdLink": "blue",
54
+ "mdLinkUrl": "fg4",
55
+ "mdCode": "aqua",
56
+ "mdCodeBlock": "fg1",
57
+ "mdCodeBlockBorder": "gray",
58
+ "mdQuote": "fg3",
59
+ "mdQuoteBorder": "aqua",
60
+ "mdHr": "bg3",
61
+ "mdListBullet": "orange",
62
+ "toolDiffAdded": "green",
63
+ "toolDiffRemoved": "red",
64
+ "toolDiffContext": "fg3",
65
+ "syntaxComment": "gray",
66
+ "syntaxKeyword": "red",
67
+ "syntaxFunction": "green",
68
+ "syntaxVariable": "fg1",
69
+ "syntaxString": "green",
70
+ "syntaxNumber": "purple",
71
+ "syntaxType": "yellow",
72
+ "syntaxOperator": "orange",
73
+ "syntaxPunctuation": "fg1",
74
+ "thinkingOff": "gray",
75
+ "thinkingMinimal": "blue",
76
+ "thinkingLow": "aqua",
77
+ "thinkingMedium": "yellow",
78
+ "thinkingHigh": "orange",
79
+ "thinkingXhigh": "red",
80
+ "thinkingMax": "purple",
81
+ "bashMode": "green"
82
+ },
83
+ "export": {
84
+ "pageBg": "bg0",
85
+ "cardBg": "bg1",
86
+ "infoBg": "bg2"
87
+ }
88
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
3
+ "name": "osdy-pi-halloween-killer",
4
+ "appearance": "dark",
5
+ "vars": {
6
+ "black": "#09080D",
7
+ "card": "#2D1C26",
8
+ "border": "#854356",
9
+ "borderMuted": "#482B3A",
10
+ "selection": "#321D35",
11
+ "pending": "#16111C",
12
+ "successBg": "#15221D",
13
+ "errorBg": "#2D111B",
14
+ "bone": "#EEE5E1",
15
+ "muted": "#BFAFBF",
16
+ "dim": "#A38BA9",
17
+ "blood": "#F2677A",
18
+ "violet": "#BCA0ED",
19
+ "sage": "#96C9A2",
20
+ "amber": "#E9BC78",
21
+ "rose": "#DF96BA",
22
+ "silver": "#BCC4D8"
23
+ },
24
+ "colors": {
25
+ "accent": "blood",
26
+ "border": "border",
27
+ "borderAccent": "blood",
28
+ "borderMuted": "borderMuted",
29
+ "success": "sage",
30
+ "error": "blood",
31
+ "warning": "amber",
32
+ "muted": "muted",
33
+ "dim": "dim",
34
+ "text": "bone",
35
+ "thinkingText": "muted",
36
+ "selectedBg": "selection",
37
+ "scrollbarTrack": "borderMuted",
38
+ "scrollbarThumb": "blood",
39
+ "searchMatchBg": "violet",
40
+ "searchMatchText": "black",
41
+ "userMessageBg": "card",
42
+ "userMessageText": "bone",
43
+ "customMessageBg": "card",
44
+ "customMessageText": "bone",
45
+ "customMessageLabel": "violet",
46
+ "toolPendingBg": "pending",
47
+ "toolSuccessBg": "successBg",
48
+ "toolErrorBg": "errorBg",
49
+ "toolTitle": "blood",
50
+ "toolOutput": "bone",
51
+ "mdHeading": "blood",
52
+ "mdLink": "violet",
53
+ "mdLinkUrl": "muted",
54
+ "mdCode": "rose",
55
+ "mdCodeBlock": "bone",
56
+ "mdCodeBlockBorder": "border",
57
+ "mdQuote": "muted",
58
+ "mdQuoteBorder": "violet",
59
+ "mdHr": "border",
60
+ "mdListBullet": "blood",
61
+ "toolDiffAdded": "sage",
62
+ "toolDiffRemoved": "blood",
63
+ "toolDiffContext": "muted",
64
+ "syntaxComment": "dim",
65
+ "syntaxKeyword": "violet",
66
+ "syntaxFunction": "blood",
67
+ "syntaxVariable": "bone",
68
+ "syntaxString": "sage",
69
+ "syntaxNumber": "rose",
70
+ "syntaxType": "silver",
71
+ "syntaxOperator": "blood",
72
+ "syntaxPunctuation": "muted",
73
+ "thinkingOff": "dim",
74
+ "thinkingMinimal": "silver",
75
+ "thinkingLow": "sage",
76
+ "thinkingMedium": "violet",
77
+ "thinkingHigh": "rose",
78
+ "thinkingXhigh": "blood",
79
+ "thinkingMax": "amber",
80
+ "bashMode": "violet"
81
+ },
82
+ "export": {
83
+ "pageBg": "black",
84
+ "cardBg": "card",
85
+ "infoBg": "pending"
86
+ }
87
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
3
+ "name": "osdy-pi-halloween",
4
+ "appearance": "dark",
5
+ "vars": {
6
+ "night": "#140F1D",
7
+ "card": "#302039",
8
+ "border": "#75568C",
9
+ "borderMuted": "#493650",
10
+ "selection": "#3B2547",
11
+ "pending": "#211829",
12
+ "successBg": "#1C291B",
13
+ "errorBg": "#321922",
14
+ "text": "#F5EBDD",
15
+ "muted": "#C3B0CC",
16
+ "dim": "#AA94B6",
17
+ "pumpkin": "#FFAA55",
18
+ "violet": "#C7A0FF",
19
+ "lime": "#B8E66B",
20
+ "red": "#FF8391",
21
+ "yellow": "#FFD580",
22
+ "pink": "#EF9ED5"
23
+ },
24
+ "colors": {
25
+ "accent": "pumpkin",
26
+ "border": "border",
27
+ "borderAccent": "pumpkin",
28
+ "borderMuted": "borderMuted",
29
+ "success": "lime",
30
+ "error": "red",
31
+ "warning": "yellow",
32
+ "muted": "muted",
33
+ "dim": "dim",
34
+ "text": "text",
35
+ "thinkingText": "muted",
36
+ "selectedBg": "selection",
37
+ "scrollbarTrack": "borderMuted",
38
+ "scrollbarThumb": "pumpkin",
39
+ "searchMatchBg": "yellow",
40
+ "searchMatchText": "night",
41
+ "userMessageBg": "card",
42
+ "userMessageText": "text",
43
+ "customMessageBg": "card",
44
+ "customMessageText": "text",
45
+ "customMessageLabel": "violet",
46
+ "toolPendingBg": "pending",
47
+ "toolSuccessBg": "successBg",
48
+ "toolErrorBg": "errorBg",
49
+ "toolTitle": "pumpkin",
50
+ "toolOutput": "text",
51
+ "mdHeading": "pumpkin",
52
+ "mdLink": "violet",
53
+ "mdLinkUrl": "muted",
54
+ "mdCode": "lime",
55
+ "mdCodeBlock": "text",
56
+ "mdCodeBlockBorder": "border",
57
+ "mdQuote": "muted",
58
+ "mdQuoteBorder": "violet",
59
+ "mdHr": "border",
60
+ "mdListBullet": "pumpkin",
61
+ "toolDiffAdded": "lime",
62
+ "toolDiffRemoved": "red",
63
+ "toolDiffContext": "muted",
64
+ "syntaxComment": "dim",
65
+ "syntaxKeyword": "violet",
66
+ "syntaxFunction": "pumpkin",
67
+ "syntaxVariable": "text",
68
+ "syntaxString": "lime",
69
+ "syntaxNumber": "pumpkin",
70
+ "syntaxType": "yellow",
71
+ "syntaxOperator": "pink",
72
+ "syntaxPunctuation": "muted",
73
+ "thinkingOff": "dim",
74
+ "thinkingMinimal": "pumpkin",
75
+ "thinkingLow": "yellow",
76
+ "thinkingMedium": "lime",
77
+ "thinkingHigh": "violet",
78
+ "thinkingXhigh": "pink",
79
+ "thinkingMax": "red",
80
+ "bashMode": "lime"
81
+ },
82
+ "export": {
83
+ "pageBg": "night",
84
+ "cardBg": "card",
85
+ "infoBg": "pending"
86
+ }
87
+ }
@@ -0,0 +1,86 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
3
+ "name": "osdy-pi-nord",
4
+ "appearance": "dark",
5
+ "vars": {
6
+ "nord0": "#2e3440",
7
+ "nord1": "#3b4252",
8
+ "nord2": "#434c5e",
9
+ "nord3": "#4c566a",
10
+ "nord4": "#d8dee9",
11
+ "nord5": "#e5e9f0",
12
+ "nord6": "#eceff4",
13
+ "nord7": "#8fbcbb",
14
+ "nord8": "#88c0d0",
15
+ "nord9": "#81a1c1",
16
+ "nord10": "#5e81ac",
17
+ "nord11": "#bf616a",
18
+ "nord12": "#d08770",
19
+ "nord13": "#ebcb8b",
20
+ "nord14": "#a3be8c",
21
+ "nord15": "#b48ead"
22
+ },
23
+ "colors": {
24
+ "accent": "nord8",
25
+ "border": "nord3",
26
+ "borderAccent": "nord9",
27
+ "borderMuted": "nord2",
28
+ "success": "nord14",
29
+ "error": "nord11",
30
+ "warning": "nord13",
31
+ "muted": "nord9",
32
+ "dim": "nord3",
33
+ "text": "nord4",
34
+ "thinkingText": "nord9",
35
+ "selectedBg": "nord2",
36
+ "scrollbarTrack": "nord1",
37
+ "scrollbarThumb": "nord9",
38
+ "searchMatchBg": "nord13",
39
+ "searchMatchText": "nord0",
40
+ "userMessageBg": "nord1",
41
+ "userMessageText": "nord6",
42
+ "customMessageBg": "nord1",
43
+ "customMessageText": "nord4",
44
+ "customMessageLabel": "nord7",
45
+ "toolPendingBg": "nord0",
46
+ "toolSuccessBg": "nord1",
47
+ "toolErrorBg": "nord1",
48
+ "toolTitle": "nord8",
49
+ "toolOutput": "nord4",
50
+ "mdHeading": "nord8",
51
+ "mdLink": "nord8",
52
+ "mdLinkUrl": "nord9",
53
+ "mdCode": "nord14",
54
+ "mdCodeBlock": "nord4",
55
+ "mdCodeBlockBorder": "nord3",
56
+ "mdQuote": "nord9",
57
+ "mdQuoteBorder": "nord7",
58
+ "mdHr": "nord3",
59
+ "mdListBullet": "nord9",
60
+ "toolDiffAdded": "nord14",
61
+ "toolDiffRemoved": "nord11",
62
+ "toolDiffContext": "nord4",
63
+ "syntaxComment": "nord3",
64
+ "syntaxKeyword": "nord9",
65
+ "syntaxFunction": "nord8",
66
+ "syntaxVariable": "nord4",
67
+ "syntaxString": "nord14",
68
+ "syntaxNumber": "nord15",
69
+ "syntaxType": "nord7",
70
+ "syntaxOperator": "nord9",
71
+ "syntaxPunctuation": "nord6",
72
+ "thinkingOff": "nord3",
73
+ "thinkingMinimal": "nord10",
74
+ "thinkingLow": "nord7",
75
+ "thinkingMedium": "nord13",
76
+ "thinkingHigh": "nord12",
77
+ "thinkingXhigh": "nord11",
78
+ "thinkingMax": "nord15",
79
+ "bashMode": "nord14"
80
+ },
81
+ "export": {
82
+ "pageBg": "nord0",
83
+ "cardBg": "nord1",
84
+ "infoBg": "nord2"
85
+ }
86
+ }
@@ -0,0 +1,85 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
3
+ "name": "osdy-pi-rose-pine",
4
+ "appearance": "dark",
5
+ "vars": {
6
+ "base": "#191724",
7
+ "surface": "#1f1d2e",
8
+ "overlay": "#26233a",
9
+ "muted": "#6e6a86",
10
+ "subtle": "#908caa",
11
+ "text": "#e0def4",
12
+ "love": "#eb6f92",
13
+ "gold": "#f6c177",
14
+ "rose": "#ebbcba",
15
+ "pine": "#31748f",
16
+ "foam": "#9ccfd8",
17
+ "iris": "#c4a7e7",
18
+ "highlightLow": "#21202e",
19
+ "highlightMed": "#403d52",
20
+ "highlightHigh": "#524f67"
21
+ },
22
+ "colors": {
23
+ "accent": "iris",
24
+ "border": "subtle",
25
+ "borderAccent": "rose",
26
+ "borderMuted": "highlightMed",
27
+ "success": "foam",
28
+ "error": "love",
29
+ "warning": "gold",
30
+ "muted": "subtle",
31
+ "dim": "muted",
32
+ "text": "text",
33
+ "thinkingText": "subtle",
34
+ "selectedBg": "highlightMed",
35
+ "scrollbarTrack": "highlightLow",
36
+ "scrollbarThumb": "highlightHigh",
37
+ "searchMatchBg": "gold",
38
+ "searchMatchText": "base",
39
+ "userMessageBg": "highlightMed",
40
+ "userMessageText": "text",
41
+ "customMessageBg": "surface",
42
+ "customMessageText": "text",
43
+ "customMessageLabel": "foam",
44
+ "toolPendingBg": "surface",
45
+ "toolSuccessBg": "overlay",
46
+ "toolErrorBg": "overlay",
47
+ "toolTitle": "iris",
48
+ "toolOutput": "text",
49
+ "mdHeading": "iris",
50
+ "mdLink": "foam",
51
+ "mdLinkUrl": "subtle",
52
+ "mdCode": "rose",
53
+ "mdCodeBlock": "text",
54
+ "mdCodeBlockBorder": "muted",
55
+ "mdQuote": "subtle",
56
+ "mdQuoteBorder": "pine",
57
+ "mdHr": "highlightMed",
58
+ "mdListBullet": "love",
59
+ "toolDiffAdded": "foam",
60
+ "toolDiffRemoved": "love",
61
+ "toolDiffContext": "subtle",
62
+ "syntaxComment": "muted",
63
+ "syntaxKeyword": "pine",
64
+ "syntaxFunction": "rose",
65
+ "syntaxVariable": "text",
66
+ "syntaxString": "gold",
67
+ "syntaxNumber": "iris",
68
+ "syntaxType": "foam",
69
+ "syntaxOperator": "subtle",
70
+ "syntaxPunctuation": "subtle",
71
+ "thinkingOff": "muted",
72
+ "thinkingMinimal": "pine",
73
+ "thinkingLow": "foam",
74
+ "thinkingMedium": "gold",
75
+ "thinkingHigh": "rose",
76
+ "thinkingXhigh": "love",
77
+ "thinkingMax": "iris",
78
+ "bashMode": "foam"
79
+ },
80
+ "export": {
81
+ "pageBg": "base",
82
+ "cardBg": "surface",
83
+ "infoBg": "overlay"
84
+ }
85
+ }