@dimina-kit/devtools 0.1.0 → 0.2.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 (75) hide show
  1. package/dist/main/api.d.ts +3 -1
  2. package/dist/main/api.d.ts.map +1 -1
  3. package/dist/main/api.js +2 -0
  4. package/dist/main/api.js.map +1 -1
  5. package/dist/main/app/app.d.ts +2 -0
  6. package/dist/main/app/app.d.ts.map +1 -1
  7. package/dist/main/app/app.js +29 -7
  8. package/dist/main/app/app.js.map +1 -1
  9. package/dist/main/services/automation/index.d.ts +2 -1
  10. package/dist/main/services/automation/index.d.ts.map +1 -1
  11. package/dist/main/services/automation/index.js +28 -4
  12. package/dist/main/services/automation/index.js.map +1 -1
  13. package/dist/main/services/simulator-storage/index.d.ts +20 -0
  14. package/dist/main/services/simulator-storage/index.d.ts.map +1 -0
  15. package/dist/main/services/simulator-storage/index.js +136 -0
  16. package/dist/main/services/simulator-storage/index.js.map +1 -0
  17. package/dist/main/services/update/github-release-checker.d.ts +49 -0
  18. package/dist/main/services/update/github-release-checker.d.ts.map +1 -0
  19. package/dist/main/services/update/github-release-checker.js +248 -0
  20. package/dist/main/services/update/github-release-checker.js.map +1 -0
  21. package/dist/main/services/update/index.d.ts +5 -0
  22. package/dist/main/services/update/index.d.ts.map +1 -0
  23. package/dist/main/services/update/index.js +3 -0
  24. package/dist/main/services/update/index.js.map +1 -0
  25. package/dist/main/services/update/update-manager.d.ts +37 -0
  26. package/dist/main/services/update/update-manager.d.ts.map +1 -0
  27. package/dist/main/services/update/update-manager.js +90 -0
  28. package/dist/main/services/update/update-manager.js.map +1 -0
  29. package/dist/preload/instrumentation/index.d.ts +0 -1
  30. package/dist/preload/instrumentation/index.d.ts.map +1 -1
  31. package/dist/preload/instrumentation/index.js +0 -1
  32. package/dist/preload/instrumentation/index.js.map +1 -1
  33. package/dist/preload/windows/main.d.ts +0 -1
  34. package/dist/preload/windows/main.d.ts.map +1 -1
  35. package/dist/preload/windows/main.js +0 -1
  36. package/dist/preload/windows/main.js.map +1 -1
  37. package/dist/preload/windows/simulator.js +1 -109
  38. package/dist/preload/windows/simulator.js.map +4 -4
  39. package/dist/renderer/assets/index-D_HFRqZA.js +46 -0
  40. package/dist/renderer/assets/index-D_HFRqZA.js.map +1 -0
  41. package/dist/renderer/assets/{input-B7sz4y1r.js → input-VLotwer2.js} +2 -2
  42. package/dist/renderer/assets/{input-B7sz4y1r.js.map → input-VLotwer2.js.map} +1 -1
  43. package/dist/renderer/assets/ipc-transport-6Gy3FXIL.css +1 -0
  44. package/dist/renderer/assets/{ipc-transport-L_WD9x12.js → ipc-transport-COKIC6Ny.js} +6 -6
  45. package/dist/renderer/assets/ipc-transport-COKIC6Ny.js.map +1 -0
  46. package/dist/renderer/assets/{popover-CzMIs2j4.js → popover-Dn0RwMLI.js} +2 -2
  47. package/dist/renderer/assets/{popover-CzMIs2j4.js.map → popover-Dn0RwMLI.js.map} +1 -1
  48. package/dist/renderer/assets/{select-BBXJVe8R.js → select-DzIsLaKX.js} +2 -2
  49. package/dist/renderer/assets/{select-BBXJVe8R.js.map → select-DzIsLaKX.js.map} +1 -1
  50. package/dist/renderer/assets/{settings-Db1pvrBJ.js → settings-CD-dacWB.js} +2 -2
  51. package/dist/renderer/assets/{settings-Db1pvrBJ.js.map → settings-CD-dacWB.js.map} +1 -1
  52. package/dist/renderer/assets/settings-api-BV9MPckG.js +2 -0
  53. package/dist/renderer/assets/{settings-api-DJ1M-CNt.js.map → settings-api-BV9MPckG.js.map} +1 -1
  54. package/dist/renderer/assets/{workbenchSettings-BnQsvWkQ.js → workbenchSettings-ClwgsvJL.js} +2 -2
  55. package/dist/renderer/assets/{workbenchSettings-BnQsvWkQ.js.map → workbenchSettings-ClwgsvJL.js.map} +1 -1
  56. package/dist/renderer/entries/main/index.html +5 -5
  57. package/dist/renderer/entries/popover/index.html +5 -5
  58. package/dist/renderer/entries/settings/index.html +5 -5
  59. package/dist/renderer/entries/workbench-settings/index.html +4 -4
  60. package/dist/shared/ipc-channels.d.ts +26 -3
  61. package/dist/shared/ipc-channels.d.ts.map +1 -1
  62. package/dist/shared/ipc-channels.js +10 -3
  63. package/dist/shared/ipc-channels.js.map +1 -1
  64. package/dist/shared/types.d.ts +27 -0
  65. package/dist/shared/types.d.ts.map +1 -1
  66. package/package.json +4 -4
  67. package/dist/preload/instrumentation/storage.d.ts +0 -2
  68. package/dist/preload/instrumentation/storage.d.ts.map +0 -1
  69. package/dist/preload/instrumentation/storage.js +0 -106
  70. package/dist/preload/instrumentation/storage.js.map +0 -1
  71. package/dist/renderer/assets/index-kcmIQPCg.js +0 -2
  72. package/dist/renderer/assets/index-kcmIQPCg.js.map +0 -1
  73. package/dist/renderer/assets/ipc-transport-C9-PPTGn.css +0 -1
  74. package/dist/renderer/assets/ipc-transport-L_WD9x12.js.map +0 -1
  75. package/dist/renderer/assets/settings-api-DJ1M-CNt.js +0 -2
