@dimina-kit/devtools 0.3.2-dev.20260611060732 → 0.3.2-dev.20260611063505

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 (25) hide show
  1. package/README.md +19 -6
  2. package/dist/main/api.d.ts +1 -1
  3. package/dist/main/app/app.js +3 -0
  4. package/dist/main/index.bundle.js +27 -6
  5. package/dist/main/services/toolbar/toolbar-store.d.ts +3 -3
  6. package/dist/main/services/toolbar/toolbar-store.js +18 -1
  7. package/dist/main/services/workbench-context.d.ts +6 -1
  8. package/dist/main/services/workspace/workspace-service.js +13 -7
  9. package/dist/renderer/assets/index-CZQOpCvg.js +50 -0
  10. package/dist/renderer/assets/{input-QGx6FFX1.js → input-CFHmbOgz.js} +2 -2
  11. package/dist/renderer/assets/{ipc-transport-DvZvwK-Z.js → ipc-transport-BkKKww3u.js} +1 -1
  12. package/dist/renderer/assets/ipc-transport-Bv_BVu4T.css +1 -0
  13. package/dist/renderer/assets/{popover-BOH1If1J.js → popover-h1M7n3tt.js} +2 -2
  14. package/dist/renderer/assets/{select-C7JQ8G5N.js → select-kj0n1oYf.js} +2 -2
  15. package/dist/renderer/assets/{settings-DpAbTJyF.js → settings-Cl4IcWnG.js} +2 -2
  16. package/dist/renderer/assets/{settings-api-RD2IZF53.js → settings-api-CCwo2eOi.js} +2 -2
  17. package/dist/renderer/assets/{workbenchSettings-CNJX4Qna.js → workbenchSettings-BzlpQnve.js} +2 -2
  18. package/dist/renderer/entries/main/index.html +5 -5
  19. package/dist/renderer/entries/popover/index.html +5 -5
  20. package/dist/renderer/entries/settings/index.html +5 -5
  21. package/dist/renderer/entries/workbench-settings/index.html +4 -4
  22. package/dist/shared/types.d.ts +37 -0
  23. package/package.json +6 -6
  24. package/dist/renderer/assets/index-CcJKzatF.js +0 -50
  25. package/dist/renderer/assets/ipc-transport-BT4QYQqu.css +0 -1
@@ -5,12 +5,12 @@
5
5
  <!-- See main/index.html for CSP rationale. -->
6
6
  <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:;" />
7
7
  <title>Settings</title>
8
- <script type="module" crossorigin src="../../assets/settings-DpAbTJyF.js"></script>
8
+ <script type="module" crossorigin src="../../assets/settings-Cl4IcWnG.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="../../assets/chunk-DPI0Y_ll.js">
10
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-DvZvwK-Z.js">
11
- <link rel="modulepreload" crossorigin href="../../assets/input-QGx6FFX1.js">
12
- <link rel="modulepreload" crossorigin href="../../assets/settings-api-RD2IZF53.js">
13
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-BT4QYQqu.css">
10
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-BkKKww3u.js">
11
+ <link rel="modulepreload" crossorigin href="../../assets/input-CFHmbOgz.js">
12
+ <link rel="modulepreload" crossorigin href="../../assets/settings-api-CCwo2eOi.js">
13
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-Bv_BVu4T.css">
14
14
  </head>
15
15
  <body>
16
16
  <div id="root"></div>
@@ -6,12 +6,12 @@
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-CNJX4Qna.js"></script>
9
+ <script type="module" crossorigin src="../../assets/workbenchSettings-BzlpQnve.js"></script>
10
10
  <link rel="modulepreload" crossorigin href="../../assets/chunk-DPI0Y_ll.js">
11
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-DvZvwK-Z.js">
12
- <link rel="modulepreload" crossorigin href="../../assets/settings-api-RD2IZF53.js">
11
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-BkKKww3u.js">
12
+ <link rel="modulepreload" crossorigin href="../../assets/settings-api-CCwo2eOi.js">
13
13
  <link rel="modulepreload" crossorigin href="../../assets/constants-CLAQX6VZ.js">
14
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-BT4QYQqu.css">
14
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-Bv_BVu4T.css">
15
15
  </head>
16
16
  <body>
17
17
  <div id="root"></div>
@@ -27,9 +27,33 @@ export type BuiltinModuleId = 'projects' | 'session' | 'simulator' | 'popover' |
27
27
  * Cross-IPC / renderer shape of a toolbar action. Carries no `handler` — the
28
28
  * handler is non-serialisable and never crosses the IPC boundary.
29
29
  */
