osdy-pi 1.10.0 → 1.11.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
@@ -1,17 +1,18 @@
1
1
  # Osdy Pi — a themed, responsive Pi workspace
2
2
 
3
- Osdy Pi gives [Pi](https://github.com/earendil-works/pi) a themed, responsive terminal presentation with a header, editor, working indicator, and Git view. Visit the [Osdy landing page](https://landing-osdy.vercel.app/).
3
+ Osdy Pi gives [Pi](https://github.com/earendil-works/pi) a themed, responsive terminal presentation with a header, editor, working indicator, and Git view. Visit the [Osdy landing page](https://osdy-pi.vercel.app/).
4
4
 
5
5
  <img width="1857" height="847" alt="Osdy Pi interface" src="https://github.com/user-attachments/assets/028eeb14-3f43-4f1c-9603-0c55a8d2856d" />
6
6
 
7
7
  ## Release highlights
8
8
 
9
- **1.10.0 adds four-page local usage analytics** with shared period and profile/provider/model filters, keyboard navigation, and metadata-only history. The bundle retains **20 themes**. These highlights describe the 1.10.0 release source; verify npm availability and the resolved version before installing.
9
+ **1.11.0 adds three Spider-Man-inspired dark palettes**, bringing the bundle to **23 themes**. It retains the four-page local usage analytics introduced in 1.10.0, with shared period and profile/provider/model filters, keyboard navigation, and metadata-only history. These highlights describe the 1.11.0 release source; verify npm availability and the resolved version before installing.
10
10
 
11
11
  | Area | What ships |
12
12
  | --- | --- |
13
13
  | Local analytics (1.10.0) | `/osdy-usage` opens Summary, Profiles, Models, and History pages for recorded tokens and estimated cost—not billing or subscription quota. |
14
- | Themes introduced in 1.9.0 | Halloween and Halloween Killer add two dark palettes, bringing the bundle to 20 themes. |
14
+ | Themes introduced in 1.11.0 | Spider-Man Classic, Miles Morales, and Spider-Verse add three distinct dark palettes. |
15
+ | Themes introduced in 1.9.0 | Halloween and Halloween Killer add two dark palettes. |
15
16
  | Themes introduced in 1.8.0 | Gruvbox Dark, Nord, Rosé Pine base dark, and Daniela Cute. |
16
17
  | Message cards | Pi-native colored user cards without emojis and plain assistant Markdown preceded by a separate `🦝` transcript row. |
17
18
  | Header and mascot | A theme-aware `neon` header and selectable `bts` mascot, both responsive and persisted independently. |
@@ -39,7 +40,7 @@ Osdy Pi gives [Pi](https://github.com/earendil-works/pi) a themed, responsive te
39
40
  pi install git:github.com/OsdyOrtiz/Osdy-Pi
40
41
  ```
41
42
 
42
- Check the resolved npm version: local analytics requires 1.10.0 or later. Once 1.10.0 is available on npm, `pi install npm:osdy-pi@1.10.0` selects it explicitly. For an unpinned installation, use `pi update`; it does not move a pinned version, so replace an older pin explicitly. First-party TODO is included starting in 1.5.0; `/osdy-pi uninstall` and explicit agent provider modes start in 1.6.0. Installing Osdy does not automatically install Joker; see [explicit agent provider modes](#explicit-agent-provider-modes-in-normal-pi).
43
+ Check the resolved npm version: the Spider-Man-inspired themes require 1.11.0 or later; local analytics requires 1.10.0 or later. To select this release explicitly, use `pi install npm:osdy-pi@1.11.0` once it is available on npm. For an unpinned installation, use `pi update`; it does not move a pinned version, so replace an older pin explicitly. First-party TODO is included starting in 1.5.0; `/osdy-pi uninstall` and explicit agent provider modes start in 1.6.0. Installing Osdy does not automatically install Joker; see [explicit agent provider modes](#explicit-agent-provider-modes-in-normal-pi).
43
44
 
44
45
  2. Start Pi:
45
46
 
@@ -47,7 +48,7 @@ Osdy Pi gives [Pi](https://github.com/earendil-works/pi) a themed, responsive te
47
48
  pi
48
49
  ```
49
50
 
50
- Osdy Pi's own extension and themes are bundled—do not install them separately. Version **1.10.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.
51
+ Osdy Pi's own extension and themes are bundled—do not install them separately. Version **1.11.0** bundles **23 themes**, including Spider-Man Classic, Miles Morales, and Spider-Verse: Gruvbox Dark, Nord, Rosé Pine base dark, and Daniela Cute were introduced in 1.8.0; Halloween and Halloween Killer were 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.
51
52
 
52
53
  ### Optional: isolated `osdy` command
53
54
 
@@ -251,7 +252,7 @@ Before rename or removal, close this Pi process when it uses the target and **ma
251
252
 
252
253
  | Area | Included behavior |
253
254
  | --- | --- |
254
- | Themes | 20 built-in themes, including Osdy, Kanagawa, Dracula, Gruvbox, Nord, Rosé Pine, Daniela Cute, Halloween, Halloween Killer, Catppuccin, Matrix, and Lucent Orange palettes |
255
+ | Themes | 23 built-in themes, including Osdy, Kanagawa, Dracula, Gruvbox, Nord, Rosé Pine, Daniela Cute, Halloween, Halloween Killer, Catppuccin, Matrix, Lucent Orange, and three Spider-Man-inspired palettes |
255
256
  | Header and mascot | Independently selectable `osdy-theme`/`neon` headers and `current`/`bts` mascots |
256
257
  | Messages | Native colored user cards without emojis and plain assistant Markdown with a separate assistant `🦝` row |
257
258
  | Input | Responsive auto editor by default, with selectable simple Pi-native or extended framed modes |
@@ -266,10 +267,10 @@ Before rename or removal, close this Pi process when it uses the target and **ma
266
267
 
267
268
  ### Themes
268
269
 
269
- Version **1.10.0** contains **20 themes**. Gruvbox Dark, Nord, Rosé Pine base dark, and Daniela Cute were introduced in **1.8.0**; Halloween and Halloween Killer were added in **1.9.0**. To try the themes from a checkout:
270
+ Version **1.11.0** contains **23 themes**, including the new Spider-Man Classic, Miles Morales, and Spider-Verse palettes. Gruvbox Dark, Nord, Rosé Pine base dark, and Daniela Cute were introduced in **1.8.0**; Halloween and Halloween Killer were added in **1.9.0**. To try the themes from a checkout:
270
271
 
271
- 1. Run `npm run pi:dev` from the 1.10.0 checkout, or `/reload` if that checkout is already loaded in Pi.
272
- 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.
272
+ 1. Run `npm run pi:dev` from the 1.11.0 checkout, or `/reload` if that checkout is already loaded in Pi.
273
+ 2. Open `/settings` → **Theme** and select `osdy-pi-spider-man-classic`, `osdy-pi-miles-morales`, `osdy-pi-spider-verse`, or another name below.
273
274
 
274
275
  | Theme | Use |
275
276
  | --- | --- |
@@ -293,6 +294,9 @@ Version **1.10.0** contains **20 themes**. Gruvbox Dark, Nord, Rosé Pine base d
293
294
  | `osdy-pi-catppuccin-mocha` | Catppuccin Mocha dark palette. |
294
295
  | `osdy-pi-matrix` | OpenCode Matrix dark palette. |
295
296
  | `osdy-pi-lucent-orange` | Lucent Orange dark palette with terminal-background passthrough. |
297
+ | `osdy-pi-spider-man-classic` | Classic Peter Parker: night-blue panels, red accents, and web-white text, with blue links and distinct green success/yellow warning indicators. |
298
+ | `osdy-pi-miles-morales` | Miles Morales: black and charcoal panels with intense red accents, pale text, and distinct green success/yellow warning indicators. |
299
+ | `osdy-pi-spider-verse` | Spider-Verse: dark violet panels, red, electric-blue, and magenta highlights, with readable syntax and distinct green success/yellow warning indicators. |
296
300
 
297
301
  Osdy Pi preserves your selected Pi theme when it enables, reapplies, or disables its UI. Choose any theme in Pi:
298
302
 
@@ -408,8 +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, 20);
412
- assert.equal(new Set(manifest.pi.themes).size, 20, "theme registrations must be unique");
411
+ assert.equal(manifest.pi.themes.length, 23);
412
+ assert.equal(new Set(manifest.pi.themes).size, 23, "theme registrations must be unique");
413
413
  for (const themePath of manifest.pi.themes) {
414
414
  const theme = JSON.parse(
415
415
  readFileSync(
@@ -438,18 +438,21 @@ void test("new dark themes are explicitly registered with unique matching names"
438
438
  return theme.name;
439
439
  });
440
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"]) {
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", "osdy-pi-spider-man-classic", "osdy-pi-miles-morales", "osdy-pi-spider-verse"]) {
442
442
  assert.equal(manifest.pi.themes.filter((path) => path === `./themes/${name}.json`).length, 1);
443
443
  assert.equal(names.filter((registered) => registered === name).length, 1);
444
444
  }
445
445
  });
446
446
 
447
- void test("README documents all 20 themes including both Halloween palettes", () => {
447
+ void test("README documents all 23 themes including three Spider-Man-inspired palettes", () => {
448
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);
449
+ assert.match(readme, /\*\*23 themes\*\*/);
450
+ assert.match(readme, /23 built-in themes/);
451
+ assert.doesNotMatch(readme, /\b(?:18|20) (?:built-in )?themes\b/);
452
+ assert.equal(readme.match(/^\| `osdy-pi-[^`]+` \|/gm)?.length, 23);
453
+ for (const name of ["osdy-pi-spider-man-classic", "osdy-pi-miles-morales", "osdy-pi-spider-verse"]) {
454
+ assert.ok(readme.includes(`| \`${name}\` |`), `${name}: documented theme row`);
455
+ }
453
456
  assert.match(readme, /\| `osdy-pi-daniela-cute` \| Daniela Cute/);
454
457
  assert.match(readme, /\| `osdy-pi-halloween` \|.*[Pp]umpkin.*violet.*lime/);
455
458
  assert.match(readme, /\| `osdy-pi-halloween-killer` \|.*[Gg]othic.*blood.red.*violet/);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "osdy-pi",
3
- "version": "1.10.0",
3
+ "version": "1.11.0",
4
4
  "description": "Osdy Pi package: themes, header, and custom editor for Pi.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -52,7 +52,10 @@
52
52
  "./themes/osdy-pi-catppuccin-macchiato.json",
53
53
  "./themes/osdy-pi-catppuccin-mocha.json",
54
54
  "./themes/osdy-pi-matrix.json",
55
- "./themes/osdy-pi-lucent-orange.json"
55
+ "./themes/osdy-pi-lucent-orange.json",
56
+ "./themes/osdy-pi-spider-man-classic.json",
57
+ "./themes/osdy-pi-miles-morales.json",
58
+ "./themes/osdy-pi-spider-verse.json"
56
59
  ],
57
60
  "extensions": [
58
61
  "./extensions/osdy-pi.ts"
@@ -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-miles-morales",
4
+ "appearance": "dark",
5
+ "vars": {
6
+ "black": "#09090D",
7
+ "charcoal": "#26232B",
8
+ "selection": "#35232D",
9
+ "border": "#64404E",
10
+ "text": "#F6EEF2",
11
+ "muted": "#C6B4C0",
12
+ "dim": "#AD9CAB",
13
+ "red": "#FF596F",
14
+ "green": "#85D9A5",
15
+ "yellow": "#F5CE78",
16
+ "cyan": "#94D7E2",
17
+ "violet": "#C5ABEF",
18
+ "orange": "#F7AE83",
19
+ "pink": "#ED9AC4",
20
+ "successBg": "#172A24",
21
+ "errorBg": "#351C28"
22
+ },
23
+ "colors": {
24
+ "accent": "red",
25
+ "border": "border",
26
+ "borderAccent": "red",
27
+ "borderMuted": "border",
28
+ "success": "green",
29
+ "error": "red",
30
+ "warning": "yellow",
31
+ "muted": "muted",
32
+ "dim": "dim",
33
+ "text": "text",
34
+ "thinkingText": "muted",
35
+ "selectedBg": "selection",
36
+ "scrollbarTrack": "charcoal",
37
+ "scrollbarThumb": "red",
38
+ "searchMatchBg": "red",
39
+ "searchMatchText": "black",
40
+ "userMessageBg": "charcoal",
41
+ "userMessageText": "text",
42
+ "customMessageBg": "charcoal",
43
+ "customMessageText": "text",
44
+ "customMessageLabel": "red",
45
+ "toolPendingBg": "black",
46
+ "toolSuccessBg": "successBg",
47
+ "toolErrorBg": "errorBg",
48
+ "toolTitle": "red",
49
+ "toolOutput": "text",
50
+ "mdHeading": "red",
51
+ "mdLink": "cyan",
52
+ "mdLinkUrl": "muted",
53
+ "mdCode": "green",
54
+ "mdCodeBlock": "text",
55
+ "mdCodeBlockBorder": "border",
56
+ "mdQuote": "muted",
57
+ "mdQuoteBorder": "red",
58
+ "mdHr": "border",
59
+ "mdListBullet": "red",
60
+ "toolDiffAdded": "green",
61
+ "toolDiffRemoved": "red",
62
+ "toolDiffContext": "muted",
63
+ "syntaxComment": "dim",
64
+ "syntaxKeyword": "red",
65
+ "syntaxFunction": "cyan",
66
+ "syntaxVariable": "text",
67
+ "syntaxString": "green",
68
+ "syntaxNumber": "orange",
69
+ "syntaxType": "yellow",
70
+ "syntaxOperator": "pink",
71
+ "syntaxPunctuation": "muted",
72
+ "thinkingOff": "dim",
73
+ "thinkingMinimal": "muted",
74
+ "thinkingLow": "cyan",
75
+ "thinkingMedium": "green",
76
+ "thinkingHigh": "violet",
77
+ "thinkingXhigh": "orange",
78
+ "thinkingMax": "red",
79
+ "bashMode": "red"
80
+ },
81
+ "export": {
82
+ "pageBg": "black",
83
+ "cardBg": "charcoal",
84
+ "infoBg": "black"
85
+ }
86
+ }
@@ -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-spider-man-classic",
4
+ "appearance": "dark",
5
+ "vars": {
6
+ "night": "#081222",
7
+ "card": "#172D48",
8
+ "selection": "#24354D",
9
+ "border": "#425D7C",
10
+ "web": "#F2F5FA",
11
+ "muted": "#ADBFD5",
12
+ "dim": "#97ADC7",
13
+ "red": "#FF7380",
14
+ "blue": "#75BFFF",
15
+ "green": "#7DE0A2",
16
+ "yellow": "#FFD477",
17
+ "cyan": "#85DFEB",
18
+ "violet": "#C3A6FF",
19
+ "orange": "#FFB080",
20
+ "pink": "#FFA0D1",
21
+ "successBg": "#142B2C",
22
+ "errorBg": "#302030"
23
+ },
24
+ "colors": {
25
+ "accent": "red",
26
+ "border": "border",
27
+ "borderAccent": "red",
28
+ "borderMuted": "border",
29
+ "success": "green",
30
+ "error": "red",
31
+ "warning": "yellow",
32
+ "muted": "muted",
33
+ "dim": "dim",
34
+ "text": "web",
35
+ "thinkingText": "muted",
36
+ "selectedBg": "selection",
37
+ "scrollbarTrack": "card",
38
+ "scrollbarThumb": "blue",
39
+ "searchMatchBg": "yellow",
40
+ "searchMatchText": "night",
41
+ "userMessageBg": "card",
42
+ "userMessageText": "web",
43
+ "customMessageBg": "card",
44
+ "customMessageText": "web",
45
+ "customMessageLabel": "blue",
46
+ "toolPendingBg": "night",
47
+ "toolSuccessBg": "successBg",
48
+ "toolErrorBg": "errorBg",
49
+ "toolTitle": "blue",
50
+ "toolOutput": "web",
51
+ "mdHeading": "web",
52
+ "mdLink": "blue",
53
+ "mdLinkUrl": "muted",
54
+ "mdCode": "green",
55
+ "mdCodeBlock": "web",
56
+ "mdCodeBlockBorder": "border",
57
+ "mdQuote": "muted",
58
+ "mdQuoteBorder": "red",
59
+ "mdHr": "border",
60
+ "mdListBullet": "red",
61
+ "toolDiffAdded": "green",
62
+ "toolDiffRemoved": "red",
63
+ "toolDiffContext": "muted",
64
+ "syntaxComment": "dim",
65
+ "syntaxKeyword": "red",
66
+ "syntaxFunction": "blue",
67
+ "syntaxVariable": "web",
68
+ "syntaxString": "green",
69
+ "syntaxNumber": "orange",
70
+ "syntaxType": "yellow",
71
+ "syntaxOperator": "violet",
72
+ "syntaxPunctuation": "muted",
73
+ "thinkingOff": "dim",
74
+ "thinkingMinimal": "blue",
75
+ "thinkingLow": "cyan",
76
+ "thinkingMedium": "green",
77
+ "thinkingHigh": "violet",
78
+ "thinkingXhigh": "orange",
79
+ "thinkingMax": "pink",
80
+ "bashMode": "red"
81
+ },
82
+ "export": {
83
+ "pageBg": "night",
84
+ "cardBg": "card",
85
+ "infoBg": "night"
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-spider-verse",
4
+ "appearance": "dark",
5
+ "vars": {
6
+ "night": "#100D20",
7
+ "card": "#282040",
8
+ "selection": "#302545",
9
+ "border": "#605080",
10
+ "text": "#F5F0FF",
11
+ "muted": "#BCB3D9",
12
+ "dim": "#A89EC7",
13
+ "red": "#FF718A",
14
+ "blue": "#65C7FF",
15
+ "magenta": "#FF86DF",
16
+ "green": "#86E5B1",
17
+ "yellow": "#FFE082",
18
+ "cyan": "#83EBEF",
19
+ "violet": "#C4A2FF",
20
+ "orange": "#FFB68C",
21
+ "successBg": "#172B32",
22
+ "errorBg": "#352039"
23
+ },
24
+ "colors": {
25
+ "accent": "blue",
26
+ "border": "border",
27
+ "borderAccent": "magenta",
28
+ "borderMuted": "border",
29
+ "success": "green",
30
+ "error": "red",
31
+ "warning": "yellow",
32
+ "muted": "muted",
33
+ "dim": "dim",
34
+ "text": "text",
35
+ "thinkingText": "muted",
36
+ "selectedBg": "selection",
37
+ "scrollbarTrack": "card",
38
+ "scrollbarThumb": "blue",
39
+ "searchMatchBg": "magenta",
40
+ "searchMatchText": "night",
41
+ "userMessageBg": "card",
42
+ "userMessageText": "text",
43
+ "customMessageBg": "card",
44
+ "customMessageText": "text",
45
+ "customMessageLabel": "magenta",
46
+ "toolPendingBg": "night",
47
+ "toolSuccessBg": "successBg",
48
+ "toolErrorBg": "errorBg",
49
+ "toolTitle": "blue",
50
+ "toolOutput": "text",
51
+ "mdHeading": "magenta",
52
+ "mdLink": "blue",
53
+ "mdLinkUrl": "muted",
54
+ "mdCode": "cyan",
55
+ "mdCodeBlock": "text",
56
+ "mdCodeBlockBorder": "border",
57
+ "mdQuote": "muted",
58
+ "mdQuoteBorder": "magenta",
59
+ "mdHr": "border",
60
+ "mdListBullet": "red",
61
+ "toolDiffAdded": "green",
62
+ "toolDiffRemoved": "red",
63
+ "toolDiffContext": "muted",
64
+ "syntaxComment": "dim",
65
+ "syntaxKeyword": "magenta",
66
+ "syntaxFunction": "blue",
67
+ "syntaxVariable": "text",
68
+ "syntaxString": "green",
69
+ "syntaxNumber": "orange",
70
+ "syntaxType": "yellow",
71
+ "syntaxOperator": "red",
72
+ "syntaxPunctuation": "muted",
73
+ "thinkingOff": "dim",
74
+ "thinkingMinimal": "blue",
75
+ "thinkingLow": "cyan",
76
+ "thinkingMedium": "green",
77
+ "thinkingHigh": "violet",
78
+ "thinkingXhigh": "red",
79
+ "thinkingMax": "magenta",
80
+ "bashMode": "red"
81
+ },
82
+ "export": {
83
+ "pageBg": "night",
84
+ "cardBg": "card",
85
+ "infoBg": "night"
86
+ }
87
+ }