sh3-core 0.10.4 → 0.11.2

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 (122) hide show
  1. package/dist/Shell.svelte +12 -31
  2. package/dist/__test__/fixtures.js +1 -0
  3. package/dist/__test__/reset.js +6 -0
  4. package/dist/actions/CommandPalette.svelte +68 -0
  5. package/dist/actions/CommandPalette.svelte.d.ts +11 -0
  6. package/dist/actions/ContextMenu.svelte +97 -0
  7. package/dist/actions/ContextMenu.svelte.d.ts +9 -0
  8. package/dist/actions/bindings-store.d.ts +8 -0
  9. package/dist/actions/bindings-store.js +27 -0
  10. package/dist/actions/bindings-store.test.d.ts +1 -0
  11. package/dist/actions/bindings-store.test.js +25 -0
  12. package/dist/actions/bindings.d.ts +4 -0
  13. package/dist/actions/bindings.js +17 -0
  14. package/dist/actions/bindings.test.d.ts +1 -0
  15. package/dist/actions/bindings.test.js +30 -0
  16. package/dist/actions/contextMenuModel.d.ts +16 -0
  17. package/dist/actions/contextMenuModel.js +71 -0
  18. package/dist/actions/contextMenuModel.test.d.ts +1 -0
  19. package/dist/actions/contextMenuModel.test.js +44 -0
  20. package/dist/actions/dispatcher.svelte.d.ts +34 -0
  21. package/dist/actions/dispatcher.svelte.js +117 -0
  22. package/dist/actions/dispatcher.test.d.ts +1 -0
  23. package/dist/actions/dispatcher.test.js +155 -0
  24. package/dist/actions/listeners.d.ts +11 -0
  25. package/dist/actions/listeners.js +180 -0
  26. package/dist/actions/listeners.test.d.ts +1 -0
  27. package/dist/actions/listeners.test.js +149 -0
  28. package/dist/actions/palette-scorer.d.ts +11 -0
  29. package/dist/actions/palette-scorer.js +49 -0
  30. package/dist/actions/palette-scorer.test.d.ts +1 -0
  31. package/dist/actions/palette-scorer.test.js +40 -0
  32. package/dist/actions/paletteModel.d.ts +4 -0
  33. package/dist/actions/paletteModel.js +40 -0
  34. package/dist/actions/paletteModel.test.d.ts +1 -0
  35. package/dist/actions/paletteModel.test.js +33 -0
  36. package/dist/actions/registry.d.ts +10 -0
  37. package/dist/actions/registry.js +36 -0
  38. package/dist/actions/registry.test.d.ts +1 -0
  39. package/dist/actions/registry.test.js +49 -0
  40. package/dist/actions/selection.svelte.d.ts +8 -0
  41. package/dist/actions/selection.svelte.js +44 -0
  42. package/dist/actions/selection.test.d.ts +1 -0
  43. package/dist/actions/selection.test.js +51 -0
  44. package/dist/actions/shardContext.test.d.ts +1 -0
  45. package/dist/actions/shardContext.test.js +41 -0
  46. package/dist/actions/shellActions.test.d.ts +1 -0
  47. package/dist/actions/shellActions.test.js +22 -0
  48. package/dist/actions/shortcuts.d.ts +5 -0
  49. package/dist/actions/shortcuts.js +87 -0
  50. package/dist/actions/shortcuts.test.d.ts +1 -0
  51. package/dist/actions/shortcuts.test.js +49 -0
  52. package/dist/actions/state.svelte.d.ts +16 -0
  53. package/dist/actions/state.svelte.js +76 -0
  54. package/dist/actions/state.test.d.ts +1 -0
  55. package/dist/actions/state.test.js +40 -0
  56. package/dist/actions/syncMountedViewIds.test.d.ts +1 -0
  57. package/dist/actions/syncMountedViewIds.test.js +97 -0
  58. package/dist/actions/types.d.ts +56 -0
  59. package/dist/actions/types.js +7 -0
  60. package/dist/api.d.ts +2 -2
  61. package/dist/api.js +1 -1
  62. package/dist/apps/lifecycle.js +13 -3
  63. package/dist/createShell.js +4 -1
  64. package/dist/host.js +6 -3
  65. package/dist/index.d.ts +2 -0
  66. package/dist/index.js +2 -0
  67. package/dist/layout/LayoutRenderer.browser.test.js +78 -0
  68. package/dist/layout/LayoutRenderer.svelte +1 -0
  69. package/dist/layout/__screenshots__/LayoutRenderer.browser.test.ts/LayoutRenderer-browser---E-6-fixed-slots-freezes-the-handle-adjacent-to-a-fixed-pane--dblclick-does-not-collapse-1.png +0 -0
  70. package/dist/layout/__screenshots__/LayoutRenderer.browser.test.ts/LayoutRenderer-browser---E-6-fixed-slots-hides-the-collapse-widget-on-a-fixed-pane-1.png +0 -0
  71. package/dist/layout/inspection.d.ts +11 -1
  72. package/dist/layout/inspection.js +13 -1
  73. package/dist/layout/ops-locate.test.d.ts +1 -0
  74. package/dist/layout/ops-locate.test.js +103 -0
  75. package/dist/layout/ops.d.ts +8 -0
  76. package/dist/layout/ops.js +27 -0
  77. package/dist/layout/slotHostPool.svelte.js +24 -0
  78. package/dist/layout/slotHostPool.test.js +14 -0
  79. package/dist/layout/types.d.ts +15 -0
  80. package/dist/overlays/FloatFrame.svelte +23 -11
  81. package/dist/overlays/ModalFrame.svelte +9 -1
  82. package/dist/overlays/ModalFrame.svelte.d.ts +1 -0
  83. package/dist/overlays/__test__/DummyFrame.svelte +6 -0
  84. package/dist/overlays/__test__/DummyFrame.svelte.d.ts +6 -0
  85. package/dist/overlays/float.d.ts +6 -0
  86. package/dist/overlays/float.js +24 -9
  87. package/dist/overlays/float.test.js +175 -0
  88. package/dist/overlays/floatDismiss.d.ts +8 -0
  89. package/dist/overlays/floatDismiss.js +68 -0
  90. package/dist/overlays/modal.js +5 -1
  91. package/dist/overlays/modal.test.d.ts +1 -0
  92. package/dist/overlays/modal.test.js +55 -0
  93. package/dist/overlays/popup.d.ts +2 -0
  94. package/dist/overlays/popup.js +24 -4
  95. package/dist/overlays/popup.test.d.ts +1 -0
  96. package/dist/overlays/popup.test.js +95 -0
  97. package/dist/overlays/types.d.ts +17 -1
  98. package/dist/primitives/Button.svelte +144 -0
  99. package/dist/primitives/Button.svelte.d.ts +18 -0
  100. package/dist/primitives/ResizableSplitter.svelte +38 -3
  101. package/dist/primitives/ResizableSplitter.svelte.d.ts +7 -0
  102. package/dist/primitives/icon-context.d.ts +15 -0
  103. package/dist/primitives/icon-context.js +29 -0
  104. package/dist/sh3core-shard/sh3coreShard.svelte.js +50 -0
  105. package/dist/shards/activate.svelte.js +14 -0
  106. package/dist/shards/types.d.ts +19 -0
  107. package/dist/shards/types.js +5 -4
  108. package/dist/shell-shard/locateSlot.test.d.ts +1 -0
  109. package/dist/shell-shard/locateSlot.test.js +101 -0
  110. package/dist/shell-shard/shellShard.svelte.d.ts +7 -0
  111. package/dist/shell-shard/shellShard.svelte.js +34 -1
  112. package/dist/shellRuntime.svelte.d.ts +19 -0
  113. package/dist/shellRuntime.svelte.js +30 -0
  114. package/dist/tokens.css +11 -1
  115. package/dist/verbs/types.d.ts +9 -0
  116. package/dist/version.d.ts +1 -1
  117. package/dist/version.js +1 -1
  118. package/package.json +1 -1
  119. package/dist/apps/terminal/manifest.d.ts +0 -8
  120. package/dist/apps/terminal/manifest.js +0 -14
  121. package/dist/apps/terminal/terminal-app.d.ts +0 -7
  122. package/dist/apps/terminal/terminal-app.js +0 -14