30
+ export type ToolbarActionPlacement = 'leading' | 'primary' | 'trailing';
31
+ export type ToolbarActionKind = 'button' | 'avatar';
32
+ export type BeforeOpenProjectResult = {
33
+ allow: true;
34
+ statusMessage?: string;
35
+ } | {
36
+ allow: false;
37
+ reason: string;
38
+ userMessage?: string;
39
+ };
30
40
  export interface ToolbarAction {
31
41
  id: string;
32
42
  label: string;
43
+ /** Visual treatment. `avatar` keeps an account entry circular even without an image URL. */
44
+ kind?: ToolbarActionKind;
45
+ /**
46
+ * Optional visual placement in the project-window header.
47
+ * Omitted actions default to `primary` so existing hosts remain visible
48
+ * near the compile controls.
49
+ */
50
+ placement?: ToolbarActionPlacement;
51
+ /** Short text glyph rendered before the label for compact host actions. */
52
+ icon?: string;
53
+ /** Explicit fallback text for avatar actions when no image URL is available. */
54
+ displayInitial?: string;
55
+ /** Avatar image URL for account-style actions. Falls back to label initials. */
56
+ avatarUrl?: string;
33
57
  }
34
58
  /**
35
59
  * Host-facing toolbar action passed to `instance.toolbar.set()`. Includes the
@@ -39,6 +63,11 @@ export interface ToolbarAction {
39
63
  export interface ToolbarActionInput {
40
64
  id: string;
41
65
  label: string;
66
+ kind?: ToolbarActionKind;
67
+ placement?: ToolbarActionPlacement;
68
+ icon?: string;
69
+ displayInitial?: string;
70
+ avatarUrl?: string;
42
71
  handler: () => void | Promise<void>;
43
72
  }
44
73
  export interface WorkbenchConfig {
@@ -132,6 +161,10 @@ export interface WorkbenchHostInstance {
132
161
  set(actions: ToolbarActionInput[]): void;
133
162
  };
134
163
  }
164
+ export type BeforeOpenProjectHook = (ctx: {
165
+ projectPath: string;
166
+ instance: WorkbenchHostInstance;
167
+ }) => BeforeOpenProjectResult | Promise<BeforeOpenProjectResult>;
135
168
  /**
136
169
  * Pluggable backend for the project-list panel. Hosts may supply this to
137
170
  * take over project storage from the default `<userData>/dimina-projects.json`.
@@ -149,6 +182,8 @@ export interface ProjectsProvider {
149
182
  updateLastOpened?(dirPath: string): void | Promise<void>;
150
183
  getCompileConfig?(dirPath: string): unknown;
151
184
  saveCompileConfig?(dirPath: string, cfg: unknown): void | Promise<void>;
185
+ saveThumbnail?(dirPath: string, imageDataUrl: string): void | Promise<void>;
186
+ getThumbnail?(dirPath: string): string | null | Promise<string | null>;
152
187
  }
153
188
  export interface ProjectTemplate {
154
189
  id: string;
@@ -182,6 +217,8 @@ export interface WorkbenchAppConfig extends WorkbenchConfig {
182
217
  menuBuilder?: (mainWindow: import('electron').BrowserWindow, menuContext: MenuContext) => void;
183
218
  /** Called after window and context are created but before start() resolves. Use to register custom IPC handlers. */
184
219
  onSetup?: (instance: WorkbenchHostInstance) => void | Promise<void>;
220
+ /** Called after project-directory validation but before an active session is closed and a new project compile starts. */
221
+ onBeforeOpenProject?: BeforeOpenProjectHook;
185
222
  /** Called before window close when a session is active. Session disposal happens automatically after this hook. */
186
223
  onBeforeClose?: (instance: WorkbenchHostInstance) => void | Promise<void>;
187
224
  /** Custom update checker. If provided, enables the check-for-updates feature. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dimina-kit/devtools",
3
- "version": "0.3.2-dev.20260611060732",
3
+ "version": "0.3.2-dev.20260611063505",
4
4
  "description": "Dimina DevTools - modular developer tools for mini app debugging",
5
5
  "keywords": [
6
6
  "dimina",
@@ -86,9 +86,9 @@
86
86
  "monaco-editor": "^0.55.1",
87
87
  "ws": "^8.20.0",
88
88
  "zod": "^4.3.6",
89
- "@dimina-kit/view-anchor": "0.1.0-dev.20260611060732",
90
- "@dimina-kit/electron-deck": "0.1.0-dev.20260611060732",
91
- "@dimina-kit/devkit": "0.1.2-dev.20260611060732"
89
+ "@dimina-kit/view-anchor": "0.1.0-dev.20260611063505",
90
+ "@dimina-kit/electron-deck": "0.1.0-dev.20260611063505",
91
+ "@dimina-kit/devkit": "0.1.2-dev.20260611063505"
92
92
  },
93
93
  "devDependencies": {
94
94
  "@playwright/test": "^1.59.1",
@@ -131,8 +131,8 @@
131
131
  "typescript": "5.9.2",
132
132
  "vite": "^8.0.8",
133
133
  "vitest": "^4.1.4",
134
- "@dimina-kit/typescript-config": "0.1.0",
135
- "@dimina-kit/eslint-config": "0.1.0"
134
+ "@dimina-kit/eslint-config": "0.1.0",
135
+ "@dimina-kit/typescript-config": "0.1.0"
136
136
  },
137
137
  "peerDependencies": {
138
138
  "electron": ">=36"