sh3-core 0.15.3 → 0.16.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.
Files changed (224) hide show
  1. package/dist/BrandSlot.svelte +9 -9
  2. package/dist/{Shell.svelte → Sh3.svelte} +65 -65
  3. package/dist/Sh3.svelte.d.ts +5 -0
  4. package/dist/__test__/render.js +1 -1
  5. package/dist/actions/ActionPanel.svelte +3 -3
  6. package/dist/actions/CommandPalette.svelte +2 -2
  7. package/dist/actions/MenuBar.svelte +1 -1
  8. package/dist/actions/MenuBar.test.js +1 -1
  9. package/dist/actions/MenuButton.svelte +3 -3
  10. package/dist/actions/dispatcher.svelte.js +1 -1
  11. package/dist/actions/listActive.js +1 -1
  12. package/dist/actions/listeners.js +6 -6
  13. package/dist/actions/selection.svelte.d.ts +2 -2
  14. package/dist/actions/selection.svelte.js +4 -4
  15. package/dist/actions/selection.test.js +1 -1
  16. package/dist/actions/{shellActions.test.js → sh3Actions.test.js} +14 -14
  17. package/dist/actions/state.svelte.d.ts +3 -3
  18. package/dist/actions/state.svelte.js +3 -3
  19. package/dist/actions/syncMountedViewIds.test.js +1 -1
  20. package/dist/actions/types.d.ts +1 -1
  21. package/dist/api.d.ts +5 -5
  22. package/dist/api.js +7 -7
  23. package/dist/app/admin/ApiKeysView.svelte +9 -9
  24. package/dist/app/admin/AuthSettingsView.svelte +6 -6
  25. package/dist/app/admin/SystemView.svelte +12 -12
  26. package/dist/app/admin/UsersView.svelte +8 -8
  27. package/dist/app/store/AppUpdateAvailableModal.svelte +14 -14
  28. package/dist/app/store/PermissionConfirmModal.svelte +20 -20
  29. package/dist/app/store/StoreView.svelte +51 -51
  30. package/dist/app/store/UninstallAppDialog.svelte +14 -14
  31. package/dist/app/store/storeShard.svelte.js +1 -1
  32. package/dist/app/store/verbs.js +1 -1
  33. package/dist/apps/lifecycle.d.ts +1 -1
  34. package/dist/apps/lifecycle.js +4 -4
  35. package/dist/apps/lifecycle.test.js +5 -5
  36. package/dist/apps/registry.svelte.d.ts +2 -2
  37. package/dist/apps/registry.svelte.js +3 -3
  38. package/dist/apps/types.d.ts +1 -1
  39. package/dist/auth/GuestBanner.svelte +19 -19
  40. package/dist/auth/SignInWall.svelte +17 -17
  41. package/dist/auth/auth.svelte.d.ts +1 -1
  42. package/dist/auth/auth.svelte.js +1 -1
  43. package/dist/boot/satellitePayload.js +1 -1
  44. package/dist/color/api.d.ts +1 -1
  45. package/dist/color/api.js +1 -1
  46. package/dist/color/{shell-api.js → sh3-api.js} +3 -3
  47. package/dist/conflicts/ConflictModal.svelte +1 -1
  48. package/dist/conflicts/ConflictModal.svelte.d.ts +1 -1
  49. package/dist/conflicts/DetailView.svelte +19 -19
  50. package/dist/conflicts/PromptView.svelte +9 -9
  51. package/dist/conflicts/adapter-documents.js +1 -1
  52. package/dist/conflicts/api.d.ts +1 -1
  53. package/dist/conflicts/api.js +2 -2
  54. package/dist/conflicts/renderer-registry.js +1 -1
  55. package/dist/conflicts/renderers/MetaOnlyRenderer.svelte +8 -8
  56. package/dist/conflicts/renderers/TextDiffRenderer.svelte +15 -15
  57. package/dist/conflicts/renderers/index.js +1 -1
  58. package/dist/conflicts/resolve-primitive.js +1 -1
  59. package/dist/conflicts/{shell-api.js → sh3-api.js} +2 -2
  60. package/dist/contributions/registry.js +1 -1
  61. package/dist/createShell.d.ts +2 -2
  62. package/dist/createShell.js +6 -6
  63. package/dist/host-entry.d.ts +1 -1
  64. package/dist/host-entry.js +2 -2
  65. package/dist/host.js +2 -2
  66. package/dist/index.d.ts +1 -1
  67. package/dist/index.js +2 -2
  68. package/dist/keys/ConsentDialog.svelte +15 -15
  69. package/dist/keys/consent.svelte.d.ts +2 -2
  70. package/dist/keys/consent.svelte.js +3 -3
  71. package/dist/keys/revocation-bus.svelte.d.ts +3 -3
  72. package/dist/keys/revocation-bus.svelte.js +3 -3
  73. package/dist/layout/DragPreview.svelte +9 -9
  74. package/dist/layout/LayoutRenderer.browser.test.js +2 -2
  75. package/dist/layout/LayoutRenderer.svelte +4 -4
  76. package/dist/layout/SlotContainer.svelte +12 -12
  77. package/dist/layout/SlotDropZone.svelte +2 -2
  78. package/dist/layout/inspection.d.ts +1 -1
  79. package/dist/layout/inspection.js +1 -1
  80. package/dist/layout/store.svelte.js +3 -3
  81. package/dist/layout/types.d.ts +1 -1
  82. package/dist/layouts-shard/LayoutSaveModal.svelte +20 -20
  83. package/dist/layouts-shard/LayoutsSection.svelte +11 -11
  84. package/dist/layouts-shard/filter.test.js +3 -3
  85. package/dist/layouts-shard/layoutsApi.test.js +3 -3
  86. package/dist/layouts-shard/layoutsShard.svelte.test.js +7 -7
  87. package/dist/migrations/mode-id-rename.js +2 -2
  88. package/dist/overlays/ConfirmDialog.svelte +8 -8
  89. package/dist/overlays/EntityAppearanceModal.svelte +19 -19
  90. package/dist/overlays/FloatFrame.svelte +20 -20
  91. package/dist/overlays/FloatLayer.svelte +1 -1
  92. package/dist/overlays/ModalFrame.svelte +5 -5
  93. package/dist/overlays/PopupFrame.svelte +4 -4
  94. package/dist/overlays/ToastItem.svelte +12 -12
  95. package/dist/overlays/float.d.ts +2 -2
  96. package/dist/overlays/float.js +3 -3
  97. package/dist/overlays/float.test.js +6 -6
  98. package/dist/overlays/modal.js +1 -1
  99. package/dist/overlays/modal.test.js +2 -2
  100. package/dist/overlays/parentHost.js +2 -2
  101. package/dist/overlays/parentHost.test.js +5 -5
  102. package/dist/overlays/popup.js +2 -2
  103. package/dist/overlays/popup.test.js +2 -2
  104. package/dist/overlays/roots.js +4 -4
  105. package/dist/overlays/toast.js +1 -1
  106. package/dist/overlays/types.js +3 -3
  107. package/dist/primitives/Button.svelte +16 -16
  108. package/dist/primitives/Collapsible.svelte +11 -11
  109. package/dist/primitives/ResizableSplitter.svelte +10 -10
  110. package/dist/primitives/TabbedPanel.svelte +19 -19
  111. package/dist/primitives/base.css +57 -57
  112. package/dist/primitives/widgets/ColorSwatch.svelte +15 -15
  113. package/dist/primitives/widgets/ColorSwatch.svelte.test.js +4 -4
  114. package/dist/primitives/widgets/Field.svelte +20 -20
  115. package/dist/primitives/widgets/FilePicker.svelte +13 -13
  116. package/dist/primitives/widgets/IconPicker.svelte +14 -14
  117. package/dist/primitives/widgets/IconToggleGroup.svelte +14 -14
  118. package/dist/primitives/widgets/NumberInput.svelte +17 -17
  119. package/dist/primitives/widgets/PickerList.svelte +17 -17
  120. package/dist/primitives/widgets/RangeSlider.svelte +16 -16
  121. package/dist/primitives/widgets/Segmented.svelte +16 -16
  122. package/dist/primitives/widgets/Select.svelte +14 -14
  123. package/dist/primitives/widgets/Select.svelte.test.js +2 -2
  124. package/dist/primitives/widgets/Slider.svelte +20 -20
  125. package/dist/primitives/widgets/SliderGroup.svelte +2 -2
  126. package/dist/primitives/widgets/Textarea.svelte +13 -13
  127. package/dist/primitives/widgets/_select-listbox.svelte +15 -15
  128. package/dist/projects/session-state.svelte.js +1 -1
  129. package/dist/projects-shard/DeleteProjectDialog.svelte +12 -12
  130. package/dist/projects-shard/ProjectManage.svelte +25 -25
  131. package/dist/projects-shard/ProjectsSection.svelte +12 -12
  132. package/dist/registry/installer.d.ts +2 -2
  133. package/dist/registry/installer.js +2 -2
  134. package/dist/registry/loader.js +1 -1
  135. package/dist/registry/permission-descriptions.js +2 -2
  136. package/dist/registry/permission-descriptions.test.js +1 -1
  137. package/dist/runtime/runVerb-shell.test.js +2 -2
  138. package/dist/runtime/runVerb.js +4 -4
  139. package/dist/runtime/runVerb.test.js +4 -4
  140. package/dist/satellite/SatelliteShell.svelte +2 -2
  141. package/dist/{shell → sh3}/views/KeysAndPeers.svelte +7 -7
  142. package/dist/sh3Api/headless.d.ts +4 -0
  143. package/dist/{shell-shard/shellApi.js → sh3Api/headless.js} +5 -5
  144. package/dist/{shell-shard/shellApi.svelte.test.js → sh3Api/headless.svelte.test.js} +11 -11
  145. package/dist/{shellApi → sh3Api}/window.js +2 -2
  146. package/dist/{shellApi → sh3Api}/window.test.js +1 -1
  147. package/dist/{shellRuntime.svelte.d.ts → sh3Runtime.svelte.d.ts} +22 -10
  148. package/dist/{shellRuntime.svelte.js → sh3Runtime.svelte.js} +12 -10
  149. package/dist/sh3Runtime.svelte.test.d.ts +1 -0
  150. package/dist/sh3Runtime.svelte.test.js +46 -0
  151. package/dist/sh3core-shard/AppInfoView.svelte +19 -19
  152. package/dist/sh3core-shard/{ShellHome.svelte → Sh3Home.svelte} +82 -82
  153. package/dist/sh3core-shard/Sh3Home.svelte.d.ts +3 -0
  154. package/dist/sh3core-shard/{ShellTitle.svelte → Sh3Title.svelte} +11 -11
  155. package/dist/sh3core-shard/Sh3Title.svelte.d.ts +3 -0
  156. package/dist/sh3core-shard/appActions.js +3 -3
  157. package/dist/sh3core-shard/sh3coreShard.svelte.js +7 -7
  158. package/dist/shards/activate.svelte.d.ts +1 -1
  159. package/dist/shards/activate.svelte.js +6 -6
  160. package/dist/shards/types.d.ts +5 -5
  161. package/dist/shards/types.js +2 -2
  162. package/dist/shell-shard/CommandLine.svelte +7 -7
  163. package/dist/shell-shard/InputLine.svelte +3 -3
  164. package/dist/shell-shard/ScrollbackView.svelte +2 -2
  165. package/dist/shell-shard/Terminal.svelte +5 -5
  166. package/dist/shell-shard/Terminal.svelte.d.ts +2 -2
  167. package/dist/shell-shard/dispatch-custom.test.js +2 -2
  168. package/dist/shell-shard/dispatch-gating.test.js +2 -2
  169. package/dist/shell-shard/dispatch-invoke.test.js +2 -2
  170. package/dist/shell-shard/dispatch-to-terminal.js +1 -1
  171. package/dist/shell-shard/dispatch.d.ts +2 -2
  172. package/dist/shell-shard/dispatch.js +2 -2
  173. package/dist/shell-shard/entries/PromptEntry.svelte +4 -4
  174. package/dist/shell-shard/entries/StatusEntry.svelte +4 -4
  175. package/dist/shell-shard/entries/TextEntry.svelte +3 -3
  176. package/dist/shell-shard/locateSlot.test.js +9 -9
  177. package/dist/shell-shard/manifest.js +2 -2
  178. package/dist/shell-shard/registry.d.ts +2 -2
  179. package/dist/shell-shard/rich/AppCard.svelte +1 -1
  180. package/dist/shell-shard/rich/AppsTable.svelte +1 -1
  181. package/dist/shell-shard/rich/HelpTable.svelte +1 -1
  182. package/dist/shell-shard/rich/HistoryList.svelte +1 -1
  183. package/dist/shell-shard/rich/ViewsTable.svelte +1 -1
  184. package/dist/shell-shard/rich/ZoneTree.svelte +2 -2
  185. package/dist/shell-shard/shellShard.svelte.d.ts +1 -1
  186. package/dist/shell-shard/shellShard.svelte.js +8 -8
  187. package/dist/shell-shard/terminal-dispatch.test.js +2 -2
  188. package/dist/shell-shard/toolbar/Toolbar.svelte +4 -4
  189. package/dist/shell-shard/toolbar/Toolbar.svelte.d.ts +2 -2
  190. package/dist/shell-shard/toolbar/slots/BusySlot.svelte +2 -2
  191. package/dist/shell-shard/toolbar/slots/FocusLockSlot.svelte +2 -2
  192. package/dist/shell-shard/toolbar/slots/ModeSlot.svelte +1 -1
  193. package/dist/shell-shard/toolbar/slots/TargetShardSlot.svelte +1 -1
  194. package/dist/shell-shard/toolbar/slots.d.ts +3 -3
  195. package/dist/shell-shard/verbs/apps.js +3 -3
  196. package/dist/shell-shard/verbs/help.js +1 -1
  197. package/dist/shell-shard/verbs/help.svelte.test.js +1 -1
  198. package/dist/shell-shard/verbs/history.js +1 -1
  199. package/dist/shell-shard/verbs/mode.js +2 -2
  200. package/dist/shell-shard/verbs/mode.test.js +2 -2
  201. package/dist/shell-shard/verbs/shards.js +1 -1
  202. package/dist/shell-shard/verbs/views.js +8 -8
  203. package/dist/shell-shard/verbs/zones.js +2 -2
  204. package/dist/state/zones.svelte.d.ts +2 -2
  205. package/dist/state/zones.svelte.js +4 -4
  206. package/dist/theme.d.ts +3 -3
  207. package/dist/theme.js +5 -5
  208. package/dist/tokens.css +68 -68
  209. package/dist/verbs/types.d.ts +5 -5
  210. package/dist/verbs/types.js +1 -1
  211. package/dist/version.d.ts +1 -1
  212. package/dist/version.js +1 -1
  213. package/package.json +1 -1
  214. package/dist/Shell.svelte.d.ts +0 -5
  215. package/dist/sh3core-shard/ShellHome.svelte.d.ts +0 -3
  216. package/dist/sh3core-shard/ShellTitle.svelte.d.ts +0 -3
  217. package/dist/shell-shard/shellApi.d.ts +0 -4
  218. /package/dist/actions/{shellActions.test.d.ts → sh3Actions.test.d.ts} +0 -0
  219. /package/dist/color/{shell-api.d.ts → sh3-api.d.ts} +0 -0
  220. /package/dist/conflicts/{shell-api.d.ts → sh3-api.d.ts} +0 -0
  221. /package/dist/{shell → sh3}/views/KeysAndPeers.svelte.d.ts +0 -0
  222. /package/dist/{shell-shard/shellApi.svelte.test.d.ts → sh3Api/headless.svelte.test.d.ts} +0 -0
  223. /package/dist/{shellApi → sh3Api}/window.d.ts +0 -0
  224. /package/dist/{shellApi → sh3Api}/window.test.d.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  /*
3
- * Saved-layouts section for ShellHome. Renders one card per SavedLayout.
3
+ * Saved-layouts section for Sh3Home. Renders one card per SavedLayout.
4
4
  * Click → restoreToFloat. Right-click sets a typed selection so card
5
5
  * actions (Customize, Delete) can recover the layoutId.
6
6
  */
