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
@@ -54,33 +54,33 @@
54
54
  .uninstall-dialog {
55
55
  padding: 16px 20px;
56
56
  max-width: 460px;
57
- color: var(--shell-fg);
58
- background: var(--shell-bg);
57
+ color: var(--sh3-fg);
58
+ background: var(--sh3-bg);
59
59
  font: inherit;
60
60
  }
61
61
  h2 { margin: 0 0 8px; font-size: 16px; }
62
62
  p { margin: 4px 0; font-size: 13px; }
63
- .hint { color: var(--shell-fg-muted); font-size: 12px; }
64
- .error { color: var(--shell-error, #c33); }
63
+ .hint { color: var(--sh3-fg-muted); font-size: 12px; }
64
+ .error { color: var(--sh3-error, #c33); }
65
65
  code {
66
- font-family: var(--shell-font-mono, monospace);
67
- background: var(--shell-bg-elevated);
66
+ font-family: var(--sh3-font-mono, monospace);
67
+ background: var(--sh3-bg-elevated);
68
68
  padding: 0 4px;
69
- border-radius: var(--shell-radius-sm, 3px);
69
+ border-radius: var(--sh3-radius-sm, 3px);
70
70
  }
71
71
  .actions { display: flex; gap: 8px; margin-top: 16px; }
72
72
  .actions button {
73
- background: var(--shell-bg-elevated);
74
- color: var(--shell-fg);
75
- border: 1px solid var(--shell-border);
76
- border-radius: var(--shell-radius-sm, 3px);
73
+ background: var(--sh3-bg-elevated);
74
+ color: var(--sh3-fg);
75
+ border: 1px solid var(--sh3-border);
76
+ border-radius: var(--sh3-radius-sm, 3px);
77
77
  padding: 6px 14px; font: inherit; cursor: pointer;
78
78
  }
79
79
  .actions button.danger {
80
- background: var(--shell-error, #c33);
80
+ background: var(--sh3-error, #c33);
81
81
  color: #fff;
82
- border-color: var(--shell-error, #c33);
82
+ border-color: var(--sh3-error, #c33);
83
83
  }
84
- .actions button:hover { border-color: var(--shell-accent); }
84
+ .actions button:hover { border-color: var(--sh3-accent); }
85
85
  .actions button:disabled { opacity: 0.5; cursor: not-allowed; }
86
86
  </style>
@@ -6,7 +6,7 @@
6
6
  * - `sh3-store:browse` — searchable/filterable catalog of available packages
7
7
  *
8
8
  * Uninstall and update flows for already-installed packages live on the
9
- * shell home card's context menu (see `sh3core-shard/appActions.ts`); this
9
+ * sh3 home card's context menu (see `sh3core-shard/appActions.ts`); this
10
10
  * shard exposes the underlying operations as verbs (`installVerb`,
11
11
  * `uninstallVerb`, `updateVerb`, `appinfoVerb`) and via `storeContext`.
12
12
  *
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Store verbs — shell-accessible commands for the sh3-store shard.
2
+ * Store verbs — sh3-accessible commands for the sh3-store shard.
3
3
  *
4
4
  * Registered during storeShard.activate() via ctx.registerVerb().
5
5
  * Auto-prefixed to sh3-store:install, sh3-store:uninstall, sh3-store:appinfo.
@@ -63,7 +63,7 @@ export declare function unloadApp(id: string, skipSwitchToHome?: boolean): void;
63
63
  */
64
64
  export declare function unregisterApp(id: string): void;
65
65
  /**
66
- * Return to the shell home view without unloading the active app. The
66
+ * Return to the sh3 home view without unloading the active app. The
67
67
  * app's shards stay running, its layout proxy stays attached with its
68
68
  * refcount hold intact, and its view containers stay alive in the pool.
69
69
  * Launching the same app again is a root swap only.
@@ -2,9 +2,9 @@
2
2
  * App lifecycle — launch, unload, return-to-home.
3
3
  *
4
4
  * All three functions operate on the shared apps registry and the layout
5
- * manager. `launchApp` is public (shell home calls it); `unloadApp` is
5
+ * manager. `launchApp` is public (sh3 home calls it); `unloadApp` is
6
6
  * internal (called from launchApp when replacing a different app);
7
- * `returnToHome` is public (shell UI calls it).
7
+ * `returnToHome` is public (sh3 UI calls it).
8
8
  *
9
9
  * "Last active app" is persisted in the user state zone under the
10
10
  * reserved shardId `__sh3core__:last-app`. The value shape is simply
@@ -147,7 +147,7 @@ export async function launchApp(id, opts = {}) {
147
147
  toastManager.notify(`Couldn't launch "${(_e = app.manifest.label) !== null && _e !== void 0 ? _e : id}": ${err instanceof Error ? err.message : String(err)}`, { level: 'error', duration: 6000 });
148
148
  }
149
149
  catch (_j) {
150
- // Toast layer not mounted (e.g. early boot, tests without Shell).
150
+ // Toast layer not mounted (e.g. early boot, tests without Sh3).
151
151
  // Best-effort UX — original error must still propagate.
152
152
  }
153
153
  throw err;
@@ -236,7 +236,7 @@ export function unregisterApp(id) {
236
236
  }
237
237
  // ---------- return to home -----------------------------------------------
238
238
  /**
239
- * Return to the shell home view without unloading the active app. The
239
+ * Return to the sh3 home view without unloading the active app. The
240
240
  * app's shards stay running, its layout proxy stays attached with its
241
241
  * refcount hold intact, and its view containers stay alive in the pool.
242
242
  * Launching the same app again is a root swap only.
@@ -446,8 +446,8 @@ describe('sh3coreShard — sh3.app.reset-layout registration', () => {
446
446
  initialLayout: [{ name: 'main', tree: makeTree(makeSlotNode('x')) }],
447
447
  }));
448
448
  await launchApp('reset-action-1');
449
- const { shell } = await import('../shellRuntime.svelte');
450
- const actions = shell.actions.listActive();
449
+ const { sh3 } = await import('../sh3Runtime.svelte');
450
+ const actions = sh3.actions.listActive();
451
451
  const reset = actions.find((a) => a.id === 'sh3.app.reset-layout');
452
452
  expect(reset).toBeDefined();
453
453
  expect(reset === null || reset === void 0 ? void 0 : reset.label).toBe('Reset Current Layout');
@@ -467,10 +467,10 @@ describe('sh3coreShard — sh3.app.reset-layout registration', () => {
467
467
  initialLayout: [{ name: 'main', tree: makeTree(makeSlotNode('x')) }],
468
468
  }));
469
469
  await launchApp('reset-action-2');
470
- const { shell } = await import('../shellRuntime.svelte');
471
- expect(shell.actions.listActive().some((a) => a.id === 'sh3.app.reset-layout')).toBe(true);
470
+ const { sh3 } = await import('../sh3Runtime.svelte');
471
+ expect(sh3.actions.listActive().some((a) => a.id === 'sh3.app.reset-layout')).toBe(true);
472
472
  await returnToHome();
473
- expect(shell.actions.listActive().some((a) => a.id === 'sh3.app.reset-layout')).toBe(false);
473
+ expect(sh3.actions.listActive().some((a) => a.id === 'sh3.app.reset-layout')).toBe(false);
474
474
  });
475
475
  });
476
476
  // ---------------------------------------------------------------------------
@@ -6,7 +6,7 @@ import type { App, AppManifest } from './types';
6
6
  */
7
7
  export declare const registeredApps: Map<string, App>;
8
8
  /**
9
- * Reactive slot tracking the currently-active app id. Null when the shell is
9
+ * Reactive slot tracking the currently-active app id. Null when the sh3 is
10
10
  * showing the home screen or no app has been launched yet. Phase 8 allows at
11
11
  * most one active app at a time.
12
12
  */
@@ -40,7 +40,7 @@ export declare function __resetBreadcrumbForTest(): void;
40
40
  */
41
41
  export declare function registerApp(app: App): void;
42
42
  /**
43
- * Reactive snapshot of all registered app manifests. Shell home iterates
43
+ * Reactive snapshot of all registered app manifests. Sh3 home iterates
44
44
  * this to populate its launcher list. Returns only manifests so callers
45
45
  * don't reach into app bodies (initialLayout, activate hook) — those are
46
46
  * launch-time concerns.
@@ -3,7 +3,7 @@
3
3
  * single slot for the currently-active app.
4
4
  *
5
5
  * Registration is called from the host (main.ts glob loop or a future
6
- * runtime loader). The shell home view reads `listRegisteredApps()`
6
+ * runtime loader). The sh3 home view reads `listRegisteredApps()`
7
7
  * reactively so newly-registered apps appear in the list without
8
8
  * reboot. `activeApp` tracks which app (if any) is currently launched;
9
9
  * phase 8 allows at most one.
@@ -15,7 +15,7 @@
15
15
  */
16
16
  export const registeredApps = $state(new Map());
17
17
  /**
18
- * Reactive slot tracking the currently-active app id. Null when the shell is
18
+ * Reactive slot tracking the currently-active app id. Null when the sh3 is
19
19
  * showing the home screen or no app has been launched yet. Phase 8 allows at
20
20
  * most one active app at a time.
21
21
  */
@@ -51,7 +51,7 @@ export function registerApp(app) {
51
51
  registeredApps.set(app.manifest.id, app);
52
52
  }
53
53
  /**
54
- * Reactive snapshot of all registered app manifests. Shell home iterates
54
+ * Reactive snapshot of all registered app manifests. Sh3 home iterates
55
55
  * this to populate its launcher list. Returns only manifests so callers
56
56
  * don't reach into app bodies (initialLayout, activate hook) — those are
57
57
  * launch-time concerns.
@@ -53,7 +53,7 @@ export interface AppManifest {
53
53
  */
54
54
  layoutVersion: number;
55
55
  /**
56
- * When true, the app is only visible on the shell home screen in
56
+ * When true, the app is only visible on the sh3 home screen in
57
57
  * admin mode. Server-side routes may still enforce their own auth
58
58
  * independently. Defaults to false (visible to everyone).
59
59
  */
@@ -65,15 +65,15 @@
65
65
  align-items: center;
66
66
  justify-content: center;
67
67
  gap: 12px;
68
- padding: 6px var(--shell-pad-md, 12px);
69
- background: color-mix(in srgb, var(--shell-accent, #7c7cf0) 15%, transparent);
70
- border-bottom: 1px solid var(--shell-border, #3a3a5c);
68
+ padding: 6px var(--sh3-pad-md, 12px);
69
+ background: color-mix(in srgb, var(--sh3-accent, #7c7cf0) 15%, transparent);
70
+ border-bottom: 1px solid var(--sh3-border, #3a3a5c);
71
71
  font-size: 12px;
72
- color: var(--shell-fg, #e0e0e0);
72
+ color: var(--sh3-fg, #e0e0e0);
73
73
  }
74
74
  .guest-banner-action {
75
75
  padding: 3px 10px;
76
- color: var(--shell-bg, #1a1a2e);
76
+ color: var(--sh3-bg, #1a1a2e);
77
77
  font-size: 11px;
78
78
  font-weight: 600;
79
79
  }
@@ -91,9 +91,9 @@
91
91
  flex-direction: column;
92
92
  gap: 12px;
93
93
  padding: 32px;
94
- background: var(--shell-bg-elevated, #252540);
95
- border: 1px solid var(--shell-border, #3a3a5c);
96
- border-radius: var(--shell-radius-lg, 12px);
94
+ background: var(--sh3-bg-elevated, #252540);
95
+ border: 1px solid var(--sh3-border, #3a3a5c);
96
+ border-radius: var(--sh3-radius-lg, 12px);
97
97
  min-width: 300px;
98
98
  }
99
99
  .guest-signin-form {
@@ -103,32 +103,32 @@
103
103
  }
104
104
  .guest-signin-input {
105
105
  padding: 8px 12px;
106
- background: var(--shell-bg, #1a1a2e);
107
- color: var(--shell-fg, #e0e0e0);
108
- border: 1px solid var(--shell-border, #3a3a5c);
109
- border-radius: var(--shell-radius, 6px);
106
+ background: var(--sh3-bg, #1a1a2e);
107
+ color: var(--sh3-fg, #e0e0e0);
108
+ border: 1px solid var(--sh3-border, #3a3a5c);
109
+ border-radius: var(--sh3-radius, 6px);
110
110
  font-size: 13px;
111
111
  }
112
- .guest-signin-input::placeholder { color: var(--shell-fg-muted, #888); }
112
+ .guest-signin-input::placeholder { color: var(--sh3-fg-muted, #888); }
113
113
  .guest-signin-actions { display: flex; gap: 8px; }
114
114
  .guest-signin-btn {
115
115
  flex: 1;
116
116
  padding: 8px;
117
- color: var(--shell-bg, #1a1a2e);
117
+ color: var(--sh3-bg, #1a1a2e);
118
118
  font-weight: 600;
119
119
  }
120
120
  .guest-signin-btn:disabled { opacity: 0.6; cursor: not-allowed; }
121
121
  .guest-signin-cancel {
122
122
  padding: 8px 12px;
123
123
  background: transparent;
124
- color: var(--shell-fg-subtle, #aaa);
125
- border: 1px solid var(--shell-border, #3a3a5c);
124
+ color: var(--sh3-fg-subtle, #aaa);
125
+ border: 1px solid var(--sh3-border, #3a3a5c);
126
126
  }
127
127
  .guest-signin-error {
128
128
  padding: 6px 10px;
129
129
  font-size: 12px;
130
- color: var(--shell-error, #d32f2f);
131
- background: color-mix(in srgb, var(--shell-error, #d32f2f) 10%, transparent);
132
- border-radius: var(--shell-radius, 6px);
130
+ color: var(--sh3-error, #d32f2f);
131
+ background: color-mix(in srgb, var(--sh3-error, #d32f2f) 10%, transparent);
132
+ border-radius: var(--sh3-radius, 6px);
133
133
  }
134
134
  </style>
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  /**
3
- * SignInWall — standalone sign-in screen shown before shell boots.
3
+ * SignInWall — standalone sign-in screen shown before sh3 boots.
4
4
  * Mounted directly to the target element by createShell().
5
5
  */
6
6
 
@@ -134,8 +134,8 @@
134
134
  display: flex;
135
135
  align-items: center;
136
136
  justify-content: center;
137
- background: var(--shell-grad-bg, var(--shell-bg, #1a1a2e));
138
- color: var(--shell-fg, #e0e0e0);
137
+ background: var(--sh3-grad-bg, var(--sh3-bg, #1a1a2e));
138
+ color: var(--sh3-fg, #e0e0e0);
139
139
  font-family: system-ui, sans-serif;
140
140
  }
141
141
  .signin-card {
@@ -144,15 +144,15 @@
144
144
  align-items: center;
145
145
  gap: 16px;
146
146
  padding: 48px 40px;
147
- background: var(--shell-grad-bg-elevated, var(--shell-bg-elevated, #252540));
148
- border: 1px solid var(--shell-border, #3a3a5c);
149
- border-radius: var(--shell-radius-lg, 12px);
147
+ background: var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated, #252540));
148
+ border: 1px solid var(--sh3-border, #3a3a5c);
149
+ border-radius: var(--sh3-radius-lg, 12px);
150
150
  min-width: 320px;
151
151
  }
152
152
  .signin-brand {
153
153
  margin: 0 0 8px;
154
154
  font-size: 42px;
155
- color: var(--shell-accent, #7c7cf0);
155
+ color: var(--sh3-accent, #7c7cf0);
156
156
  letter-spacing: 2px;
157
157
  }
158
158
  .signin-form {
@@ -163,18 +163,18 @@
163
163
  }
164
164
  .signin-input {
165
165
  padding: 10px 14px;
166
- background: var(--shell-bg, #1a1a2e);
167
- color: var(--shell-fg, #e0e0e0);
168
- border: 1px solid var(--shell-border, #3a3a5c);
169
- border-radius: var(--shell-radius, 6px);
166
+ background: var(--sh3-bg, #1a1a2e);
167
+ color: var(--sh3-fg, #e0e0e0);
168
+ border: 1px solid var(--sh3-border, #3a3a5c);
169
+ border-radius: var(--sh3-radius, 6px);
170
170
  font-size: 14px;
171
171
  }
172
172
  .signin-input::placeholder {
173
- color: var(--shell-fg-muted, #888);
173
+ color: var(--sh3-fg-muted, #888);
174
174
  }
175
175
  .signin-btn {
176
176
  padding: 10px 16px;
177
- color: var(--shell-bg, #1a1a2e);
177
+ color: var(--sh3-bg, #1a1a2e);
178
178
  font-weight: 600;
179
179
  font-size: 14px;
180
180
  }
@@ -184,7 +184,7 @@
184
184
  }
185
185
  .signin-link {
186
186
  background: none;
187
- color: var(--shell-accent, #7c7cf0);
187
+ color: var(--sh3-accent, #7c7cf0);
188
188
  font-size: 13px;
189
189
  padding: 0;
190
190
  }
@@ -194,9 +194,9 @@
194
194
  .signin-error {
195
195
  padding: 8px 12px;
196
196
  font-size: 13px;
197
- color: var(--shell-error, #d32f2f);
198
- background: color-mix(in srgb, var(--shell-error, #d32f2f) 10%, transparent);
199
- border-radius: var(--shell-radius, 6px);
197
+ color: var(--sh3-error, #d32f2f);
198
+ background: color-mix(in srgb, var(--sh3-error, #d32f2f) 10%, transparent);
199
+ border-radius: var(--sh3-radius, 6px);
200
200
  width: 100%;
201
201
  text-align: center;
202
202
  }
@@ -4,7 +4,7 @@
4
4
  * The boot flow (createShell) calls initFromBoot() with the server's
5
5
  * boot config. After that, login/logout call the server and update
6
6
  * the reactive state. isAdmin/isGuest/isAuthenticated are reactive
7
- * getters consumed by shell components.
7
+ * getters consumed by sh3 components.
8
8
  *
9
9
  * .svelte.ts because it uses $state for reactive auth status.
10
10
  */
@@ -4,7 +4,7 @@
4
4
  * The boot flow (createShell) calls initFromBoot() with the server's
5
5
  * boot config. After that, login/logout call the server and update
6
6
  * the reactive state. isAdmin/isGuest/isAuthenticated are reactive
7
- * getters consumed by shell components.
7
+ * getters consumed by sh3 components.
8
8
  *
9
9
  * .svelte.ts because it uses $state for reactive auth status.
10
10
  */
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Satellite payload — what a host shell tells a freshly-spawned satellite
2
+ * Satellite payload — what a host sh3 tells a freshly-spawned satellite
3
3
  * window to render. Encoded as URL-safe base64 JSON in the `payload` query
4
4
  * param of the satellite's URL.
5
5
  */
@@ -22,7 +22,7 @@ export interface ColorContribution {
22
22
  priority?: number;
23
23
  open(opts: ColorPickOptions): Promise<string | null>;
24
24
  }
25
- /** Shell-level color API, mounted at `shell.color`. */
25
+ /** Sh3-level color API, mounted at `sh3.color`. */
26
26
  export interface ColorApi {
27
27
  /**
28
28
  * Open a color picker. Resolves with the chosen color as '#rrggbb'
package/dist/color/api.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * Public types for the color-picker contribution point.
3
3
  *
4
4
  * A contribution registered at COLOR_PICKER_POINT is picked by the
5
- * primitive in ./primitive.ts when `shell.color.pick()` is called.
5
+ * primitive in ./primitive.ts when `sh3.color.pick()` is called.
6
6
  * The native <input type="color"> fallback is inlined there at priority 0;
7
7
  * contributed pickers typically register at priority >= 10.
8
8
  */
@@ -1,9 +1,9 @@
1
1
  /*
2
- * shell.color assembled API.
2
+ * sh3.color assembled API.
3
3
  *
4
4
  * The selector + inlined native fallback live in primitive.ts;
5
- * this file just binds `pick` onto the object exposed on the shell
6
- * singleton, mirroring conflicts/shell-api.ts.
5
+ * this file just binds `pick` onto the object exposed on the sh3
6
+ * singleton, mirroring conflicts/sh3-api.ts.
7
7
  */
8
8
  import { pickColor } from './primitive';
9
9
  export const colorApi = {
@@ -16,7 +16,7 @@
16
16
  skipped: string[],
17
17
  ) => void;
18
18
  onCancel: () => void;
19
- /** Provided by shell.modal.open wrapping; we must call to actually close. */
19
+ /** Provided by sh3.modal.open wrapping; we must call to actually close. */
20
20
  close: () => void;
21
21
  }
22
22
  const props: Props = $props();
@@ -11,7 +11,7 @@ interface Props {
11
11
  meta?: Record<string, unknown>;
12
12
  }>, skipped: string[]) => void;
13
13
  onCancel: () => void;
14
- /** Provided by shell.modal.open wrapping; we must call to actually close. */
14
+ /** Provided by sh3.modal.open wrapping; we must call to actually close. */
15
15
  close: () => void;
16
16
  }
17
17
  declare const ConflictModal: import("svelte").Component<Props, {}, "">;
@@ -134,21 +134,21 @@
134
134
  .sh3-conflict-detail {
135
135
  display: flex; flex-direction: column;
136
136
  width: min(920px, 96vw); height: min(640px, 90vh);
137
- background: var(--shell-bg, #1e1e1e);
138
- color: var(--shell-fg, #e0e0e0);
139
- border: 1px solid var(--shell-border, #444);
140
- border-radius: var(--shell-radius-md);
137
+ background: var(--sh3-bg, #1e1e1e);
138
+ color: var(--sh3-fg, #e0e0e0);
139
+ border: 1px solid var(--sh3-border, #444);
140
+ border-radius: var(--sh3-radius-md);
141
141
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
142
142
  }
143
143
  .sh3-conflict-detail-head {
144
- padding: 12px 16px; border-bottom: 1px solid var(--shell-border, #444);
144
+ padding: 12px 16px; border-bottom: 1px solid var(--sh3-border, #444);
145
145
  display: flex; justify-content: space-between; align-items: center;
146
146
  }
147
147
  .sh3-conflict-detail-head h3 { margin: 0; font-size: 1rem; font-weight: 600; }
148
- .sh3-conflict-detail-counter { color: var(--shell-fg-muted, #888); font-size: 0.8125rem; }
148
+ .sh3-conflict-detail-counter { color: var(--sh3-fg-muted, #888); font-size: 0.8125rem; }
149
149
  .sh3-conflict-detail-body { display: flex; flex: 1; min-height: 0; }
150
150
  .sh3-conflict-detail-rail {
151
- width: 240px; border-right: 1px solid var(--shell-border, #444);
151
+ width: 240px; border-right: 1px solid var(--sh3-border, #444);
152
152
  overflow-y: auto; display: flex; flex-direction: column;
153
153
  }
154
154
  .sh3-conflict-detail-rail-item {
@@ -157,42 +157,42 @@
157
157
  background: transparent; border: none; color: inherit;
158
158
  cursor: pointer; font: inherit; font-size: 0.8125rem;
159
159
  }
160
- .sh3-conflict-detail-rail-item:hover { background: var(--shell-input-bg, #2a2a2a); }
161
- .sh3-conflict-detail-rail-item.selected { background: var(--shell-input-bg, #2a2a2a); font-weight: 600; }
160
+ .sh3-conflict-detail-rail-item:hover { background: var(--sh3-input-bg, #2a2a2a); }
161
+ .sh3-conflict-detail-rail-item.selected { background: var(--sh3-input-bg, #2a2a2a); font-weight: 600; }
162
162
  .sh3-conflict-detail-rail-state { width: 1em; text-align: center; opacity: 0.7; }
163
- .sh3-conflict-detail-rail-state.resolved { color: var(--shell-success, #3a3); opacity: 1; }
164
- .sh3-conflict-detail-rail-state.skipped { color: var(--shell-fg-muted, #888); }
163
+ .sh3-conflict-detail-rail-state.resolved { color: var(--sh3-success, #3a3); opacity: 1; }
164
+ .sh3-conflict-detail-rail-state.skipped { color: var(--sh3-fg-muted, #888); }
165
165
  .sh3-conflict-detail-rail-label {
166
166
  flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
167
167
  }
168
168
  .sh3-conflict-detail-main { flex: 1; display: flex; flex-direction: column; min-width: 0; }
169
169
  .sh3-conflict-detail-branches {
170
170
  display: flex; gap: 12px; padding: 8px 16px;
171
- border-bottom: 1px solid var(--shell-border, #444);
171
+ border-bottom: 1px solid var(--sh3-border, #444);
172
172
  flex-wrap: wrap;
173
173
  }
174
174
  .sh3-conflict-detail-branch { display: flex; gap: 6px; align-items: center; font-size: 0.8125rem; }
175
175
  .sh3-conflict-detail-renderer { flex: 1; min-height: 0; overflow: auto; }
176
176
  .sh3-conflict-detail-foot {
177
- padding: 10px 16px; border-top: 1px solid var(--shell-border, #444);
177
+ padding: 10px 16px; border-top: 1px solid var(--sh3-border, #444);
178
178
  display: flex; justify-content: space-between; gap: 8px;
179
179
  }
180
180
  .sh3-conflict-detail-nav, .sh3-conflict-detail-actions { display: flex; gap: 8px; }
181
181
  .sh3-conflict-detail-nav button, .sh3-conflict-detail-actions button {
182
182
  padding: 6px 14px;
183
- background: var(--shell-input-bg, #2a2a2a);
184
- color: var(--shell-fg, #e0e0e0);
185
- border: 1px solid var(--shell-border, #444);
186
- border-radius: var(--shell-radius);
183
+ background: var(--sh3-input-bg, #2a2a2a);
184
+ color: var(--sh3-fg, #e0e0e0);
185
+ border: 1px solid var(--sh3-border, #444);
186
+ border-radius: var(--sh3-radius);
187
187
  font: inherit;
188
188
  font-size: 0.8125rem;
189
189
  cursor: pointer;
190
190
  }
191
191
  .sh3-conflict-detail-nav button:disabled { opacity: 0.5; cursor: not-allowed; }
192
192
  .sh3-conflict-detail-done {
193
- background: var(--shell-accent, #007acc) !important;
193
+ background: var(--sh3-accent, #007acc) !important;
194
194
  color: #fff !important;
195
195
  font-weight: 600;
196
- border-color: var(--shell-accent, #007acc) !important;
196
+ border-color: var(--sh3-accent, #007acc) !important;
197
197
  }
198
198
  </style>
@@ -31,25 +31,25 @@
31
31
 
32
32
  <style>
33
33
  .sh3-conflict-prompt { padding: 20px; display: flex; flex-direction: column; gap: 14px; min-width: 360px; max-width: 480px; }
34
- .sh3-conflict-prompt-title { margin: 0; font-size: 1.0625rem; font-weight: 600; color: var(--shell-fg, #e0e0e0); }
35
- .sh3-conflict-prompt-intro { margin: 0; color: var(--shell-fg-muted, #888); font-size: 0.875rem; }
34
+ .sh3-conflict-prompt-title { margin: 0; font-size: 1.0625rem; font-weight: 600; color: var(--sh3-fg, #e0e0e0); }
35
+ .sh3-conflict-prompt-intro { margin: 0; color: var(--sh3-fg-muted, #888); font-size: 0.875rem; }
36
36
  .sh3-conflict-prompt-actions { display: flex; flex-direction: column; gap: 8px; }
37
37
  .sh3-conflict-prompt-actions button {
38
38
  padding: 10px 14px;
39
- border-radius: var(--shell-radius);
40
- border: 1px solid var(--shell-border, #444);
41
- background: var(--shell-input-bg, #2a2a2a);
42
- color: var(--shell-fg, #e0e0e0);
39
+ border-radius: var(--sh3-radius);
40
+ border: 1px solid var(--sh3-border, #444);
41
+ background: var(--sh3-input-bg, #2a2a2a);
42
+ color: var(--sh3-fg, #e0e0e0);
43
43
  font-size: 0.875rem;
44
44
  font-family: inherit;
45
45
  cursor: pointer;
46
46
  text-align: left;
47
47
  }
48
48
  .sh3-conflict-prompt-primary {
49
- background: var(--shell-accent, #007acc) !important;
50
- border-color: var(--shell-accent, #007acc) !important;
49
+ background: var(--sh3-accent, #007acc) !important;
50
+ border-color: var(--sh3-accent, #007acc) !important;
51
51
  color: #fff !important;
52
52
  font-weight: 600;
53
53
  }
54
- .sh3-conflict-prompt-cancel { color: var(--shell-fg-muted, #888) !important; }
54
+ .sh3-conflict-prompt-cancel { color: var(--sh3-fg-muted, #888) !important; }
55
55
  </style>
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Doc-zone adapter for shell.conflicts.
2
+ * Doc-zone adapter for sh3.conflicts.
3
3
  *
4
4
  * Reads DocStatus for each requested path, filters to those actually in
5
5
  * conflict, fetches per-branch content for preview, and invokes the
@@ -101,7 +101,7 @@ export declare class ConflictPermissionError extends Error {
101
101
  export declare class ConflictSessionOrphanedError extends Error {
102
102
  constructor();
103
103
  }
104
- /** Runtime shape of `shell.conflicts`. */
104
+ /** Runtime shape of `sh3.conflicts`. */
105
105
  export interface ConflictsApi {
106
106
  resolve(items: ConflictItem[], opts?: ResolveOptions): Promise<ResolveOutcome>;
107
107
  resolveDocuments(ctx: ShardContext, input: ResolveDocumentsInput, opts?: ResolveOptions): Promise<DocsResolveOutcome>;
@@ -1,13 +1,13 @@
1
1
  /*
2
2
  * Public types for the conflict manager view.
3
3
  *
4
- * `shell.conflicts` exposes two entry points:
4
+ * `sh3.conflicts` exposes two entry points:
5
5
  * - resolve(items, opts): generic primitive
6
6
  * - resolveDocuments(ctx, input, opts): doc-zone adapter
7
7
  *
8
8
  * Shards construct ConflictItem arrays themselves (generic path) or pass
9
9
  * { shardId, paths } to the adapter (doc path). The doc-zone adapter
10
- * layers on top of the generic primitive — the shell does not know about
10
+ * layers on top of the generic primitive — the sh3 does not know about
11
11
  * documents; the adapter does.
12
12
  */
13
13
  /**
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Two registration surfaces:
5
5
  * - Built-in renderers (TextDiffRenderer, MetaOnlyRenderer) are
6
- * registered from within sh3-core at first `shell.conflicts` use via
6
+ * registered from within sh3-core at first `sh3.conflicts` use via
7
7
  * ensureBuiltInRenderersRegistered().
8
8
  * - Contributed renderers arrive via the ctx.contributions runtime
9
9
  * under CONFLICT_RENDERER_POINT. The conflict modal reads the
@@ -50,24 +50,24 @@
50
50
 
51
51
  <style>
52
52
  .sh3-conflict-meta { padding: 16px; display: flex; flex-direction: column; gap: 12px; }
53
- .sh3-conflict-meta-note { color: var(--shell-fg-muted, #888); font-size: 0.875rem; font-style: italic; }
53
+ .sh3-conflict-meta-note { color: var(--sh3-fg-muted, #888); font-size: 0.875rem; font-style: italic; }
54
54
  .sh3-conflict-meta-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
55
55
  .sh3-conflict-meta-li { margin: 0; }
56
56
  .sh3-conflict-meta-row {
57
57
  width: 100%;
58
58
  text-align: left;
59
59
  padding: 10px 12px;
60
- background: var(--shell-input-bg, #2a2a2a);
61
- color: var(--shell-fg, #e0e0e0);
62
- border: 1px solid var(--shell-border, #444);
63
- border-radius: var(--shell-radius-sm);
60
+ background: var(--sh3-input-bg, #2a2a2a);
61
+ color: var(--sh3-fg, #e0e0e0);
62
+ border: 1px solid var(--sh3-border, #444);
63
+ border-radius: var(--sh3-radius-sm);
64
64
  cursor: pointer;
65
65
  font: inherit;
66
66
  }
67
67
  .sh3-conflict-meta-row.selected {
68
- border-color: var(--shell-accent, #007acc);
69
- box-shadow: 0 0 0 2px var(--shell-focus-ring, rgba(0,122,204,0.3));
68
+ border-color: var(--sh3-accent, #007acc);
69
+ box-shadow: 0 0 0 2px var(--sh3-focus-ring, rgba(0,122,204,0.3));
70
70
  }
71
71
  .sh3-conflict-meta-origin { font-weight: 600; font-size: 0.875rem; }
72
- .sh3-conflict-meta-detail { color: var(--shell-fg-muted, #888); font-size: 0.75rem; margin-top: 2px; }
72
+ .sh3-conflict-meta-detail { color: var(--sh3-fg-muted, #888); font-size: 0.75rem; margin-top: 2px; }
73
73
  </style>