@dimina-kit/devtools 0.4.0-dev.20260703101348 → 0.4.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 (42) hide show
  1. package/dist/main/app/app.d.ts +4 -1
  2. package/dist/main/app/app.js +26 -0
  3. package/dist/main/index.bundle.js +186 -5
  4. package/dist/main/ipc/popover.js +10 -1
  5. package/dist/main/ipc/session.js +17 -1
  6. package/dist/main/services/compile-standby.d.ts +26 -0
  7. package/dist/main/services/compile-standby.js +57 -0
  8. package/dist/main/services/notifications/renderer-notifier.d.ts +5 -1
  9. package/dist/main/services/notifications/renderer-notifier.js +6 -0
  10. package/dist/main/services/projects/local-provider.js +4 -0
  11. package/dist/main/services/projects/project-repository.d.ts +7 -1
  12. package/dist/main/services/projects/project-repository.js +24 -0
  13. package/dist/main/services/projects/types.d.ts +25 -1
  14. package/dist/main/services/render-inspect/index.js +4 -4
  15. package/dist/main/services/workspace/workspace-service.d.ts +5 -1
  16. package/dist/main/services/workspace/workspace-service.js +8 -0
  17. package/dist/native-host/render/render.js +42 -52
  18. package/dist/native-host/service/service.js +2 -2
  19. package/dist/preload/windows/host-toolbar-runtime.cjs.map +2 -2
  20. package/dist/preload/windows/simulator.cjs.map +1 -1
  21. package/dist/renderer/assets/index-BMqyDx71.js +49 -0
  22. package/dist/renderer/assets/{input-CTb_le7F.js → input-CDAEwpBO.js} +2 -2
  23. package/dist/renderer/assets/ipc-transport-B7eFOR68.css +1 -0
  24. package/dist/renderer/assets/{ipc-transport-Ck5Xa8Tu.js → ipc-transport-_G1k5V1p.js} +2 -2
  25. package/dist/renderer/assets/popover-DEdjK14m.js +2 -0
  26. package/dist/renderer/assets/{select-ozSk5Pt6.js → select-DpKPCh3y.js} +2 -2
  27. package/dist/renderer/assets/{settings-CNwGOI22.js → settings-M5q2elUr.js} +2 -2
  28. package/dist/renderer/assets/{settings-api-DMbMp1Eq.js → settings-api-CDlZoHiO.js} +2 -2
  29. package/dist/renderer/assets/{workbenchSettings-Cr4EHo5w.js → workbenchSettings-CT_H1WhV.js} +2 -2
  30. package/dist/renderer/entries/main/index.html +6 -6
  31. package/dist/renderer/entries/popover/index.html +5 -5
  32. package/dist/renderer/entries/settings/index.html +5 -5
  33. package/dist/renderer/entries/workbench-settings/index.html +4 -4
  34. package/dist/shared/ipc-channels.d.ts +6 -0
  35. package/dist/shared/ipc-channels.js +6 -0
  36. package/dist/shared/ipc-schemas.d.ts +29 -0
  37. package/dist/shared/ipc-schemas.js +34 -0
  38. package/dist/shared/types.d.ts +28 -0
  39. package/package.json +5 -5
  40. package/dist/renderer/assets/index-BwzPwCmM.js +0 -49
  41. package/dist/renderer/assets/ipc-transport-BPWIV5hA.css +0 -1
  42. package/dist/renderer/assets/popover-B1Zu2UQu.js +0 -2
@@ -26,13 +26,13 @@
26
26
  overflow: hidden;
27
27
  }
28
28
  </style>
