sh3-core 0.15.4 → 0.16.1

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 (228) 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/build.d.ts +27 -0
  45. package/dist/build.js +59 -1
  46. package/dist/build.test.js +31 -0
  47. package/dist/color/api.d.ts +1 -1
  48. package/dist/color/api.js +1 -1
  49. package/dist/color/{shell-api.js → sh3-api.js} +3 -3
  50. package/dist/conflicts/ConflictModal.svelte +1 -1
  51. package/dist/conflicts/ConflictModal.svelte.d.ts +1 -1
  52. package/dist/conflicts/DetailView.svelte +19 -19
  53. package/dist/conflicts/PromptView.svelte +9 -9
  54. package/dist/conflicts/adapter-documents.js +1 -1
  55. package/dist/conflicts/api.d.ts +1 -1
  56. package/dist/conflicts/api.js +2 -2
  57. package/dist/conflicts/renderer-registry.js +1 -1
  58. package/dist/conflicts/renderers/MetaOnlyRenderer.svelte +8 -8
  59. package/dist/conflicts/renderers/TextDiffRenderer.svelte +15 -15
  60. package/dist/conflicts/renderers/index.js +1 -1
  61. package/dist/conflicts/resolve-primitive.js +1 -1
  62. package/dist/conflicts/{shell-api.js → sh3-api.js} +2 -2
  63. package/dist/contributions/registry.js +1 -1
  64. package/dist/createShell.d.ts +2 -2
  65. package/dist/createShell.js +6 -6
  66. package/dist/host-entry.d.ts +1 -1
  67. package/dist/host-entry.js +2 -2
  68. package/dist/host.js +2 -2
  69. package/dist/index.d.ts +1 -1
  70. package/dist/index.js +2 -2
  71. package/dist/keys/ConsentDialog.svelte +15 -15
  72. package/dist/keys/consent.svelte.d.ts +2 -2
  73. package/dist/keys/consent.svelte.js +3 -3
  74. package/dist/keys/revocation-bus.svelte.d.ts +3 -3
  75. package/dist/keys/revocation-bus.svelte.js +3 -3
  76. package/dist/layout/DragPreview.svelte +9 -9
  77. package/dist/layout/LayoutRenderer.browser.test.js +2 -2
  78. package/dist/layout/LayoutRenderer.svelte +4 -4
  79. package/dist/layout/SlotContainer.svelte +12 -12
  80. package/dist/layout/SlotDropZone.svelte +2 -2
  81. package/dist/layout/inspection.d.ts +1 -1
  82. package/dist/layout/inspection.js +1 -1
  83. package/dist/layout/store.svelte.js +3 -3
  84. package/dist/layout/types.d.ts +1 -1
  85. package/dist/layouts-shard/LayoutSaveModal.svelte +20 -20
  86. package/dist/layouts-shard/LayoutsSection.svelte +11 -11
  87. package/dist/layouts-shard/filter.test.js +3 -3
  88. package/dist/layouts-shard/layoutsApi.test.js +3 -3
  89. package/dist/layouts-shard/layoutsShard.svelte.test.js +7 -7
  90. package/dist/migrations/mode-id-rename.js +2 -2
  91. package/dist/overlays/ConfirmDialog.svelte +8 -8
  92. package/dist/overlays/EntityAppearanceModal.svelte +19 -19
  93. package/dist/overlays/FloatFrame.svelte +20 -20
  94. package/dist/overlays/FloatLayer.svelte +1 -1
  95. package/dist/overlays/ModalFrame.svelte +5 -5
  96. package/dist/overlays/PopupFrame.svelte +4 -4
  97. package/dist/overlays/ToastItem.svelte +12 -12
  98. package/dist/overlays/float.d.ts +2 -2
  99. package/dist/overlays/float.js +3 -3
  100. package/dist/overlays/float.test.js +6 -6
  101. package/dist/overlays/modal.js +1 -1
  102. package/dist/overlays/modal.test.js +2 -2
  103. package/dist/overlays/parentHost.js +2 -2
  104. package/dist/overlays/parentHost.test.js +5 -5
  105. package/dist/overlays/popup.js +2 -2
  106. package/dist/overlays/popup.test.js +2 -2
  107. package/dist/overlays/roots.js +4 -4
  108. package/dist/overlays/toast.js +1 -1
  109. package/dist/overlays/types.js +3 -3
  110. package/dist/primitives/Button.svelte +16 -16
  111. package/dist/primitives/Collapsible.svelte +11 -11
  112. package/dist/primitives/ResizableSplitter.svelte +10 -10
  113. package/dist/primitives/TabbedPanel.svelte +19 -19
  114. package/dist/primitives/base.css +57 -57
  115. package/dist/primitives/widgets/ColorSwatch.svelte +15 -15
  116. package/dist/primitives/widgets/ColorSwatch.svelte.test.js +4 -4
  117. package/dist/primitives/widgets/Field.svelte +20 -20
  118. package/dist/primitives/widgets/FilePicker.svelte +13 -13
  119. package/dist/primitives/widgets/IconPicker.svelte +14 -14
  120. package/dist/primitives/widgets/IconToggleGroup.svelte +14 -14
  121. package/dist/primitives/widgets/NumberInput.svelte +17 -17
  122. package/dist/primitives/widgets/PickerList.svelte +17 -17
  123. package/dist/primitives/widgets/RangeSlider.svelte +16 -16
  124. package/dist/primitives/widgets/Segmented.svelte +16 -16
  125. package/dist/primitives/widgets/Select.svelte +14 -14
  126. package/dist/primitives/widgets/Select.svelte.test.js +2 -2
  127. package/dist/primitives/widgets/Slider.svelte +20 -20
  128. package/dist/primitives/widgets/SliderGroup.svelte +2 -2
  129. package/dist/primitives/widgets/Textarea.svelte +13 -13
  130. package/dist/primitives/widgets/_select-listbox.svelte +15 -15
  131. package/dist/projects/session-state.svelte.js +1 -1
  132. package/dist/projects-shard/DeleteProjectDialog.svelte +12 -12
  133. package/dist/projects-shard/ProjectManage.svelte +25 -25
  134. package/dist/projects-shard/ProjectsSection.svelte +12 -12
  135. package/dist/registry/installer.d.ts +2 -2
  136. package/dist/registry/installer.js +2 -2
  137. package/dist/registry/loader.js +1 -1
  138. package/dist/registry/permission-descriptions.js +2 -2
  139. package/dist/registry/permission-descriptions.test.js +1 -1
  140. package/dist/runtime/runVerb-shell.test.js +2 -2
  141. package/dist/runtime/runVerb.js +4 -4
  142. package/dist/runtime/runVerb.test.js +4 -4
  143. package/dist/satellite/SatelliteShell.svelte +2 -2
  144. package/dist/{shell → sh3}/views/KeysAndPeers.svelte +7 -7
  145. package/dist/sh3Api/headless.d.ts +4 -0
  146. package/dist/{shell-shard/shellApi.js → sh3Api/headless.js} +5 -5
  147. package/dist/{shell-shard/shellApi.svelte.test.js → sh3Api/headless.svelte.test.js} +11 -11
  148. package/dist/{shellApi → sh3Api}/window.js +2 -2
  149. package/dist/{shellApi → sh3Api}/window.test.js +1 -1
  150. package/dist/{shellRuntime.svelte.d.ts → sh3Runtime.svelte.d.ts} +11 -11
  151. package/dist/{shellRuntime.svelte.js → sh3Runtime.svelte.js} +10 -10
  152. package/dist/sh3Runtime.svelte.test.d.ts +1 -0
  153. package/dist/{shellRuntime.svelte.test.js → sh3Runtime.svelte.test.js} +10 -10
  154. package/dist/sh3core-shard/AppInfoView.svelte +19 -19
  155. package/dist/sh3core-shard/{ShellHome.svelte → Sh3Home.svelte} +82 -82
  156. package/dist/sh3core-shard/Sh3Home.svelte.d.ts +3 -0
  157. package/dist/sh3core-shard/{ShellTitle.svelte → Sh3Title.svelte} +11 -11
  158. package/dist/sh3core-shard/Sh3Title.svelte.d.ts +3 -0
  159. package/dist/sh3core-shard/appActions.js +3 -3
  160. package/dist/sh3core-shard/sh3coreShard.svelte.js +7 -7
  161. package/dist/shards/activate.svelte.d.ts +1 -1
  162. package/dist/shards/activate.svelte.js +6 -6
  163. package/dist/shards/types.d.ts +5 -5
  164. package/dist/shards/types.js +2 -2
  165. package/dist/shell-shard/CommandLine.svelte +7 -7
  166. package/dist/shell-shard/InputLine.svelte +3 -3
  167. package/dist/shell-shard/ScrollbackView.svelte +2 -2
  168. package/dist/shell-shard/Terminal.svelte +5 -5
  169. package/dist/shell-shard/Terminal.svelte.d.ts +2 -2
  170. package/dist/shell-shard/dispatch-custom.test.js +2 -2
  171. package/dist/shell-shard/dispatch-gating.test.js +2 -2
  172. package/dist/shell-shard/dispatch-invoke.test.js +2 -2
  173. package/dist/shell-shard/dispatch-to-terminal.js +1 -1
  174. package/dist/shell-shard/dispatch.d.ts +2 -2
  175. package/dist/shell-shard/dispatch.js +2 -2
  176. package/dist/shell-shard/entries/PromptEntry.svelte +4 -4
  177. package/dist/shell-shard/entries/StatusEntry.svelte +4 -4
  178. package/dist/shell-shard/entries/TextEntry.svelte +3 -3
  179. package/dist/shell-shard/locateSlot.test.js +9 -9
  180. package/dist/shell-shard/manifest.js +2 -2
  181. package/dist/shell-shard/registry.d.ts +2 -2
  182. package/dist/shell-shard/rich/AppCard.svelte +1 -1
  183. package/dist/shell-shard/rich/AppsTable.svelte +1 -1
  184. package/dist/shell-shard/rich/HelpTable.svelte +1 -1
  185. package/dist/shell-shard/rich/HistoryList.svelte +1 -1
  186. package/dist/shell-shard/rich/ViewsTable.svelte +1 -1
  187. package/dist/shell-shard/rich/ZoneTree.svelte +2 -2
  188. package/dist/shell-shard/shellShard.svelte.d.ts +1 -1
  189. package/dist/shell-shard/shellShard.svelte.js +8 -8
  190. package/dist/shell-shard/terminal-dispatch.test.js +2 -2
  191. package/dist/shell-shard/toolbar/Toolbar.svelte +4 -4
  192. package/dist/shell-shard/toolbar/Toolbar.svelte.d.ts +2 -2
  193. package/dist/shell-shard/toolbar/slots/BusySlot.svelte +2 -2
  194. package/dist/shell-shard/toolbar/slots/FocusLockSlot.svelte +2 -2
  195. package/dist/shell-shard/toolbar/slots/ModeSlot.svelte +1 -1
  196. package/dist/shell-shard/toolbar/slots/TargetShardSlot.svelte +1 -1
  197. package/dist/shell-shard/toolbar/slots.d.ts +3 -3
  198. package/dist/shell-shard/verbs/apps.js +3 -3
  199. package/dist/shell-shard/verbs/help.js +1 -1
  200. package/dist/shell-shard/verbs/help.svelte.test.js +1 -1
  201. package/dist/shell-shard/verbs/history.js +1 -1
  202. package/dist/shell-shard/verbs/mode.js +2 -2
  203. package/dist/shell-shard/verbs/mode.test.js +2 -2
  204. package/dist/shell-shard/verbs/shards.js +1 -1
  205. package/dist/shell-shard/verbs/views.js +8 -8
  206. package/dist/shell-shard/verbs/zones.js +2 -2
  207. package/dist/state/zones.svelte.d.ts +2 -2
  208. package/dist/state/zones.svelte.js +4 -4
  209. package/dist/theme.d.ts +3 -3
  210. package/dist/theme.js +5 -5
  211. package/dist/tokens.css +68 -68
  212. package/dist/verbs/types.d.ts +5 -5
  213. package/dist/verbs/types.js +1 -1
  214. package/dist/version.d.ts +1 -1
  215. package/dist/version.js +1 -1
  216. package/package.json +1 -1
  217. package/dist/Shell.svelte.d.ts +0 -5
  218. package/dist/sh3core-shard/ShellHome.svelte.d.ts +0 -3
  219. package/dist/sh3core-shard/ShellTitle.svelte.d.ts +0 -3
  220. package/dist/shell-shard/shellApi.d.ts +0 -4
  221. /package/dist/actions/{shellActions.test.d.ts → sh3Actions.test.d.ts} +0 -0
  222. /package/dist/{shell-shard/shellApi.svelte.test.d.ts → build.test.d.ts} +0 -0
  223. /package/dist/color/{shell-api.d.ts → sh3-api.d.ts} +0 -0
  224. /package/dist/conflicts/{shell-api.d.ts → sh3-api.d.ts} +0 -0
  225. /package/dist/{shell → sh3}/views/KeysAndPeers.svelte.d.ts +0 -0
  226. /package/dist/{shellApi/window.test.d.ts → sh3Api/headless.svelte.test.d.ts} +0 -0
  227. /package/dist/{shellApi → sh3Api}/window.d.ts +0 -0
  228. /package/dist/{shellRuntime.svelte.test.d.ts → sh3Api/window.test.d.ts} +0 -0
