@dimina-kit/devtools 0.4.0-dev.20260824071518 → 0.4.0-dev.20260828092243

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 (153) hide show
  1. package/dist/main/api.d.ts +1 -1
  2. package/dist/main/app/app.js +55 -2
  3. package/dist/main/index.bundle.js +887 -234
  4. package/dist/main/ipc/index.d.ts +2 -0
  5. package/dist/main/ipc/index.js +2 -0
  6. package/dist/main/ipc/popover.js +1 -1
  7. package/dist/main/ipc/project-create.d.ts +15 -0
  8. package/dist/main/ipc/project-create.js +26 -0
  9. package/dist/main/ipc/projects.d.ts +1 -1
  10. package/dist/main/ipc/projects.js +11 -0
  11. package/dist/main/ipc/settings.js +2 -1
  12. package/dist/main/ipc/simulator-module.d.ts +4 -3
  13. package/dist/main/ipc/simulator-module.js +4 -5
  14. package/dist/main/ipc/tooltip.js +1 -1
  15. package/dist/main/ipc/views.d.ts +15 -1
  16. package/dist/main/ipc/views.js +61 -4
  17. package/dist/main/runtime/miniapp-runtime.d.ts +87 -19
  18. package/dist/main/services/notifications/renderer-notifier.d.ts +30 -1
  19. package/dist/main/services/notifications/renderer-notifier.js +23 -1
  20. package/dist/main/services/projects/project-repository.d.ts +4 -1
  21. package/dist/main/services/projects/project-repository.js +63 -5
  22. package/dist/main/services/update/update-manager.d.ts +17 -3
  23. package/dist/main/services/update/update-manager.js +25 -6
  24. package/dist/main/services/views/host-dialog-port-channel.d.ts +18 -0
  25. package/dist/main/services/views/host-dialog-port-channel.js +15 -0
  26. package/dist/main/services/views/host-dialog-session-runtime.d.ts +10 -0
  27. package/dist/main/services/views/host-dialog-session-runtime.js +17 -0
  28. package/dist/main/services/views/host-dialog-view.d.ts +95 -0
  29. package/dist/main/services/views/host-dialog-view.js +147 -0
  30. package/dist/main/services/views/host-sidebar-port-channel.d.ts +18 -0
  31. package/dist/main/services/views/host-sidebar-port-channel.js +15 -0
  32. package/dist/main/services/views/host-sidebar-session-runtime.d.ts +10 -0
  33. package/dist/main/services/views/host-sidebar-session-runtime.js +17 -0
  34. package/dist/main/services/views/host-sidebar-view.d.ts +59 -0
  35. package/dist/main/services/views/host-sidebar-view.js +44 -0
  36. package/dist/main/services/views/host-slot-port-channel.d.ts +107 -0
  37. package/dist/main/services/views/host-slot-port-channel.js +261 -0
  38. package/dist/main/services/views/host-slot-session-runtime.d.ts +40 -0
  39. package/dist/main/services/views/host-slot-session-runtime.js +50 -0
  40. package/dist/main/services/views/host-slot-view.d.ts +109 -0
  41. package/dist/main/services/views/host-slot-view.js +147 -0
  42. package/dist/main/services/views/host-toolbar-port-channel.d.ts +6 -91
  43. package/dist/main/services/views/host-toolbar-port-channel.js +10 -243
  44. package/dist/main/services/views/host-toolbar-session-runtime.d.ts +5 -30
  45. package/dist/main/services/views/host-toolbar-session-runtime.js +9 -47
  46. package/dist/main/services/views/host-toolbar-view.d.ts +34 -7
  47. package/dist/main/services/views/host-toolbar-view.js +30 -224
  48. package/dist/main/services/views/managed-web-contents-view.d.ts +48 -0
  49. package/dist/main/services/views/managed-web-contents-view.js +123 -0
  50. package/dist/main/services/views/overlay-panels-view.d.ts +23 -0
  51. package/dist/main/services/views/overlay-panels-view.js +93 -4
  52. package/dist/main/services/views/placement-reconciler.d.ts +14 -2
  53. package/dist/main/services/views/placement-reconciler.js +27 -0
  54. package/dist/main/services/views/placement-test-driver.d.ts +1 -0
  55. package/dist/main/services/views/placement-test-driver.js +3 -0
  56. package/dist/main/services/views/view-manager-devtools-host-test-fixtures.js +3 -1
  57. package/dist/main/services/views/view-manager.d.ts +10 -78
  58. package/dist/main/services/views/view-manager.js +34 -3
  59. package/dist/main/utils/paths.d.ts +4 -0
  60. package/dist/main/utils/paths.js +4 -0
  61. package/dist/main/utils/sender-policy.js +10 -0
  62. package/dist/native-host/common/common.js +65 -62
  63. package/dist/native-host/render/render.js +2230 -2052
  64. package/dist/native-host/service/service.js +2 -2
  65. package/dist/preload/runtime/host-dialog-advertiser.d.ts +22 -0
  66. package/dist/preload/runtime/host-dialog-advertiser.js +37 -0
  67. package/dist/preload/runtime/host-dialog-port.d.ts +44 -0
  68. package/dist/preload/runtime/host-dialog-port.js +53 -0
  69. package/dist/preload/runtime/host-dialog-runtime.d.ts +28 -0
  70. package/dist/preload/runtime/host-dialog-runtime.js +36 -0
  71. package/dist/preload/runtime/host-sidebar-advertiser.d.ts +19 -0
  72. package/dist/preload/runtime/host-sidebar-advertiser.js +35 -0
  73. package/dist/preload/runtime/host-sidebar-port.d.ts +44 -0
  74. package/dist/preload/runtime/host-sidebar-port.js +53 -0
  75. package/dist/preload/runtime/host-sidebar-runtime.d.ts +28 -0
  76. package/dist/preload/runtime/host-sidebar-runtime.js +36 -0
  77. package/dist/preload/runtime/host-slot-port-bridge.d.ts +18 -0
  78. package/dist/preload/runtime/host-slot-port-bridge.js +112 -0
  79. package/dist/preload/runtime/host-toolbar-advertiser.d.ts +5 -13
  80. package/dist/preload/runtime/host-toolbar-advertiser.js +18 -38
  81. package/dist/preload/runtime/host-toolbar-port.d.ts +9 -0
  82. package/dist/preload/runtime/host-toolbar-port.js +11 -95
  83. package/dist/preload/runtime/wait-for-slot-root.d.ts +20 -0
  84. package/dist/preload/runtime/wait-for-slot-root.js +52 -0
  85. package/dist/preload/windows/host-dialog-runtime.cjs +353 -0
  86. package/dist/preload/windows/host-dialog-runtime.cjs.map +7 -0
  87. package/dist/preload/windows/host-dialog-runtime.d.ts +2 -0
  88. package/dist/preload/windows/host-dialog-runtime.js +13 -0
  89. package/dist/preload/windows/host-sidebar-runtime.cjs +354 -0
  90. package/dist/preload/windows/host-sidebar-runtime.cjs.map +7 -0
  91. package/dist/preload/windows/host-sidebar-runtime.d.ts +2 -0
  92. package/dist/preload/windows/host-sidebar-runtime.js +13 -0
  93. package/dist/preload/windows/host-toolbar-runtime.cjs +134 -51
  94. package/dist/preload/windows/host-toolbar-runtime.cjs.map +3 -3
  95. package/dist/preload/windows/simulator.cjs.map +1 -1
  96. package/dist/renderer/assets/button-DsNqZm7o.js +2 -0
  97. package/dist/renderer/assets/constants-D7DfVqMp.js +2 -0
  98. package/dist/renderer/assets/constants-D8zsejFq.js +2 -0
  99. package/dist/renderer/assets/createLucideIcon-CYJeT1ji.js +2 -0
  100. package/dist/renderer/assets/dialog-pT4qWmka.js +46 -0
  101. package/dist/renderer/assets/dist-o70xmpc1.js +2 -0
  102. package/dist/renderer/assets/hostSidebarDefault-NvGZlE9O.js +2 -0
  103. package/dist/renderer/assets/index-zErhG3ta.js +5 -0
  104. package/dist/renderer/assets/input-4QxTXMZN.js +2 -0
  105. package/dist/renderer/assets/ipc-channels-overlays-Blr5TNoB.js +2 -0
  106. package/dist/renderer/assets/jsx-runtime-B-3rq1y5.css +1 -0
  107. package/dist/renderer/assets/jsx-runtime-CqVdW3eg.js +9 -0
  108. package/dist/renderer/assets/popover-CJiSWwuE.js +2 -0
  109. package/dist/renderer/assets/project-api-DZ1Zi6EC.js +2 -0
  110. package/dist/renderer/assets/projectCreateDialog-DMWNhw_1.js +2 -0
  111. package/dist/renderer/assets/select-C86pNcsu.js +2 -0
  112. package/dist/renderer/assets/settings-BoI8mLT1.js +2 -0
  113. package/dist/renderer/assets/settings-api-Bs_g4NHs.js +2 -0
  114. package/dist/renderer/assets/settings-tab-bar-DHLLygqv.js +2 -0
  115. package/dist/renderer/assets/tooltip-BhAyY0T4.js +2 -0
  116. package/dist/renderer/assets/types-YYjkvane.js +2 -0
  117. package/dist/renderer/assets/updateDialog-DPum3wx1.js +2 -0
  118. package/dist/renderer/assets/utils-kfQov6Pa.js +2 -0
  119. package/dist/renderer/assets/view-api-DFhb2R8-.js +2 -0
  120. package/dist/renderer/assets/{workbenchSettings-oq_EyfKf.js → workbenchSettings-DrajRQUk.js} +3 -3
  121. package/dist/renderer/entries/host-sidebar-default/index.html +21 -0
  122. package/dist/renderer/entries/main/index.html +15 -8
  123. package/dist/renderer/entries/popover/index.html +10 -7
  124. package/dist/renderer/entries/project-create-dialog/index.html +27 -0
  125. package/dist/renderer/entries/settings/index.html +10 -7
  126. package/dist/renderer/entries/tooltip/index.html +5 -4
  127. package/dist/renderer/entries/update-dialog/index.html +25 -0
  128. package/dist/renderer/entries/workbench-settings/index.html +11 -7
  129. package/dist/service-host/preload.cjs +10 -0
  130. package/dist/shared/constants.d.ts +22 -0
  131. package/dist/shared/constants.js +22 -0
  132. package/dist/shared/ipc-channels-overlays.d.ts +156 -0
  133. package/dist/shared/ipc-channels-overlays.js +186 -0
  134. package/dist/shared/ipc-channels.d.ts +0 -77
  135. package/dist/shared/ipc-channels.js +0 -98
  136. package/dist/shared/ipc-schemas.d.ts +33 -0
  137. package/dist/shared/ipc-schemas.js +41 -0
  138. package/dist/shared/types.d.ts +10 -0
  139. package/dist/shared/view-ids.d.ts +7 -0
  140. package/dist/shared/view-ids.js +10 -0
  141. package/package.json +8 -8
  142. package/dist/renderer/assets/constants-Bdz0LHdy.js +0 -2
  143. package/dist/renderer/assets/index-CtznrmHR.js +0 -49
  144. package/dist/renderer/assets/input-Dmm6nob5.js +0 -2
  145. package/dist/renderer/assets/ipc-transport-BOg0gR9W.js +0 -9
  146. package/dist/renderer/assets/ipc-transport-DgQhZaE9.css +0 -1
  147. package/dist/renderer/assets/popover-Cd1FEGOX.js +0 -2
  148. package/dist/renderer/assets/select-BaYox7If.js +0 -2
  149. package/dist/renderer/assets/settings-BXvwuFaz.js +0 -2
  150. package/dist/renderer/assets/settings-api-Bo9GbYqs.js +0 -2
  151. package/dist/renderer/assets/settings-tab-bar-Beia6lMr.js +0 -2
  152. package/dist/renderer/assets/tooltip-DfQqK3Sk.js +0 -2
  153. package/dist/renderer/assets/view-api-nn69je7A.js +0 -2