29
- <script type="module" crossorigin src="../../assets/index-BwzPwCmM.js"></script>
30
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-Ck5Xa8Tu.js">
31
- <link rel="modulepreload" crossorigin href="../../assets/input-CTb_le7F.js">
32
- <link rel="modulepreload" crossorigin href="../../assets/select-ozSk5Pt6.js">
33
- <link rel="modulepreload" crossorigin href="../../assets/settings-api-DMbMp1Eq.js">
29
+ <script type="module" crossorigin src="../../assets/index-BMqyDx71.js"></script>
30
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-_G1k5V1p.js">
31
+ <link rel="modulepreload" crossorigin href="../../assets/input-CDAEwpBO.js">
32
+ <link rel="modulepreload" crossorigin href="../../assets/select-DpKPCh3y.js">
33
+ <link rel="modulepreload" crossorigin href="../../assets/settings-api-CDlZoHiO.js">
34
34
  <link rel="modulepreload" crossorigin href="../../assets/constants-EAMiwL9_.js">
35
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-BPWIV5hA.css">
35
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-B7eFOR68.css">
36
36
  </head>
37
37
  <body>
38
38
  <div id="root"></div>
@@ -8,12 +8,12 @@
8
8
  <style>
9
9
  html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; background: transparent !important; }
10
10
  </style>
11
- <script type="module" crossorigin src="../../assets/popover-B1Zu2UQu.js"></script>
12
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-Ck5Xa8Tu.js">
13
- <link rel="modulepreload" crossorigin href="../../assets/input-CTb_le7F.js">
14
- <link rel="modulepreload" crossorigin href="../../assets/select-ozSk5Pt6.js">
11
+ <script type="module" crossorigin src="../../assets/popover-DEdjK14m.js"></script>
12
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-_G1k5V1p.js">
13
+ <link rel="modulepreload" crossorigin href="../../assets/input-CDAEwpBO.js">
14
+ <link rel="modulepreload" crossorigin href="../../assets/select-DpKPCh3y.js">
15
15
  <link rel="modulepreload" crossorigin href="../../assets/constants-EAMiwL9_.js">
16
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-BPWIV5hA.css">
16
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-B7eFOR68.css">
17
17
  </head>
18
18
  <body>
19
19
  <div id="root"></div>
@@ -11,11 +11,11 @@
11
11
  closes the overlay — mirrors the popover entry. */
12
12
  html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; background: transparent !important; }
13
13
  </style>
14
- <script type="module" crossorigin src="../../assets/settings-CNwGOI22.js"></script>
15
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-Ck5Xa8Tu.js">
16
- <link rel="modulepreload" crossorigin href="../../assets/input-CTb_le7F.js">
17
- <link rel="modulepreload" crossorigin href="../../assets/settings-api-DMbMp1Eq.js">
18
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-BPWIV5hA.css">
14
+ <script type="module" crossorigin src="../../assets/settings-M5q2elUr.js"></script>
15
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-_G1k5V1p.js">
16
+ <link rel="modulepreload" crossorigin href="../../assets/input-CDAEwpBO.js">
17
+ <link rel="modulepreload" crossorigin href="../../assets/settings-api-CDlZoHiO.js">
18
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-B7eFOR68.css">
19
19
  </head>
20
20
  <body>
21
21
  <div id="root"></div>
@@ -6,11 +6,11 @@
6
6
  <!-- See entries/main/index.html for CSP rationale. -->
7
7
  <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: http: https:; font-src 'self' data:; media-src 'self' blob: http: https:; connect-src 'self' http: https: ws: wss:;" />
8
8
  <title>开发工具设置</title>
9
- <script type="module" crossorigin src="../../assets/workbenchSettings-Cr4EHo5w.js"></script>
10
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-Ck5Xa8Tu.js">
11
- <link rel="modulepreload" crossorigin href="../../assets/settings-api-DMbMp1Eq.js">
9
+ <script type="module" crossorigin src="../../assets/workbenchSettings-CT_H1WhV.js"></script>
10
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-_G1k5V1p.js">
11
+ <link rel="modulepreload" crossorigin href="../../assets/settings-api-CDlZoHiO.js">
12
12
  <link rel="modulepreload" crossorigin href="../../assets/constants-EAMiwL9_.js">
