@omega.js/desktop 0.52.0 → 0.54.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 (345) hide show
  1. package/README.md +53 -48
  2. package/dist/assets/css/core/_initialize.scss +1 -1
  3. package/dist/assets/js/core/app-shell.js +14 -15
  4. package/dist/assets/themes/_template/_theme.js +6 -6
  5. package/dist/assets/themes/base/_includes/global/sections/account.html +4 -4
  6. package/dist/assets/themes/base/_includes/global/sections/app-sidebar.html +5 -5
  7. package/dist/assets/themes/base/_layouts/frontend/pages/account/index.html +3 -3
  8. package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/index.html +1 -1
  9. package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/tag.html +1 -1
  10. package/dist/assets/themes/base/_layouts/frontend/pages/payment/confirmation.html +1 -1
  11. package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.js +2 -3
  12. package/dist/assets/themes/base/_sections/verts/unit/section.html +1 -1
  13. package/dist/assets/themes/base/_sections/verts/unit/section.js +3 -4
  14. package/dist/assets/themes/base/_theme.js +4 -3
  15. package/dist/assets/themes/bootstrap/_theme.js +2 -2
  16. package/dist/assets/themes/bootstrap/overrides/_links.scss +1 -1
  17. package/dist/assets/themes/classy/_theme.js +8 -6
  18. package/dist/assets/themes/classy/css/marketing/_sections.scss +1 -2
  19. package/dist/assets/themes/classy/js/hero-demo-form.js +3 -2
  20. package/dist/assets/themes/neobrutalism/_theme.js +5 -5
  21. package/dist/assets/themes/neobrutalism/js/pages/test/libraries/layers/index.js +1 -1
  22. package/dist/assets/themes/newsflash/_theme.js +6 -6
  23. package/dist/assets/themes/newsflash/js/pages/test/libraries/layers/index.js +1 -1
  24. package/dist/build.js +87 -111
  25. package/dist/cli-run.js +4 -1
  26. package/dist/cli.js +3 -3
  27. package/dist/commands/build.js +2 -2
  28. package/dist/commands/cdp/capture.js +2 -2
  29. package/dist/commands/cdp/client.js +1 -1
  30. package/dist/commands/cdp/quit.js +2 -2
  31. package/dist/commands/cdp/relaunch.js +2 -2
  32. package/dist/commands/cdp/theme.js +1 -1
  33. package/dist/commands/cdp.js +1 -1
  34. package/dist/commands/clean.js +4 -5
  35. package/dist/commands/deploy.js +4 -4
  36. package/dist/commands/dev.js +25 -0
  37. package/dist/commands/finalize-release.js +4 -4
  38. package/dist/commands/launch.js +2 -2
  39. package/dist/commands/lib/deploy-precheck.js +3 -3
  40. package/dist/commands/lib/ensure-target.js +18 -23
  41. package/dist/commands/lib/migrate.js +17 -0
  42. package/dist/commands/logs.js +1 -1
  43. package/dist/commands/package.js +2 -2
  44. package/dist/commands/publish.js +2 -2
  45. package/dist/commands/release.js +4 -4
  46. package/dist/commands/runner.js +11 -11
  47. package/dist/commands/sign-windows.js +5 -5
  48. package/dist/commands/test.js +8 -8
  49. package/dist/commands/update.js +7 -6
  50. package/dist/commands/validate-certs.js +4 -4
  51. package/dist/commands/version.js +3 -3
  52. package/dist/defaults/.github/workflows/build.yml +18 -18
  53. package/dist/defaults/_.gitignore +0 -2
  54. package/dist/defaults/_mas/README.md +3 -3
  55. package/dist/defaults/config/certs/README.md +1 -1
  56. package/dist/defaults/config/omega.json5 +43 -43
  57. package/dist/defaults/docs/README.md +3 -3
  58. package/dist/defaults/gulpfile.js +1 -1
  59. package/dist/defaults/hooks/build/post.js +2 -2
  60. package/dist/defaults/hooks/build/pre.js +2 -2
  61. package/dist/defaults/hooks/deploy/pre.js +1 -1
  62. package/dist/defaults/hooks/notarize/post.js +2 -2
  63. package/dist/defaults/hooks/release/post.js +2 -2
  64. package/dist/defaults/hooks/release/pre.js +2 -2
  65. package/dist/defaults/src/assets/js/components/about/index.js +3 -5
  66. package/dist/defaults/src/assets/js/components/main/index.js +3 -5
  67. package/dist/defaults/src/assets/js/components/settings/index.js +3 -5
  68. package/dist/defaults/src/assets/scss/pages/about.scss +1 -1
  69. package/dist/defaults/src/assets/scss/pages/main.scss +1 -1
  70. package/dist/defaults/src/assets/scss/pages/settings.scss +1 -1
  71. package/dist/defaults/src/integrations/context-menu/index.js +13 -13
  72. package/dist/defaults/src/integrations/menu/index.js +8 -8
  73. package/dist/defaults/src/integrations/tray/index.js +12 -12
  74. package/dist/defaults/src/main.js +5 -7
  75. package/dist/defaults/src/preload.js +4 -6
  76. package/dist/defaults/test/README.md +5 -5
  77. package/dist/defaults/test/_init.js +1 -1
  78. package/dist/gulp/main.js +9 -10
  79. package/dist/gulp/tasks/audit.js +11 -14
  80. package/dist/gulp/tasks/build-config.js +8 -8
  81. package/dist/gulp/tasks/bundle.js +16 -16
  82. package/dist/gulp/tasks/defaults.js +3 -3
  83. package/dist/gulp/tasks/distribute.js +2 -2
  84. package/dist/gulp/tasks/html.js +9 -9
  85. package/dist/gulp/tasks/package-quick.js +3 -3
  86. package/dist/gulp/tasks/package.js +3 -3
  87. package/dist/gulp/tasks/release.js +3 -3
  88. package/dist/gulp/tasks/sass.js +6 -6
  89. package/dist/gulp/tasks/serve.js +4 -4
  90. package/dist/hooks/notarize-artifacts.js +1 -1
  91. package/dist/hooks/notarize.js +1 -1
  92. package/dist/index.js +5 -8
  93. package/dist/lib/_environment-mixin.js +50 -0
  94. package/dist/lib/_lifecycle-mixin.js +45 -0
  95. package/dist/lib/analytics.js +33 -35
  96. package/dist/lib/app-state.js +14 -14
  97. package/dist/lib/auth-flow.js +18 -18
  98. package/dist/lib/auth-persistence.js +12 -12
  99. package/dist/lib/auth.js +421 -0
  100. package/dist/lib/auto-updater.js +49 -49
  101. package/dist/lib/context-menu.js +13 -13
  102. package/dist/lib/context.js +19 -19
  103. package/dist/lib/deep-link.js +34 -34
  104. package/dist/lib/fontawesome.js +5 -5
  105. package/dist/lib/ipc.js +4 -4
  106. package/dist/lib/menu.js +25 -25
  107. package/dist/lib/protocol.js +5 -5
  108. package/dist/lib/remote-config.js +22 -22
  109. package/dist/lib/remote-scripts.js +21 -21
  110. package/dist/lib/restart-manager/index.js +29 -29
  111. package/dist/lib/restart-manager/install.js +1 -1
  112. package/dist/lib/restart-manager/protocol.js +1 -1
  113. package/dist/lib/sign-helpers/exec-with-limit.js +1 -1
  114. package/dist/lib/sign-helpers/sign-events.js +1 -1
  115. package/dist/lib/startup.js +18 -13
  116. package/dist/lib/storage.js +10 -10
  117. package/dist/lib/templating.js +16 -16
  118. package/dist/lib/theme.js +10 -10
  119. package/dist/lib/tray.js +27 -27
  120. package/dist/lib/usage.js +11 -11
  121. package/dist/lib/window-manager.js +26 -26
  122. package/dist/main.js +399 -483
  123. package/dist/preload.js +236 -176
  124. package/dist/renderer.js +417 -391
  125. package/dist/test/fixtures/consumer-app/config/omega.json5 +1 -1
  126. package/dist/test/fixtures/consumer-app/src/assets/js/components/main/index.js +8 -11
  127. package/dist/test/fixtures/consumer-app/src/main.js +5 -7
  128. package/dist/test/fixtures/consumer-app/src/preload.js +2 -2
  129. package/dist/test/harness/boot-entry.js +22 -20
  130. package/dist/test/harness/main-entry.js +31 -30
  131. package/dist/test/harness/renderer-entry.js +5 -5
  132. package/dist/test/harness/renderer-preload.js +137 -141
  133. package/dist/test/index.js +10 -10
  134. package/dist/test/runner.js +2 -2
  135. package/dist/test/runners/boot.js +7 -6
  136. package/dist/test/runners/electron.js +3 -2
  137. package/dist/test/runners/render-event.js +2 -2
  138. package/dist/test/suites/boot/consumer-app-boots.test.js +57 -26
  139. package/dist/test/suites/boot/restart-manager.test.js +2 -2
  140. package/dist/test/suites/boot/storage-bundled.test.js +5 -5
  141. package/dist/test/suites/boot/theme.test.js +13 -13
  142. package/dist/test/suites/build/audit.test.js +21 -8
  143. package/dist/test/suites/build/auth-persistence-resolve.test.js +6 -6
  144. package/dist/test/suites/build/boot-fixture.test.js +2 -2
  145. package/dist/test/suites/build/boot-runner-timeout.test.js +6 -5
  146. package/dist/test/suites/build/brand-scss.test.js +1 -1
  147. package/dist/test/suites/build/build-json-bake.test.js +1 -1
  148. package/dist/test/suites/build/build-workflow-jobs.test.js +2 -2
  149. package/dist/test/suites/build/cli.test.js +30 -2
  150. package/dist/test/suites/build/config-schema.test.js +5 -5
  151. package/dist/test/suites/build/defaults-em-dash.test.js +22 -0
  152. package/dist/test/suites/build/defaults-scaffold.test.js +21 -7
  153. package/dist/test/suites/build/deploy-direct.test.js +7 -5
  154. package/dist/test/suites/build/deploy-dispatch.test.js +2 -1
  155. package/dist/test/suites/build/deploy-hook.test.js +7 -5
  156. package/dist/test/suites/build/dev-verb.test.js +67 -0
  157. package/dist/test/suites/build/ensure-target.test.js +13 -5
  158. package/dist/test/suites/build/env-delivery.test.js +2 -2
  159. package/dist/test/suites/build/esm-only-dependency.test.js +2 -2
  160. package/dist/test/suites/build/exports.test.js +9 -8
  161. package/dist/test/suites/build/get-config.test.js +4 -4
  162. package/dist/test/suites/build/manifest-deps.test.js +1 -1
  163. package/dist/test/suites/build/merge-line-files.test.js +7 -7
  164. package/dist/test/suites/build/migrate.test.js +29 -0
  165. package/dist/test/suites/build/omega-shell.test.js +34 -2
  166. package/dist/test/suites/build/omega.test.js +350 -0
  167. package/dist/test/suites/build/project-scripts-deps.test.js +6 -10
  168. package/dist/test/suites/build/renderer-auth-bridge.test.js +211 -78
  169. package/dist/test/suites/build/runner-env-write.test.js +73 -0
  170. package/dist/test/suites/build/runner.test.js +11 -10
  171. package/dist/test/suites/build/sentry.test.js +2 -2
  172. package/dist/test/suites/build/setup-scripts.test.js +27 -0
  173. package/dist/test/suites/build/sign-windows-e2e.test.js +2 -2
  174. package/dist/test/suites/build/templating.test.js +3 -3
  175. package/dist/test/suites/build/test-stealth.test.js +7 -9
  176. package/dist/test/suites/build/url-helpers.test.js +55 -56
  177. package/dist/test/suites/build/validate-config.test.js +15 -4
  178. package/dist/test/suites/build/verb-logs.test.js +20 -0
  179. package/dist/test/suites/build/wave5-pins.test.js +2 -2
  180. package/dist/test/suites/main/analytics.test.js +59 -59
  181. package/dist/test/suites/main/app-state.test.js +66 -66
  182. package/dist/test/suites/main/auth-flow.test.js +41 -41
  183. package/dist/test/suites/main/auth-persistence.test.js +54 -43
  184. package/dist/test/suites/main/{client-bridge.integration.test.js → auth.integration.test.js} +10 -9
  185. package/dist/test/suites/main/auth.test.js +336 -0
  186. package/dist/test/suites/main/auto-updater.test.js +134 -134
  187. package/dist/test/suites/main/boot-sequence.test.js +37 -49
  188. package/dist/test/suites/main/context-menu.test.js +51 -50
  189. package/dist/test/suites/main/context.test.js +25 -25
  190. package/dist/test/suites/main/deep-link.test.js +74 -74
  191. package/dist/test/suites/main/fontawesome.test.js +27 -27
  192. package/dist/test/suites/main/ipc.test.js +35 -35
  193. package/dist/test/suites/main/menu.test.js +101 -100
  194. package/dist/test/suites/main/protocol.test.js +19 -19
  195. package/dist/test/suites/main/remote-config.test.js +63 -63
  196. package/dist/test/suites/main/remote-scripts.test.js +103 -103
  197. package/dist/test/suites/main/request.test.js +71 -0
  198. package/dist/test/suites/main/restart-manager.test.js +33 -33
  199. package/dist/test/suites/main/startup-paths-and-ua.test.js +4 -4
  200. package/dist/test/suites/main/startup.test.js +26 -26
  201. package/dist/test/suites/main/stealth-window.test.js +1 -1
  202. package/dist/test/suites/main/storage.test.js +25 -25
  203. package/dist/test/suites/main/theme.test.js +34 -34
  204. package/dist/test/suites/main/tray.test.js +79 -79
  205. package/dist/test/suites/main/url-helpers.test.js +133 -133
  206. package/dist/test/suites/main/usage.test.js +25 -25
  207. package/dist/test/suites/main/window-bounds.test.js +27 -27
  208. package/dist/test/suites/main/window-manager.test.js +44 -44
  209. package/dist/test/suites/renderer/analytics-bridge.test.js +5 -5
  210. package/dist/test/suites/renderer/cross-context-helpers.test.js +37 -31
  211. package/dist/test/suites/renderer/round-trip.test.js +3 -3
  212. package/dist/test/suites/renderer/tooltips.test.js +15 -15
  213. package/dist/test/suites/renderer/{window-em-surface.test.js → window-desktop-surface.test.js} +28 -8
  214. package/dist/test/utils/extended-mode-warning.js +1 -1
  215. package/dist/utils/boot-harness.js +56 -0
  216. package/dist/utils/build-pipeline.js +4 -4
  217. package/dist/utils/mode-helpers.js +2 -15
  218. package/dist/utils/runner-env.js +13 -28
  219. package/dist/utils/ship-keys.js +3 -3
  220. package/dist/utils/signing-status.js +51 -0
  221. package/dist/utils/test-events.js +7 -0
  222. package/dist/utils/test-stealth.js +6 -6
  223. package/dist/utils/url-helpers.js +52 -42
  224. package/dist/utils/user-agent.js +44 -0
  225. package/dist/vendor/account/engine.js +3 -3
  226. package/dist/vendor/account/index.js +14 -45
  227. package/dist/vendor/account/resolve-account.js +44 -0
  228. package/dist/vendor/account/schema.js +1 -1
  229. package/dist/vendor/account/user.js +99 -0
  230. package/dist/vendor/config/client-config.js +1 -1
  231. package/dist/vendor/config/company.js +46 -14
  232. package/dist/vendor/config/defaults.js +30 -7
  233. package/dist/vendor/config/edit.js +25 -3
  234. package/dist/vendor/config/env-delivery.js +1 -1
  235. package/dist/vendor/config/env-schema.js +3 -6
  236. package/dist/vendor/config/env.js +34 -22
  237. package/dist/vendor/config/environment.js +11 -30
  238. package/dist/vendor/config/index.js +21 -28
  239. package/dist/vendor/config/load.js +16 -9
  240. package/dist/vendor/config/platforms.js +1 -1
  241. package/dist/vendor/config/repo.js +10 -27
  242. package/dist/vendor/config/schema-client.js +64 -0
  243. package/dist/vendor/config/schema-cloud.js +38 -0
  244. package/dist/vendor/config/schema-manager.js +118 -0
  245. package/dist/vendor/config/schema-overrides.js +68 -0
  246. package/dist/vendor/config/schema.js +104 -160
  247. package/dist/vendor/config/site-global.js +2 -3
  248. package/dist/vendor/config/validate.js +97 -78
  249. package/dist/vendor/config/winback.js +1 -1
  250. package/dist/vendor/devkit/actions-secrets.js +1 -1
  251. package/dist/vendor/devkit/agents-md.js +233 -0
  252. package/dist/vendor/devkit/attach-log-file.js +16 -2
  253. package/dist/vendor/devkit/build-json.js +1 -1
  254. package/dist/vendor/devkit/ci-workflows.js +30 -30
  255. package/dist/vendor/devkit/cli-router.js +16 -11
  256. package/dist/vendor/devkit/defaults-engine.js +15 -51
  257. package/dist/vendor/devkit/deploy-snapshot.js +44 -9
  258. package/dist/vendor/devkit/env-lines.js +183 -0
  259. package/dist/vendor/devkit/local.js +64 -10
  260. package/dist/vendor/devkit/lockfile.js +32 -13
  261. package/dist/vendor/devkit/logger.js +7 -2
  262. package/dist/vendor/devkit/merge-line-files.js +219 -177
  263. package/dist/vendor/devkit/omega-bin.js +208 -111
  264. package/dist/vendor/devkit/preludes/docs-sync.js +52 -0
  265. package/dist/vendor/devkit/preludes/index.js +1 -0
  266. package/dist/vendor/devkit/target-picker.js +45 -0
  267. package/dist/vendor/devkit/test/dashed-files.js +37 -0
  268. package/dist/vendor/devkit/test/run-verb-under-tee.js +71 -0
  269. package/dist/vendor/devkit/test/runner-core.js +6 -6
  270. package/dist/vendor/devkit/update.js +15 -15
  271. package/dist/vendor/devkit/verb-scripts.js +40 -0
  272. package/dist/vendor/devkit/verbs.js +170 -0
  273. package/dist/vendor/monitoring/env.js +2 -2
  274. package/dist/vendor/monitoring/index.js +1 -1
  275. package/dist/vendor/monitoring/main.js +1 -1
  276. package/dist/vendor/monitoring/preload.js +1 -1
  277. package/dist/vendor/monitoring/renderer.js +1 -1
  278. package/package.json +19 -26
  279. package/dist/commands/install.js +0 -37
  280. package/dist/defaults/AGENTS.md +0 -110
  281. package/dist/defaults/CLAUDE.md +0 -1
  282. package/dist/lib/client-bridge.js +0 -374
  283. package/dist/lib/logger.js +0 -4
  284. package/dist/test/suites/build/manager.test.js +0 -213
  285. package/dist/test/suites/main/client-bridge.test.js +0 -262
  286. package/dist/vendor/config/env-retired.js +0 -137
  287. package/dist/vendor/config/retired-keys.js +0 -635
  288. package/docs/analytics.md +0 -140
  289. package/docs/app-state.md +0 -92
  290. package/docs/audit.md +0 -69
  291. package/docs/auto-updater.md +0 -243
  292. package/docs/boot-sequence.md +0 -39
  293. package/docs/build-system.md +0 -169
  294. package/docs/cdp-debugging.md +0 -169
  295. package/docs/client-bridge.md +0 -269
  296. package/docs/common-mistakes.md +0 -21
  297. package/docs/config-schema.md +0 -120
  298. package/docs/context-menu.md +0 -112
  299. package/docs/context.md +0 -81
  300. package/docs/css.md +0 -90
  301. package/docs/deep-link.md +0 -186
  302. package/docs/environment-detection.md +0 -112
  303. package/docs/fontawesome.md +0 -107
  304. package/docs/hooks.md +0 -89
  305. package/docs/icons.md +0 -79
  306. package/docs/index.md +0 -317
  307. package/docs/installer-options.md +0 -165
  308. package/docs/ipc.md +0 -61
  309. package/docs/lib-modules.md +0 -53
  310. package/docs/logging.md +0 -229
  311. package/docs/menu.md +0 -160
  312. package/docs/releasing.md +0 -239
  313. package/docs/remote-config.md +0 -118
  314. package/docs/remote-scripts.md +0 -144
  315. package/docs/restart-manager.md +0 -144
  316. package/docs/runner.md +0 -290
  317. package/docs/sentry.md +0 -97
  318. package/docs/shared/agent-docs.md +0 -89
  319. package/docs/shared/analytics.md +0 -612
  320. package/docs/shared/brands.md +0 -57
  321. package/docs/shared/breaking-changes.md +0 -851
  322. package/docs/shared/config.md +0 -1952
  323. package/docs/shared/deploys.md +0 -341
  324. package/docs/shared/icons.md +0 -219
  325. package/docs/shared/local-dev.md +0 -167
  326. package/docs/shared/logging.md +0 -205
  327. package/docs/shared/monitoring.md +0 -167
  328. package/docs/shared/publishing.md +0 -187
  329. package/docs/shared/rulings.md +0 -34
  330. package/docs/shared/testing.md +0 -147
  331. package/docs/shared/theming.md +0 -629
  332. package/docs/shared/translation.md +0 -333
  333. package/docs/shared/updates.md +0 -61
  334. package/docs/signing.md +0 -293
  335. package/docs/startup.md +0 -142
  336. package/docs/storage.md +0 -59
  337. package/docs/templating.md +0 -101
  338. package/docs/test-boot-layer.md +0 -157
  339. package/docs/test-framework.md +0 -362
  340. package/docs/themes.md +0 -149
  341. package/docs/tooltips.md +0 -99
  342. package/docs/tray.md +0 -164
  343. package/docs/usage.md +0 -58
  344. package/docs/verts.md +0 -62
  345. package/docs/windows.md +0 -149