@@ -9,7 +9,7 @@
9
9
  import { restoreToFloat } from './layoutsApi';
10
10
  import { listStandaloneViews } from '../shards/activate.svelte';
11
11
  import { toastManager } from '../overlays/toast';
12
- import { shell } from '../shellRuntime.svelte';
12
+ import { sh3 } from '../sh3Runtime.svelte';
13
13
  import { makeSelectionApi } from '../actions/selection.svelte';
14
14
  import iconsUrl from '../assets/icons.svg';
15
15
 
@@ -32,7 +32,7 @@
32
32
  function openCardContextMenu(event: MouseEvent, layoutId: string): void {
33
33
  event.preventDefault();
34
34
  selection.set({ type: 'saved-layout', ref: { layoutId } });
35
- shell.actions.openContextMenu({
35
+ sh3.actions.openContextMenu({
36
36
  x: event.clientX,
37
37
  y: event.clientY,
38
38
  scope: { element: 'saved-layout' },
@@ -78,7 +78,7 @@
78
78
  font-weight: 600;
79
79
  text-transform: uppercase;
80
80
  letter-spacing: 0.06em;
81
- color: var(--shell-fg-subtle);
81
+ color: var(--sh3-fg-subtle);
82
82
  margin: 0 0 12px;
83
83
  }
84
84
  .saved-layouts-grid {
@@ -104,24 +104,24 @@
104
104
  display: flex;
105
105
  align-items: center;
106
106
  justify-content: center;
107
- background: var(--saved-layout-color, var(--shell-grad-bg-elevated, var(--shell-bg-elevated)));
108
- border: 1px dashed var(--shell-border);
109
- border-radius: var(--shell-radius-md);
107
+ background: var(--saved-layout-color, var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated)));
108
+ border: 1px dashed var(--sh3-border);
109
+ border-radius: var(--sh3-radius-md);
110
110
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.15);
111
111
  transition: transform 120ms ease, border-color 120ms ease, box-shadow 120ms ease, background 120ms ease;
112
112
  }
113
113
  .saved-layout-card:hover .saved-layout-card-square {
114
- border-color: var(--shell-accent);
114
+ border-color: var(--sh3-accent);
115
115
  transform: translateY(-1px);
116
116
  box-shadow:
117
117
  0 6px 14px rgba(0, 0, 0, 0.3),
118
- 0 0 0 1px color-mix(in srgb, var(--shell-accent) 35%, transparent),
119
- 0 4px 12px color-mix(in srgb, var(--shell-accent) 18%, transparent);
118
+ 0 0 0 1px color-mix(in srgb, var(--sh3-accent) 35%, transparent),
119
+ 0 4px 12px color-mix(in srgb, var(--sh3-accent) 18%, transparent);
120
120
  }
121
121
  .saved-layout-card-icon {
122
122
  width: 28px;
123
123
  height: 28px;
124
- color: var(--shell-fg);
124
+ color: var(--sh3-fg);
125
125
  }
126
126
  .saved-layout-card-label {
127
127
  font-weight: 600;
@@ -20,7 +20,7 @@ describe('filterToStandalone', () => {
20
20
  type: 'tabs',
21
21
  activeTab: 0,
22
22
  tabs: [
23
- { slotId: 'a', viewId: 'shell:terminal', label: 'Shell' },
23
+ { slotId: 'a', viewId: 'shell:terminal', label: 'Sh3' },
24
24
  { slotId: 'b', viewId: 'app-only:view', label: 'App' },
25
25
  { slotId: 'c', viewId: 'graphlive:hierarchy', label: 'Graph' },
26
26
  ],
@@ -30,7 +30,7 @@ describe('filterToStandalone', () => {
30
30
  type: 'tabs',
31
31
  activeTab: 0,
32
32
  tabs: [
33
- { slotId: 'a', viewId: 'shell:terminal', label: 'Shell' },
33
+ { slotId: 'a', viewId: 'shell:terminal', label: 'Sh3' },
34
34
  { slotId: 'c', viewId: 'graphlive:hierarchy', label: 'Graph' },
35
35
  ],
36
36
  });
@@ -40,7 +40,7 @@ describe('filterToStandalone', () => {
40
40
  type: 'tabs',
41
41
  activeTab: 1,
42
42
  tabs: [
43
- { slotId: 'a', viewId: 'shell:terminal', label: 'Shell' },
43
+ { slotId: 'a', viewId: 'shell:terminal', label: 'Sh3' },
44
44
  { slotId: 'b', viewId: 'app-only:view', label: 'App' },
45
45
  ],
46
46
  };
@@ -20,7 +20,7 @@ describe('captureFromFloat', () => {
20
20
  const content = {
21
21
  type: 'tabs',
22
22
  activeTab: 0,
23
- tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Shell' }],
23
+ tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
24
24
  };
25
25
  const id = floatManager.openWithContent({ content, size: { w: 700, h: 500 } });
26
26
  const out = captureFromFloat(id, isStandalone);
@@ -32,7 +32,7 @@ describe('captureFromFloat', () => {
32
32
  out.content.tabs[0].label = 'MUTATED';
33
33
  const live = floatManager.list().find((f) => f.id === id);
34
34
  if (live.content.type === 'tabs') {
35
- expect(live.content.tabs[0].label).toBe('Shell');
35
+ expect(live.content.tabs[0].label).toBe('Sh3');
36
36
  }
37
37
  });
38
38
  });
@@ -60,7 +60,7 @@ describe('restoreToFloat', () => {
60
60
  const layout = mk({
61
61
  type: 'tabs',
62
62
  activeTab: 0,
63
- tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Shell' }],
63
+ tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
64
64
  });
65
65
  const id = restoreToFloat(layout, isStandalone, toast);
66
66
  expect(id).not.toBe('');
@@ -13,7 +13,7 @@ const stubShard = {
13
13
  id: 'stub',
14
14
  label: 'Stub',
15
15
  version: '0.0.0',
16
- views: [{ id: 'shell:terminal', label: 'Shell', standalone: true }],
16
+ views: [{ id: 'shell:terminal', label: 'Sh3', standalone: true }],
17
17
  },
18
18
  activate(ctx) {
19
19
  ctx.registerView('shell:terminal', {
@@ -45,7 +45,7 @@ describe('layoutsShard — sh3.layout.save', () => {
45
45
  content: {
46
46
  type: 'tabs',
47
47
  activeTab: 0,
48
- tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Shell' }],
48
+ tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
49
49
  },
50
50
  size: { w: 800, h: 600 },
51
51
  });
@@ -86,7 +86,7 @@ describe('layoutsShard — sh3.layout.open palette submenu', () => {
86
86
  content: {
87
87
  type: 'tabs',
88
88
  activeTab: 0,
89
- tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Shell' }],
89
+ tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
90
90
  },
91
91
  size: { w: 600, h: 400 },
92
92
  });
@@ -101,7 +101,7 @@ describe('layoutsShard — sh3.layout.open palette submenu', () => {
101
101
  content: {
102
102
  type: 'tabs',
103
103
  activeTab: 0,
104
- tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Shell' }],
104
+ tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
105
105
  },
106
106
  size: { w: 720, h: 480 },
107
107
  });
@@ -140,7 +140,7 @@ describe('layoutsShard — sh3.layout.customize', () => {
140
140
  content: {
141
141
  type: 'tabs',
142
142
  activeTab: 0,
143
- tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Shell' }],
143
+ tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
144
144
  },
145
145
  size: { w: 600, h: 400 },
146
146
  });
@@ -160,7 +160,7 @@ describe('layoutsShard — sh3.layout.customize', () => {
160
160
  content: {
161
161
  type: 'tabs',
162
162
  activeTab: 0,
163
- tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Shell' }],
163
+ tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
164
164
  },
165
165
  size: { w: 600, h: 400 },
166
166
  });
@@ -196,7 +196,7 @@ describe('layoutsShard — sh3.layout.delete', () => {
196
196
  content: {
197
197
  type: 'tabs',
198
198
  activeTab: 0,
199
- tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Shell' }],
199
+ tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
200
200
  },
201
201
  size: { w: 600, h: 400 },
202
202
  });
@@ -1,9 +1,9 @@
1
1
  /*
2
- * One-shot migration: rewrites persisted shell-mode preferences from the
2
+ * One-shot migration: rewrites persisted sh3-mode preferences from the
3
3
  * pre-rename ids (`dev`, `user`) to the new ids (`bash`, `sh3`). Idempotent —
4
4
  * gated by a localStorage flag, safe to call on every boot.
5
5
  *
6
- * Persistence shape: localStorage keys of the form `sh3.shell.lastMode.<userId>`
6
+ * Persistence shape: localStorage keys of the form `sh3.sh3.lastMode.<userId>`
7
7
  * (see packages/sh3-core/src/shell-shard/modes/prefs.ts).
8
8
  */
9
9
  const FLAG_KEY = 'sh3:migrations:mode-id-rename:done';
@@ -101,11 +101,11 @@
101
101
  .confirm-dialog-title {
102
102
  font-size: 16px;
103
103
  font-weight: 600;
104
- color: var(--shell-fg);
104
+ color: var(--sh3-fg);
105
105
  }
106
106
  .confirm-dialog-body {
107
107
  font-size: 13px;
108
- color: var(--shell-fg-muted, var(--shell-fg));
108
+ color: var(--sh3-fg-muted, var(--sh3-fg));
109
109
  line-height: 1.5;
110
110
  }
111
111
  .confirm-dialog-actions {
@@ -117,10 +117,10 @@
117
117
  .confirm-dialog-btn {
118
118
  font-size: 13px;
119
119
  padding: 6px 14px;
120
- border-radius: var(--shell-radius-sm, 4px);
121
- border: 1px solid var(--shell-border-strong);
120
+ border-radius: var(--sh3-radius-sm, 4px);
121
+ border: 1px solid var(--sh3-border-strong);
122
122
  background: transparent;
123
- color: var(--shell-fg);
123
+ color: var(--sh3-fg);
124
124
  cursor: pointer;
125
125
  }
126
126
  .confirm-dialog-btn:disabled {
@@ -128,11 +128,11 @@
128
128
  cursor: not-allowed;
129
129
  }
130
130
  .confirm-dialog-btn-default {
131
- background: var(--shell-bg-elevated);
131
+ background: var(--sh3-bg-elevated);
132
132
  }
133
133
  .confirm-dialog-btn-danger {
134
134
  background: transparent;
135
- color: var(--shell-error, #d32f2f);
136
- border-color: var(--shell-error, #d32f2f);
135
+ color: var(--sh3-error, #d32f2f);
136
+ border-color: var(--sh3-error, #d32f2f);
137
137
  }
138
138
  </style>
@@ -112,19 +112,19 @@
112
112
  .app-appearance {
113
113
  padding: 16px 20px;
114
114
  max-width: 460px;
115
- color: var(--shell-fg);
116
- background: var(--shell-bg);
115
+ color: var(--sh3-fg);
116
+ background: var(--sh3-bg);
117
117
  font: inherit;
118
118
  }
119
119
  h2 { margin: 0 0 12px; font-size: 16px; }
120
120
  .row { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; font-size: 13px; }
121
- .row span { color: var(--shell-fg-muted); }
121
+ .row span { color: var(--sh3-fg-muted); }
122
122
  .row span em { font-style: italic; opacity: 0.7; }
123
123
  .name-input {
124
- background: var(--shell-bg-elevated);
125
- color: var(--shell-fg);
126
- border: 1px solid var(--shell-border);
127
- border-radius: var(--shell-radius-sm, 3px);
124
+ background: var(--sh3-bg-elevated);
125
+ color: var(--sh3-fg);
126
+ border: 1px solid var(--sh3-border);
127
+ border-radius: var(--sh3-radius-sm, 3px);
128
128
  padding: 6px 8px; font: inherit; font-size: 13px;
129
129
  }
130
130
  .link {
@@ -132,14 +132,14 @@
132
132
  background: transparent;
133
133
  border: none;
134
134
  padding: 0;
135
- color: var(--shell-accent);
135
+ color: var(--sh3-accent);
136
136
  font: inherit;
137
137
  font-size: 13px;
138
138
  cursor: pointer;
139
139
  text-decoration: underline;
140
140
  }
141
141
  .link--align-right { align-self: flex-end; margin-top: 4px; }
142
- .link:hover { color: var(--shell-fg); }
142
+ .link:hover { color: var(--sh3-fg); }
143
143
  .preview { display: flex; justify-content: center; margin-bottom: 16px; }
144
144
  .preview-card {
145
145
  display: flex; flex-direction: column;
@@ -149,13 +149,13 @@
149
149
  .preview-card-square {
150
150
  width: 64px; height: 64px;
151
151
  display: flex; align-items: center; justify-content: center;
152
- background: var(--shell-grad-bg-elevated, var(--shell-bg-elevated));
153
- border: 1px solid var(--shell-border);
154
- border-radius: var(--shell-radius-md);
152
+ background: var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));
153
+ border: 1px solid var(--sh3-border);
154
+ border-radius: var(--sh3-radius-md);
155
155
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.15);
156
156
  }
157
157
  .preview-card--tinted .preview-card-square { background: var(--card-color); }
158
- .preview-card-icon { width: 28px; height: 28px; color: var(--shell-fg); }
158
+ .preview-card-icon { width: 28px; height: 28px; color: var(--sh3-fg); }
159
159
  .preview-card-label {
160
160
  font-weight: 600; font-size: 11px; line-height: 1.2;
161
161
  text-align: center; word-break: break-word;
@@ -167,13 +167,13 @@
167
167
  }
168
168
  .actions { display: flex; gap: 8px; margin-top: 16px; }
169
169
  .actions button {
170
- background: var(--shell-bg-elevated);
171
- color: var(--shell-fg);
172
- border: 1px solid var(--shell-border);
173
- border-radius: var(--shell-radius-sm, 3px);
170
+ background: var(--sh3-bg-elevated);
171
+ color: var(--sh3-fg);
172
+ border: 1px solid var(--sh3-border);
173
+ border-radius: var(--sh3-radius-sm, 3px);
174
174
  padding: 6px 14px; font: inherit; cursor: pointer;
175
175
  }
176
- .actions button.primary { background: var(--shell-accent); color: #fff; border-color: var(--shell-accent); }
177
- .actions button:hover { border-color: var(--shell-accent); }
176
+ .actions button.primary { background: var(--sh3-accent); color: #fff; border-color: var(--sh3-accent); }
177
+ .actions button:hover { border-color: var(--sh3-accent); }
178
178
  .actions button:disabled { opacity: 0.5; cursor: not-allowed; }
179
179
  </style>
@@ -31,9 +31,9 @@
31
31
  import { registerDismissableFrame, unregisterDismissableFrame } from './floatDismiss';
32
32
  import { computeMinSize } from '../layout/floats';
33
33
  import type { FloatEntry } from '../layout/types';
34
- import { shell } from '../shellRuntime.svelte';
34
+ import { sh3 } from '../sh3Runtime.svelte';
35
35
  import { makeSelectionApi } from '../actions/selection.svelte';
36
- import { spawnSatellite } from '../shellApi/window';
36
+ import { spawnSatellite } from '../sh3Api/window';
37
37
  import { walkShardsForContent } from '../satellite/walkShards';
38
38
 
39
39
  const isTauri =
@@ -44,7 +44,7 @@
44
44
  function openHeaderContextMenu(e: MouseEvent): void {
45
45
  e.preventDefault();
46
46
  floatHeaderSelection.set({ type: 'float-header', ref: { floatId: entry.id } });
47
- shell.actions.openContextMenu({
47
+ sh3.actions.openContextMenu({
48
48
  x: e.clientX,
49
49
  y: e.clientY,
50
50
  scope: { element: 'float-header' },
@@ -196,7 +196,7 @@
196
196
  });
197
197
  floatManager.close(entry.id);
198
198
  } catch (err) {
199
- shell.toast.notify(
199
+ sh3.toast.notify(
200
200
  `Pop-out failed: ${(err as Error).message}`,
201
201
  { level: 'error', duration: 5000 },
202
202
  );
@@ -208,7 +208,7 @@
208
208
  <!-- svelte-ignore a11y_click_events_have_key_events -->
209
209
  <div
210
210
  class="sh3-float-frame"
211
- data-shell-overlay-host="float"
211
+ data-sh3-overlay-host="float"
212
212
  bind:this={frameEl}
213
213
  style:left="{entry.position.x}px"
214
214
  style:top="{entry.position.y}px"
@@ -272,10 +272,10 @@
272
272
  position: absolute;
273
273
  display: flex;
274
274
  flex-direction: column;
275
- background: var(--shell-grad-bg-elevated, var(--shell-bg-elevated));
276
- color: var(--shell-fg);
277
- border: 1px solid var(--shell-border-strong);
278
- border-radius: var(--shell-radius);
275
+ background: var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));
276
+ color: var(--sh3-fg);
277
+ border: 1px solid var(--sh3-border-strong);
278
+ border-radius: var(--sh3-radius);
279
279
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
280
280
  pointer-events: auto;
281
281
  }
@@ -284,17 +284,17 @@
284
284
  align-items: center;
285
285
  justify-content: space-between;
286
286
  padding: 4px 8px;
287
- background: var(--shell-grad-bg-sunken, var(--shell-bg-sunken));
287
+ background: var(--sh3-grad-bg-sunken, var(--sh3-bg-sunken));
288
288
  cursor: move;
289
289
  user-select: none;
290
- border-bottom: 1px solid var(--shell-border-strong);
291
- border-top-left-radius: var(--shell-radius);
292
- border-top-right-radius: var(--shell-radius);
290
+ border-bottom: 1px solid var(--sh3-border-strong);
291
+ border-top-left-radius: var(--sh3-radius);
292
+ border-top-right-radius: var(--sh3-radius);
293
293
  flex-shrink: 0;
294
294
  }
295
295
  .sh3-float-title {
296
296
  font-size: 12px;
297
- color: var(--shell-fg);
297
+ color: var(--sh3-fg);
298
298
  overflow: hidden;
299
299
  text-overflow: ellipsis;
300
300
  white-space: nowrap;
@@ -310,7 +310,7 @@
310
310
  .sh3-float-close {
311
311
  background: transparent;
312
312
  border: none;
313
- color: var(--shell-fg);
313
+ color: var(--sh3-fg);
314
314
  line-height: 1;
315
315
  cursor: pointer;
316
316
  padding: 0 4px;
@@ -342,14 +342,14 @@
342
342
  135deg,
343
343
  transparent 0,
344
344
  transparent 6px,
345
- var(--shell-border-strong) 6px,
346
- var(--shell-border-strong) 7px,
345
+ var(--sh3-border-strong) 6px,
346
+ var(--sh3-border-strong) 7px,
347
347
  transparent 7px,
348
348
  transparent 10px,
349
- var(--shell-border-strong) 10px,
350
- var(--shell-border-strong) 11px,
349
+ var(--sh3-border-strong) 10px,
350
+ var(--sh3-border-strong) 11px,
351
351
  transparent 11px
352
352
  );
353
- border-bottom-right-radius: var(--shell-radius);
353
+ border-bottom-right-radius: var(--sh3-radius);
354
354
  }
355
355
  </style>
@@ -1,7 +1,7 @@
1
1
  <!--
2
2
  Layer 1 overlay root — iterates the active LayoutTree's floats and
3
3
  renders a FloatFrame for each. Mounted into the layer-1 DOM root by
4
- Shell.svelte. Reactivity flows from the workspace-zone proxy through
4
+ Sh3.svelte. Reactivity flows from the workspace-zone proxy through
5
5
  layoutStore.floats into this component, so mutations (open, close,
6
6
  position changes, reorder) re-render automatically.
7
7
  -->
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Responsibilities:
7
7
  * - Span the full layer as a transparent centering container so every
8
- * modal box renders in the middle of the shell.
8
+ * modal box renders in the middle of the sh3.
9
9
  * - Catch pointer events on the area around the box so clicks outside
10
10
  * the top modal do not fall through to modals beneath or to the
11
11
  * underlying layout.
@@ -81,10 +81,10 @@
81
81
  pointer-events: auto;
82
82
  }
83
83
  .modal-box {
84
- background: var(--shell-grad-bg-elevated, var(--shell-bg-elevated));
85
- color: var(--shell-fg);
86
- border: 1px solid var(--shell-border-strong);
87
- border-radius: var(--shell-radius);
84
+ background: var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));
85
+ color: var(--sh3-fg);
86
+ border: 1px solid var(--sh3-border-strong);
87
+ border-radius: var(--sh3-radius);
88
88
  min-width: 320px;
89
89
  max-width: min(640px, 90vw);
90
90
  max-height: 90vh;
@@ -73,10 +73,10 @@
73
73
  <style>
74
74
  .popup-frame {
75
75
  position: absolute;
76
- background: var(--shell-grad-bg-elevated, var(--shell-bg-elevated));
77
- color: var(--shell-fg);
78
- border: 1px solid var(--shell-border-strong);
79
- border-radius: var(--shell-radius-sm);
76
+ background: var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));
77
+ color: var(--sh3-fg);
78
+ border: 1px solid var(--sh3-border-strong);
79
+ border-radius: var(--sh3-radius-sm);
80
80
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
81
81
  min-width: 120px;
82
82
  outline: none;
@@ -42,13 +42,13 @@
42
42
  pointer-events: auto;
43
43
  display: flex;
44
44
  align-items: center;
45
- gap: var(--shell-pad-md);
46
- padding: var(--shell-pad-sm) var(--shell-pad-md);
47
- background: var(--shell-grad-bg-elevated, var(--shell-bg-elevated));
48
- color: var(--shell-fg);
49
- border: 1px solid var(--shell-border-strong);
45
+ gap: var(--sh3-pad-md);
46
+ padding: var(--sh3-pad-sm) var(--sh3-pad-md);
47
+ background: var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));
48
+ color: var(--sh3-fg);
49
+ border: 1px solid var(--sh3-border-strong);
50
50
  border-left-width: 3px;
51
- border-radius: var(--shell-radius-sm);
51
+ border-radius: var(--sh3-radius-sm);
52
52
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.4);
53
53
  font-size: 12px;
54
54
  min-width: 220px;
@@ -58,17 +58,17 @@
58
58
  }
59
59
  .toast-level {
60
60
  text-transform: uppercase;
61
- font-family: var(--shell-font-mono);
61
+ font-family: var(--sh3-font-mono);
62
62
  font-size: 10px;
63
63
  letter-spacing: 0.5px;
64
- color: var(--shell-fg-muted);
64
+ color: var(--sh3-fg-muted);
65
65
  }
66
66
  .toast-message { flex: 1; }
67
67
 
68
- .toast-info { border-left-color: var(--shell-accent); }
69
- .toast-success { border-left-color: var(--shell-success); }
70
- .toast-warn { border-left-color: var(--shell-warning); }
71
- .toast-error { border-left-color: var(--shell-error); }
68
+ .toast-info { border-left-color: var(--sh3-accent); }
69
+ .toast-success { border-left-color: var(--sh3-success); }
70
+ .toast-warn { border-left-color: var(--sh3-warning); }
71
+ .toast-error { border-left-color: var(--sh3-error); }
72
72
 
73
73
  @keyframes toast-in {
74
74
  from { opacity: 0; transform: translateY(8px); }
@@ -51,7 +51,7 @@ export interface FloatManager {
51
51
  /**
52
52
  * Snapshot the current rect, override with the float layer bounds, and
53
53
  * raise. No-op if the float is already maximized or unknown. Bounds are
54
- * frozen at maximize time — shell resize while maximized does not refit.
54
+ * frozen at maximize time — sh3 resize while maximized does not refit.
55
55
  */
56
56
  maximize(floatId: string): void;
57
57
  /**
@@ -72,7 +72,7 @@ export interface FloatManager {
72
72
  }
73
73
  /**
74
74
  * Bind the manager to the active LayoutTree's `floats` array. Called
75
- * from Shell.svelte during boot. `getBounds` returns the current
75
+ * from Sh3.svelte during boot. `getBounds` returns the current
76
76
  * tree-allocated area for cascade-position wraparound.
77
77
  */
78
78
  export declare function bindFloatStore(floats: FloatEntry[], getBounds: () => {
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * Float manager — layer 1 of the overlay stack.
3
3
  *
4
- * Public API (shell.float):
4
+ * Public API (sh3.float):
5
5
  * open(viewId, options?) → floatId
6
6
  * close(floatId)
7
7
  * list() → FloatEntry[]
@@ -22,7 +22,7 @@
22
22
  *
23
23
  * Binding:
24
24
  * The manager is bound to a live FloatEntry[] (the active LayoutTree's
25
- * floats) by `bindFloatStore()` during Shell boot. Before binding, an
25
+ * floats) by `bindFloatStore()` during Sh3 boot. Before binding, an
26
26
  * in-memory fallback array is used — this is both the test environment
27
27
  * and the pre-boot state.
28
28
  */
@@ -35,7 +35,7 @@ let boundFloats = null;
35
35
  let getTreeBounds = () => ({ w: 1600, h: 900 });
36
36
  /**
37
37
  * Bind the manager to the active LayoutTree's `floats` array. Called
38
- * from Shell.svelte during boot. `getBounds` returns the current
38
+ * from Sh3.svelte during boot. `getBounds` returns the current
39
39
  * tree-allocated area for cascade-position wraparound.
40
40
  */
41
41
  export function bindFloatStore(floats, getBounds) {
@@ -89,7 +89,7 @@ describe('floatManager — anchor-aware parent host', () => {
89
89
  });
90
90
  function makeOverlayHost(kind) {
91
91
  const host = document.createElement('div');
92
- host.dataset.shellOverlayHost = kind;
92
+ host.dataset.sh3OverlayHost = kind;
93
93
  const anchor = document.createElement('button');
94
94
  host.appendChild(anchor);
95
95
  document.body.appendChild(host);
@@ -366,7 +366,7 @@ describe('floats — F.7 anchor portals to enclosing overlay host', () => {
366
366
  const { container } = renderWithShell(FloatLayer, {});
367
367
  const fakeModalHost = document.createElement('div');
368
368
  fakeModalHost.className = 'fake-modal-host';
369
- fakeModalHost.dataset.shellOverlayHost = 'modal';
369
+ fakeModalHost.dataset.sh3OverlayHost = 'modal';
370
370
  const anchor = document.createElement('button');
371
371
  fakeModalHost.appendChild(anchor);
372
372
  document.body.appendChild(fakeModalHost);
@@ -397,7 +397,7 @@ describe('floats — F.7 anchor portals to enclosing overlay host', () => {
397
397
  const { container } = renderWithShell(FloatLayer, {});
398
398
  const fakeModalHost = document.createElement('div');
399
399
  fakeModalHost.className = 'fake-modal-host';
400
- fakeModalHost.dataset.shellOverlayHost = 'modal';
400
+ fakeModalHost.dataset.sh3OverlayHost = 'modal';
401
401
  const anchor = document.createElement('button');
402
402
  fakeModalHost.appendChild(anchor);
403
403
  document.body.appendChild(fakeModalHost);
@@ -423,13 +423,13 @@ describe('floats — F.8 overlay host marker', () => {
423
423
  resetFramework();
424
424
  bindManagerToStore();
425
425
  });
426
- it('marks each FloatFrame with data-shell-overlay-host="float"', async () => {
426
+ it('marks each FloatFrame with data-sh3-overlay-host="float"', async () => {
427
427
  const { container } = renderWithShell(FloatLayer, {});
428
428
  floatManager.open('test:view', { title: 'Marked' });
429
429
  await tick();
430
430
  const frame = container.querySelector('[role="dialog"][aria-label="Marked"]');
431
431
  expect(frame).toBeTruthy();
432
- expect(frame.dataset.shellOverlayHost).toBe('float');
432
+ expect(frame.dataset.sh3OverlayHost).toBe('float');
433
433
  });
434
434
  });
435
435
  // ---------------------------------------------------------------------------
@@ -842,7 +842,7 @@ describe('floatManager.openWithContent', () => {
842
842
  const content = {
843
843
  type: 'tabs',
844
844
  activeTab: 0,
845
- tabs: [{ slotId: 'restored:1', viewId: 'shell:terminal', label: 'Shell' }],
845
+ tabs: [{ slotId: 'restored:1', viewId: 'shell:terminal', label: 'Sh3' }],
846
846
  };
847
847
  const id = floatManager.openWithContent({
848
848
  content,
@@ -109,7 +109,7 @@ function openModal(Content, props, options) {
109
109
  const root = getLayerRoot('modal');
110
110
  const host = document.createElement('div');
111
111
  host.className = 'sh3-modal-host';
112
- host.dataset.shellOverlayHost = 'modal';
112
+ host.dataset.sh3OverlayHost = 'modal';
113
113
  host.style.position = 'absolute';
114
114
  host.style.inset = '0';
115
115
  host.style.pointerEvents = 'auto';
@@ -97,11 +97,11 @@ describe('modal — overlay host marker', () => {
97
97
  modalManager.closeAll();
98
98
  teardownLayerRoot(layerRoot);
99
99
  });
100
- it('marks the modal host with data-shell-overlay-host="modal"', async () => {
100
+ it('marks the modal host with data-sh3-overlay-host="modal"', async () => {
101
101
  modalManager.open(DummyFrame, {});
102
102
  await tick();
103
103
  const host = layerRoot.querySelector('.sh3-modal-host');
104
104
  expect(host).not.toBeNull();
105
- expect(host.dataset.shellOverlayHost).toBe('modal');
105
+ expect(host.dataset.sh3OverlayHost).toBe('modal');
106
106
  });
107
107
  });
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Walks up from `anchor` looking for an element marked as an overlay host
3
- * via `data-shell-overlay-host`. Modal hosts, popup hosts, and float frames
3
+ * via `data-sh3-overlay-host`. Modal hosts, popup hosts, and float frames
4
4
  * tag themselves so anchored overlays (popups, dismissable picker floats)
5
5
  * can mount inside their opener's stacking context instead of at a global
6
6
  * layer root — which is what the layer-z-index invariant gives us when a
@@ -11,5 +11,5 @@
11
11
  * `Element.closest`, so a marker on the anchor itself counts.
12
12
  */
13
13
  export function findEnclosingOverlayHost(anchor) {
14
- return anchor.closest('[data-shell-overlay-host]');
14
+ return anchor.closest('[data-sh3-overlay-host]');
15
15
  }