@@ -17,5 +17,7 @@ export { registerSessionIpc } from './ipc/session.js';
17
17
  export { registerToolbarIpc } from './ipc/toolbar.js';
18
18
  export { rendererDir, defaultPreloadPath, getRendererDir, getPreloadDir, getRendererHtml } from './utils/paths.js';
19
19
  export { simulatorDir } from './services/simulator/dir.js';
20
- export type { WorkbenchConfig, WorkbenchAppConfig, CompilationAdapter, ProjectSession, ToolbarAction, BuiltinPanelId, BuiltinModuleId, } from '../shared/types.js';
20
+ export { UpdateManager, createGitHubReleaseChecker } from './services/update/index.js';
21
+ export type { UpdateManagerOptions, GitHubReleaseCheckerOptions, PickAssetContext, VersionScheme, } from './services/update/index.js';
22
+ export type { WorkbenchConfig, WorkbenchAppConfig, CompilationAdapter, ProjectSession, ToolbarAction, BuiltinPanelId, BuiltinModuleId, UpdateChecker, UpdateInfo, } from '../shared/types.js';
21
23
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/main/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAGxD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGhE,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AACxG,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,YAAY,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGrD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAG1D,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/main/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAGxD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGhE,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AACxG,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,YAAY,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGrD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAG1D,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACtF,YAAY,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,gBAAgB,EAChB,aAAa,GACd,MAAM,4BAA4B,CAAA;AAGnC,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,aAAa,EACb,UAAU,GACX,MAAM,oBAAoB,CAAA"}
package/dist/main/api.js CHANGED
@@ -19,4 +19,6 @@ export { registerToolbarIpc } from './ipc/toolbar.js';
19
19
  // ── Paths ────────────────────────────────────────────────────────────────
20
20
  export { rendererDir, defaultPreloadPath, getRendererDir, getPreloadDir, getRendererHtml } from './utils/paths.js';