@@ -152,8 +152,8 @@
152
152
  display: flex;
153
153
  flex-direction: column;
154
154
  font: inherit;
155
- color: var(--shell-fg);
156
- background: var(--shell-bg);
155
+ color: var(--sh3-fg);
156
+ background: var(--sh3-bg);
157
157
  }
158
158
  .body {
159
159
  flex: 1;
@@ -161,8 +161,8 @@
161
161
  padding: 16px 16px 8px;
162
162
  }
163
163
  h2 { margin: 0 0 8px; font-size: 16px; }
164
- .project-id { font-size: 12px; color: var(--shell-fg-muted); margin: 0 0 16px; }
165
- .project-id code { font-family: var(--shell-font-mono, monospace); }
164
+ .project-id { font-size: 12px; color: var(--sh3-fg-muted); margin: 0 0 16px; }
165
+ .project-id code { font-family: var(--sh3-font-mono, monospace); }
166
166
  .field {
167
167
  display: flex;
168
168
  flex-direction: column;
@@ -170,50 +170,50 @@
170
170
  margin-bottom: 12px;
171
171
  font-size: 13px;
172
172
  }
173
- .field span { color: var(--shell-fg-muted); }
174
- .hint { font-size: 11px; color: var(--shell-fg-muted); }
173
+ .field span { color: var(--sh3-fg-muted); }
174
+ .hint { font-size: 11px; color: var(--sh3-fg-muted); }
175
175
  .hint code {
176
- font-family: var(--shell-font-mono, monospace);
177
- color: var(--shell-fg);
178
- background: var(--shell-bg-elevated);
176
+ font-family: var(--sh3-font-mono, monospace);
177
+ color: var(--sh3-fg);
178
+ background: var(--sh3-bg-elevated);
179
179
  padding: 0 4px;
180
- border-radius: var(--shell-radius-sm, 3px);
180
+ border-radius: var(--sh3-radius-sm, 3px);
181
181
  }
