@omega.js/desktop 0.52.0 → 0.53.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.
- package/README.md +17 -12
- package/dist/assets/css/core/_initialize.scss +1 -1
- package/dist/assets/js/core/app-shell.js +14 -15
- package/dist/assets/themes/_template/_theme.js +6 -6
- package/dist/assets/themes/base/_includes/global/sections/account.html +4 -4
- package/dist/assets/themes/base/_includes/global/sections/app-sidebar.html +5 -5
- package/dist/assets/themes/base/_layouts/frontend/pages/account/index.html +3 -3
- package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/index.html +1 -1
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/tag.html +1 -1
- package/dist/assets/themes/base/_layouts/frontend/pages/payment/confirmation.html +1 -1
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.js +2 -3
- package/dist/assets/themes/base/_sections/verts/unit/section.html +1 -1
- package/dist/assets/themes/base/_sections/verts/unit/section.js +3 -4
- package/dist/assets/themes/base/_theme.js +4 -3
- package/dist/assets/themes/bootstrap/_theme.js +2 -2
- package/dist/assets/themes/bootstrap/overrides/_links.scss +1 -1
- package/dist/assets/themes/classy/_theme.js +8 -6
- package/dist/assets/themes/classy/css/marketing/_sections.scss +1 -2
- package/dist/assets/themes/classy/js/hero-demo-form.js +3 -2
- package/dist/assets/themes/neobrutalism/_theme.js +5 -5
- package/dist/assets/themes/neobrutalism/js/pages/test/libraries/layers/index.js +1 -1
- package/dist/assets/themes/newsflash/_theme.js +6 -6
- package/dist/assets/themes/newsflash/js/pages/test/libraries/layers/index.js +1 -1
- package/dist/build.js +87 -111
- package/dist/cli.js +1 -1
- package/dist/commands/build.js +2 -2
- package/dist/commands/cdp/capture.js +2 -2
- package/dist/commands/cdp/quit.js +2 -2
- package/dist/commands/cdp/relaunch.js +2 -2
- package/dist/commands/cdp/theme.js +1 -1
- package/dist/commands/clean.js +2 -2
- package/dist/commands/deploy.js +4 -4
- package/dist/commands/finalize-release.js +4 -4
- package/dist/commands/install.js +3 -3
- package/dist/commands/launch.js +2 -2
- package/dist/commands/lib/deploy-precheck.js +3 -3
- package/dist/commands/lib/ensure-target.js +6 -6
- package/dist/commands/package.js +2 -2
- package/dist/commands/publish.js +2 -2
- package/dist/commands/release.js +3 -3
- package/dist/commands/runner.js +11 -11
- package/dist/commands/sign-windows.js +5 -5
- package/dist/commands/test.js +4 -4
- package/dist/commands/update.js +2 -2
- package/dist/commands/validate-certs.js +4 -4
- package/dist/commands/version.js +3 -3
- package/dist/defaults/AGENTS.md +17 -8
- package/dist/defaults/config/omega.json5 +7 -7
- package/dist/defaults/hooks/build/post.js +1 -1
- package/dist/defaults/hooks/build/pre.js +1 -1
- package/dist/defaults/hooks/deploy/pre.js +1 -1
- package/dist/defaults/hooks/release/post.js +1 -1
- package/dist/defaults/hooks/release/pre.js +1 -1
- package/dist/defaults/src/assets/js/components/about/index.js +3 -5
- package/dist/defaults/src/assets/js/components/main/index.js +3 -5
- package/dist/defaults/src/assets/js/components/settings/index.js +3 -5
- package/dist/defaults/src/integrations/context-menu/index.js +2 -2
- package/dist/defaults/src/integrations/menu/index.js +3 -3
- package/dist/defaults/src/integrations/tray/index.js +3 -3
- package/dist/defaults/src/main.js +3 -5
- package/dist/defaults/src/preload.js +3 -5
- package/dist/defaults/test/README.md +2 -2
- package/dist/gulp/main.js +9 -10
- package/dist/gulp/tasks/audit.js +7 -7
- package/dist/gulp/tasks/build-config.js +8 -8
- package/dist/gulp/tasks/bundle.js +16 -16
- package/dist/gulp/tasks/defaults.js +3 -3
- package/dist/gulp/tasks/distribute.js +2 -2
- package/dist/gulp/tasks/html.js +9 -9
- package/dist/gulp/tasks/package-quick.js +3 -3
- package/dist/gulp/tasks/package.js +3 -3
- package/dist/gulp/tasks/release.js +3 -3
- package/dist/gulp/tasks/sass.js +6 -6
- package/dist/gulp/tasks/serve.js +4 -4
- package/dist/hooks/notarize-artifacts.js +1 -1
- package/dist/hooks/notarize.js +1 -1
- package/dist/index.js +5 -8
- package/dist/lib/_environment-mixin.js +50 -0
- package/dist/lib/_lifecycle-mixin.js +45 -0
- package/dist/lib/analytics.js +33 -35
- package/dist/lib/app-state.js +14 -14
- package/dist/lib/auth-flow.js +18 -18
- package/dist/lib/auth-persistence.js +12 -12
- package/dist/lib/auth.js +421 -0
- package/dist/lib/auto-updater.js +49 -49
- package/dist/lib/context-menu.js +13 -13
- package/dist/lib/context.js +19 -19
- package/dist/lib/deep-link.js +34 -34
- package/dist/lib/fontawesome.js +5 -5
- package/dist/lib/ipc.js +4 -4
- package/dist/lib/menu.js +25 -25
- package/dist/lib/protocol.js +5 -5
- package/dist/lib/remote-config.js +22 -22
- package/dist/lib/remote-scripts.js +21 -21
- package/dist/lib/restart-manager/index.js +28 -28
- package/dist/lib/sign-helpers/exec-with-limit.js +1 -1
- package/dist/lib/sign-helpers/sign-events.js +1 -1
- package/dist/lib/startup.js +18 -13
- package/dist/lib/storage.js +10 -10
- package/dist/lib/templating.js +16 -16
- package/dist/lib/theme.js +10 -10
- package/dist/lib/tray.js +27 -27
- package/dist/lib/usage.js +11 -11
- package/dist/lib/window-manager.js +26 -26
- package/dist/main.js +398 -483
- package/dist/preload.js +236 -176
- package/dist/renderer.js +417 -391
- package/dist/test/fixtures/consumer-app/config/omega.json5 +1 -1
- package/dist/test/fixtures/consumer-app/src/assets/js/components/main/index.js +8 -11
- package/dist/test/fixtures/consumer-app/src/main.js +5 -7
- package/dist/test/fixtures/consumer-app/src/preload.js +2 -2
- package/dist/test/harness/boot-entry.js +22 -20
- package/dist/test/harness/main-entry.js +31 -30
- package/dist/test/harness/renderer-entry.js +5 -5
- package/dist/test/harness/renderer-preload.js +137 -141
- package/dist/test/index.js +10 -10
- package/dist/test/runner.js +2 -2
- package/dist/test/runners/boot.js +7 -6
- package/dist/test/runners/electron.js +3 -2
- package/dist/test/runners/render-event.js +2 -2
- package/dist/test/suites/boot/consumer-app-boots.test.js +57 -26
- package/dist/test/suites/boot/restart-manager.test.js +2 -2
- package/dist/test/suites/boot/storage-bundled.test.js +5 -5
- package/dist/test/suites/boot/theme.test.js +13 -13
- package/dist/test/suites/build/audit.test.js +1 -1
- package/dist/test/suites/build/auth-persistence-resolve.test.js +6 -6
- package/dist/test/suites/build/boot-fixture.test.js +2 -2
- package/dist/test/suites/build/boot-runner-timeout.test.js +6 -5
- package/dist/test/suites/build/brand-scss.test.js +1 -1
- package/dist/test/suites/build/build-json-bake.test.js +1 -1
- package/dist/test/suites/build/cli.test.js +2 -2
- package/dist/test/suites/build/config-schema.test.js +5 -5
- package/dist/test/suites/build/defaults-scaffold.test.js +2 -2
- package/dist/test/suites/build/deploy-hook.test.js +3 -3
- package/dist/test/suites/build/ensure-target.test.js +2 -2
- package/dist/test/suites/build/env-delivery.test.js +2 -2
- package/dist/test/suites/build/esm-only-dependency.test.js +2 -2
- package/dist/test/suites/build/exports.test.js +9 -8
- package/dist/test/suites/build/get-config.test.js +4 -4
- package/dist/test/suites/build/manifest-deps.test.js +1 -1
- package/dist/test/suites/build/merge-line-files.test.js +1 -1
- package/dist/test/suites/build/omega-shell.test.js +34 -2
- package/dist/test/suites/build/omega.test.js +350 -0
- package/dist/test/suites/build/renderer-auth-bridge.test.js +211 -78
- package/dist/test/suites/build/runner.test.js +2 -2
- package/dist/test/suites/build/sentry.test.js +2 -2
- package/dist/test/suites/build/sign-windows-e2e.test.js +2 -2
- package/dist/test/suites/build/templating.test.js +3 -3
- package/dist/test/suites/build/test-stealth.test.js +7 -9
- package/dist/test/suites/build/url-helpers.test.js +55 -56
- package/dist/test/suites/build/validate-config.test.js +2 -2
- package/dist/test/suites/build/wave5-pins.test.js +2 -2
- package/dist/test/suites/main/analytics.test.js +59 -59
- package/dist/test/suites/main/app-state.test.js +66 -66
- package/dist/test/suites/main/auth-flow.test.js +41 -41
- package/dist/test/suites/main/auth-persistence.test.js +54 -43
- package/dist/test/suites/main/{client-bridge.integration.test.js → auth.integration.test.js} +10 -9
- package/dist/test/suites/main/auth.test.js +336 -0
- package/dist/test/suites/main/auto-updater.test.js +134 -134
- package/dist/test/suites/main/boot-sequence.test.js +37 -49
- package/dist/test/suites/main/context-menu.test.js +51 -50
- package/dist/test/suites/main/context.test.js +25 -25
- package/dist/test/suites/main/deep-link.test.js +74 -74
- package/dist/test/suites/main/fontawesome.test.js +27 -27
- package/dist/test/suites/main/ipc.test.js +35 -35
- package/dist/test/suites/main/menu.test.js +101 -100
- package/dist/test/suites/main/protocol.test.js +19 -19
- package/dist/test/suites/main/remote-config.test.js +63 -63
- package/dist/test/suites/main/remote-scripts.test.js +103 -103
- package/dist/test/suites/main/request.test.js +71 -0
- package/dist/test/suites/main/restart-manager.test.js +33 -33
- package/dist/test/suites/main/startup-paths-and-ua.test.js +4 -4
- package/dist/test/suites/main/startup.test.js +26 -26
- package/dist/test/suites/main/stealth-window.test.js +1 -1
- package/dist/test/suites/main/storage.test.js +25 -25
- package/dist/test/suites/main/theme.test.js +34 -34
- package/dist/test/suites/main/tray.test.js +79 -79
- package/dist/test/suites/main/url-helpers.test.js +133 -133
- package/dist/test/suites/main/usage.test.js +25 -25
- package/dist/test/suites/main/window-bounds.test.js +27 -27
- package/dist/test/suites/main/window-manager.test.js +44 -44
- package/dist/test/suites/renderer/analytics-bridge.test.js +5 -5
- package/dist/test/suites/renderer/cross-context-helpers.test.js +37 -31
- package/dist/test/suites/renderer/round-trip.test.js +3 -3
- package/dist/test/suites/renderer/tooltips.test.js +15 -15
- package/dist/test/suites/renderer/{window-em-surface.test.js → window-desktop-surface.test.js} +27 -7
- package/dist/test/utils/extended-mode-warning.js +1 -1
- package/dist/utils/boot-harness.js +56 -0
- package/dist/utils/mode-helpers.js +2 -15
- package/dist/utils/ship-keys.js +3 -3
- package/dist/utils/signing-status.js +51 -0
- package/dist/utils/test-events.js +7 -0
- package/dist/utils/test-stealth.js +6 -6
- package/dist/utils/url-helpers.js +52 -42
- package/dist/utils/user-agent.js +44 -0
- package/dist/vendor/account/engine.js +3 -3
- package/dist/vendor/account/index.js +14 -45
- package/dist/vendor/account/resolve-account.js +44 -0
- package/dist/vendor/account/schema.js +1 -1
- package/dist/vendor/account/user.js +99 -0
- package/dist/vendor/config/client-config.js +1 -1
- package/dist/vendor/config/environment.js +11 -30
- package/dist/vendor/config/index.js +8 -11
- package/dist/vendor/config/load.js +1 -2
- package/dist/vendor/config/platforms.js +1 -1
- package/dist/vendor/config/retired-keys.js +2 -2
- package/dist/vendor/config/schema.js +5 -8
- package/dist/vendor/config/site-global.js +2 -3
- package/dist/vendor/config/validate.js +1 -2
- package/dist/vendor/config/winback.js +1 -1
- package/dist/vendor/devkit/actions-secrets.js +1 -1
- package/dist/vendor/devkit/attach-log-file.js +1 -1
- package/dist/vendor/devkit/build-json.js +1 -1
- package/dist/vendor/devkit/cli-router.js +3 -4
- package/dist/vendor/devkit/defaults-engine.js +9 -11
- package/dist/vendor/devkit/local.js +2 -0
- package/dist/vendor/devkit/merge-line-files.js +2 -3
- package/dist/vendor/devkit/test/runner-core.js +6 -6
- package/dist/vendor/monitoring/env.js +2 -2
- package/dist/vendor/monitoring/index.js +1 -1
- package/dist/vendor/monitoring/main.js +1 -1
- package/dist/vendor/monitoring/preload.js +1 -1
- package/dist/vendor/monitoring/renderer.js +1 -1
- package/docs/analytics.md +8 -8
- package/docs/app-state.md +19 -19
- package/docs/audit.md +4 -4
- package/docs/{client-bridge.md → auth.md} +88 -73
- package/docs/auto-updater.md +8 -8
- package/docs/boot-sequence.md +11 -6
- package/docs/build-system.md +1 -1
- package/docs/cdp-debugging.md +1 -1
- package/docs/common-mistakes.md +7 -7
- package/docs/config-schema.md +1 -1
- package/docs/context-menu.md +13 -13
- package/docs/context.md +11 -11
- package/docs/css.md +3 -9
- package/docs/deep-link.md +25 -25
- package/docs/environment-detection.md +16 -16
- package/docs/fontawesome.md +7 -5
- package/docs/hooks.md +8 -8
- package/docs/index.md +38 -27
- package/docs/ipc.md +10 -10
- package/docs/lib-modules.md +9 -9
- package/docs/logging.md +12 -14
- package/docs/menu.md +18 -18
- package/docs/remote-config.md +9 -9
- package/docs/remote-scripts.md +12 -12
- package/docs/restart-manager.md +8 -8
- package/docs/sentry.md +4 -4
- package/docs/shared/analytics.md +1 -1
- package/docs/shared/breaking-changes.md +79 -13
- package/docs/shared/config.md +17 -21
- package/docs/shared/logging.md +1 -1
- package/docs/shared/monitoring.md +5 -5
- package/docs/shared/testing.md +2 -2
- package/docs/shared/theming.md +1 -1
- package/docs/shared/translation.md +19 -10
- package/docs/startup.md +16 -16
- package/docs/storage.md +11 -11
- package/docs/templating.md +3 -3
- package/docs/test-boot-layer.md +12 -12
- package/docs/test-framework.md +17 -17
- package/docs/themes.md +7 -7
- package/docs/tooltips.md +2 -2
- package/docs/tray.md +31 -31
- package/docs/usage.md +7 -7
- package/docs/verts.md +1 -1
- package/docs/windows.md +22 -22
- package/package.json +3 -4
- package/dist/lib/client-bridge.js +0 -374
- package/dist/lib/logger.js +0 -4
- package/dist/test/suites/build/manager.test.js +0 -213
- package/dist/test/suites/main/client-bridge.test.js +0 -262
package/dist/commands/runner.js
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
// stop Kill every Runner.Listener.exe under RUNNER_HOME.
|
|
25
25
|
// status Registered orgs, Startup shortcuts, live listeners.
|
|
26
26
|
// uninstall Remove everything — legacy services and tasks, and the
|
|
27
|
-
//
|
|
27
|
+
// legacy em-runner install, included.
|
|
28
28
|
// monitor Tail the JSONL signing event log, pretty-printed.
|
|
29
29
|
//
|
|
30
30
|
// Every subcommand except `monitor` refuses on non-Windows
|
|
@@ -35,8 +35,8 @@ const fs = require('fs');
|
|
|
35
35
|
const os = require('os');
|
|
36
36
|
const jetpack = require('fs-jetpack');
|
|
37
37
|
|
|
38
|
-
const
|
|
39
|
-
const logger =
|
|
38
|
+
const build = require('../build.js');
|
|
39
|
+
const logger = build.logger('runner');
|
|
40
40
|
|
|
41
41
|
const RUNNER_LABELS = ['self-hosted', 'windows', 'ev-token'];
|
|
42
42
|
|
|
@@ -63,7 +63,7 @@ const attachLogFile = require('../utils/attach-log-file.js');
|
|
|
63
63
|
const RUNNER_HOME = process.env.OMEGA_RUNNER_HOME || defaultRunnerHome();
|
|
64
64
|
loadRunnerEnv({ home: RUNNER_HOME });
|
|
65
65
|
|
|
66
|
-
// The
|
|
66
|
+
// The legacy generation of this command (`em runner`) laid the same design
|
|
67
67
|
// down under other names: the home was %LOCALAPPDATA%\em-runner (C:\actions-runners
|
|
68
68
|
// before that), and the Startup shortcuts and the GitHub-side runners were
|
|
69
69
|
// `em-runner-<host>-<org>`. An upgraded box still has all of it — live, and
|
|
@@ -207,7 +207,7 @@ async function install(options) {
|
|
|
207
207
|
// the calling terminal at normal user privilege.
|
|
208
208
|
|
|
209
209
|
// Idempotent by replacement: always tear down any prior install before starting —
|
|
210
|
-
// the omega one, or the
|
|
210
|
+
// the omega one, or the legacy em-runner one an upgraded box still runs.
|
|
211
211
|
if (jetpack.exists(home) || listLegacyRunnerHomes({ home }).length > 0 || listLegacyRunnerStartupShortcuts().length > 0) {
|
|
212
212
|
logger.log(`Existing runner installation detected — uninstalling first for a clean re-install...`);
|
|
213
213
|
try {
|
|
@@ -369,8 +369,8 @@ async function registerOrg(options) {
|
|
|
369
369
|
// THIS host. Without this, re-running install accumulates orphaned runners (one per
|
|
370
370
|
// failed/aborted install, one per host rename, etc.) which causes actions/runner to
|
|
371
371
|
// auto-suffix the new runner's name (e.g. `-2872`) and breaks our ability to predict
|
|
372
|
-
// service names. Match prefix is `omega-runner-<host>-<org>` — and the
|
|
373
|
-
//
|
|
372
|
+
// service names. Match prefix is `omega-runner-<host>-<org>` — and the legacy
|
|
373
|
+
// `em-runner-<host>-<org>`, the same box's older registration — so we never touch
|
|
374
374
|
// user-created runners or runners from other hosts.
|
|
375
375
|
//
|
|
376
376
|
// We do this BEFORE fetching the registration token because the token is one-shot
|
|
@@ -900,7 +900,7 @@ async function statusServices(options) {
|
|
|
900
900
|
}
|
|
901
901
|
}
|
|
902
902
|
|
|
903
|
-
// The
|
|
903
|
+
// The legacy install (`em runner`): its home, its Startup
|
|
904
904
|
// shortcuts, and any listener still running out of it. None of it answers to
|
|
905
905
|
// the omega names above, so it is named here and torn down by `uninstall`.
|
|
906
906
|
const legacyHomes = listLegacyRunnerHomes({ home });
|
|
@@ -989,7 +989,7 @@ async function uninstall(options) {
|
|
|
989
989
|
// handles asynchronously after stop).
|
|
990
990
|
await removeRunnerHomeWithRetry(new Set(failed.map((f) => f.dir)), home);
|
|
991
991
|
|
|
992
|
-
// The
|
|
992
|
+
// The legacy em-runner install, when this box still has one: the same
|
|
993
993
|
// teardown, org by org, so its GitHub-side registrations come off too.
|
|
994
994
|
const legacy = await uninstallLegacyRunnerInstalls(home);
|
|
995
995
|
const stillRegistered = [...failed, ...legacy.failed];
|
|
@@ -1002,7 +1002,7 @@ async function uninstall(options) {
|
|
|
1002
1002
|
logger.warn(` Their directories were kept — re-run 'npx omega runner uninstall' to retry, or delete them under each org's Settings → Actions → Runners.`);
|
|
1003
1003
|
}
|
|
1004
1004
|
|
|
1005
|
-
// Tear down the
|
|
1005
|
+
// Tear down the legacy runner install: its `em-runner-*`
|
|
1006
1006
|
// Startup shortcuts, then each legacy home — deregister every org dir through
|
|
1007
1007
|
// its own config.cmd, kill what runs out of it, remove it. A registration that
|
|
1008
1008
|
// did not come off keeps its directory, exactly as the omega home's does.
|
|
@@ -1657,7 +1657,7 @@ function listRunnerStartupShortcuts(startupDir) {
|
|
|
1657
1657
|
return listStartupShortcuts('omega-runner-', startupDir);
|
|
1658
1658
|
}
|
|
1659
1659
|
|
|
1660
|
-
// The
|
|
1660
|
+
// The legacy shortcuts: `em-runner-<host>-<org>`, which `status` names
|
|
1661
1661
|
// and `uninstall` removes — never anything `start` would launch.
|
|
1662
1662
|
function listLegacyRunnerStartupShortcuts(startupDir) {
|
|
1663
1663
|
return listStartupShortcuts(LEGACY_RUNNER_PREFIX, startupDir);
|
|
@@ -21,8 +21,8 @@ const os = require('os');
|
|
|
21
21
|
const jetpack = require('fs-jetpack');
|
|
22
22
|
const { execute } = require('node-powertools');
|
|
23
23
|
|
|
24
|
-
const
|
|
25
|
-
const logger =
|
|
24
|
+
const build = require('../build.js');
|
|
25
|
+
const logger = build.logger('sign-windows');
|
|
26
26
|
|
|
27
27
|
// The box's own signing configuration (`<runner home>\.env`: the cert, the PIN,
|
|
28
28
|
// signtool) is read before anything below looks at process.env, so a manual
|
|
@@ -90,9 +90,9 @@ async function runSignCommand(options) {
|
|
|
90
90
|
return smokeTest();
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
const strategy =
|
|
93
|
+
const strategy = build.getWindowsSignStrategy();
|
|
94
94
|
|
|
95
|
-
const config =
|
|
95
|
+
const config = build.getConfig();
|
|
96
96
|
const projectRoot = process.cwd();
|
|
97
97
|
|
|
98
98
|
// Resolve --in and --out (CLI flags) → directories of unsigned / signed artifacts.
|
|
@@ -441,7 +441,7 @@ async function signWithSigntool(targets, inDir, outDir, deps) {
|
|
|
441
441
|
// (mac/linux equivalents are produced by electron-builder during their publish step,
|
|
442
442
|
// but Windows is split into a post-build sign job so we have to write the yml here).
|
|
443
443
|
if (signedExes.length > 0) {
|
|
444
|
-
const pkg =
|
|
444
|
+
const pkg = build.getPackage('project') || {};
|
|
445
445
|
const version = pkg.version;
|
|
446
446
|
if (!version) {
|
|
447
447
|
log.warn('Could not determine version from package.json; skipping latest.yml generation.');
|
package/dist/commands/test.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Libraries
|
|
2
2
|
const path = require('path');
|
|
3
3
|
const fs = require('fs');
|
|
4
|
-
const
|
|
5
|
-
const logger =
|
|
4
|
+
const build = require('../build.js');
|
|
5
|
+
const logger = build.logger('test');
|
|
6
6
|
const { run } = require('../test/runner.js');
|
|
7
7
|
const attachLogFile = require('../utils/attach-log-file.js');
|
|
8
8
|
const { EXTENDED_MODE_WARNING } = require('../test/utils/extended-mode-warning.js');
|
|
@@ -43,7 +43,7 @@ module.exports = async function (options) {
|
|
|
43
43
|
// Extended mode — opt into tests that hit REAL external services (Firebase, analytics,
|
|
44
44
|
// update feeds) instead of skipping them. Off by default so `npx omega test` stays fast and
|
|
45
45
|
// offline-safe. The canonical signal is the unprefixed `TEST_EXTENDED_MODE` env var — the
|
|
46
|
-
// SAME name
|
|
46
|
+
// SAME name on every framework (cross-framework parity); `--extended` is the CLI
|
|
47
47
|
// shorthand. Once set on process.env it propagates to every spawned child (electron
|
|
48
48
|
// main/renderer/boot, the gulp boot build) automatically via `{ ...process.env }`.
|
|
49
49
|
const extended = options.extended === true
|
|
@@ -58,7 +58,7 @@ module.exports = async function (options) {
|
|
|
58
58
|
// When @omega.js/desktop itself runs its own boot-layer tests (the cwd's package.json is @omega.js/desktop's), there's
|
|
59
59
|
// no real consumer app to boot. Point the boot runner at the fixture under
|
|
60
60
|
// dist/test/fixtures/consumer-app unless the caller has already set OMEGA_TEST_BOOT_PROJECT
|
|
61
|
-
// explicitly.
|
|
61
|
+
// explicitly.
|
|
62
62
|
if (!process.env.OMEGA_TEST_BOOT_PROJECT) {
|
|
63
63
|
try {
|
|
64
64
|
const cwdPkg = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'package.json'), 'utf8'));
|
package/dist/commands/update.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* non-quarantined, non-breaking set (`--major` opts into breaking) through
|
|
6
6
|
* npu when present. The whole verb is the shared devkit implementation.
|
|
7
7
|
*/
|
|
8
|
-
const
|
|
9
|
-
const logger =
|
|
8
|
+
const build = require('../build.js');
|
|
9
|
+
const logger = build.logger('update');
|
|
10
10
|
const { runUpdate } = require('../vendor/devkit/update.js');
|
|
11
11
|
|
|
12
12
|
module.exports = async function (options) {
|
|
@@ -38,8 +38,8 @@ const { certificateExpiry, EXPIRY_WARN_DAYS } = require('../vendor/devkit/certs.
|
|
|
38
38
|
const { signingPathCandidates } = require('../vendor/devkit/signing-env.js');
|
|
39
39
|
const { requiredWhenHolds } = require('../vendor/config/env-rules.js');
|
|
40
40
|
|
|
41
|
-
const
|
|
42
|
-
const logger =
|
|
41
|
+
const build = require('../build.js');
|
|
42
|
+
const logger = build.logger('validate-certs');
|
|
43
43
|
|
|
44
44
|
module.exports = async function (options) {
|
|
45
45
|
options = options || {};
|
|
@@ -48,8 +48,8 @@ module.exports = async function (options) {
|
|
|
48
48
|
logger.log('Validating signing prerequisites...');
|
|
49
49
|
|
|
50
50
|
const platform = process.platform;
|
|
51
|
-
const config =
|
|
52
|
-
const winStrategy =
|
|
51
|
+
const config = build.getConfig();
|
|
52
|
+
const winStrategy = build.getWindowsSignStrategy();
|
|
53
53
|
|
|
54
54
|
const issues = [];
|
|
55
55
|
|
package/dist/commands/version.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Libraries
|
|
2
|
-
const
|
|
3
|
-
const logger =
|
|
2
|
+
const build = require('../build.js');
|
|
3
|
+
const logger = build.logger('version');
|
|
4
4
|
|
|
5
|
-
const package =
|
|
5
|
+
const package = build.getPackage('main');
|
|
6
6
|
|
|
7
7
|
module.exports = async function (options) {
|
|
8
8
|
logger.log(package.version);
|
package/dist/defaults/AGENTS.md
CHANGED
|
@@ -19,8 +19,9 @@ This project consumes **OMEGA Desktop** (@omega.js/desktop), a comprehensive fra
|
|
|
19
19
|
|
|
20
20
|
## 🚨 READ @omega.js/client TOO
|
|
21
21
|
|
|
22
|
-
**@omega.js/desktop
|
|
22
|
+
**@omega.js/desktop's renderer instance extends `@omega.js/client`'s base class.**
|
|
23
23
|
- It powers auth, Firebase, reactive `data-omega-bind` directives, analytics, error tracking, and utilities (`escapeHTML`, etc.).
|
|
24
|
+
- `omega.auth.user` is always a `User`: `authenticated`, `plan`, `active`, `profile.displayName`; `omega.auth.listen()` delivers `{ user, denied }`.
|
|
24
25
|
- Any task that touches auth flows, Firestore reads/writes, subscription resolution, push notifications, or DOM bindings means you are working with @omega.js/client as much as with @omega.js/desktop.
|
|
25
26
|
|
|
26
27
|
**Required reading:**
|
|
@@ -71,28 +72,36 @@ npx omega install live # restore the published @omega.js/desktop from npm
|
|
|
71
72
|
|
|
72
73
|
## Per-context imports
|
|
73
74
|
|
|
75
|
+
Each entry exports ONE ready-made instance, `omega`; a consumer never writes `new`.
|
|
76
|
+
|
|
74
77
|
```js
|
|
75
78
|
// src/main.js
|
|
76
|
-
|
|
79
|
+
const omega = require('@omega.js/desktop/main');
|
|
80
|
+
omega.initialize().then(() => { const { logger, windows } = omega; }); // auto-loads JSON5 config
|
|
77
81
|
|
|
78
82
|
// src/preload.js
|
|
79
|
-
|
|
83
|
+
const omega = require('@omega.js/desktop/preload');
|
|
84
|
+
omega.initialize();
|
|
80
85
|
|
|
81
86
|
// src/assets/js/components/main/index.js
|
|
82
|
-
|
|
87
|
+
import omega from '@omega.js/desktop/renderer';
|
|
88
|
+
omega.initialize().then(() => { const { logger, desktop } = omega; });
|
|
83
89
|
```
|
|
84
90
|
|
|
85
91
|
## Available APIs at runtime
|
|
86
92
|
|
|
87
|
-
In main
|
|
93
|
+
In main, each a property of `omega`: `windows`, `tray`, `menu`, `contextMenu`, `ipc`, `storage`, `deepLink`, `autoUpdater`, `appState`, `startup`, `protocol`, `authFlow`, `theme`, `fontawesome`, `context`, `usage`, `remoteConfig`, `remoteScripts`, `restartManager`, `analytics`, `sentry`, `logger`.
|
|
94
|
+
- `omega.auth` is the signed-in account in main: `.user` (a `User`), `.listen()`, `.signOut()`, `.getIdToken()`, `.handleToken()`.
|
|
88
95
|
|
|
89
|
-
In renderer: `
|
|
96
|
+
In renderer: the @omega.js/client base (`omega.auth`, `omega.firestore`, `omega.bindings`, and `omega.storage`, the page store) plus `omega.desktop`, the preload's bridge to main.
|
|
97
|
+
- `omega.desktop.{ipc,storage,theme,fontawesome,autoUpdater,analytics,context,usage,remoteConfig}`; `omega.desktop.storage` is the app store, async over IPC.
|
|
98
|
+
- Config: `window.OMEGA_BUILD_JSON.config` (the one `build.js` the view's shell loads).
|
|
90
99
|
|
|
91
100
|
## Dependency resolution
|
|
92
101
|
|
|
93
102
|
- **Do NOT install framework dependencies directly** (`firebase`, `fs-jetpack`, `@omega.js/client`, etc.). @omega.js/desktop's bundler resolves them through the framework's own `node_modules/`. If something doesn't resolve, the issue is in @omega.js/desktop's bundle task, not your `package.json`.
|
|
94
|
-
- **@omega.js/client owns Firebase.** Never `require('firebase')` or `import('firebase/app')`.
|
|
95
|
-
- **`
|
|
103
|
+
- **@omega.js/client owns Firebase.** Never `require('firebase')` or `import('firebase/app')`. In renderers use `omega.auth` and `omega.firestore` on the renderer instance. In the main process, use `omega.auth` (the @omega.js/desktop bridge).
|
|
104
|
+
- **`omega.require(name)`** resolves from @omega.js/desktop's module context at runtime for unbundled code (gulp tasks, test fixtures).
|
|
96
105
|
|
|
97
106
|
## Testing
|
|
98
107
|
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
// App/cloud platform role (provider-discriminated). `config` is the Firebase web
|
|
72
72
|
// SDK config — copy directly from Firebase Console → Project Settings → SDK setup
|
|
73
73
|
// (Config option). Same shape every OMEGA target reads.
|
|
74
|
-
// Empty config {} disables Firebase Auth in the renderer (
|
|
74
|
+
// Empty config {} disables Firebase Auth in the renderer (the auth lib logs a warn).
|
|
75
75
|
cloud: {
|
|
76
76
|
provider: 'firebase',
|
|
77
77
|
config: {
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
},
|
|
88
88
|
|
|
89
89
|
// Appearance — the app's DEFAULT theme. 'system' follows the OS preference live;
|
|
90
|
-
// 'light'/'dark' are explicit overrides. A user's runtime choice (
|
|
90
|
+
// 'light'/'dark' are explicit overrides. A user's runtime choice (omega.theme.set
|
|
91
91
|
// or the [data-omega-theme-set] controls) persists in storage and wins over this on
|
|
92
92
|
// every boot. See docs/themes.md.
|
|
93
93
|
theme: {
|
|
@@ -234,8 +234,8 @@
|
|
|
234
234
|
// src/integrations/tray/index.js
|
|
235
235
|
// src/integrations/menu/index.js
|
|
236
236
|
// src/integrations/context-menu/index.js
|
|
237
|
-
// To disable at runtime: call `
|
|
238
|
-
// `
|
|
237
|
+
// To disable at runtime: call `omega.tray.disable()` / `omega.menu.disable()` /
|
|
238
|
+
// `omega.contextMenu.disable()` from your main entry. Idempotent.
|
|
239
239
|
|
|
240
240
|
// Startup behavior — two independent knobs.
|
|
241
241
|
//
|
|
@@ -263,7 +263,7 @@
|
|
|
263
263
|
},
|
|
264
264
|
},
|
|
265
265
|
// No `windows` block needed — @omega.js/desktop no longer auto-creates windows. Your main.js
|
|
266
|
-
// calls `
|
|
266
|
+
// calls `omega.windows.create('main', { width: 1280, height: 800, ... })` when
|
|
267
267
|
// you want UI to surface. Defaults baked in:
|
|
268
268
|
// main → { width: 1024, height: 720, hideOnClose: true, view: 'main' }
|
|
269
269
|
// any other → { width: 800, height: 600, hideOnClose: false, view: name }
|
|
@@ -282,9 +282,9 @@
|
|
|
282
282
|
},
|
|
283
283
|
// Deep links: scheme is automatically `<brand.id>://...`. Built-in routes:
|
|
284
284
|
// auth/token → @omega.js/client auth token handoff
|
|
285
|
-
// app/show →
|
|
285
|
+
// app/show → omega.windows.show(query.window || 'main')
|
|
286
286
|
// app/quit → app.quit()
|
|
287
|
-
// Add custom routes at runtime:
|
|
287
|
+
// Add custom routes at runtime: omega.deepLink.on('my-route', (ctx) => {...}) in main.
|
|
288
288
|
|
|
289
289
|
// "Hot config" — JSON document fetched from the brand site so app behavior
|
|
290
290
|
// can be flipped without shipping a new build (e.g. force-update gate, ads
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
// changelog page on your marketing site, sending notification emails.
|
|
6
6
|
|
|
7
7
|
module.exports = async (ctx) => {
|
|
8
|
-
// ctx = {
|
|
8
|
+
// ctx = { build, projectRoot, artifacts } // artifacts: array of release/ paths
|
|
9
9
|
};
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
// About window renderer entry.
|
|
2
|
-
|
|
2
|
+
import omega from '@omega.js/desktop/renderer';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
manager.initialize()
|
|
4
|
+
omega.initialize()
|
|
7
5
|
.then(() => {
|
|
8
|
-
const { logger } =
|
|
6
|
+
const { logger } = omega;
|
|
9
7
|
logger.log('About window initialized!');
|
|
10
8
|
});
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
// Main window renderer entry.
|
|
2
|
-
|
|
2
|
+
import omega from '@omega.js/desktop/renderer';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
manager.initialize()
|
|
4
|
+
omega.initialize()
|
|
7
5
|
.then(() => {
|
|
8
|
-
const { logger,
|
|
6
|
+
const { logger, desktop } = omega;
|
|
9
7
|
|
|
10
8
|
// Add your main-window UI logic here.
|
|
11
9
|
// ...
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
// Settings window renderer entry.
|
|
2
|
-
|
|
2
|
+
import omega from '@omega.js/desktop/renderer';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
manager.initialize()
|
|
4
|
+
omega.initialize()
|
|
7
5
|
.then(() => {
|
|
8
|
-
const { logger } =
|
|
6
|
+
const { logger } = omega;
|
|
9
7
|
logger.log('Settings window initialized!');
|
|
10
8
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Context-menu definition. Called by @omega.js/desktop EVERY time the user right-clicks.
|
|
2
2
|
//
|
|
3
|
-
// `
|
|
3
|
+
// `omega`: the running @omega.js/desktop main-process instance.
|
|
4
4
|
// `menu` — per-event builder API + id-path API.
|
|
5
5
|
// `params` — Electron's context-menu params (selectionText, isEditable, linkURL,
|
|
6
6
|
// srcURL, mediaType, editFlags, x, y, etc.).
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
// reload — always
|
|
18
18
|
// inspect, toggle-devtools — dev mode only
|
|
19
19
|
|
|
20
|
-
module.exports = ({
|
|
20
|
+
module.exports = ({ omega, menu, params, webContents }) => {
|
|
21
21
|
// Start from @omega.js/desktop's default template. Don't add anything by default — leave it
|
|
22
22
|
// identical to what the framework would do without this file.
|
|
23
23
|
menu.useDefaults();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Application menu definition. Called by @omega.js/desktop during boot.
|
|
2
2
|
//
|
|
3
|
-
// `
|
|
3
|
+
// `omega`: the running @omega.js/desktop main-process instance.
|
|
4
4
|
// `menu` — builder API + id-path API (find/update/remove/insertAfter/etc.).
|
|
5
5
|
// `defaults` — the platform-aware default template (an array you can mutate manually if needed).
|
|
6
6
|
//
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
// development/{open-exe-folder, open-user-data, open-logs, open-app-config,
|
|
19
19
|
// test-error} (dev only)
|
|
20
20
|
|
|
21
|
-
module.exports = ({
|
|
21
|
+
module.exports = ({ omega, menu, defaults }) => {
|
|
22
22
|
// Start from the platform-appropriate default template. Don't add anything
|
|
23
23
|
// by default — leave it identical to what the framework would do without
|
|
24
24
|
// this file. Add your own customizations below.
|
|
@@ -34,7 +34,7 @@ module.exports = ({ manager, menu, defaults }) => {
|
|
|
34
34
|
// menu.insertAfter('main/check-for-updates', {
|
|
35
35
|
// id: 'main/account',
|
|
36
36
|
// label: 'Account...',
|
|
37
|
-
// click: () =>
|
|
37
|
+
// click: () => omega.windows.show('account'),
|
|
38
38
|
// });
|
|
39
39
|
//
|
|
40
40
|
// // Rename an existing item:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Tray definition. Called by @omega.js/desktop during boot.
|
|
2
2
|
//
|
|
3
|
-
// `
|
|
3
|
+
// `omega`: the running @omega.js/desktop main-process instance.
|
|
4
4
|
// `tray` — builder API + id-path API (find/update/remove/insertAfter/etc.).
|
|
5
5
|
//
|
|
6
6
|
// @omega.js/desktop auto-resolves the tray icon by convention (most specific wins):
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
//
|
|
20
20
|
// This file is OPTIONAL — delete it and @omega.js/desktop still ships a working tray.
|
|
21
21
|
|
|
22
|
-
module.exports = ({
|
|
22
|
+
module.exports = ({ omega, tray }) => {
|
|
23
23
|
// Use @omega.js/desktop's default template + auto-resolved icon + auto-resolved tooltip.
|
|
24
24
|
tray.useDefaults();
|
|
25
25
|
|
|
@@ -36,7 +36,7 @@ module.exports = ({ manager, tray }) => {
|
|
|
36
36
|
// tray.insertAfter('open', {
|
|
37
37
|
// id: 'dashboard',
|
|
38
38
|
// label: 'Open Dashboard',
|
|
39
|
-
// click: () =>
|
|
39
|
+
// click: () => omega.windows.show('dashboard'),
|
|
40
40
|
// });
|
|
41
41
|
//
|
|
42
42
|
// // Rename an existing item:
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
// Main-process entry. Config is auto-loaded from config/omega.json5 (resolved for the desktop target).
|
|
2
|
-
const
|
|
2
|
+
const omega = require('@omega.js/desktop/main');
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
manager.initialize()
|
|
4
|
+
omega.initialize()
|
|
7
5
|
.then(() => {
|
|
8
|
-
const { logger, ipc, storage, windows, tray, menu, contextMenu, deepLink, autoUpdater,
|
|
6
|
+
const { logger, ipc, storage, windows, tray, menu, contextMenu, deepLink, autoUpdater, auth, appState, sentry, startup } = omega;
|
|
9
7
|
|
|
10
8
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
11
9
|
// 1. Create the main window
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
// Preload entry. Exposes window.desktop to the renderer via contextBridge.
|
|
2
|
-
const
|
|
2
|
+
const omega = require('@omega.js/desktop/preload');
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
manager.initialize()
|
|
4
|
+
omega.initialize()
|
|
7
5
|
.then(() => {
|
|
8
|
-
const { logger } =
|
|
6
|
+
const { logger } = omega;
|
|
9
7
|
|
|
10
8
|
// Add any extra contextBridge-exposed APIs here. Be careful — anything you expose runs
|
|
11
9
|
// in the renderer's context, so don't pass through privileged Node APIs without care.
|
|
@@ -23,13 +23,13 @@ Every feature ships with tests at every layer it has a surface in — logic (`bu
|
|
|
23
23
|
|
|
24
24
|
```js
|
|
25
25
|
// test/build/my-feature.test.js
|
|
26
|
-
const
|
|
26
|
+
const build = require('@omega.js/desktop/build');
|
|
27
27
|
|
|
28
28
|
module.exports = {
|
|
29
29
|
layer: 'build',
|
|
30
30
|
description: 'the project config carries a brand id',
|
|
31
31
|
run: (ctx) => {
|
|
32
|
-
ctx.expect(
|
|
32
|
+
ctx.expect(build.getConfig().brand.id).toBeTruthy();
|
|
33
33
|
},
|
|
34
34
|
};
|
|
35
35
|
```
|
package/dist/gulp/main.js
CHANGED
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
delete process.env.ELECTRON_RUN_AS_NODE;
|
|
4
4
|
|
|
5
5
|
// Libraries
|
|
6
|
-
const
|
|
7
|
-
const logger =
|
|
8
|
-
const argv =
|
|
6
|
+
const build = require('../build.js');
|
|
7
|
+
const logger = build.logger('main');
|
|
8
|
+
const argv = build.getArguments();
|
|
9
9
|
const { series, parallel } = require('gulp');
|
|
10
10
|
const path = require('path');
|
|
11
11
|
const glob = require('glob').globSync;
|
|
12
12
|
|
|
13
13
|
// Load packages
|
|
14
|
-
const package =
|
|
15
|
-
const project =
|
|
16
|
-
const projectRoot =
|
|
14
|
+
const package = build.getPackage('main');
|
|
15
|
+
const project = build.getPackage('project');
|
|
16
|
+
const projectRoot = build.getRootPath('project');
|
|
17
17
|
|
|
18
18
|
// Resolve the .env cascade from the project root (shell > app > brand > company)
|
|
19
19
|
// and derive the signing paths the brand's signing tree implies. gulp is its own
|
|
@@ -40,7 +40,7 @@ if (sanitizedSigningKeys.length) {
|
|
|
40
40
|
const attachLogFile = require('../utils/attach-log-file.js');
|
|
41
41
|
const logFileEnv = process.env.OMEGA_LOG_FILE;
|
|
42
42
|
if (logFileEnv !== 'false' && logFileEnv !== '0') {
|
|
43
|
-
const defaultName =
|
|
43
|
+
const defaultName = build.isBuildMode() ? 'build.log' : 'dev.log';
|
|
44
44
|
const logPath = (logFileEnv && logFileEnv !== 'true') ? logFileEnv : path.join(projectRoot, 'logs', defaultName);
|
|
45
45
|
attachLogFile(logPath);
|
|
46
46
|
logger.log(`Logs tee'd to ${logPath}`);
|
|
@@ -54,7 +54,7 @@ logger.log('Starting...', argv);
|
|
|
54
54
|
// Auto-load tasks from src/gulp/tasks/*.js
|
|
55
55
|
const tasks = glob('*.js', { cwd: `${__dirname}/tasks` });
|
|
56
56
|
|
|
57
|
-
// Globals (
|
|
57
|
+
// Globals (the same pair @omega.js/extension's gulp sets)
|
|
58
58
|
global.tasks = {};
|
|
59
59
|
global.websocket = null;
|
|
60
60
|
|
|
@@ -72,8 +72,7 @@ global.tasks = exports;
|
|
|
72
72
|
const runConsumerHook = require('../utils/run-consumer-hook.js');
|
|
73
73
|
function makeHookTask(name) {
|
|
74
74
|
const fn = async () => {
|
|
75
|
-
|
|
76
|
-
await runConsumerHook(name, { manager: Manager, projectRoot: process.cwd(), mode: process.env.OMEGA_BUILD_MODE === 'true' ? 'production' : 'development' });
|
|
75
|
+
await runConsumerHook(name, { build, projectRoot: process.cwd(), mode: process.env.OMEGA_BUILD_MODE === 'true' ? 'production' : 'development' });
|
|
77
76
|
};
|
|
78
77
|
// Set displayName for nicer gulp logs.
|
|
79
78
|
Object.defineProperty(fn, 'name', { value: `hook:${name.replace('/', ':')}` });
|
package/dist/gulp/tasks/audit.js
CHANGED
|
@@ -19,14 +19,14 @@
|
|
|
19
19
|
|
|
20
20
|
const path = require('path');
|
|
21
21
|
const jetpack = require('fs-jetpack');
|
|
22
|
-
const
|
|
22
|
+
const build = require('../../build.js');
|
|
23
23
|
const { validateConfig, releasesRepo, hasOmegaConfig, loadConfig } = require('../../vendor/config/index.js');
|
|
24
24
|
|
|
25
|
-
const logger =
|
|
25
|
+
const logger = build.logger('audit');
|
|
26
26
|
|
|
27
27
|
module.exports = function audit(done) {
|
|
28
28
|
const cwd = process.cwd();
|
|
29
|
-
const config =
|
|
29
|
+
const config = build.getConfig();
|
|
30
30
|
const errors = [];
|
|
31
31
|
const warnings = [];
|
|
32
32
|
|
|
@@ -45,11 +45,11 @@ module.exports = function audit(done) {
|
|
|
45
45
|
// while reporting `0 warnings` ([#911](https://github.com/Omega-JS-Stack/omega/issues/911)).
|
|
46
46
|
// A key the schema does not declare is what a typo looks like, and the
|
|
47
47
|
// consumer has to see it at build time. They come off the LOAD, the same
|
|
48
|
-
// resolution `
|
|
48
|
+
// resolution `build.getConfig()` runs: loadConfig judges what the brand
|
|
49
49
|
// AUTHORED, before the loader fills its own resolved facts (`company.name`
|
|
50
50
|
// and friends) and before the build attaches `environment`.
|
|
51
51
|
const { warnings: configWarnings } = hasOmegaConfig(cwd)
|
|
52
|
-
? loadConfig(cwd, 'desktop', { environment:
|
|
52
|
+
? loadConfig(cwd, 'desktop', { environment: build.getEnvironment() })
|
|
53
53
|
: { warnings: [] };
|
|
54
54
|
warnings.push(...configWarnings);
|
|
55
55
|
|
|
@@ -57,14 +57,14 @@ module.exports = function audit(done) {
|
|
|
57
57
|
// tied to the build pipeline, not the config shape).
|
|
58
58
|
fileMustExist('src/main.js', 'src/main.js');
|
|
59
59
|
fileMustExist('src/preload.js', 'src/preload.js');
|
|
60
|
-
if (
|
|
60
|
+
if (build.isPublishMode() || build.isBuildMode()) {
|
|
61
61
|
// Icon must exist when packaging — dev runs fine with the default Electron icon.
|
|
62
62
|
fileMustExist(config.brand.images?.icon, 'config.brand.images.icon');
|
|
63
63
|
}
|
|
64
64
|
// Publishing needs an ADDRESS for the releases repo, and no repo name is ever
|
|
65
65
|
// typed: @omega.js/config's releasesRepo derives `<brand.id>-releases` under
|
|
66
66
|
// the brand's org, so only a missing org (or brand.id) leaves it unaddressable.
|
|
67
|
-
if (
|
|
67
|
+
if (build.isPublishMode() && config.releases?.enabled !== false && !releasesRepo(config)) {
|
|
68
68
|
errors.push('the releases repo is unaddressable: set repo.org and brand.id. The repo is always "<brand.id>-releases" under that org');
|
|
69
69
|
}
|
|
70
70
|
|