@@ -12,9 +12,10 @@
12
12
  * - A ViewFactory knows how to mount a view into a raw HTMLElement and
13
13
  * return a handle the framework uses to unmount / notify of resizes.
14
14
  *
15
- * Deferred to later phases: bus scoping, command/toolbar/menu/hotkey
16
- * registration, modal provider contributions, background services, lazy
17
- * activation events. They'll slot into `ShardContext` as new `register*`
18
- * methods without disturbing the phase-4 shape.
15
+ * Action contributions (commands, hotkeys, context menus) shipped in v0.11.0
16
+ * via `ctx.actions` (see `../actions/types.ts`). Still deferred to later
17
+ * phases: bus scoping, toolbar registration, modal provider contributions,
18
+ * background services, lazy activation events. They'll slot into `ShardContext`
19
+ * as new `register*` methods without disturbing the phase-4 shape.
19
20
  */
20
21
  export { PERMISSION_KEYS_MINT, ScopeEscalationError, ConsentDeniedError } from '../keys/types';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,101 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { resetFramework } from '../__test__/reset';
3
+ import { makeApp, makeAppManifest, makeTabEntry, makeTabsNode, makeTree } from '../__test__/fixtures';
4
+ import { registerApp } from '../apps/registry.svelte';
5
+ import { launchApp } from '../apps/lifecycle';
6
+ import { floatManager, bindFloatStore } from '../overlays/float';
7
+ import { layoutStore } from '../layout/store.svelte';
8
+ import { makeShellApiForTest } from './shellShard.svelte';
9
+ describe('ShellApi.locateSlot', () => {
10
+ beforeEach(resetFramework);
11
+ it('returns docked for a slot in the docked tree', async () => {
12
+ registerApp(makeApp({
13
+ manifest: makeAppManifest({ id: 'test-app-docked' }),
14
+ initialLayout: [
15
+ {
16
+ name: 'default',
17
+ tree: makeTree(makeTabsNode([makeTabEntry({ slotId: 'dock-x' })])),
18
+ },
19
+ ],
20
+ }));
21
+ await launchApp('test-app-docked');
22
+ const shell = makeShellApiForTest();
23
+ expect(shell.locateSlot('dock-x')).toEqual({ kind: 'docked' });
24
+ });
25
+ it('returns float for a slot in a float', async () => {
26
+ var _a;
27
+ registerApp(makeApp({
28
+ manifest: makeAppManifest({ id: 'test-app-float' }),
29
+ initialLayout: [
30
+ {
31
+ name: 'default',
32
+ tree: makeTree(makeTabsNode([makeTabEntry({ slotId: 'stay-docked' })])),
33
+ },
34
+ ],
35
+ }));
36
+ await launchApp('test-app-float');
37
+ // Shell.svelte normally binds the float manager to the active tree's
38
+ // floats array during boot. In tests we bind it manually so
39
+ // floatManager.open() writes into the tree that locateSlot walks.
40
+ bindFloatStore(layoutStore.floats, () => ({ w: 1024, h: 768 }));
41
+ const floatId = floatManager.open('v', { title: 'Float X' });
42
+ const openedFloat = layoutStore.floats.find((f) => f.id === floatId);
43
+ expect(openedFloat).toBeDefined();
44
+ const tabs = openedFloat.content.type === 'tabs' ? openedFloat.content : null;
45
+ const floatSlotId = (_a = tabs === null || tabs === void 0 ? void 0 : tabs.tabs[0]) === null || _a === void 0 ? void 0 : _a.slotId;
46
+ expect(floatSlotId).toBeTruthy();
47
+ const shell = makeShellApiForTest();
48
+ expect(shell.locateSlot(floatSlotId)).toEqual({ kind: 'float', floatId });
49
+ });
50
+ it('returns null for an absent slot', async () => {
51
+ registerApp(makeApp({
52
+ manifest: makeAppManifest({ id: 'test-app-absent' }),
53
+ initialLayout: [
54
+ {
55
+ name: 'default',
56
+ tree: makeTree(makeTabsNode([makeTabEntry({ slotId: 'existing' })])),
57
+ },
58
+ ],
59
+ }));
60
+ await launchApp('test-app-absent');
61
+ const shell = makeShellApiForTest();
62
+ expect(shell.locateSlot('nonexistent-slot')).toBeNull();
63
+ });
64
+ });
65
+ import { popoutView, inspectActiveLayout } from '../layout/inspection';
66
+ describe('ShellApi.locateSlot — round-trip', () => {
67
+ beforeEach(resetFramework);
68
+ it('tracks the docked → popout → float transition', async () => {
69
+ registerApp(makeApp({
70
+ manifest: makeAppManifest({ id: 'test-app-rt' }),
71
+ initialLayout: [
72
+ {
73
+ name: 'default',
74
+ tree: makeTree(makeTabsNode([
75
+ makeTabEntry({ slotId: 'rt-1', viewId: 'rt:one' }),
76
+ makeTabEntry({ slotId: 'rt-anchor', viewId: 'rt:anchor' }),
77
+ ])),
78
+ },
79
+ ],
80
+ }));
81
+ await launchApp('test-app-rt');
82
+ // Shell.svelte would bind this at boot; in tests we do it ourselves.
83
+ bindFloatStore(layoutStore.floats, () => ({ w: 1024, h: 768 }));
84
+ const shell = makeShellApiForTest();
85
+ // Starts docked.
86
+ expect(shell.locateSlot('rt-1')).toEqual({ kind: 'docked' });
87
+ // Popout removes the original docked tab and opens a float with a
88
+ // fresh slotId wrapped around the same view.
89
+ const floatId = popoutView('rt-1');
90
+ expect(floatId).not.toBeNull();
91
+ expect(shell.locateSlot('rt-1')).toBeNull();
92
+ // The float-era slotId resolves to the new float.
93
+ const { root } = inspectActiveLayout();
94
+ const fl = root.floats.find((f) => f.id === floatId);
95
+ const floatSlot = fl.content.type === 'tabs' ? fl.content.tabs[0].slotId : '';
96
+ expect(floatSlot).toBeTruthy();
97
+ expect(shell.locateSlot(floatSlot)).toEqual({ kind: 'float', floatId });
98
+ // Anchor tab is untouched and still docked.
99
+ expect(shell.locateSlot('rt-anchor')).toEqual({ kind: 'docked' });
100
+ });
101
+ });
@@ -1,2 +1,9 @@
1
1
  import type { Shard } from '../api';