@@ -155,70 +155,6 @@ export interface ProjectCreateDefaults {
155
155
  export declare const DialogChannel: {
156
156
  readonly OpenDirectory: "dialog:openDirectory";
157
157
  };
158
- export declare const ViewChannel: {
159
- /**
160
- * Reverse size-advertiser: the host-toolbar WCV's OWN renderer advertises its
161
- * intrinsic content height so main reserves exactly that much. Payload
162
- * `{ axis: 'block', extent }`. fire-and-forget (send), NOT invoke.
163
- */
164
- readonly HostToolbarAdvertiseHeight: "view:host-toolbar:advertise-height";
165
- /**
166
- * main → host-toolbar WCV renderer: per-load MessagePort handshake for the
167
- * gated narrow channel. On every toolbar `did-finish-load` main creates a
168
- * `MessageChannelMain` and transfers port2 here
169
- * (`wc.postMessage(HostToolbarPort, null, [port2])`); the session-resident
170
- * toolbar runtime preload receives it via `event.ports[0]` and bridges it to
171
- * the page as `window.diminaHostToolbar`. Envelope both directions:
172
- * `{ channel: string, payload: unknown }`.
173
- */
174
- readonly HostToolbarPort: "view:host-toolbar:port";
175
- /**
176
- * main → main-window renderer: push the reserved host-toolbar height so the
177
- * renderer placeholder div resizes (closing the dynamic-height loop).
178
- */
179
- readonly HostToolbarHeightChanged: "view:host-toolbar:height-changed";
180
- /**
181
- * main ← main-window renderer (invoke): pull the last NOTIFIED toolbar
182
- * height retained in main. Mount-time replay companion to
183
- * `HostToolbarHeightChanged`: the push listener mounts with the project
184
- * view and the toolbar's size-advertiser deduplicates (never re-reports),
185
- * so a height pushed while no project view was mounted would otherwise be
186
- * lost forever (cold start on the project list races it; close-project →
187
- * reopen hits it deterministically). No payload; resolves a number.
188
- */
189
- readonly HostToolbarGetHeight: "view:host-toolbar:get-height";
190
- /**
191
- * Renderer → main: the window-level placement snapshot (one monotonic epoch
192
- * per commit tick, one generation per renderer lifetime) that drives the view
193
- * reconciler. The single source of truth for every managed native view's
194
- * bounds/visibility/z-order — supersedes the per-view bounds channels above.
195
- * invoke.
196
- */
197
- readonly PlacementSnapshot: "view:placement-snapshot";
198
- };
199
- export interface ViewBounds {
200
- x: number;
201
- y: number;
202
- width: number;
203
- height: number;
204
- }
205
- export declare const PopoverChannel: {
206
- readonly Show: "popover:show";
207
- readonly Hide: "popover:hide";
208
- readonly Relaunch: "popover:relaunch";
209
- readonly Closed: "popover:closed";
210
- readonly Init: "popover:init";
211
- };
212
- export declare const OverlayChannel: {
213
- readonly Ready: "overlay:ready";
214
- };
215
- export declare const TooltipChannel: {
216
- readonly Prepare: "tooltip:prepare";
217
- readonly Show: "tooltip:show";
218
- readonly Hide: "tooltip:hide";
219
- readonly Init: "tooltip:init";
220
- readonly Measured: "tooltip:measured";
221
- };
222
158
  export declare const WindowChannel: {
223
159
  readonly NavigateBack: "window:navigateBack";
224
160
  readonly OpenProject: "window:openProject";
@@ -237,17 +173,4 @@ export declare const AutomationChannel: {
237
173
  export declare const InternalDevtoolsChannel: {
238
174
  readonly Open: "internal-devtools:open";
239
175
  };
240
- export declare const SettingsChannel: {
241
- readonly SetVisible: "settings:setVisible";
242
- readonly ConfigChanged: "settings:configChanged";
243
- readonly ProjectSettingsChanged: "settings:projectSettingsChanged";
244
- readonly Init: "settings:init";
245
- };
246
- export declare const UpdateChannel: {
247
- readonly Check: "updates:check";
248
- readonly Download: "updates:download";
249
- readonly Install: "updates:install";
250
- readonly DownloadProgress: "updates:downloadProgress";
251
- readonly Available: "updates:available";
252
- };
253
176
  //# sourceMappingURL=ipc-channels.d.ts.map
@@ -206,86 +206,6 @@ export const ProjectsChannel = {
206
206
  export const DialogChannel = {
207
207
  OpenDirectory: 'dialog:openDirectory',
208
208
  };
209
- // ── Embedded views (renderer → main) ─────────────────────────────────────
210
- //
211
- // The main window's React layout owns the *positions* of the editor +
212
- // simulator-DevTools WebContentsView overlays — each visible placeholder
213
- // `<div>` measures its client rect via ResizeObserver and pushes the
214
- // rectangle to the main process. The view manager caches the latest
215
- // payload per kind and applies it to the overlay; no payload means the
216
- // overlay is hidden.
217
- //
218
- // Payload (after schema validation): `{ x, y, width, height }` in CSS
219
- // pixels relative to the window's content area (origin = top-left,
220
- // not including the OS chrome).
221
- export const ViewChannel = {
222
- /**
223
- * Reverse size-advertiser: the host-toolbar WCV's OWN renderer advertises its
224
- * intrinsic content height so main reserves exactly that much. Payload
225
- * `{ axis: 'block', extent }`. fire-and-forget (send), NOT invoke.
226
- */
227
- HostToolbarAdvertiseHeight: 'view:host-toolbar:advertise-height',
228
- /**
229
- * main → host-toolbar WCV renderer: per-load MessagePort handshake for the
230
- * gated narrow channel. On every toolbar `did-finish-load` main creates a
231
- * `MessageChannelMain` and transfers port2 here
232
- * (`wc.postMessage(HostToolbarPort, null, [port2])`); the session-resident
233
- * toolbar runtime preload receives it via `event.ports[0]` and bridges it to
234
- * the page as `window.diminaHostToolbar`. Envelope both directions:
235
- * `{ channel: string, payload: unknown }`.
236
- */
237
- HostToolbarPort: 'view:host-toolbar:port',
238
- /**
239
- * main → main-window renderer: push the reserved host-toolbar height so the
240
- * renderer placeholder div resizes (closing the dynamic-height loop).
241
- */
242
- HostToolbarHeightChanged: 'view:host-toolbar:height-changed',
243
- /**
244
- * main ← main-window renderer (invoke): pull the last NOTIFIED toolbar
245
- * height retained in main. Mount-time replay companion to
246
- * `HostToolbarHeightChanged`: the push listener mounts with the project
247
- * view and the toolbar's size-advertiser deduplicates (never re-reports),
248
- * so a height pushed while no project view was mounted would otherwise be
249
- * lost forever (cold start on the project list races it; close-project →
250
- * reopen hits it deterministically). No payload; resolves a number.
251
- */
252
- HostToolbarGetHeight: 'view:host-toolbar:get-height',
253
- /**
254
- * Renderer → main: the window-level placement snapshot (one monotonic epoch
255
- * per commit tick, one generation per renderer lifetime) that drives the view
256
- * reconciler. The single source of truth for every managed native view's
257
- * bounds/visibility/z-order — supersedes the per-view bounds channels above.
258
- * invoke.
259
- */
260
- PlacementSnapshot: 'view:placement-snapshot',
261
- };
262
- // ── Popover ──────────────────────────────────────────────────────────────
263
- export const PopoverChannel = {
264
- Show: 'popover:show',
265
- Hide: 'popover:hide',
266
- Relaunch: 'popover:relaunch',
267
- Closed: 'popover:closed',
268
- Init: 'popover:init',
269
- };
270
- // ── Tooltip ──────────────────────────────────────────────────────────────
271
- //
272
- // A top-tier overlay WebContentsView (VIEW_LAYER.tooltip — see view-ids.ts),
273
- // NOT a DOM tooltip in the main renderer: any DOM-portaled floating UI (Radix
274
- // Tooltip) or the browser-native `title` attribute lives in the main
275
- // renderer's own paint surface, which every other WCV (simulator, editor,
276
- // settings, popover) renders on top of — CSS cannot reach across that
277
- // boundary. A trigger reports its anchor rect + label; main computes the
278
- // tooltip's screen bounds and shows/repositions/hides this overlay.
279
- export const OverlayChannel = {
280
- Ready: 'overlay:ready',
281
- };
282
- export const TooltipChannel = {
283
- Prepare: 'tooltip:prepare',
284
- Show: 'tooltip:show',
285
- Hide: 'tooltip:hide',
286
- Init: 'tooltip:init',
287
- Measured: 'tooltip:measured',
288
- };
289
209
  // ── Window ───────────────────────────────────────────────────────────────
290
210
  export const WindowChannel = {
291
211
  NavigateBack: 'window:navigateBack',
@@ -322,21 +242,3 @@ export const InternalDevtoolsChannel = {
322
242
  // its own dedicated window (see internal-devtools-window/index.ts).
323
243
  Open: 'internal-devtools:open',
324
244
  };
325
- // ── Embedded settings overlay ────────────────────────────────────────────
326
- export const SettingsChannel = {
327
- SetVisible: 'settings:setVisible',
328
- ConfigChanged: 'settings:configChanged',
329
- ProjectSettingsChanged: 'settings:projectSettingsChanged',
330
- Init: 'settings:init',
331
- };
332
- // ── Updates (UpdateManager) ──────────────────────────────────────────────
333
- //
334
- // String values are FROZEN: shipped builds key off them. Add new entries
335
- // here, never rename existing ones.
336
- export const UpdateChannel = {
337
- Check: 'updates:check',
338
- Download: 'updates:download',
339
- Install: 'updates:install',
340
- DownloadProgress: 'updates:downloadProgress',
341
- Available: 'updates:available',
342
- };
@@ -42,6 +42,22 @@ export declare const TooltipMeasuredSchema: z.ZodTuple<[z.ZodObject<{
42
42
  width: z.ZodNumber;
43
43
  height: z.ZodNumber;
44
44
  }, z.core.$strip>], null>;
45
+ /**
46
+ * projectCreate:show — the merged template catalog + suggested base dir
47
+ * main.tsx already resolved before asking main to show the overlay panel.
48
+ * Templates are re-validated loosely (they only round-trip back into the
49
+ * panel's own render, never interpreted main-side).
50
+ */
51
+ export declare const ProjectCreateShowSchema: z.ZodTuple<[z.ZodObject<{
52
+ templates: z.ZodArray<z.ZodObject<{}, z.core.$loose>>;
53
+ defaultBaseDir: z.ZodString;
54
+ }, z.core.$strip>], null>;
55
+ /** projectCreate:submit — the collected create-project form. */
56
+ export declare const ProjectCreateSubmitSchema: z.ZodTuple<[z.ZodObject<{
57
+ name: z.ZodString;
58
+ path: z.ZodString;
59
+ templateId: z.ZodString;
60
+ }, z.core.$strip>], null>;
45
61
  /**
46
62
  * simulator:attach-native (native-host only) — the simulator URL to load into
47
63
  * the top-level WebContentsView + simulator width. The URL is the dev-server
@@ -114,6 +130,23 @@ export declare const HostToolbarAdvertiseHeightSchema: z.ZodTuple<[z.ZodObject<{
114
130
  axis: z.ZodLiteral<"block">;
115
131
  extent: z.ZodNumber;
116
132
  }, z.core.$strip>], null>;
133
+ /**
134
+ * host-sidebar reverse size-advertiser payload — mirrors
135
+ * `HostToolbarAdvertiseHeightSchema` on the inline (width) axis.
136
+ */
137
+ export declare const HostSidebarAdvertiseWidthSchema: z.ZodTuple<[z.ZodObject<{
138
+ axis: z.ZodLiteral<"inline">;
139
+ extent: z.ZodNumber;
140
+ }, z.core.$strip>], null>;
141
+ /**
142
+ * host-dialog reverse size-advertiser payload. Unlike the single-axis
143
+ * toolbar/sidebar, the dialog's content advertises BOTH axes over the same
144
+ * channel — `axis` distinguishes which report this is.
145
+ */
146
+ export declare const HostDialogAdvertiseSizeSchema: z.ZodTuple<[z.ZodObject<{
147
+ axis: z.ZodUnion<readonly [z.ZodLiteral<"block">, z.ZodLiteral<"inline">]>;
148
+ extent: z.ZodNumber;
149
+ }, z.core.$strip>], null>;
117
150
  /**
118
151
  * simulator:custom-apis:invoke — API name + arbitrary JSON-serialisable params.
119
152
  *
@@ -66,6 +66,26 @@ export const TooltipMeasuredSchema = z.tuple([
66
66
  height: z.number().finite().positive(),
67
67
  }),
68
68
  ]);
69
+ /**
70
+ * projectCreate:show — the merged template catalog + suggested base dir
71
+ * main.tsx already resolved before asking main to show the overlay panel.
72
+ * Templates are re-validated loosely (they only round-trip back into the
73
+ * panel's own render, never interpreted main-side).
74
+ */
75
+ export const ProjectCreateShowSchema = z.tuple([
76
+ z.object({
77
+ templates: z.array(z.looseObject({})),
78
+ defaultBaseDir: z.string(),
79
+ }),
80
+ ]);
81
+ /** projectCreate:submit — the collected create-project form. */
82
+ export const ProjectCreateSubmitSchema = z.tuple([
83
+ z.object({
84
+ name: z.string().min(1),
85
+ path: AbsolutePath,
86
+ templateId: z.string().min(1),
87
+ }),
88
+ ]);
69
89
  /**
70
90
  * Reasonable simulator width range. Window width is clamped UI-side, but
71
91
  * we still reject obvious garbage (negative, zero, absurdly large).
@@ -167,6 +187,27 @@ export const HostToolbarAdvertiseHeightSchema = z.tuple([
167
187
  extent: NonNegInt,
168
188
  }),
169
189
  ]);
190
+ /**
191
+ * host-sidebar reverse size-advertiser payload — mirrors
192
+ * `HostToolbarAdvertiseHeightSchema` on the inline (width) axis.
193
+ */
194
+ export const HostSidebarAdvertiseWidthSchema = z.tuple([
195
+ z.object({
196
+ axis: z.literal('inline'),
197
+ extent: NonNegInt,
198
+ }),
199
+ ]);
200
+ /**
201
+ * host-dialog reverse size-advertiser payload. Unlike the single-axis
202
+ * toolbar/sidebar, the dialog's content advertises BOTH axes over the same
203
+ * channel — `axis` distinguishes which report this is.
204
+ */
205
+ export const HostDialogAdvertiseSizeSchema = z.tuple([
206
+ z.object({
207
+ axis: z.union([z.literal('block'), z.literal('inline')]),
208
+ extent: NonNegInt,
209
+ }),
210
+ ]);
170
211
  /**
171
212
  * simulator:custom-apis:invoke — API name + arbitrary JSON-serialisable params.
172
213
  *
@@ -123,6 +123,16 @@ export interface CompileConfig {
123
123
  value: string;
124
124
  }[];
125
125
  }
126
+ /**
127
+ * A project's runtime kind, detected from its source layout (see
128
+ * `detectRuntimeType` in main's `project-repository.ts`). Lives here because
129
+ * the value crosses the process boundary — main detects it and pushes it to
130
+ * the renderer over `ViewChannel.HostSidebarCategorySelected`, and the
131
+ * renderer's `Project.type` carries it back in the project list. Two
132
+ * structurally identical unions declared on either side would type-check
133
+ * against each other today and silently diverge the moment one gains a member.
134
+ */
135
+ export type ProjectType = 'miniprogram' | 'minigame';
126
136
  export interface IpcResult<T = unknown> {
127
137
  success: boolean;
128
138
  data?: T;
@@ -3,9 +3,13 @@ export declare const VIEW_ID: {
3
3
  readonly simulatorDevtools: "simulator-devtools";
4
4
  readonly workbench: "workbench";
5
5
  readonly hostToolbar: "host-toolbar";
6
+ readonly hostSidebar: "host-sidebar";
7
+ readonly hostDialog: "host-dialog";
6
8
  readonly settings: "settings";
7
9
  readonly popover: "popover";
8
10
  readonly tooltip: "tooltip";
11
+ readonly projectCreateDialog: "project-create-dialog";
12
+ readonly updateDialog: "update-dialog";
9
13
  };
10
14
  export type DevtoolsViewId = (typeof VIEW_ID)[keyof typeof VIEW_ID];
11
15
  export interface DevtoolsExtra {
@@ -14,8 +18,11 @@ export interface DevtoolsExtra {
14
18
  export declare const VIEW_LAYER: {
15
19
  readonly base: 0;
16
20
  readonly hostToolbar: 5;
21
+ readonly hostSidebar: 5;
17
22
  readonly settings: 10;
18
23
  readonly popover: 20;
19
24
  readonly tooltip: 30;
25
+ readonly dialog: 40;
26
+ readonly hostDialog: 45;
20
27
  };
21
28
  //# sourceMappingURL=view-ids.d.ts.map
@@ -8,9 +8,13 @@ export const VIEW_ID = {
8
8
  simulatorDevtools: 'simulator-devtools',
9
9
  workbench: 'workbench',
10
10
  hostToolbar: 'host-toolbar',
11
+ hostSidebar: 'host-sidebar',
12
+ hostDialog: 'host-dialog',
11
13
  settings: 'settings',
12
14
  popover: 'popover',
13
15
  tooltip: 'tooltip',
16
+ projectCreateDialog: 'project-create-dialog',
17
+ updateDialog: 'update-dialog',
14
18
  };
15
19
  // z-order layers; larger paints on top. Base overlays share layer 0 (they never
16
20
  // overlap each other — the simulator device WCV, the console/DevTools WCV, and
@@ -29,8 +33,14 @@ export const VIEW_ID = {
29
33
  export const VIEW_LAYER = {
30
34
  base: 0,
31
35
  hostToolbar: 5,
36
+ hostSidebar: 5,
32
37
  settings: 10,
33
38
  popover: 20,
34
39
  tooltip: 30,
40
+ // devtools' own ProjectCreateDialog/UpdateDialog panels (createOverlayPanel).
41
+ dialog: 40,
42
+ // Host-controlled fully-custom dialog (loadURL-level takeover); sits above
43
+ // devtools' own dialog layer so host content is never occluded by it.
44
+ hostDialog: 45,
35
45
  };
36
46
  //# sourceMappingURL=view-ids.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dimina-kit/devtools",
3
- "version": "0.4.0-dev.20260824071518",
3
+ "version": "0.4.0-dev.20260828092243",
4
4
  "description": "Dimina DevTools - modular developer tools for mini app debugging",
5
5
  "keywords": [
6
6
  "dimina",
@@ -90,11 +90,11 @@
90
90
  "chrome-remote-interface": "^0.34.0",
91
91
  "ws": "^8.20.0",
92
92
  "zod": "^4.3.6",
93
- "@dimina-kit/electron-deck": "0.1.0-dev.20260824071518",
94
- "@dimina-kit/devkit": "0.1.2-dev.20260824071518",
95
- "@dimina-kit/inspect": "0.4.0-dev.20260824071518",
96
- "@dimina-kit/electron-runtime": "0.1.0-dev.20260824071518",
97
- "@dimina-kit/view-anchor": "0.1.0-dev.20260824071518"
93
+ "@dimina-kit/electron-deck": "0.1.0-dev.20260828092243",
94
+ "@dimina-kit/view-anchor": "0.1.0-dev.20260828092243",
95
+ "@dimina-kit/inspect": "0.4.0-dev.20260828092243",
96
+ "@dimina-kit/electron-runtime": "0.1.0-dev.20260828092243",
97
+ "@dimina-kit/devkit": "0.1.2-dev.20260828092243"
98
98
  },
99
99
  "devDependencies": {
100
100
  "@playwright/test": "^1.59.1",
@@ -158,9 +158,9 @@
158
158
  "pack": "electron-builder --dir",
159
159
  "dist": "electron-builder",
160
160
  "build:main": "tsc -p tsconfig.main.json && esbuild src/main/index.ts --bundle --platform=node --format=esm --target=node24 --external:electron --packages=external --outfile=dist/main/index.bundle.js",
161
- "build:preload": "tsc -p tsconfig.preload.json && esbuild src/preload/windows/simulator.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/simulator.js && esbuild src/preload/windows/simulator.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/simulator.cjs && esbuild src/preload/windows/main.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/main.cjs && esbuild src/preload/windows/host-toolbar-runtime.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/host-toolbar-runtime.cjs",
161
+ "build:preload": "tsc -p tsconfig.preload.json && esbuild src/preload/windows/simulator.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/simulator.js && esbuild src/preload/windows/simulator.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/simulator.cjs && esbuild src/preload/windows/main.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/main.cjs && esbuild src/preload/windows/host-toolbar-runtime.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/host-toolbar-runtime.cjs && esbuild src/preload/windows/host-sidebar-runtime.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/host-sidebar-runtime.cjs && esbuild src/preload/windows/host-dialog-runtime.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/host-dialog-runtime.cjs",
162
162
  "build:renderer": "vite build",
163
- "dev": "pnpm build && concurrently \"vite build --watch\" \"vite build --watch --config vite.config.simulator.ts\" \"tsc -p tsconfig.main.json --watch\" \"tsc -p tsconfig.preload.json --watch\" \"esbuild src/preload/windows/simulator.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/simulator.js --watch\" \"esbuild src/preload/windows/simulator.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/simulator.cjs --watch\" \"esbuild src/preload/windows/main.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/main.cjs --watch\" \"esbuild src/preload/windows/host-toolbar-runtime.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/host-toolbar-runtime.cjs --watch\" \"electron dist/main/index.js\"",
163
+ "dev": "pnpm build && concurrently \"vite build --watch\" \"vite build --watch --config vite.config.simulator.ts\" \"tsc -p tsconfig.main.json --watch\" \"tsc -p tsconfig.preload.json --watch\" \"esbuild src/preload/windows/simulator.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/simulator.js --watch\" \"esbuild src/preload/windows/simulator.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/simulator.cjs --watch\" \"esbuild src/preload/windows/main.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/main.cjs --watch\" \"esbuild src/preload/windows/host-toolbar-runtime.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/host-toolbar-runtime.cjs --watch\" \"esbuild src/preload/windows/host-sidebar-runtime.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/host-sidebar-runtime.cjs --watch\" \"esbuild src/preload/windows/host-dialog-runtime.ts --bundle --platform=node --format=cjs --sourcemap --external:electron --outfile=dist/preload/windows/host-dialog-runtime.cjs --watch\" \"electron dist/main/index.js\"",
164
164
  "build:core": "pnpm --filter @dimina-kit/devkit build",
165
165
  "check-types": "tsc --noEmit",
166
166
  "lint": "eslint . --max-warnings 0",
@@ -1,2 +0,0 @@
1
- import{D as e,O as t,w as n}from"./ipc-transport-BOg0gR9W.js";import{i as r,n as i}from"./input-Dmm6nob5.js";var a=t(e(),1),o=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,s=r,c=(e,t)=>n=>{if(t?.variants==null)return s(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let s=o(t)||o(a);return r[e][s]}),c=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return s(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...c}[t]):{...i,...c}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},l=Object.defineProperty,u=(e,t)=>l(e,`name`,{value:t,configurable:!0});function d(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}u(d,`setRef`);function f(...e){return t=>{let n=!1,r=e.map(e=>{let r=d(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){let n=r[t];typeof n==`function`?n():d(e[t],null)}}}}u(f,`composeRefs`);function p(...e){return a.useCallback(f(...e),e)}u(p,`useComposedRefs`);var m=Object.defineProperty,h=(e,t)=>m(e,`name`,{value:t,configurable:!0});function g(e){let t=a.forwardRef((t,n)=>{let{children:r,...i}=t,o=null,s=!1,c=[];T(r)&&typeof k==`function`&&(r=k(r._payload)),a.Children.forEach(r,e=>{if(C(e)){s=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;T(n)&&typeof k==`function`&&(n=k(n._payload)),o=b(t,n),c.push(o?.props?.children)}else c.push(e)}),o?o=a.cloneElement(o,void 0,c):!s&&a.Children.count(r)===1&&a.isValidElement(r)&&(o=r);let l=o?S(o):void 0,u=p(n,l);if(!o){if(r||r===0)throw Error(s?O(e):D(e));return r}let d=x(i,o.props??{});return o.type!==a.Fragment&&(d.ref=n?u:l),a.cloneElement(o,d)});return t.displayName=`${e}.Slot`,t}h(g,`createSlot`);var _=g(`Slot`),v=Symbol.for(`radix.slottable`);function y(e){let t=h(e=>`child`in e?e.children(e.child):e.children,`Slottable`);return t.displayName=`${e}.Slottable`,t.__radixId=v,t}h(y,`createSlottable`);var b=h((e,t)=>{if(`child`in e.props){let t=e.props.child;return a.isValidElement(t)?a.cloneElement(t,void 0,e.props.children(t.props.children)):null}return a.isValidElement(t)?t:null},`getSlottableElementFromSlottable`);function x(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}h(x,`mergeProps`);function S(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}h(S,`getElementRef`);function C(e){return a.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===v}h(C,`isSlottable`);var w=Symbol.for(`react.lazy`);function T(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===w&&`_payload`in e&&E(e._payload)}h(T,`isLazyComponent`);function E(e){return typeof e==`object`&&!!e&&`then`in e}h(E,`isPromiseLike`);var D=h(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,`createSlotError`),O=h(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,`createSlottableError`),k=a.use,A=n(),j=c(`inline-flex appearance-none items-center justify-center gap-1 whitespace-nowrap rounded-[var(--qd-radius-md)] font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-[var(--qd-primary)] disabled:pointer-events-none disabled:opacity-50 border-solid [border-width:var(--qd-border-width)] text-[color:var(--btn-fg)] bg-[var(--btn-bg)] border-[var(--btn-border)] [--qd-icon-size:1em]`,{variants:{variant:{default:`[--btn-fg:var(--qd-on-solid)] [--btn-bg:var(--qd-primary)] [--btn-border:transparent] hover:opacity-90`,soft:`[--btn-fg:var(--qd-primary)] [--btn-bg:var(--qd-primary-soft)] [--btn-border:transparent] hover:opacity-90`,secondary:`[--btn-fg:var(--qd-secondary-foreground)] [--btn-bg:var(--qd-secondary)] [--btn-border:transparent] hover:opacity-90`,outline:`[--btn-fg:var(--qd-foreground)] [--btn-bg:var(--qd-background)] [--btn-border:var(--qd-border)] hover:[background-color:var(--qd-muted)]`,ghost:`[--btn-fg:var(--qd-foreground)] [--btn-bg:transparent] [--btn-border:transparent] hover:[background-color:var(--qd-muted)]`,destructive:`[--btn-fg:var(--qd-on-solid)] [--btn-bg:var(--qd-destructive)] [--btn-border:transparent] hover:opacity-90`,link:`[--btn-fg:var(--qd-primary)] [--btn-bg:transparent] [--btn-border:transparent] underline-offset-4 hover:underline`,icon:`rounded [--btn-fg:var(--qd-muted-foreground)] [--btn-bg:transparent] [--btn-border:transparent] hover:[background-color:var(--qd-muted)] hover:[--btn-fg:var(--qd-foreground)]`,toolbar:`rounded [--btn-fg:var(--qd-muted-foreground)] [--btn-bg:transparent] [--btn-border:transparent] hover:[--btn-bg:var(--color-surface-3)] hover:[--btn-fg:var(--qd-foreground)] data-[active=true]:[--btn-bg:var(--color-surface-active)] data-[active=true]:[--btn-fg:var(--qd-foreground)]`,danger:`rounded-full [--btn-fg:var(--qd-muted-foreground)] [--btn-bg:transparent] [--btn-border:transparent] hover:[--btn-fg:var(--qd-destructive)] hover:[background-color:var(--qd-destructive-soft)]`,tab:`rounded text-text-muted hover:text-text hover:bg-surface-3`,"tab-active":`rounded text-text bg-surface-active`},size:{default:`h-[var(--qd-btn-h)] px-4 py-2 text-sm`,sm:`h-[calc(var(--qd-btn-h)-4px)] px-3 text-xs`,lg:`h-[calc(var(--qd-btn-h)+4px)] px-6 text-base`,icon:`size-[var(--qd-btn-h)] text-base`,xs:`h-5 px-2 text-[11px]`,"icon-sm":`h-6 w-6 p-0 text-[14px]`}},defaultVariants:{variant:`default`,size:`default`}}),M=a.forwardRef(function({className:e,variant:t,size:n,asChild:r=!1,type:a,...o},s){let c=r?_:`button`,l=r?a===void 0?o:{type:a,...o}:{type:a??`button`,...o};return(0,A.jsx)(c,{ref:s,"data-slot":`button`,className:i(j({variant:t,size:n}),e),...l})}),N=9222,P=1001;export{P as n,M as r,N as t};
2
- //# sourceMappingURL=constants-Bdz0LHdy.js.map