21
21
  export { simulatorDir } from './services/simulator/dir.js';
22
+ // ── Update checker ───────────────────────────────────────────────────────
23
+ export { UpdateManager, createGitHubReleaseChecker } from './services/update/index.js';
22
24
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/main/api.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAGjD,4EAA4E;AAC5E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhE,4EAA4E;AAC5E,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAExG,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAGpE,4EAA4E;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,4EAA4E;AAC5E,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/main/api.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAGjD,4EAA4E;AAC5E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhE,4EAA4E;AAC5E,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAExG,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAGpE,4EAA4E;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,4EAA4E;AAC5E,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE1D,4EAA4E;AAC5E,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA"}
@@ -2,10 +2,12 @@ import { BrowserWindow } from 'electron';
2
2
  import type { WorkbenchAppConfig } from '../../shared/types.js';
3
3
  import { type WorkbenchContext } from '../services/workbench-context.js';
4
4
  import { type AutomationServer } from '../services/automation/index.js';
5
+ import { UpdateManager } from '../services/update/index.js';
5
6
  export interface WorkbenchAppInstance {
6
7
  mainWindow: BrowserWindow;
7
8
  context: WorkbenchContext;
8
9
  automationServer?: AutomationServer;
10
+ updateManager?: UpdateManager;
9
11
  dispose: () => Promise<void>;
10
12
  }
11
13
  export declare function createWorkbenchApp(config?: WorkbenchAppConfig): {
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/main/app/app.ts"],"names":[],"mappings":"AAEA,OAAO,EAAO,aAAa,EAAe,MAAM,UAAU,CAAA;AAG1D,OAAO,KAAK,EAAmB,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAIhF,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAahG,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAyB9F,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,aAAa,CAAA;IACzB,OAAO,EAAE,gBAAgB,CAAA;IACzB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAqID,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,kBAAuB;iBAMxC,OAAO,CAAC,oBAAoB,CAAC;iBA8BnC,IAAI;EAYvB"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/main/app/app.ts"],"names":[],"mappings":"AAEA,OAAO,EAAO,aAAa,EAAe,MAAM,UAAU,CAAA;AAG1D,OAAO,KAAK,EAAmB,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAIhF,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAahG,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAG9F,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAwB3D,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,aAAa,CAAA;IACzB,OAAO,EAAE,gBAAgB,CAAA;IACzB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AA0ID,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,kBAAuB;iBAMxC,OAAO,CAAC,oBAAoB,CAAC;iBA6CnC,IAAI;EAYvB"}
@@ -11,6 +11,8 @@ import { installAppMenu } from '../menu/index.js';
11
11
  import { registerAppIpc, registerSimulatorIpc, registerPanelsIpc, registerPopoverIpc, registerProjectsIpc, registerSessionIpc, registerSettingsIpc, registerToolbarIpc, } from '../ipc/index.js';
12
12
  import { startAutomationServer } from '../services/automation/index.js';
13
13
  import { startMcpServer } from '../services/mcp/index.js';