2
+ import type { ShellApi } from './registry';
3
+ /**
4
+ * Test-only ShellApi constructor. Bypasses the admin gate and uses a
5
+ * stub ShardContext. Only methods that do not consult `ctx` are
6
+ * guaranteed to work — `locateSlot`, `listFloats`, `listApps`, etc.
7
+ */
8
+ export declare function makeShellApiForTest(): ShellApi;
2
9
  export declare const shellShard: Shard;
@@ -19,7 +19,7 @@ import { registerV1Verbs } from './verbs';
19
19
  import { listRegisteredApps, getActiveApp } from '../apps/registry.svelte';
20
20
  import { launchApp } from '../apps/lifecycle';
21
21
  import { registeredShards } from '../shards/activate.svelte';
22
- import { inspectActiveLayout, focusView, closeTab, popoutView, dockFloat, dockIntoActiveLayout } from '../layout/inspection';
22
+ import { inspectActiveLayout, focusView, closeTab, popoutView, dockFloat, dockIntoActiveLayout, locateSlot as locateSlotInActiveLayout } from '../layout/inspection';
23
23
  import { floatManager } from '../overlays/float';
24
24
  import { listStandaloneViews } from '../shards/activate.svelte';
25
25
  import { getUser, isAdmin } from '../auth/index';