182
182
  .field input,
183
183
  .field textarea {
184
- background: var(--shell-bg-elevated);
185
- color: var(--shell-fg);
186
- border: 1px solid var(--shell-border);
187
- border-radius: var(--shell-radius-sm, 3px);
184
+ background: var(--sh3-bg-elevated);
185
+ color: var(--sh3-fg);
186
+ border: 1px solid var(--sh3-border);
187
+ border-radius: var(--sh3-radius-sm, 3px);
188
188
  padding: 6px 8px;
189
189
  font: inherit;
190
190
  font-size: 13px;
191
191
  }
192
192
  .field textarea { resize: vertical; min-height: 60px; }
193
- .error { color: var(--shell-error, #c33); font-size: 13px; margin: 0 0 8px; }
193
+ .error { color: var(--sh3-error, #c33); font-size: 13px; margin: 0 0 8px; }
194
194
  .actions {
195
195
  display: flex;
196
196
  gap: 8px;
197
197
  padding: 12px 16px;
198
- border-top: 1px solid var(--shell-border);
199
- background: var(--shell-bg);
198
+ border-top: 1px solid var(--sh3-border);
199
+ background: var(--sh3-bg);
200
200
  flex: 0 0 auto;
201
201
  }
202
202
  .actions button {
203
- background: var(--shell-bg-elevated);
204
- color: var(--shell-fg);
205
- border: 1px solid var(--shell-border);
206
- border-radius: var(--shell-radius-sm, 3px);
203
+ background: var(--sh3-bg-elevated);
204
+ color: var(--sh3-fg);
205
+ border: 1px solid var(--sh3-border);
206
+ border-radius: var(--sh3-radius-sm, 3px);
207
207
  padding: 6px 14px;
208
208
  font: inherit;
209
209
  cursor: pointer;
210
210
  }
211
- .actions button:hover { border-color: var(--shell-accent); }
211
+ .actions button:hover { border-color: var(--sh3-accent); }
212
212
  .actions button.primary {
213
- background: var(--shell-accent);
213
+ background: var(--sh3-accent);
214
214
  color: #fff;
215
- border-color: var(--shell-accent);
215
+ border-color: var(--sh3-accent);
216
216
  }
217
- .actions button.danger { margin-left: auto; color: var(--shell-error, #c33); }
217
+ .actions button.danger { margin-left: auto; color: var(--sh3-error, #c33); }
218
218
  .actions button:disabled { opacity: 0.5; cursor: not-allowed; }
219
219
  </style>
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  /*
3
- * Projects section for ShellHome.
3
+ * Projects section for Sh3Home.
4
4
  *
5
5
  * Renders the list of projects the current user is a member of as
6
6
  * selectable cards. Selecting a project sets sessionState.activeProjectId
@@ -69,7 +69,7 @@
69
69
  font-weight: 600;
70
70
  text-transform: uppercase;
71
71
  letter-spacing: 0.06em;
72
- color: var(--shell-fg-subtle);
72
+ color: var(--sh3-fg-subtle);
73
73
  margin: 0 0 12px;
74
74
  }
75
75
  .projects-grid {
@@ -84,9 +84,9 @@
84
84
  align-items: flex-start;
85
85
  gap: 4px;
86
86
  padding: 12px 14px;
87
- background: var(--shell-grad-bg-elevated, var(--shell-bg-elevated));
88
- border: 1px solid var(--shell-border);
89
- border-radius: var(--shell-radius-md);
87
+ background: var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));
88
+ border: 1px solid var(--sh3-border);
89
+ border-radius: var(--sh3-radius-md);
90
90
  cursor: pointer;
91
91
  text-align: left;
92
92
  color: inherit;
@@ -100,21 +100,21 @@
100
100
  right: 6px;
101
101
  background: transparent;
102
102
  border: 0;
103
- color: var(--shell-fg-muted);
103
+ color: var(--sh3-fg-muted);
104
104
  cursor: pointer;
105
105
  padding: 2px 6px;
106
106
  font-size: 14px;
107
- border-radius: var(--shell-radius-sm, 3px);
107
+ border-radius: var(--sh3-radius-sm, 3px);
108
108
  }
109
- .project-card-edit:hover { color: var(--shell-fg); background: var(--shell-bg-elevated); }
109
+ .project-card-edit:hover { color: var(--sh3-fg); background: var(--sh3-bg-elevated); }
110
110
  .project-card:hover {
111
- border-color: var(--shell-accent);
111
+ border-color: var(--sh3-accent);
112
112
  transform: translateY(-1px);
113
113
  }
114
114
  .project-card.active {
115
- border-color: var(--shell-accent);
116
- box-shadow: 0 0 0 2px color-mix(in srgb, var(--shell-accent) 40%, transparent);
115
+ border-color: var(--sh3-accent);
116
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--sh3-accent) 40%, transparent);
117
117
  }
118
118
  .project-name { font-weight: 600; font-size: 13px; }
119
- .project-meta { font-size: 11px; color: var(--shell-fg-muted); }
119
+ .project-meta { font-size: 11px; color: var(--sh3-fg-muted); }
120
120
  </style>
@@ -53,7 +53,7 @@ export declare function listInstalledPackages(): Promise<InstalledPackage[]>;
53
53
  * Load all installed packages from IndexedDB and register them.
54
54
  *
55
55
  * Called once at boot by `bootstrap()`, before any glob-discovered shards
56
- * or the shell shard are registered. Individual package failures are logged
57
- * as warnings but do not prevent the shell from booting.
56
+ * or the sh3 shard are registered. Individual package failures are logged
57
+ * as warnings but do not prevent the sh3 from booting.
58
58
  */
59
59
  export declare function loadInstalledPackages(): Promise<void>;
@@ -163,8 +163,8 @@ export async function listInstalledPackages() {
163
163
  * Load all installed packages from IndexedDB and register them.
164
164
  *
165
165
  * Called once at boot by `bootstrap()`, before any glob-discovered shards
166
- * or the shell shard are registered. Individual package failures are logged
167
- * as warnings but do not prevent the shell from booting.
166
+ * or the sh3 shard are registered. Individual package failures are logged
167
+ * as warnings but do not prevent the sh3 from booting.
168
168
  */
169
169
  export async function loadInstalledPackages() {
170
170
  let packages;
@@ -60,7 +60,7 @@ const shimUrls = {
60
60
  // `svelte/internal/disclose-version` is a side-effect-only import (no exports).
61
61
  // Create an empty shim so the import doesn't fail.
62
62
  shimUrls['svelte/internal/disclose-version'] = URL.createObjectURL(new Blob([''], { type: 'application/javascript' }));
63
- // `sh3/tokens.css` — design tokens are already loaded by the host shell.
63
+ // `sh3/tokens.css` — design tokens are already loaded by the host sh3.
64
64
  // Bundles that import this path get a no-op so the import doesn't fail.
65
65
  shimUrls['sh3-core/tokens.css'] = URL.createObjectURL(new Blob([''], { type: 'application/javascript' }));
66
66
  // ---- bare specifier rewriting ----------------------------------------------
@@ -8,7 +8,7 @@
8
8
  */
9
9
  export const PERMISSION_DESCRIPTIONS = {
10
10
  'state:manage': {
11
- title: 'Manage shell state zones',
11
+ title: 'Manage sh3 state zones',
12
12
  description: 'Read and write state zones belonging to other shards.',
13
13
  },
14
14
  'documents:browse': {
@@ -37,7 +37,7 @@ export const PERMISSION_DESCRIPTIONS = {
37
37
  },
38
38
  'keys:mint': {
39
39
  title: 'Mint API keys',
40
- description: 'Issue long-lived access tokens for this shell.',
40
+ description: 'Issue long-lived access tokens for this sh3.',
41
41
  },
42
42
  };
43
43
  export function describePermission(id) {
@@ -3,7 +3,7 @@ import { describePermission, extractBundlePermissions, PERMISSION_DESCRIPTIONS,
3
3
  describe('describePermission', () => {
4
4
  it('returns the registered entry for a known permission id', () => {
5
5
  const result = describePermission('state:manage');
6
- expect(result.title).toBe('Manage shell state zones');
6
+ expect(result.title).toBe('Manage sh3 state zones');
7
7
  expect(result.description).toContain('state zones');
8
8
  });
9
9
  it('covers every permission advertised in the module registry', () => {
@@ -95,7 +95,7 @@ describe('shell-shard programmatic verbs (integration)', () => {
95
95
  throw new Error('unreachable');
96
96
  expect(entry.text).toMatch(/no active app/);
97
97
  });
98
- it('shards emits a rich entry containing the active shell shard', async () => {
98
+ it('shards emits a rich entry containing the active sh3 shard', async () => {
99
99
  const out = await runVerbProgrammatic('shell', 'shards', []);
100
100
  const entry = out.scrollback[0];
101
101
  expect(entry.kind).toBe('rich');
@@ -140,7 +140,7 @@ describe('shell-shard programmatic verbs (integration)', () => {
140
140
  expect(entry.level).toBe('warn');
141
141
  });
142
142
  it('zone with shardId+zoneName emits a rich entry exposing data.value', async () => {
143
- const out = await runVerbProgrammatic('shell', 'zone', ['shell', 'workspace']);
143
+ const out = await runVerbProgrammatic('shell', 'zone', ['sh3', 'workspace']);
144
144
  const entry = out.scrollback[0];
145
145
  expect(entry.kind).toBe('rich');
146
146
  if (entry.kind !== 'rich')
@@ -2,7 +2,7 @@
2
2
  * runVerbProgrammatic — programmatic verb dispatch with synthesized VerbContext.
3
3
  *
4
4
  * Used by `ctx.runVerb(...)` (see shards/activate.svelte.ts). Builds a
5
- * sink scrollback that captures entries into an array, a headless ShellApi
5
+ * sink scrollback that captures entries into an array, a headless Sh3Api
6
6
  * (no terminal-bound state), a stub SessionClient, and a real TenantFsClient.
7
7
  * Verbs that opt in via `programmatic: true` run against this synthesized
8
8
  * context; non-programmatic verbs are rejected.
@@ -13,11 +13,11 @@
13
13
  * fire-and-forget semantics).
14
14
  *
15
15
  * Resolution: prefixed names (`'sh3-store:install'`) look up directly;
16
- * unprefixed shell names (`'apps'`) resolve against shardId 'shell'.
16
+ * unprefixed sh3 names (`'apps'`) resolve against shardId 'sh3'.
17
17
  */
18
18
  import { activeShards } from '../shards/activate.svelte';
19
19
  import { getVerb, listVerbsWithShard } from '../shards/registry';
20
- import { makeShellApiHeadless } from '../shell-shard/shellApi';
20
+ import { makeSh3ApiHeadless } from '../sh3Api/headless';
21
21
  import { Scrollback } from '../shell-shard/scrollback.svelte';
22
22
  import { SessionClient } from '../shell-shard/session-client.svelte';
23
23
  import { TenantFsClient } from '../shell-shard/tenant-fs-client';
@@ -53,7 +53,7 @@ export async function runVerbProgrammatic(shardId, name, args, opts) {
53
53
  async function buildProgrammaticContext(b) {
54
54
  var _a, _b;
55
55
  const ctx = {
56
- shell: makeShellApiHeadless(),
56
+ sh3: makeSh3ApiHeadless(),
57
57
  scrollback: b.sinkScrollback,
58
58
  session: makeStubSession(),
59
59
  cwd: '/',
@@ -129,18 +129,18 @@ describe('runVerbProgrammatic', () => {
129
129
  await activateShard('tester');
130
130
  await expect(runVerbProgrammatic('tester', 'tester:boom', [])).rejects.toThrow('kaboom');
131
131
  });
132
- it('exposes vctx.shell.dispatchToTerminal that returns no-active-context', async () => {
132
+ it('exposes vctx.sh3.dispatchToTerminal that returns no-active-context', async () => {
133
133
  let observed = undefined;
134
134
  registerShard({
135
135
  manifest: { id: 'tester', label: 'T', version: '0.0.0', views: [] },
136
136
  activate(ctx) {
137
- ctx.registerVerb(makeVerb('peek-shell', true, async (vctx) => {
138
- observed = vctx.shell.dispatchToTerminal('foo');
137
+ ctx.registerVerb(makeVerb('peek-sh3', true, async (vctx) => {
138
+ observed = vctx.sh3.dispatchToTerminal('foo');
139
139
  }));
140
140
  },
141
141
  });
142
142
  await activateShard('tester');
143
- await runVerbProgrammatic('tester', 'tester:peek-shell', []);
143
+ await runVerbProgrammatic('tester', 'tester:peek-sh3', []);
144
144
  expect(observed).toMatchObject({
145
145
  ok: false,
146
146
  error: 'no-active-context',
@@ -54,7 +54,7 @@
54
54
  position: absolute;
55
55
  inset: 0;
56
56
  overflow: hidden;
57
- background: var(--shell-grad-bg, var(--shell-bg));
58
- color: var(--shell-fg);
57
+ background: var(--sh3-grad-bg, var(--sh3-bg));
58
+ color: var(--sh3-fg);
59
59
  }
60
60
  </style>
@@ -94,17 +94,17 @@
94
94
  </div>
95
95
 
96
96
  <style>
97
- .keys-peers { padding: 24px; font-family: system-ui, sans-serif; color: var(--shell-fg); }
97
+ .keys-peers { padding: 24px; font-family: system-ui, sans-serif; color: var(--sh3-fg); }
98
98
  .keys-peers-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
99
99
  .keys-peers-header h2 { margin: 0; font-size: 18px; }
100
100
  .keys-peers-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
101
- .keys-peers-item { display: flex; justify-content: space-between; align-items: flex-start; padding: 12px 16px; background: var(--shell-bg-elevated, #252540); border: 1px solid var(--shell-border, #3a3a5c); border-radius: var(--shell-radius, 6px); gap: 12px; }
101
+ .keys-peers-item { display: flex; justify-content: space-between; align-items: flex-start; padding: 12px 16px; background: var(--sh3-bg-elevated, #252540); border: 1px solid var(--sh3-border, #3a3a5c); border-radius: var(--sh3-radius, 6px); gap: 12px; }
102
102
  .keys-peers-info { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
103
103
  .keys-peers-label { font-weight: 600; }
104
- .keys-peers-meta { font-size: 11px; color: var(--shell-fg-subtle); }
104
+ .keys-peers-meta { font-size: 11px; color: var(--sh3-fg-subtle); }
105
105
  .keys-peers-actions { display: flex; gap: 6px; flex-shrink: 0; align-items: flex-start; padding-top: 2px; }
106
- .keys-peers-btn-danger { background: transparent; color: var(--shell-error, #d32f2f); border: 1px solid var(--shell-error, #d32f2f); font-size: 12px; padding: 4px 10px; border-radius: var(--shell-radius, 6px); cursor: pointer; }
107
- .keys-peers-btn-secondary { background: transparent; color: var(--shell-fg-subtle); border: 1px solid var(--shell-border, #3a3a5c); font-size: 12px; padding: 4px 10px; border-radius: var(--shell-radius, 6px); cursor: pointer; }
108
- .keys-peers-muted { color: var(--shell-fg-muted); font-style: italic; }
109
- .keys-peers-error { color: var(--shell-error, #d32f2f); font-size: 13px; }
106
+ .keys-peers-btn-danger { background: transparent; color: var(--sh3-error, #d32f2f); border: 1px solid var(--sh3-error, #d32f2f); font-size: 12px; padding: 4px 10px; border-radius: var(--sh3-radius, 6px); cursor: pointer; }
107
+ .keys-peers-btn-secondary { background: transparent; color: var(--sh3-fg-subtle); border: 1px solid var(--sh3-border, #3a3a5c); font-size: 12px; padding: 4px 10px; border-radius: var(--sh3-radius, 6px); cursor: pointer; }
108
+ .keys-peers-muted { color: var(--sh3-fg-muted); font-style: italic; }
109
+ .keys-peers-error { color: var(--sh3-error, #d32f2f); font-size: 13px; }
110
110
  </style>
@@ -0,0 +1,4 @@
1
+ import type { Sh3Api } from '../shell-shard/registry';
2
+ import type { ZoneManager } from '../state/types';
3
+ export declare function makeSh3ApiHeadless(zones?: ZoneManager): Sh3Api;
4
+ export declare function makeSh3ApiForTest(): Sh3Api;
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Headless ShellApi factory.
2
+ * Headless Sh3Api factory.
3
3
  *
4
4
  * Built only from framework primitives (apps registry, layout inspection,
5
5
  * auth, float manager). No Svelte component imports — safe to load from
@@ -15,7 +15,7 @@ import { registeredShards, listStandaloneViews } from '../shards/activate.svelte
15
15
  import { inspectActiveLayout, focusView, closeTab, popoutView, dockFloat, dockIntoActiveLayout, locateSlot as locateSlotInActiveLayout, } from '../layout/inspection';
16
16
  import { floatManager } from '../overlays/float';
17
17
  import { getUser, isAdmin } from '../auth/index';
18
- import { makeDispatchToTerminal } from './dispatch-to-terminal';
18
+ import { makeDispatchToTerminal } from '../shell-shard/dispatch-to-terminal';
19
19
  const KNOWN_ZONES = ['ephemeral', 'session', 'workspace', 'user'];
20
20
  function collectTabEntries(node) {
21
21
  if (node.type === 'tabs') {
@@ -29,7 +29,7 @@ function collectTabEntries(node) {
29
29
  }
30
30
  return [];
31
31
  }
32
- export function makeShellApiHeadless(zones) {
32
+ export function makeSh3ApiHeadless(zones) {
33
33
  return {
34
34
  listApps() {
35
35
  return listRegisteredApps().map((m) => ({ id: m.id, label: m.label }));
@@ -168,6 +168,6 @@ export function makeShellApiHeadless(zones) {
168
168
  dispatchToTerminal: makeDispatchToTerminal({ headless: true }),
169
169
  };
170
170
  }
171
- export function makeShellApiForTest() {
172
- return makeShellApiHeadless();
171
+ export function makeSh3ApiForTest() {
172
+ return makeSh3ApiHeadless();
173
173
  }
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from 'vitest';
2
- import { makeShellApiHeadless } from './shellApi';
2
+ import { makeSh3ApiHeadless } from './headless';
3
3
  function makeMockZoneManager() {
4
4
  const data = {
5
5
  ephemeral: {},
@@ -14,46 +14,46 @@ function makeMockZoneManager() {
14
14
  clearAll: () => { },
15
15
  };
16
16
  }
17
- describe('shellApi listZones', () => {
17
+ describe('sh3Api listZones', () => {
18
18
  it('returns empty when no ZoneManager provided (stub mode)', () => {
19
- const api = makeShellApiHeadless();
19
+ const api = makeSh3ApiHeadless();
20
20
  expect(api.listZones()).toEqual([]);
21
21
  });
22
22
  it('returns one row per shard with the zones it has data in', () => {
23
23
  var _a, _b;
24
- const api = makeShellApiHeadless(makeMockZoneManager());
24
+ const api = makeSh3ApiHeadless(makeMockZoneManager());
25
25
  const rows = api.listZones();
26
26
  const byShard = new Map(rows.map((r) => [r.shardId, r.zones]));
27
27
  expect((_a = byShard.get('shard-a')) === null || _a === void 0 ? void 0 : _a.sort()).toEqual(['session', 'workspace']);
28
28
  expect((_b = byShard.get('shard-b')) === null || _b === void 0 ? void 0 : _b.sort()).toEqual(['user', 'workspace']);
29
29
  });
30
30
  it('filters by shardId when provided', () => {
31
- const api = makeShellApiHeadless(makeMockZoneManager());
31
+ const api = makeSh3ApiHeadless(makeMockZoneManager());
32
32
  const rows = api.listZones('shard-a');
33
33
  expect(rows).toHaveLength(1);
34
34
  expect(rows[0].shardId).toBe('shard-a');
35
35
  expect(rows[0].zones.sort()).toEqual(['session', 'workspace']);
36
36
  });
37
37
  it('returns empty array for unknown shardId', () => {
38
- const api = makeShellApiHeadless(makeMockZoneManager());
38
+ const api = makeSh3ApiHeadless(makeMockZoneManager());
39
39
  expect(api.listZones('not-a-shard')).toEqual([]);
40
40
  });
41
41
  });
42
- describe('shellApi readZone', () => {
42
+ describe('sh3Api readZone', () => {
43
43
  it('returns null when no ZoneManager provided', () => {
44
- const api = makeShellApiHeadless();
44
+ const api = makeSh3ApiHeadless();
45
45
  expect(api.readZone('shard-a', 'workspace')).toBe(null);
46
46
  });
47
47
  it('returns peeked value via ZoneManager', () => {
48
- const api = makeShellApiHeadless(makeMockZoneManager());
48
+ const api = makeSh3ApiHeadless(makeMockZoneManager());
49
49
  expect(api.readZone('shard-a', 'workspace')).toEqual({ bar: 2 });
50
50
  });
51
51
  it('returns null for unknown zone name', () => {
52
- const api = makeShellApiHeadless(makeMockZoneManager());
52
+ const api = makeSh3ApiHeadless(makeMockZoneManager());
53
53
  expect(api.readZone('shard-a', 'bogus')).toBe(null);
54
54
  });
55
55
  it('returns null for missing shard entry', () => {
56
- const api = makeShellApiHeadless(makeMockZoneManager());
56
+ const api = makeSh3ApiHeadless(makeMockZoneManager());
57
57
  expect(api.readZone('not-a-shard', 'workspace')).toBe(null);
58
58
  });
59
59
  });
@@ -1,5 +1,5 @@
1
1
  /*
2
- * shell.window — host-side facade for spawning satellite windows.
2
+ * sh3.window — host-side facade for spawning satellite windows.
3
3
  *
4
4
  * Under Tauri, `spawnSatellite` invokes the `sh3_spawn_satellite` Rust
5
5
  * command which opens a native WebviewWindow pointed at the embedded
@@ -24,7 +24,7 @@ function nextLabel() {
24
24
  export async function spawnSatellite(payload, opts = {}) {
25
25
  var _a, _b, _c, _d;
26
26
  if (!isTauri()) {
27
- console.warn('[sh3] shell.window.spawn called outside Tauri — no-op');
27
+ console.warn('[sh3] sh3.window.spawn called outside Tauri — no-op');
28
28
  return '';
29
29
  }
30
30
  const { invoke } = await import('@tauri-apps/api/core');
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect, vi, beforeEach } from 'vitest';
2
2
  import { spawnSatellite } from './window';
3
- describe('shell.window.spawn (non-Tauri)', () => {
3
+ describe('sh3.window.spawn (non-Tauri)', () => {
4
4
  beforeEach(() => {
5
5
  delete globalThis.__TAURI_INTERNALS__;
6
6
  });
@@ -11,14 +11,14 @@ import { type OpenContextMenuOpts, type OpenPaletteOpts } from './actions/listen
11
11
  import type { ActiveActionDescriptor } from './actions/types';
12
12
  import { type DispatchToTerminalResult } from './shell-shard/dispatch-to-terminal';
13
13
  /**
14
- * The process-wide shell singleton exposed to shards and the shell's own
14
+ * The process-wide sh3 singleton exposed to shards and the sh3's own
15
15
  * internal code. Provides state zone creation and overlay managers.
16
16
  * Shards receive a pre-bound version via `ShardContext` rather than
17
- * accessing `shell` directly.
17
+ * accessing `sh3` directly.
18
18
  */
19
- export interface Shell {
19
+ export interface Sh3 {
20
20
  /**
21
- * Declare the state zones a shard (or the shell itself) wants to use.
21
+ * Declare the state zones a shard (or the sh3 itself) wants to use.
22
22
  * Returns a live reactive object per declared zone. Persistent zones
23
23
  * are hydrated from the backend before the call returns.
24
24
  */
@@ -33,12 +33,12 @@ export interface Shell {
33
33
  float: FloatManager;
34
34
  /** Named layout presets per app. See overlays/presets.ts. */
35
35
  presets: PresetManager;
36
- /** Conflict manager view. Shell-owned modal for conflict arbitration. */
36
+ /** Conflict manager view. Sh3-owned modal for conflict arbitration. */
37
37
  conflicts: ConflictsApi;
38
38
  /** Color picker. Falls back to native <input type="color"> when no picker shard is contributed. */
39
39
  color: ColorApi;
40
40
  /** Actions facade — rebind keys, query bindings, open menus/palette. */
41
- actions: ShellActionsApi;
41
+ actions: Sh3ActionsApi;
42
42
  /**
43
43
  * Dispatch `line` through a Terminal view's normal submit path. Used by
44
44
  * views outside a verb context (floating pickers, dialogs) to drive a
@@ -46,7 +46,7 @@ export interface Shell {
46
46
  * focused → sole → fail. Returns synchronously with the routing outcome;
47
47
  * the dispatch itself runs fire-and-forget.
48
48
  *
49
- * Mirrors `ShellApi.dispatchToTerminal` (the verb-side surface). Both
49
+ * Mirrors `Sh3Api.dispatchToTerminal` (the verb-side surface). Both
50
50
  * read the same module-scoped registry of live Terminal.svelte instances.
51
51
  */
52
52
  dispatchToTerminal(line: string): DispatchToTerminalResult;
@@ -55,7 +55,7 @@ export interface Shell {
55
55
  * API for managing action bindings and triggering menus/palette
56
56
  * programmatically (e.g. from a future settings UI shard).
57
57
  */
58
- export interface ShellActionsApi {
58
+ export interface Sh3ActionsApi {
59
59
  /** Persist a custom shortcut for an action and refresh live state if the app is active. */
60
60
  rebind(appId: string, actionId: string, shortcut: string | null): Promise<void>;
61
61
  /** Remove a custom shortcut override and refresh live state if the app is active. */
@@ -72,7 +72,7 @@ export interface ShellActionsApi {
72
72
  * order. See {@link ActiveActionDescriptor}.
73
73
  *
74
74
  * Non-reactive: returns a fresh array on each call. Subscribe via
75
- * {@link ShellActionsApi.onActiveChange} to re-call when the active
75
+ * {@link Sh3ActionsApi.onActiveChange} to re-call when the active
76
76
  * set or shortcuts change.
77
77
  */
78
78
  listActive(): ActiveActionDescriptor[];
@@ -83,5 +83,5 @@ export interface ShellActionsApi {
83
83
  */
84
84
  onActiveChange(cb: () => void): () => void;
85
85
  }
86
- /** The process-wide shell instance. Framework-internal code uses this directly; shards receive a scoped view via `ShardContext`. */
87
- export declare const shell: Shell;
86
+ /** The process-wide sh3 instance. Framework-internal code uses this directly; shards receive a scoped view via `ShardContext`. */
87
+ export declare const sh3: Sh3;
@@ -1,5 +1,5 @@
1
1
  /*
2
- * shell — the framework-facing entry point passed to shards.
2
+ * sh3 — the framework-facing entry point passed to shards.
3
3
  *
4
4
  * Conceptually this is the object a shard receives from its activation
5
5
  * callback; it exposes the APIs the shard is allowed to touch.
@@ -8,11 +8,11 @@
8
8
  * Phase 4: registerView (lives on ShardContext, not here).
9
9
  * Phase 5: modal / popup / toast overlay managers.
10
10
  *
11
- * For now `shell` is a module-level singleton. Once the shard lifecycle
12
- * exists in a fuller form, per-shard shells will be constructed per
11
+ * For now `sh3` is a module-level singleton. Once the shard lifecycle
12
+ * exists in a fuller form, per-shard sh3 instances will be constructed per
13
13
  * activation with the shardId baked in, so shards no longer need to pass
14
14
  * their own id to `state`. Overlay managers stay process-wide because
15
- * the layer stack is a shell-global resource.
15
+ * the layer stack is a sh3-global resource.
16
16
  */
17
17
  import { createStateZones } from './state/zones.svelte';
18
18
  import { modalManager } from './overlays/modal';
@@ -20,15 +20,15 @@ import { popupManager } from './overlays/popup';
20
20
  import { toastManager } from './overlays/toast';
21
21
  import { floatManager } from './overlays/float';
22
22
  import { presetManager } from './overlays/presets';
23
- import { conflictsApi } from './conflicts/shell-api';
24
- import { colorApi } from './color/shell-api';
23
+ import { conflictsApi } from './conflicts/sh3-api';
24
+ import { colorApi } from './color/sh3-api';
25
25
  import { loadUserBindings, saveUserBinding } from './actions/bindings-store';
26
26
  import { openContextMenu as listenersOpenContextMenu, openPalette as listenersOpenPalette, } from './actions/listeners';
27
27
  import { setUserBindings, getLiveDispatcherState, onActiveChange as onActiveChangeState, __notifyActiveChange, } from './actions/state.svelte';
28
28
  import { listActions, onActionsChange } from './actions/registry';
29
29
  import { listActiveFromEntries } from './actions/listActive';
30
30
  import { makeDispatchToTerminal } from './shell-shard/dispatch-to-terminal';
31
- const shellActions = {
31
+ const sh3Actions = {
32
32
  async rebind(appId, actionId, shortcut) {
33
33
  await saveUserBinding(appId, actionId, shortcut);
34
34
  const current = getLiveDispatcherState();
@@ -65,8 +65,8 @@ const shellActions = {
65
65
  };
66
66
  },
67
67
  };
68
- /** The process-wide shell instance. Framework-internal code uses this directly; shards receive a scoped view via `ShardContext`. */
69
- export const shell = {
68
+ /** The process-wide sh3 instance. Framework-internal code uses this directly; shards receive a scoped view via `ShardContext`. */
69
+ export const sh3 = {
70
70
  state: createStateZones,
71
71
  modal: modalManager,
72
72
  popup: popupManager,
@@ -75,6 +75,6 @@ export const shell = {
75
75
  presets: presetManager,
76
76
  conflicts: conflictsApi,
77
77
  color: colorApi,
78
- actions: shellActions,
78
+ actions: sh3Actions,
79
79
  dispatchToTerminal: makeDispatchToTerminal({ headless: false }),
80
80
  };
@@ -0,0 +1 @@
1
+ export {};