13
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-BPWIV5hA.css">
13
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-B7eFOR68.css">
14
14
  </head>
15
15
  <body>
16
16
  <div id="root"></div>
@@ -164,6 +164,10 @@ export declare const ProjectChannel: {
164
164
  readonly CompileLog: "project:compileLog";
165
165
  readonly CaptureThumbnail: "project:captureThumbnail";
166
166
  readonly GetThumbnail: "project:getThumbnail";
167
+ readonly GetLaunchConfigs: "project:getLaunchConfigs";
168
+ readonly SaveLaunchConfigs: "project:saveLaunchConfigs";
169
+ readonly GetActiveLaunchConfigId: "project:getActiveLaunchConfigId";
170
+ readonly SaveActiveLaunchConfigId: "project:saveActiveLaunchConfigId";
167
171
  };
168
172
  export declare const SessionChannel: {
169
173
  readonly RuntimeStatus: "session:runtimeStatus";
@@ -269,6 +273,8 @@ export declare const PopoverChannel: {
269
273
  readonly Relaunch: "popover:relaunch";
270
274
  readonly Closed: "popover:closed";
271
275
  readonly Init: "popover:init";
276
+ readonly SwitchLaunchConfig: "popover:switchLaunchConfig";
277
+ readonly UpdateLaunchConfigs: "popover:updateLaunchConfigs";
272
278
  };
273
279
  export declare const WindowChannel: {
274
280
  readonly NavigateBack: "window:navigateBack";
@@ -129,6 +129,10 @@ export const ProjectChannel = {
129
129
  CompileLog: 'project:compileLog',
130
130
  CaptureThumbnail: 'project:captureThumbnail',
131
131
  GetThumbnail: 'project:getThumbnail',
132
+ GetLaunchConfigs: 'project:getLaunchConfigs',
133
+ SaveLaunchConfigs: 'project:saveLaunchConfigs',
134
+ GetActiveLaunchConfigId: 'project:getActiveLaunchConfigId',
135
+ SaveActiveLaunchConfigId: 'project:saveActiveLaunchConfigId',
132
136
  };
133
137
  // ── Session runtime status ───────────────────────────────────────────────
134
138
  //
@@ -250,6 +254,8 @@ export const PopoverChannel = {
250
254
  Relaunch: 'popover:relaunch',
251
255
  Closed: 'popover:closed',
252
256
  Init: 'popover:init',
257
+ SwitchLaunchConfig: 'popover:switchLaunchConfig',
258
+ UpdateLaunchConfigs: 'popover:updateLaunchConfigs',
253
259
  };
254
260
  // ── Window ───────────────────────────────────────────────────────────────
255
261
  export const WindowChannel = {
@@ -175,4 +175,33 @@ export declare const SettingsProjectSettingsChangedSchema: z.ZodTuple<[z.ZodObje
175
175
  export declare const ProjectCaptureThumbnailSchema: z.ZodTuple<[z.ZodString], null>;
176
176
  /** project:getThumbnail — absolute project path. */
177
177
  export declare const ProjectGetThumbnailSchema: z.ZodTuple<[z.ZodString], null>;
178
+ /** project:getLaunchConfigs — absolute project path. */
179
+ export declare const ProjectGetLaunchConfigsSchema: z.ZodTuple<[z.ZodString], null>;
180
+ export declare const ProjectSaveLaunchConfigsSchema: z.ZodTuple<[z.ZodString, z.ZodArray<z.ZodObject<{
181
+ id: z.ZodString;
182
+ name: z.ZodString;
183
+ startPage: z.ZodOptional<z.ZodString>;
184
+ scene: z.ZodOptional<z.ZodNumber>;
185
+ queryParams: z.ZodOptional<z.ZodArray<z.ZodObject<{
186
+ key: z.ZodString;
187
+ value: z.ZodString;
188
+ }, z.core.$loose>>>;
189
+ }, z.core.$loose>>], null>;
190
+ /** project:getActiveLaunchConfigId — absolute project path. */
191
+ export declare const ProjectGetActiveLaunchConfigIdSchema: z.ZodTuple<[z.ZodString], null>;
192
+ /** project:saveActiveLaunchConfigId — absolute path + id (string or null). */
193
+ export declare const ProjectSaveActiveLaunchConfigIdSchema: z.ZodTuple<[z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNull]>], null>;
194
+ /** popover:switchLaunchConfig — id (string) or null for normal mode. */
195
+ export declare const PopoverSwitchLaunchConfigSchema: z.ZodTuple<[z.ZodUnion<readonly [z.ZodString, z.ZodNull]>], null>;
196
+ /** popover:updateLaunchConfigs — full launch config array. */
197
+ export declare const PopoverUpdateLaunchConfigsSchema: z.ZodTuple<[z.ZodArray<z.ZodObject<{
198
+ id: z.ZodString;
199
+ name: z.ZodString;
200
+ startPage: z.ZodOptional<z.ZodString>;
201
+ scene: z.ZodOptional<z.ZodNumber>;
202
+ queryParams: z.ZodOptional<z.ZodArray<z.ZodObject<{
203
+ key: z.ZodString;
204
+ value: z.ZodString;
205
+ }, z.core.$loose>>>;
206
+ }, z.core.$loose>>], null>;
178
207
  //# sourceMappingURL=ipc-schemas.d.ts.map
@@ -211,4 +211,38 @@ export const SettingsProjectSettingsChangedSchema = z.tuple([
211
211
  export const ProjectCaptureThumbnailSchema = z.tuple([AbsolutePath]);
212
212
  /** project:getThumbnail — absolute project path. */
213
213
  export const ProjectGetThumbnailSchema = z.tuple([AbsolutePath]);
214
+ /** project:getLaunchConfigs — absolute project path. */
215
+ export const ProjectGetLaunchConfigsSchema = z.tuple([AbsolutePath]);
216
+ /**
217
+ * project:saveLaunchConfigs — absolute path + array of launch configs.
218
+ * Each config extends CompileConfig with `id` and `name`.
219
+ */
220
+ const LaunchConfigShape = z.looseObject({
221
+ id: z.string().min(1),
222
+ name: z.string(),
223
+ startPage: z.string().optional(),
224
+ scene: z.number().optional(),
225
+ queryParams: z
226
+ .array(z.looseObject({ key: z.string(), value: z.string() }))
227
+ .optional(),
228
+ });
229
+ export const ProjectSaveLaunchConfigsSchema = z.tuple([
230
+ AbsolutePath,
231
+ z.array(LaunchConfigShape),
232
+ ]);
233
+ /** project:getActiveLaunchConfigId — absolute project path. */
234
+ export const ProjectGetActiveLaunchConfigIdSchema = z.tuple([AbsolutePath]);
235
+ /** project:saveActiveLaunchConfigId — absolute path + id (string or null). */
236
+ export const ProjectSaveActiveLaunchConfigIdSchema = z.tuple([
237
+ AbsolutePath,
238
+ z.union([z.string(), z.null()]),
239
+ ]);
240
+ /** popover:switchLaunchConfig — id (string) or null for normal mode. */
241
+ export const PopoverSwitchLaunchConfigSchema = z.tuple([
242
+ z.union([z.string(), z.null()]),
243
+ ]);
244
+ /** popover:updateLaunchConfigs — full launch config array. */
245
+ export const PopoverUpdateLaunchConfigsSchema = z.tuple([
246
+ z.array(LaunchConfigShape),
247
+ ]);
214
248
  //# sourceMappingURL=ipc-schemas.js.map
@@ -116,6 +116,16 @@ export interface CompileConfig {
116
116
  value: string;
117
117
  }[];
118
118
  }
119
+ /**
120
+ * Named launch configuration — a saved compile config with an identity.
121
+ * Users create these from the compile-mode popover to persist frequently
122
+ * used start-page / scene / query-param combinations and switch between
123
+ * them without recompilation.
124
+ */
125
+ export interface LaunchConfig extends CompileConfig {
126
+ id: string;
127
+ name: string;
128
+ }
119
129
  export interface IpcResult<T = unknown> {
120
130
  success: boolean;
121
131
  data?: T;
@@ -183,6 +193,20 @@ export interface WorkbenchHostInstance {
183
193
  * The returned Disposable removes only the registration it created.
184
194
  */
185
195
  registerSimulatorApi(name: string, handler: SimulatorApiHandler): import('@dimina-kit/electron-deck/main').Disposable;
196
+ /**
197
+ * Read all saved launch configs for the active project.
198
+ * Returns an empty array when no project is open or no configs exist.
199
+ */
200
+ getLaunchConfigs(): Promise<LaunchConfig[]>;
201
+ /**
202
+ * Persist the full list of launch configs for the active project.
203
+ */
204
+ setLaunchConfigs(configs: LaunchConfig[]): Promise<void>;
205
+ /**
206
+ * Activate a named launch config (by id) or revert to normal mode (null).
207
+ * Persists the selection and notifies the renderer to relaunch.
208
+ */
209
+ setActiveLaunchConfig(id: string | null): Promise<void>;
186
210
  }
187
211
  /**
188
212
  * Pluggable backend for the project-list panel. Hosts may supply this to
@@ -201,6 +225,10 @@ export interface ProjectsProvider {
201
225
  updateLastOpened?(dirPath: string): void | Promise<void>;
202
226
  getCompileConfig?(dirPath: string): unknown;
203
227
  saveCompileConfig?(dirPath: string, cfg: unknown): void | Promise<void>;
228
+ getLaunchConfigs?(dirPath: string): unknown[] | Promise<unknown[]>;
229
+ saveLaunchConfigs?(dirPath: string, configs: unknown[]): void | Promise<void>;
230
+ getActiveLaunchConfigId?(dirPath: string): string | null | Promise<string | null>;
231
+ saveActiveLaunchConfigId?(dirPath: string, id: string | null): void | Promise<void>;
204
232
  }
205
233
  /**
206
234
  * A template the user can pick from in the "新建项目" dialog. Exactly one of
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dimina-kit/devtools",
3
- "version": "0.4.0-dev.20260703101348",
3
+ "version": "0.4.0",
4
4
  "description": "Dimina DevTools - modular developer tools for mini app debugging",
5
5
  "keywords": [
6
6
  "dimina",
@@ -85,9 +85,9 @@
85
85
  "chrome-remote-interface": "^0.34.0",
86
86
  "ws": "^8.20.0",
87
87
  "zod": "^4.3.6",
88
- "@dimina-kit/devkit": "0.1.2-dev.20260703101348",
89
- "@dimina-kit/view-anchor": "0.1.0-dev.20260703101348",
90
- "@dimina-kit/electron-deck": "0.1.0-dev.20260703101348"
88
+ "@dimina-kit/view-anchor": "0.1.0",
89
+ "@dimina-kit/electron-deck": "0.1.0",
90
+ "@dimina-kit/devkit": "0.1.2"
91
91
  },
92
92
  "devDependencies": {
93
93
  "@playwright/test": "^1.59.1",
@@ -157,7 +157,7 @@
157
157
  "build:core": "pnpm --filter @dimina-kit/devkit build",
158
158
  "check-types": "tsc --noEmit",
159
159
  "lint": "eslint . --max-warnings 0",
160
- "test": "vitest run",
160
+ "test": "vitest run --reporter=default --reporter=json --outputFile.json=test-report.json --coverage.enabled --coverage.reporter=json-summary --coverage.reportsDirectory=coverage",
161
161
  "test:dev": "vitest",
162
162
  "test:coverage": "vitest run --coverage",
163
163
  "test:e2e": "playwright test",