@@ -121,6 +121,15 @@ function makeShellApi(_ctx) {
121
121
  return { ok: false, error: err instanceof Error ? err.message : String(err) };
122
122
  }
123
123
  },
124
+ // → layout/inspection: locateSlot(slotId) returns TreeRootRef | null
125
+ locateSlot(slotId) {
126
+ try {
127
+ return locateSlotInActiveLayout(slotId);
128
+ }
129
+ catch (_a) {
130
+ return null;
131
+ }
132
+ },
124
133
  // → overlays/float: floatManager.list() returns FloatEntry[]
125
134
  listFloats() {
126
135
  return floatManager.list().map((f) => {
@@ -156,6 +165,14 @@ function makeShellApi(_ctx) {
156
165
  },
157
166
  };
158
167
  }
168
+ /**
169
+ * Test-only ShellApi constructor. Bypasses the admin gate and uses a
170
+ * stub ShardContext. Only methods that do not consult `ctx` are
171
+ * guaranteed to work — `locateSlot`, `listFloats`, `listApps`, etc.
172
+ */
173
+ export function makeShellApiForTest() {
174
+ return makeShellApi({});
175
+ }
159
176
  export const shellShard = {
160
177
  manifest,
161
178
  activate(ctx) {
@@ -165,6 +182,22 @@ export const shellShard = {
165
182
  }
166
183
  registerV1Verbs(ctx);
167
184
  const shell = makeShellApi(ctx);
185
+ // The AZERTY `²` key (top-left on FR keyboards, below Escape) opens the
186
+ // terminal view — focusing it if already mounted, floating it otherwise.
187
+ // Migrated from Shell.svelte's inline keydown handler as proof-of-concept
188
+ // for the Actions framework (Task 23 / DF1). Registered here because this
189
+ // shard owns the terminal view and is already admin-gated.
190
+ ctx.actions.register({
191
+ id: 'shell.terminal.toggle',
192
+ label: 'Open Terminal',
193
+ scope: ['home', 'app'],
194
+ defaultShortcut: '²',
195
+ allowInInputs: false,
196
+ run() {
197
+ if (!focusView('shell:terminal'))
198
+ floatManager.open('shell:terminal', { title: 'Shell' });
199
+ },
200
+ });
168
201
  const factory = {
169
202
  mount(container, _context) {
170
203
  var _a;
@@ -6,6 +6,7 @@ import { type ToastManager } from './overlays/toast';
6
6
  import { type FloatManager } from './overlays/float';
7
7
  import { type PresetManager } from './overlays/presets';
8
8
  import type { ConflictsApi } from './conflicts/api';
9
+ import { type OpenContextMenuOpts, type OpenPaletteOpts } from './actions/listeners';
9
10
  /**
10
11
  * The process-wide shell singleton exposed to shards and the shell's own
11
12
  * internal code. Provides state zone creation and overlay managers.
@@ -31,6 +32,24 @@ export interface Shell {
31
32
  presets: PresetManager;
32
33
  /** Conflict manager view. Shell-owned modal for conflict arbitration. */
33
34
  conflicts: ConflictsApi;
35
+ /** Actions facade — rebind keys, query bindings, open menus/palette. */
36
+ actions: ShellActionsApi;
37
+ }
38
+ /**
39
+ * API for managing action bindings and triggering menus/palette
40
+ * programmatically (e.g. from a future settings UI shard).
41
+ */
42
+ export interface ShellActionsApi {
43
+ /** Persist a custom shortcut for an action and refresh live state if the app is active. */
44
+ rebind(appId: string, actionId: string, shortcut: string | null): Promise<void>;
45
+ /** Remove a custom shortcut override and refresh live state if the app is active. */
46
+ resetBinding(appId: string, actionId: string): Promise<void>;
47
+ /** Return all non-null user bindings for an app as a plain string map. */
48
+ bindingsFor(appId: string): Promise<Record<string, string>>;
49
+ /** Open the context menu at the given screen coordinates. */
50
+ openContextMenu(opts: OpenContextMenuOpts): void;
51
+ /** Open the command palette, optionally pre-filled. */
52
+ openPalette(opts?: OpenPaletteOpts): void;
34
53
  }
35
54
  /** The process-wide shell instance. Framework-internal code uses this directly; shards receive a scoped view via `ShardContext`. */
36
55
  export declare const shell: Shell;
@@ -21,6 +21,35 @@ import { toastManager } from './overlays/toast';
21
21
  import { floatManager } from './overlays/float';
22
22
  import { presetManager } from './overlays/presets';
23
23
  import { conflictsApi } from './conflicts/shell-api';
24
+ import { loadUserBindings, saveUserBinding } from './actions/bindings-store';
25
+ import { openContextMenu as listenersOpenContextMenu, openPalette as listenersOpenPalette, } from './actions/listeners';
26
+ import { setUserBindings, getLiveDispatcherState } from './actions/state.svelte';
27
+ const shellActions = {
28
+ async rebind(appId, actionId, shortcut) {
29
+ await saveUserBinding(appId, actionId, shortcut);
30
+ const current = getLiveDispatcherState();
31
+ if (current.activeAppId === appId) {
32
+ setUserBindings(await loadUserBindings(appId));
33
+ }
34
+ },
35
+ async resetBinding(appId, actionId) {
36
+ await saveUserBinding(appId, actionId, undefined);
37
+ const current = getLiveDispatcherState();
38
+ if (current.activeAppId === appId) {
39
+ setUserBindings(await loadUserBindings(appId));
40
+ }
41
+ },
42
+ async bindingsFor(appId) {
43
+ const raw = await loadUserBindings(appId);
44
+ const out = {};
45
+ for (const [id, v] of Object.entries(raw))
46
+ if (v !== null)
47
+ out[id] = v;
48
+ return out;
49
+ },
50
+ openContextMenu: listenersOpenContextMenu,
51
+ openPalette: listenersOpenPalette,
52
+ };
24
53
  /** The process-wide shell instance. Framework-internal code uses this directly; shards receive a scoped view via `ShardContext`. */
25
54
  export const shell = {
26
55
  state: createStateZones,
@@ -30,4 +59,5 @@ export const shell = {
30
59
  float: floatManager,
31
60
  presets: presetManager,
32
61
  conflicts: conflictsApi,
62
+ actions: shellActions,
33
63
  };
package/dist/tokens.css CHANGED
@@ -42,6 +42,16 @@
42
42
  --shell-warning: #fbbf24;
43
43
  --shell-success: #34d399;
44
44
 
45
+ /* Foreground pairings — the contrasting text/icon color for each
46
+ semantic surface. Used instead of --shell-fg when the background
47
+ is a saturated semantic color rather than --shell-bg. Theme
48
+ overrides that change the surface hue should also update its
49
+ paired foreground. */
50
+ --shell-fg-on-accent: #ffffff;
51
+ --shell-fg-on-error: #1a1b1e;
52
+ --shell-fg-on-warning: #1a1b1e;
53
+ --shell-fg-on-success: #1a1b1e;
54
+
45
55
  /* Typography */
46
56
  --shell-font-ui: system-ui, -apple-system, "Segoe UI", sans-serif;
47
57
  --shell-font-mono: ui-monospace, "Cascadia Code", "Consolas", monospace;
@@ -90,7 +100,7 @@ body {
90
100
  margin: 0;
91
101
  padding: 0;
92
102
  height: 100%;
93
- overflow: hidden; /* SH3 is a shell, not a scrollable document */
103
+ overflow: hidden;
94
104
  background: var(--shell-grad-bg, var(--shell-bg));
95
105
  color: var(--shell-fg);
96
106
  font-family: var(--shell-font-ui);
@@ -1,6 +1,7 @@
1
1
  import type { Scrollback } from '../shell-shard/scrollback.svelte';
2
2
  import type { SessionClient } from '../shell-shard/session-client.svelte';
3
3
  import type { TenantFsClient } from '../shell-shard/tenant-fs-client';
4
+ import type { TreeRootRef } from '../layout/types';
4
5
  export interface ShellApi {
5
6
  listApps(): Array<{
6
7
  id: string;
@@ -48,6 +49,14 @@ export interface ShellApi {
48
49
  viewId: string | null;
49
50
  label: string;
50
51
  }>;
52
+ /**
53
+ * Where is this slot currently mounted? Returns `{ kind: 'docked' }`
54
+ * when the slot is anywhere in the active docked tree, or
55
+ * `{ kind: 'float', floatId }` when it lives inside a float's subtree.
56
+ * Returns `null` when the slot is not present in the active layout
57
+ * (stale id, post-unmount, or held-but-not-active app tree).
58
+ */
59
+ locateSlot(slotId: string): TreeRootRef | null;
51
60
  listZones(shardId?: string): Array<{
52
61
  shardId: string;
53
62
  zones: string[];
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** Auto-generated from package.json — do not edit manually. */
2
- export declare const VERSION = "0.10.4";
2
+ export declare const VERSION = "0.11.2";
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /** Auto-generated from package.json — do not edit manually. */
2
- export const VERSION = '0.10.4';
2
+ export const VERSION = '0.11.2';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sh3-core",
3
- "version": "0.10.4",
3
+ "version": "0.11.2",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -1,8 +0,0 @@
1
- /**
2
- * Terminal app manifest.
3
- *
4
- * Framework-shipped: registered in host.ts during bootstrap.
5
- * Requires the `shell` shard which provides the `shell:terminal` view.
6
- */
7
- import type { AppManifest } from '../../apps/types';
8
- export declare const manifest: AppManifest;
@@ -1,14 +0,0 @@
1
- /**
2
- * Terminal app manifest.
3
- *
4
- * Framework-shipped: registered in host.ts during bootstrap.
5
- * Requires the `shell` shard which provides the `shell:terminal` view.
6
- */
7
- import { VERSION } from '../../version';
8
- export const manifest = {
9
- id: 'terminal',
10
- label: 'Terminal',
11
- version: VERSION,
12
- requiredShards: ['shell'],
13
- layoutVersion: 1,
14
- };
@@ -1,7 +0,0 @@
1
- /**
2
- * Built-in Terminal app — mounts the `shell:terminal` view in a single slot.
3
- *
4
- * Framework-shipped: registered in host.ts during bootstrap.
5
- */
6
- import type { App } from '../../apps/types';
7
- export declare const terminalApp: App;
@@ -1,14 +0,0 @@
1
- /**
2
- * Built-in Terminal app — mounts the `shell:terminal` view in a single slot.
3
- *
4
- * Framework-shipped: registered in host.ts during bootstrap.
5
- */
6
- import { manifest } from './manifest';
7
- export const terminalApp = {
8
- manifest,
9
- initialLayout: {
10
- type: 'slot',
11
- slotId: 'terminal.main',
12
- viewId: 'shell:terminal',
13
- },
14
- };