@@ -8,24 +8,24 @@ module.exports = defineCases({
8
8
  description: 'protocol (main)',
9
9
  tests: [
10
10
  {
11
- name: 'protocol module is loaded on the manager',
11
+ name: 'protocol module is loaded on the omega instance',
12
12
  run: (ctx) => {
13
- ctx.expect(ctx.manager.protocol).toBeDefined();
14
- ctx.expect(ctx.manager.protocol._initialized).toBe(true);
13
+ ctx.expect(ctx.omega.protocol).toBeDefined();
14
+ ctx.expect(ctx.omega.protocol._initialized).toBe(true);
15
15
  },
16
16
  },
17
17
  {
18
18
  name: 'hasSingleInstanceLock returns true (test process owns the lock)',
19
19
  run: (ctx) => {
20
- ctx.expect(ctx.manager.protocol.hasSingleInstanceLock()).toBe(true);
20
+ ctx.expect(ctx.omega.protocol.hasSingleInstanceLock()).toBe(true);
21
21
  },
22
22
  },
23
23
  {
24
24
  name: 'getSchemes returns brand.id when configured',
25
25
  run: (ctx) => {
26
- const schemes = ctx.manager.protocol.getSchemes();
26
+ const schemes = ctx.omega.protocol.getSchemes();
27
27
  ctx.expect(Array.isArray(schemes)).toBe(true);
28
- const brandId = ctx.manager.config?.brand?.id;
28
+ const brandId = ctx.omega.config?.brand?.id;
29
29
  if (brandId) {
30
30
  ctx.expect(schemes).toContain(brandId);
31
31
  }
@@ -34,8 +34,8 @@ module.exports = defineCases({
34
34
  {
35
35
  name: 'getSchemes returns a fresh copy each call (mutation safe)',
36
36
  run: (ctx) => {
37
- const a = ctx.manager.protocol.getSchemes();
38
- const b = ctx.manager.protocol.getSchemes();
37
+ const a = ctx.omega.protocol.getSchemes();
38
+ const b = ctx.omega.protocol.getSchemes();
39
39
  ctx.expect(a).not.toBe(b); // different array instances
40
40
  ctx.expect(a).toEqual(b); // same contents
41
41
  },
@@ -43,33 +43,33 @@ module.exports = defineCases({
43
43
  {
44
44
  name: 'isOurScheme matches registered scheme',
45
45
  run: (ctx) => {
46
- const brandId = ctx.manager.config?.brand?.id;
46
+ const brandId = ctx.omega.config?.brand?.id;
47
47
  if (!brandId) return ctx.skip('no brand.id configured');
48
- ctx.expect(ctx.manager.protocol.isOurScheme(`${brandId}://auth/token?t=abc`)).toBe(true);
48
+ ctx.expect(ctx.omega.protocol.isOurScheme(`${brandId}://auth/token?t=abc`)).toBe(true);
49
49
  },
50
50
  },
51
51
  {
52
52
  name: 'isOurScheme rejects unregistered schemes',
53
53
  run: (ctx) => {
54
- ctx.expect(ctx.manager.protocol.isOurScheme('https://example.com')).toBe(false);
55
- ctx.expect(ctx.manager.protocol.isOurScheme('imaginary-scheme://x')).toBe(false);
54
+ ctx.expect(ctx.omega.protocol.isOurScheme('https://example.com')).toBe(false);
55
+ ctx.expect(ctx.omega.protocol.isOurScheme('imaginary-scheme://x')).toBe(false);
56
56
  },
57
57
  },
58
58
  {
59
59
  name: 'isOurScheme: non-string input returns false (no throw)',
60
60
  run: (ctx) => {
61
- ctx.expect(ctx.manager.protocol.isOurScheme(null)).toBe(false);
62
- ctx.expect(ctx.manager.protocol.isOurScheme(undefined)).toBe(false);
63
- ctx.expect(ctx.manager.protocol.isOurScheme(42)).toBe(false);
64
- ctx.expect(ctx.manager.protocol.isOurScheme({})).toBe(false);
61
+ ctx.expect(ctx.omega.protocol.isOurScheme(null)).toBe(false);
62
+ ctx.expect(ctx.omega.protocol.isOurScheme(undefined)).toBe(false);
63
+ ctx.expect(ctx.omega.protocol.isOurScheme(42)).toBe(false);
64
+ ctx.expect(ctx.omega.protocol.isOurScheme({})).toBe(false);
65
65
  },
66
66
  },
67
67
  {
68
68
  name: 'initialize is idempotent — re-calling does not change schemes',
69
69
  run: async (ctx) => {
70
- const before = ctx.manager.protocol.getSchemes();
71
- await ctx.manager.protocol.initialize(ctx.manager);
72
- const after = ctx.manager.protocol.getSchemes();
70
+ const before = ctx.omega.protocol.getSchemes();
71
+ await ctx.omega.protocol.initialize(ctx.omega);
72
+ const after = ctx.omega.protocol.getSchemes();
73
73
  ctx.expect(after).toEqual(before);
74
74
  },
75
75
  },
@@ -8,16 +8,16 @@ module.exports = defineCases({
8
8
  layer: 'main',
9
9
  description: 'remote-config (main)',
10
10
  cleanup: (ctx) => {
11
- ctx.manager.remoteConfig.shutdown();
12
- ctx.manager.storage.set('remoteConfig', null);
13
- ctx.manager.remoteConfig.initialize(ctx.manager);
11
+ ctx.omega.remoteConfig.shutdown();
12
+ ctx.omega.storage.set('remoteConfig', null);
13
+ ctx.omega.remoteConfig.initialize(ctx.omega);
14
14
  },
15
15
  tests: [
16
16
  {
17
- name: 'remoteConfig module wired on manager + initialized during boot',
17
+ name: 'remoteConfig module wired on omega + initialized during boot',
18
18
  run: (ctx) => {
19
- ctx.expect(ctx.manager.remoteConfig).toBeDefined();
20
- ctx.expect(ctx.manager.remoteConfig._initialized).toBe(true);
19
+ ctx.expect(ctx.omega.remoteConfig).toBeDefined();
20
+ ctx.expect(ctx.omega.remoteConfig._initialized).toBe(true);
21
21
  },
22
22
  },
23
23
  {
@@ -25,69 +25,69 @@ module.exports = defineCases({
25
25
  run: (ctx) => {
26
26
  // Test config has a brand.url, so we should have a URL set.
27
27
  // (If brand.url is missing in test config, this test verifies the resolution shape.)
28
- const u = ctx.manager.remoteConfig._url;
28
+ const u = ctx.omega.remoteConfig._url;
29
29
  ctx.expect(u === null || u.endsWith('/data/resources/main.json')).toBe(true);
30
30
  },
31
31
  },
32
32
  {
33
33
  name: 'URL override: config.remoteConfig.url wins over brand.url',
34
34
  run: async (ctx) => {
35
- ctx.manager.remoteConfig.shutdown();
36
- const orig = ctx.manager.config.remoteConfig;
37
- ctx.manager.config.remoteConfig = { url: 'https://override.example/custom.json' };
35
+ ctx.omega.remoteConfig.shutdown();
36
+ const orig = ctx.omega.config.remoteConfig;
37
+ ctx.omega.config.remoteConfig = { url: 'https://override.example/custom.json' };
38
38
  try {
39
- ctx.manager.remoteConfig.initialize(ctx.manager);
40
- ctx.expect(ctx.manager.remoteConfig._url).toBe('https://override.example/custom.json');
39
+ ctx.omega.remoteConfig.initialize(ctx.omega);
40
+ ctx.expect(ctx.omega.remoteConfig._url).toBe('https://override.example/custom.json');
41
41
  } finally {
42
- ctx.manager.remoteConfig.shutdown();
43
- ctx.manager.config.remoteConfig = orig;
44
- ctx.manager.remoteConfig.initialize(ctx.manager);
42
+ ctx.omega.remoteConfig.shutdown();
43
+ ctx.omega.config.remoteConfig = orig;
44
+ ctx.omega.remoteConfig.initialize(ctx.omega);
45
45
  }
46
46
  },
47
47
  },
48
48
  {
49
49
  name: 'transport gate: non-https URL refused (defaults only), loopback http allowed',
50
50
  run: async (ctx) => {
51
- const orig = ctx.manager.config.remoteConfig;
51
+ const orig = ctx.omega.config.remoteConfig;
52
52
  try {
53
- ctx.manager.remoteConfig.shutdown();
54
- ctx.manager.config.remoteConfig = { url: 'http://insecure.example/custom.json' };
55
- ctx.manager.remoteConfig.initialize(ctx.manager);
56
- ctx.expect(ctx.manager.remoteConfig._url).toBe(null);
53
+ ctx.omega.remoteConfig.shutdown();
54
+ ctx.omega.config.remoteConfig = { url: 'http://insecure.example/custom.json' };
55
+ ctx.omega.remoteConfig.initialize(ctx.omega);
56
+ ctx.expect(ctx.omega.remoteConfig._url).toBe(null);
57
57
  // Defaults still served — the gate disables the fetch, not the API —
58
58
  // and the renderer IPC handler is registered BEFORE the gate returns
59
59
  // (the preload exposes the invoke unconditionally).
60
- ctx.expect(ctx.manager.remoteConfig.get('status')).toBe('online');
61
- const viaIpc = await ctx.manager.ipc.invoke('desktop:remote-config:get', 'status');
60
+ ctx.expect(ctx.omega.remoteConfig.get('status')).toBe('online');
61
+ const viaIpc = await ctx.omega.ipc.invoke('desktop:remote-config:get', 'status');
62
62
  ctx.expect(viaIpc).toBe('online');
63
63
 
64
64
  // Unlikely-to-be-listening port — initialize() fires a real fetch.
65
- ctx.manager.remoteConfig.shutdown();
66
- ctx.manager.config.remoteConfig = { url: 'http://127.0.0.1:59987/custom.json' };
67
- ctx.manager.remoteConfig.initialize(ctx.manager);
68
- ctx.expect(ctx.manager.remoteConfig._url).toBe('http://127.0.0.1:59987/custom.json');
65
+ ctx.omega.remoteConfig.shutdown();
66
+ ctx.omega.config.remoteConfig = { url: 'http://127.0.0.1:59987/custom.json' };
67
+ ctx.omega.remoteConfig.initialize(ctx.omega);
68
+ ctx.expect(ctx.omega.remoteConfig._url).toBe('http://127.0.0.1:59987/custom.json');
69
69
  } finally {
70
- ctx.manager.remoteConfig.shutdown();
71
- ctx.manager.config.remoteConfig = orig;
72
- ctx.manager.remoteConfig.initialize(ctx.manager);
70
+ ctx.omega.remoteConfig.shutdown();
71
+ ctx.omega.config.remoteConfig = orig;
72
+ ctx.omega.remoteConfig.initialize(ctx.omega);
73
73
  }
74
74
  },
75
75
  },
76
76
  {
77
77
  name: 'enabled=false: skip everything',
78
78
  run: async (ctx) => {
79
- ctx.manager.remoteConfig.shutdown();
80
- const orig = ctx.manager.config.remoteConfig;
81
- ctx.manager.config.remoteConfig = { enabled: false };
79
+ ctx.omega.remoteConfig.shutdown();
80
+ const orig = ctx.omega.config.remoteConfig;
81
+ ctx.omega.config.remoteConfig = { enabled: false };
82
82
  try {
83
- ctx.manager.remoteConfig.initialize(ctx.manager);
84
- ctx.expect(ctx.manager.remoteConfig._enabled).toBe(false);
85
- ctx.expect(ctx.manager.remoteConfig._url).toBe(null);
86
- ctx.expect(ctx.manager.remoteConfig._intervalId).toBe(null);
83
+ ctx.omega.remoteConfig.initialize(ctx.omega);
84
+ ctx.expect(ctx.omega.remoteConfig._enabled).toBe(false);
85
+ ctx.expect(ctx.omega.remoteConfig._url).toBe(null);
86
+ ctx.expect(ctx.omega.remoteConfig._intervalId).toBe(null);
87
87
  } finally {
88
- ctx.manager.remoteConfig.shutdown();
89
- ctx.manager.config.remoteConfig = orig;
90
- ctx.manager.remoteConfig.initialize(ctx.manager);
88
+ ctx.omega.remoteConfig.shutdown();
89
+ ctx.omega.config.remoteConfig = orig;
90
+ ctx.omega.remoteConfig.initialize(ctx.omega);
91
91
  }
92
92
  },
93
93
  },
@@ -96,8 +96,8 @@ module.exports = defineCases({
96
96
  run: async (ctx) => {
97
97
  // Inject test data via the storage cache + bypass the network.
98
98
  const planted = { status: 'online', versionRequired: '2.0.0' };
99
- ctx.manager.remoteConfig._data = planted;
100
- const got = ctx.manager.remoteConfig.get();
99
+ ctx.omega.remoteConfig._data = planted;
100
+ const got = ctx.omega.remoteConfig.get();
101
101
  ctx.expect(got.status).toBe('online');
102
102
  ctx.expect(got.versionRequired).toBe('2.0.0');
103
103
  },
@@ -105,35 +105,35 @@ module.exports = defineCases({
105
105
  {
106
106
  name: 'get() supports dot-path lookup',
107
107
  run: (ctx) => {
108
- ctx.manager.remoteConfig._data = {
108
+ ctx.omega.remoteConfig._data = {
109
109
  status: 'online',
110
110
  settings: { versionRequired: '1.5.0', nested: { value: 42 } },
111
111
  };
112
- ctx.expect(ctx.manager.remoteConfig.get('status')).toBe('online');
113
- ctx.expect(ctx.manager.remoteConfig.get('settings.versionRequired')).toBe('1.5.0');
114
- ctx.expect(ctx.manager.remoteConfig.get('settings.nested.value')).toBe(42);
115
- ctx.expect(ctx.manager.remoteConfig.get('settings.missing')).toBe(undefined);
116
- ctx.expect(ctx.manager.remoteConfig.get('totally.absent.path')).toBe(undefined);
112
+ ctx.expect(ctx.omega.remoteConfig.get('status')).toBe('online');
113
+ ctx.expect(ctx.omega.remoteConfig.get('settings.versionRequired')).toBe('1.5.0');
114
+ ctx.expect(ctx.omega.remoteConfig.get('settings.nested.value')).toBe(42);
115
+ ctx.expect(ctx.omega.remoteConfig.get('settings.missing')).toBe(undefined);
116
+ ctx.expect(ctx.omega.remoteConfig.get('totally.absent.path')).toBe(undefined);
117
117
  },
118
118
  },
119
119
  {
120
120
  name: 'get() returns DEFAULTS even before first fetch (so consumers never see undefined at boot)',
121
121
  run: (ctx) => {
122
- const orig = ctx.manager.remoteConfig._data;
123
- ctx.manager.remoteConfig._data = null;
122
+ const orig = ctx.omega.remoteConfig._data;
123
+ ctx.omega.remoteConfig._data = null;
124
124
  try {
125
- const all = ctx.manager.remoteConfig.get();
125
+ const all = ctx.omega.remoteConfig.get();
126
126
  ctx.expect(all.status).toBe('online');
127
127
  ctx.expect(all.versionRequired).toBe('0.0.0');
128
- ctx.expect(ctx.manager.remoteConfig.get('status')).toBe('online');
129
- ctx.expect(ctx.manager.remoteConfig.get('versionRequired')).toBe('0.0.0');
130
- } finally { ctx.manager.remoteConfig._data = orig; }
128
+ ctx.expect(ctx.omega.remoteConfig.get('status')).toBe('online');
129
+ ctx.expect(ctx.omega.remoteConfig.get('versionRequired')).toBe('0.0.0');
130
+ } finally { ctx.omega.remoteConfig._data = orig; }
131
131
  },
132
132
  },
133
133
  {
134
134
  name: 'DEFAULTS export — exposed for consumer reference',
135
135
  run: (ctx) => {
136
- const D = ctx.manager.remoteConfig.DEFAULTS;
136
+ const D = ctx.omega.remoteConfig.DEFAULTS;
137
137
  ctx.expect(D).toBeDefined();
138
138
  ctx.expect(D.status).toBe('online');
139
139
  ctx.expect(D.versionRequired).toBe('0.0.0');
@@ -149,9 +149,9 @@ module.exports = defineCases({
149
149
  name: 'on(update, fn): subscriber fires when _emit is called',
150
150
  run: async (ctx) => {
151
151
  let received = null;
152
- const off = ctx.manager.remoteConfig.on('update', (data) => { received = data; });
152
+ const off = ctx.omega.remoteConfig.on('update', (data) => { received = data; });
153
153
  try {
154
- ctx.manager.remoteConfig._emit('update', { ping: true });
154
+ ctx.omega.remoteConfig._emit('update', { ping: true });
155
155
  ctx.expect(received).toEqual({ ping: true });
156
156
  } finally { off(); }
157
157
  },
@@ -160,19 +160,19 @@ module.exports = defineCases({
160
160
  name: 'on(update, fn): unsubscribe stops further calls',
161
161
  run: (ctx) => {
162
162
  let count = 0;
163
- const off = ctx.manager.remoteConfig.on('update', () => { count++; });
164
- ctx.manager.remoteConfig._emit('update', {});
163
+ const off = ctx.omega.remoteConfig.on('update', () => { count++; });
164
+ ctx.omega.remoteConfig._emit('update', {});
165
165
  ctx.expect(count).toBe(1);
166
166
  off();
167
- ctx.manager.remoteConfig._emit('update', {});
167
+ ctx.omega.remoteConfig._emit('update', {});
168
168
  ctx.expect(count).toBe(1); // unchanged
169
169
  },
170
170
  },
171
171
  {
172
172
  name: 'IPC handler desktop:remote-config:get returns cached data',
173
173
  run: async (ctx) => {
174
- ctx.manager.remoteConfig._data = { status: 'online', x: 1 };
175
- const result = await ctx.manager.ipc.invoke('desktop:remote-config:get');
174
+ ctx.omega.remoteConfig._data = { status: 'online', x: 1 };
175
+ const result = await ctx.omega.ipc.invoke('desktop:remote-config:get');
176
176
  ctx.expect(result.status).toBe('online');
177
177
  ctx.expect(result.x).toBe(1);
178
178
  },
@@ -180,8 +180,8 @@ module.exports = defineCases({
180
180
  {
181
181
  name: 'IPC handler desktop:remote-config:get supports dot-path',
182
182
  run: async (ctx) => {
183
- ctx.manager.remoteConfig._data = { settings: { versionRequired: '3.1.4' } };
184
- const result = await ctx.manager.ipc.invoke('desktop:remote-config:get', 'settings.versionRequired');
183
+ ctx.omega.remoteConfig._data = { settings: { versionRequired: '3.1.4' } };
184
+ const result = await ctx.omega.ipc.invoke('desktop:remote-config:get', 'settings.versionRequired');
185
185
  ctx.expect(result).toBe('3.1.4');
186
186
  },
187
187
  },