14
+ import { setupSimulatorStorage } from '../services/simulator-storage/index.js';
15
+ import { UpdateManager } from '../services/update/index.js';
14
16
  const DEFAULT_MODULES = {
15
17
  projects: true,
16
18
  session: true,
@@ -39,7 +41,10 @@ function parseAutoArgs() {
39
41
  if (argv[i] === 'auto' || argv[i] === '--auto')
40
42
  auto = true;
41
43
  if ((argv[i] === '--auto-port' || argv[i] === '--auto_port') && argv[i + 1]) {
42
- autoPort = parseInt(argv[i + 1], 10);
44
+ const parsed = parseInt(argv[i + 1], 10);
45
+ // 0 → OS-assigned free port (used by parallel e2e workers)
46
+ if (Number.isFinite(parsed) && parsed >= 0)
47
+ autoPort = parsed;
43
48
  }
44
49
  if (argv[i] === '--project' && argv[i + 1]) {
45
50
  projectPath = argv[i + 1];
@@ -53,7 +58,8 @@ function resolveModules(config) {
53
58
  ...config.modules,
54
59
  };
55
60
  }
56
- async function disposeContext(ctx) {
61
+ async function disposeContext(ctx, updateManager) {
62
+ updateManager?.dispose();
57
63
  await ctx.workspace.closeProject();
58
64
  }
59
65
  function createConfiguredMainWindow(config, rendererDir) {
@@ -102,12 +108,14 @@ function installMenu(config, mainWindow, context) {
102
108
  installAppMenu(context);
103
109
  }
104
110
  }
105
- function setupAutomation(instance) {
111
+ async function setupAutomation(instance) {
106
112
  // Start automation server if --auto flag is present
107
113
  const autoArgs = parseAutoArgs();
108
114
  if (autoArgs.auto) {
109
- instance.automationServer = startAutomationServer(instance.context, autoArgs.autoPort);
110
- console.log(`[Automation] WebSocket server listening on ws://127.0.0.1:${autoArgs.autoPort}`);
115
+ const server = await startAutomationServer(instance.context, autoArgs.autoPort);
116
+ instance.automationServer = server;
117
+ // Stable, parseable line for e2e harnesses that scrape stdout.
118
+ console.log(`[automation] listening on ws://127.0.0.1:${server.port}`);
111
119
  }
112
120
  }
113
121
  function setupMcp() {
@@ -165,12 +173,26 @@ export function createWorkbenchApp(config = {}) {
165
173
  registerAppIpc(context);
166
174
  registerBuiltinModules(config, context);
167
175
  installMenu(config, mainWindow, context);
168
- const instance = { mainWindow, context, dispose: () => disposeContext(context) };
176
+ const instance = {
177
+ mainWindow,
178
+ context,
179
+ dispose: () => disposeContext(context, instance.updateManager),
180
+ };
169
181
  if (config.onSetup) {
170
182
  await config.onSetup(instance);
171
183
  }
172
- setupAutomation(instance);
184
+ if (config.updateChecker) {
185
+ instance.updateManager = new UpdateManager({
186
+ checker: config.updateChecker,
187
+ mainWindow,
188
+ checkInterval: config.updateOptions?.checkInterval,
189
+ initialDelay: config.updateOptions?.initialDelay,
190
+ getCurrentVersion: config.updateOptions?.getCurrentVersion,
191
+ });
192
+ }
193
+ await setupAutomation(instance);
173
194
  setupMcp();
195
+ setupSimulatorStorage(mainWindow.webContents);
174
196
  wireAppWindowEvents(config, instance);
175
197
  enableDevRendererAutoReload(rendererDir);
176
198
  return instance;
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/main/app/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,sBAAsB,EAAyB,MAAM,kCAAkC,CAAA;AAChG,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,qBAAqB,EAAyB,MAAM,iCAAiC,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,MAAM,eAAe,GAAqC;IACxD,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;CACf,CAAA;AAID,MAAM,iBAAiB,GAA8C;IACnE,QAAQ,EAAE,mBAAmB;IAC7B,OAAO,EAAE,kBAAkB;IAC3B,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;QACjB,oBAAoB,CAAC,GAAG,CAAC,CAAA;QACzB,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACtB,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IACD,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,mBAAmB;CAC9B,CAAA;AASD,8DAA8D;AAC9D,SAAS,aAAa;IACpB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IACzB,IAAI,IAAI,GAAG,KAAK,CAAA;IAChB,IAAI,QAAQ,GAAG,IAAI,CAAA;IACnB,IAAI,WAAW,GAAG,EAAE,CAAA;IAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,IAAI,GAAG,IAAI,CAAA;QAC3D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,EAAE,CAAC,CAAA;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3C,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;AACxC,CAAC;AAED,SAAS,cAAc,CAAC,MAA0B;IAChD,OAAO;QACL,GAAG,eAAe;QAClB,GAAG,MAAM,CAAC,OAAO;KAClB,CAAA;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAqB;IACjD,MAAM,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,CAAA;AACpC,CAAC;AAED,SAAS,0BAA0B,CAAC,MAA0B,EAAE,WAAmB;IACjF,MAAM,UAAU,GAAG,gBAAgB,CAAC;QAClC,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,iBAAiB;QAC1C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC;QAC5D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM;QAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ;QACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS;KACpC,CAAC,CAAA;IAEF,kFAAkF;IAClF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACpD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,MAA0B,EAAE,UAAyB,EAAE,WAAmB;IAC/F,OAAO,sBAAsB,CAAC;QAC5B,UAAU;QACV,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,kBAAkB;QACrD,WAAW;QACX,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA0B,EAAE,OAAyB;IACnF,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CACrC;IAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAuB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChE,IAAI,OAAO,CAAC,QAAQ,CAAC;YAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAA0B,EAAE,UAAyB,EAAE,OAAyB;IACnG,0DAA0D;IAC1D,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,OAAO,CAAC,CAAA;IACzB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,QAA8B;IACrD,oDAAoD;IACpD,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAA;IAChC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,QAAQ,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACtF,OAAO,CAAC,GAAG,CAAC,6DAA6D,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC/F,CAAC;AACH,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAA;IACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO;QAAE,OAAM;IAEjC,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAA;IAC7E,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAA;IAC/E,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAC5C,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA0B,EAAE,QAA8B;IACrF,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAA;IACxC,oBAAoB,CAAC,UAAU,EAAE;QAC/B,OAAO;QACP,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE;QAC7C,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE;gBAAE,OAAM;YAEjD,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzB,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YACtC,CAAC;YACD,MAAM,cAAc,CAAC,OAAO,CAAC,CAAA;YAC7B,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAA;QACrC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,WAAmB;IACtD,yEAAyE;IACzE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACpB,IAAI,WAAW,GAAyC,IAAI,CAAA;QAC5D,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;YAC9C,IAAI,WAAW;gBAAE,YAAY,CAAC,WAAW,CAAC,CAAA;YAC1C,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC;oBAChD,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,CAAA;gBAC1B,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAA;QACT,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAA6B,EAAE;IAChE,IAAI,YAAY,GAAyC,IAAI,CAAA;IAC7D,IAAI,mBAAmB,GAAG,KAAK,CAAA;IAE/B,YAAY,EAAE,CAAA;IAEd,KAAK,UAAU,KAAK;QAClB,IAAI,YAAY;YAAE,OAAO,YAAY,CAAA;QAErC,YAAY,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAC7C,UAAU,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAA;YAEzC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,kBAAkB,CAAA;YAC5D,MAAM,UAAU,GAAG,0BAA0B,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;YAClE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;YAC9D,cAAc,CAAC,OAAO,CAAC,CAAA;YACvB,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YACvC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAExC,MAAM,QAAQ,GAAyB,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAA;YAEtG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAChC,CAAC;YAED,eAAe,CAAC,QAAQ,CAAC,CAAA;YACzB,QAAQ,EAAE,CAAA;YACV,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACrC,2BAA2B,CAAC,WAAW,CAAC,CAAA;YAExC,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,SAAS,KAAK;QACZ,KAAK,KAAK,EAAE,CAAA;QACZ,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,mBAAmB,GAAG,IAAI,CAAA;YAC1B,oBAAoB,EAAE,CAAA;QACxB,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK;QACL,KAAK;KACN,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/main/app/app.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,6 @@ export interface AutomationServer {
14
14
  close: () => void;
15
15
  port: number;
16
16
  }
17
- export declare function startAutomationServer(ctx: WorkbenchContext, port: number): AutomationServer;
17
+ export declare function getAutomationPort(): number | null;
18
+ export declare function startAutomationServer(ctx: WorkbenchContext, port?: number): Promise<AutomationServer>;
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/main/services/automation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAmB/D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,MAAM,GACX,gBAAgB,CAuElB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/main/services/automation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAmB/D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAKD,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,gBAAgB,EACrB,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,gBAAgB,CAAC,CA4F3B"}
@@ -9,9 +9,9 @@
9
9
  * This server handles these messages by delegating to the workbench context
10
10
  * (simulator webContents, IPC handlers, etc.) without modifying dimina upstream.
11
11
  */
12
- /// <reference types="electron" />
12
+ import { ipcMain } from 'electron';
13
13
  import { WebSocketServer } from 'ws';
14
- import { SimulatorChannel } from '../../../shared/ipc-channels.js';
14
+ import { AutomationChannel, SimulatorChannel } from '../../../shared/ipc-channels.js';
15
15
  import { getSimulator } from './exec.js';
16
16
  import { toolHandlers } from './handlers/tool.js';
17
17
  import { appHandlers } from './handlers/app.js';
@@ -24,9 +24,26 @@ const handlers = {
24
24
  ...pageHandlers,
25
25
  ...elementHandlers,
26
26
  };
27
- export function startAutomationServer(ctx, port) {
27
+ let currentPort = null;
28
+ let portIpcRegistered = false;
29
+ export function getAutomationPort() {
30
+ return currentPort;
31
+ }
32
+ export async function startAutomationServer(ctx, port = 0) {
28
33
  const wss = new WebSocketServer({ port });
29
34
  const clients = new Set();
35
+ await new Promise((resolve, reject) => {
36
+ wss.once('listening', () => resolve());
37
+ wss.once('error', (err) => reject(err));
38
+ });
39
+ const addr = wss.address();
40
+ // ws always binds via an http.Server, so address() is AddressInfo here.
41
+ const resolvedPort = typeof addr === 'object' && addr ? addr.port : port;
42
+ currentPort = resolvedPort;
43
+ if (!portIpcRegistered) {
44
+ portIpcRegistered = true;
45
+ ipcMain.handle(AutomationChannel.GetPort, () => currentPort);
46
+ }
30
47
  function broadcast(event) {
31
48
  const msg = JSON.stringify(event);
32
49
  for (const ws of clients) {
@@ -90,6 +107,13 @@ export function startAutomationServer(ctx, port) {
90
107
  });
91
108
  ws.on('close', () => clients.delete(ws));
92
109
  });
93
- return { close: () => wss.close(), port };
110
+ return {
111
+ close: () => {
112
+ if (currentPort === resolvedPort)
113
+ currentPort = null;
114
+ wss.close();
115
+ },
116
+ port: resolvedPort,
117
+ };
94
118
  }
95
119
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/main/services/automation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/main/services/automation/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * SimulatorStorageWatcher
3
+ *
4
+ * Attaches the Chrome DevTools Protocol debugger to the simulator <webview>
5
+ * and forwards `DOMStorage.*` events to the renderer host. Replaces the
6
+ * preload-side localStorage.setItem hook that used to push storage changes
7
+ * via SimulatorChannel.Storage / StorageAll.
8
+ *
9
+ * Trade-offs vs the preload approach:
10
+ * + Uses standard browser protocol; no preload injection
11
+ * + Captures every change including ones bypassing wx (api-compat fallback,
12
+ * direct localStorage.setItem from devtools, etc.)
13
+ * + Decouples panel UI from dimina runtime's wx implementation
14
+ * - debugger.attach is mutually exclusive with Chrome DevTools (F12).
15
+ * If a user opens DevTools on the simulator the debugger detaches and
16
+ * events stop flowing until they close it.
17
+ */
18
+ import { type WebContents } from 'electron';
19
+ export declare function setupSimulatorStorage(host: WebContents): void;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/main/services/simulator-storage/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AA2FlF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CA2B7D"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * SimulatorStorageWatcher
3
+ *
4
+ * Attaches the Chrome DevTools Protocol debugger to the simulator <webview>
5
+ * and forwards `DOMStorage.*` events to the renderer host. Replaces the
6
+ * preload-side localStorage.setItem hook that used to push storage changes
7
+ * via SimulatorChannel.Storage / StorageAll.
8
+ *
9
+ * Trade-offs vs the preload approach:
10
+ * + Uses standard browser protocol; no preload injection
11
+ * + Captures every change including ones bypassing wx (api-compat fallback,
12
+ * direct localStorage.setItem from devtools, etc.)
13
+ * + Decouples panel UI from dimina runtime's wx implementation
14
+ * - debugger.attach is mutually exclusive with Chrome DevTools (F12).
15
+ * If a user opens DevTools on the simulator the debugger detaches and
16
+ * events stop flowing until they close it.
17
+ */
18
+ import { app, ipcMain, webContents as wcStatic } from 'electron';
19
+ import { SimulatorStorageChannel, } from '../../../shared/ipc-channels.js';
20
+ let attachedWc = null;
21
+ let hostWc = null;
22
+ function isSimulatorWebview(wc) {
23
+ if (wc.isDestroyed())
24
+ return false;
25
+ if (wc.getType() !== 'webview')
26
+ return false;
27
+ return wc.getURL().includes('simulator.html');
28
+ }
29
+ function detach() {
30
+ if (!attachedWc)
31
+ return;
32
+ const wc = attachedWc;
33
+ attachedWc = null;
34
+ try {
35
+ if (!wc.isDestroyed() && wc.debugger.isAttached()) {
36
+ wc.debugger.detach();
37
+ }
38
+ }
39
+ catch {
40
+ // best-effort
41
+ }
42
+ }
43
+ async function attachToSim(wc) {
44
+ if (attachedWc === wc)
45
+ return;
46
+ if (wc.isDestroyed())
47
+ return;
48
+ detach();
49
+ try {
50
+ if (!wc.debugger.isAttached()) {
51
+ wc.debugger.attach('1.3');
52
+ }
53
+ await wc.debugger.sendCommand('DOMStorage.enable');
54
+ wc.debugger.on('message', onCdpMessage);
55
+ wc.debugger.on('detach', () => {
56
+ if (attachedWc === wc)
57
+ attachedWc = null;
58
+ });
59
+ wc.once('destroyed', () => {
60
+ if (attachedWc === wc)
61
+ attachedWc = null;
62
+ });
63
+ attachedWc = wc;
64
+ }
65
+ catch (e) {
66
+ console.warn('[storage-watcher] attach failed:', e.message);
67
+ }
68
+ }
69
+ function onCdpMessage(_event, method, params) {
70
+ if (!hostWc || hostWc.isDestroyed())
71
+ return;
72
+ const p = params;
73
+ let evt;
74
+ switch (method) {
75
+ case 'DOMStorage.domStorageItemAdded':
76
+ evt = { type: 'added', key: String(p.key), newValue: String(p.newValue ?? '') };
77
+ break;
78
+ case 'DOMStorage.domStorageItemUpdated':
79
+ evt = {
80
+ type: 'updated',
81
+ key: String(p.key),
82
+ oldValue: String(p.oldValue ?? ''),
83
+ newValue: String(p.newValue ?? ''),
84
+ };
85
+ break;
86
+ case 'DOMStorage.domStorageItemRemoved':
87
+ evt = { type: 'removed', key: String(p.key) };
88
+ break;
89
+ case 'DOMStorage.domStorageItemsCleared':
90
+ evt = { type: 'cleared' };
91
+ break;
92
+ default:
93
+ return;
94
+ }
95
+ hostWc.send(SimulatorStorageChannel.Event, evt);
96
+ }
97
+ async function getSnapshot() {
98
+ if (!attachedWc || attachedWc.isDestroyed())
99
+ return [];
100
+ try {
101
+ const origin = await attachedWc.executeJavaScript('location.origin');
102
+ const result = (await attachedWc.debugger.sendCommand('DOMStorage.getDOMStorageItems', {
103
+ storageId: { securityOrigin: origin, isLocalStorage: true },
104
+ }));
105
+ return result.entries.map(([key, value]) => ({ key, value }));
106
+ }
107
+ catch {
108
+ return [];
109
+ }
110
+ }
111
+ export function setupSimulatorStorage(host) {
112
+ hostWc = host;
113
+ // Attach to any simulator webview that already exists (project may have
114
+ // been opened before this function runs).
115
+ for (const wc of wcStatic.getAllWebContents()) {
116
+ if (isSimulatorWebview(wc)) {
117
+ void attachToSim(wc);
118
+ break;
119
+ }
120
+ }
121
+ // Catch new simulator webviews on creation. did-finish-load is the right
122
+ // moment because getURL() may still be 'about:blank' at creation.
123
+ app.on('web-contents-created', (_event, wc) => {
124
+ wc.on('did-finish-load', () => {
125
+ if (isSimulatorWebview(wc)) {
126
+ void attachToSim(wc);
127
+ }
128
+ });
129
+ wc.on('did-navigate-in-page', () => {
130
+ // Project switched but same webview — attach already correct, debugger
131
+ // session survives in-page navigations. No-op.
132
+ });
133
+ });
134
+ ipcMain.handle(SimulatorStorageChannel.GetSnapshot, getSnapshot);
135
+ }
136
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/main/services/simulator-storage/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { UpdateChecker } from '../../../shared/types.js';
2
+ interface GitHubReleaseAsset {
3
+ name: string;
4
+ browser_download_url: string;
5
+ size: number;
6
+ }
7
+ interface GitHubRelease {
8
+ tag_name: string;
9
+ name?: string;
10
+ body?: string;
11
+ prerelease: boolean;
12
+ draft: boolean;
13
+ assets: GitHubReleaseAsset[];
14
+ }
15
+ export type VersionScheme = 'semver' | 'trailing-number';
16
+ export interface GitHubReleaseCheckerOptions {
17
+ owner: string;
18
+ repo: string;
19
+ /** Optional GitHub token (required for private repos; recommended to avoid rate limits). */
20
+ token?: string;
21
+ /** Include prereleases when resolving the latest version. Default: false. */
22
+ includePrereleases?: boolean;
23
+ /** Mark every delivered update as mandatory. Default: false. */
24
+ mandatory?: boolean;
25
+ /**
26
+ * Built-in version scheme. Ignored when `parseVersion` is supplied.
27
+ * - `'semver'` (default): extract `x.y.z` from `tag_name` → release name → first asset name.
28
+ * - `'trailing-number'`: treat the trailing `-<N>` in `tag_name` as the version
29
+ * (e.g. `release-20260422-1` → `'1'`). Compared as an integer.
30
+ */
31
+ versionScheme?: VersionScheme;
32
+ /**
33
+ * Custom asset picker. Receives the release assets plus the current
34
+ * process platform/arch. If omitted, a built-in picker is used that
35
+ * matches by file extension and arch suffix.
36
+ */
37
+ pickAsset?: (assets: GitHubReleaseAsset[], ctx: PickAssetContext) => GitHubReleaseAsset | undefined;
38
+ /**
39
+ * Extract the version string from a release. Overrides `versionScheme`.
40
+ */
41
+ parseVersion?: (release: GitHubRelease) => string | null;
42
+ }
43
+ export interface PickAssetContext {
44
+ platform: NodeJS.Platform;
45
+ arch: string;
46
+ }
47
+ export declare function createGitHubReleaseChecker(opts: GitHubReleaseCheckerOptions): UpdateChecker;
48
+ export {};
49
+ //# sourceMappingURL=github-release-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-release-checker.d.ts","sourceRoot":"","sources":["../../../../src/main/services/update/github-release-checker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,0BAA0B,CAAA;AAEzE,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,MAAM,CAAA;IAC5B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,kBAAkB,EAAE,CAAA;CAC7B;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,iBAAiB,CAAA;AAExD,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,4FAA4F;IAC5F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,gEAAgE;IAChE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,GAAG,EAAE,gBAAgB,KAAK,kBAAkB,GAAG,SAAS,CAAA;IACnG;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,GAAG,IAAI,CAAA;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,2BAA2B,GAAG,aAAa,CAyC3F"}