@omega.js/desktop 0.50.0 → 0.51.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 +1 -1
- package/dist/assets/css/tokens/_index.scss +1 -1
- package/dist/assets/themes/base/_includes/frontend/sections/account-section-header.html +4 -1
- package/dist/assets/themes/base/_includes/frontend/sections/footer.html +13 -6
- package/dist/assets/themes/base/_includes/frontend/sections/nav.html +10 -8
- package/dist/assets/themes/base/_includes/global/sections/account.html +3 -1
- package/dist/assets/themes/base/_includes/global/sections/app-sidebar.html +12 -8
- package/dist/assets/themes/base/_includes/global/sections/app-topbar.html +10 -6
- package/dist/assets/themes/base/_includes/global/sections/page-header.html +8 -4
- package/dist/assets/themes/base/_layouts/backend/pages/dashboard/index.html +24 -24
- package/dist/assets/themes/base/_layouts/frontend/pages/about.html +10 -10
- package/dist/assets/themes/base/_layouts/frontend/pages/account/index.html +35 -35
- package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/index.html +4 -4
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signin.html +1 -1
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signup.html +4 -4
- package/dist/assets/themes/base/_layouts/frontend/pages/contact.html +3 -3
- package/dist/assets/themes/base/_layouts/frontend/pages/download.html +34 -33
- package/dist/assets/themes/base/_layouts/frontend/pages/extension/index.html +11 -11
- package/dist/assets/themes/base/_layouts/frontend/pages/legal/document.html +1 -1
- package/dist/assets/themes/base/_layouts/frontend/pages/status.html +1 -1
- package/dist/assets/themes/base/_layouts/frontend/pages/team/index.html +9 -7
- package/dist/assets/themes/base/_layouts/frontend/pages/team/member.html +5 -3
- package/dist/assets/themes/base/_sections/about/letter/section.html +1 -1
- package/dist/assets/themes/base/_sections/about/letter/section.json5 +4 -4
- package/dist/assets/themes/base/_sections/marketing/bento/section.html +1 -1
- package/dist/assets/themes/base/_sections/marketing/bento/section.json5 +15 -15
- package/dist/assets/themes/base/_sections/marketing/cta/section.json5 +1 -1
- package/dist/assets/themes/base/_sections/marketing/hero/section.html +6 -6
- package/dist/assets/themes/base/_sections/marketing/hero/section.json5 +10 -10
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.html +1 -1
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.json5 +2 -2
- package/dist/assets/themes/base/_sections/marketing/stats/section.html +1 -1
- package/dist/assets/themes/base/_sections/marketing/stats/section.json5 +5 -5
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.html +1 -1
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.json5 +2 -2
- package/dist/assets/themes/neobrutalism/_layouts/frontend/pages/index.html +10 -10
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/index.html +10 -10
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.html +2 -2
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.json5 +4 -4
- package/dist/build.js +69 -28
- package/dist/cli-run.js +20 -13
- package/dist/cli.js +12 -7
- package/dist/commands/build.js +0 -2
- package/dist/commands/deploy.js +116 -44
- package/dist/commands/finalize-release.js +5 -4
- package/dist/commands/launch.js +12 -7
- package/dist/commands/lib/deploy-precheck.js +66 -34
- package/dist/commands/lib/ensure-target.js +71 -11
- package/dist/commands/package.js +0 -1
- package/dist/commands/publish.js +11 -4
- package/dist/commands/release.js +99 -252
- package/dist/commands/runner.js +42 -5
- package/dist/commands/sign-windows.js +46 -15
- package/dist/commands/test.js +4 -3
- package/dist/commands/validate-certs.js +291 -115
- package/dist/config/page-template.html +4 -0
- package/dist/defaults/.github/workflows/build.yml +144 -64
- package/dist/defaults/AGENTS.md +3 -2
- package/dist/defaults/_.gitignore +4 -2
- package/dist/defaults/config/certs/README.md +25 -45
- package/dist/defaults/config/omega.json5 +66 -32
- package/dist/defaults/hooks/deploy/pre.js +10 -0
- package/dist/defaults/src/assets/scss/main.scss +12 -2
- package/dist/defaults/src/integrations/tray/index.js +1 -1
- package/dist/gulp/main.js +13 -25
- package/dist/gulp/tasks/audit.js +18 -6
- package/dist/gulp/tasks/build-config.js +181 -60
- package/dist/gulp/tasks/bundle.js +108 -36
- package/dist/gulp/tasks/release.js +86 -4
- package/dist/gulp/tasks/sass.js +11 -0
- package/dist/hooks/lib/notarize-tools.js +137 -0
- package/dist/hooks/notarize-artifacts.js +57 -0
- package/dist/hooks/notarize.js +59 -8
- package/dist/lib/auth-persistence.js +25 -0
- package/dist/lib/client-bridge.js +11 -8
- package/dist/lib/deep-link.js +15 -8
- package/dist/lib/protocol.js +7 -1
- package/dist/lib/restart-manager/install.js +6 -3
- package/dist/lib/sign-helpers/auto-unlock.js +65 -27
- package/dist/lib/sign-helpers/console-lock.js +34 -0
- package/dist/lib/sign-helpers/exec-with-limit.js +68 -0
- package/dist/lib/sign-helpers/resolve-icons.js +6 -4
- package/dist/lib/tray.js +7 -6
- package/dist/main.js +16 -0
- package/dist/preload.js +8 -0
- package/dist/renderer.js +16 -4
- package/dist/runner/job-started.js +104 -0
- package/dist/test/fixtures/consumer-app/config/omega.json5 +7 -0
- package/dist/test/fixtures/consumer-app/package.json +1 -1
- package/dist/test/fixtures/consumer-app/src/assets/js/components/main/index.js +7 -1
- package/dist/test/harness/main-entry.js +2 -1
- package/dist/test/harness/renderer-preload.js +12 -3
- package/dist/test/runners/boot.js +101 -11
- package/dist/test/runners/electron.js +1 -1
- package/dist/test/suites/boot/consumer-app-boots.test.js +54 -0
- package/dist/test/suites/build/audit.test.js +45 -6
- package/dist/test/suites/build/auth-persistence-resolve.test.js +119 -0
- package/dist/test/suites/build/auto-unlock.test.js +105 -0
- package/dist/test/suites/build/boot-runner-timeout.test.js +253 -0
- package/dist/test/suites/build/brand-scss.test.js +106 -0
- package/dist/test/suites/build/build-config.test.js +146 -36
- package/dist/test/suites/build/build-json-bake.test.js +245 -0
- package/dist/test/suites/build/build-verbs.test.js +48 -15
- package/dist/test/suites/build/build-workflow-jobs.test.js +190 -0
- package/dist/test/suites/build/cli.test.js +32 -10
- package/dist/test/suites/build/config-schema.test.js +4 -4
- package/dist/test/suites/build/console-lock.test.js +51 -0
- package/dist/test/suites/build/defaults-scaffold.test.js +71 -2
- package/dist/test/suites/build/deploy-direct.test.js +241 -0
- package/dist/test/suites/build/deploy-dispatch.test.js +287 -0
- package/dist/test/suites/build/deploy-hook.test.js +169 -0
- package/dist/test/suites/build/ensure-target.test.js +14 -2
- package/dist/test/suites/build/env-delivery.test.js +19 -10
- package/dist/test/suites/build/env-watch.test.js +18 -7
- package/dist/test/suites/build/esm-only-dependency.test.js +127 -0
- package/dist/test/suites/build/exec-with-limit.test.js +53 -0
- package/dist/test/suites/build/finalize-release.test.js +2 -2
- package/dist/test/suites/build/get-config.test.js +120 -8
- package/dist/test/suites/build/github-utils.test.js +12 -6
- package/dist/test/suites/build/license-stamp.test.js +6 -4
- package/dist/test/suites/build/manager.test.js +88 -68
- package/dist/test/suites/build/manifest-deps.test.js +116 -0
- package/dist/test/suites/build/merge-line-files.test.js +27 -4
- package/dist/test/suites/build/notarize-artifacts.test.js +135 -0
- package/dist/test/suites/build/notarize-tools.test.js +38 -0
- package/dist/test/suites/build/notarize.test.js +207 -0
- package/dist/test/suites/build/release-pipeline.test.js +38 -60
- package/dist/test/suites/build/release-skipped-upload.test.js +107 -0
- package/dist/test/suites/build/resolve-icons.test.js +35 -35
- package/dist/test/suites/build/runner-job-guard.test.js +182 -0
- package/dist/test/suites/build/runner.test.js +25 -2
- package/dist/test/suites/build/sentry.test.js +8 -3
- package/dist/test/suites/build/setup-scripts.test.js +3 -0
- package/dist/test/suites/build/sign-windows.test.js +92 -8
- package/dist/test/suites/build/test-stealth.test.js +17 -11
- package/dist/test/suites/build/url-helpers.test.js +37 -17
- package/dist/test/suites/build/validate-certs.test.js +428 -55
- package/dist/test/suites/build/validate-config.test.js +3 -3
- package/dist/test/suites/main/auth-flow.test.js +12 -0
- package/dist/test/suites/main/auth-persistence.test.js +14 -17
- package/dist/test/suites/main/auto-updater.test.js +2 -2
- package/dist/test/suites/main/boot-sequence.test.js +1 -1
- package/dist/test/suites/main/client-bridge.integration.test.js +5 -82
- package/dist/test/suites/main/client-bridge.test.js +19 -6
- package/dist/test/suites/main/deep-link.test.js +54 -0
- package/dist/test/suites/main/startup-paths-and-ua.test.js +1 -1
- package/dist/test/suites/main/url-helpers.test.js +81 -72
- package/dist/test/suites/renderer/cross-context-helpers.test.js +19 -16
- package/dist/utils/build-pipeline.js +10 -10
- package/dist/utils/github.js +12 -51
- package/dist/utils/load-env.js +66 -0
- package/dist/utils/mode-helpers.js +43 -111
- package/dist/utils/platform.js +37 -0
- package/dist/utils/runner-env.js +2 -1
- package/dist/utils/runner-job-guard.js +149 -0
- package/dist/utils/ship-keys.js +52 -0
- package/dist/utils/test-stealth.js +5 -3
- package/dist/utils/url-helpers.js +33 -17
- package/dist/vendor/config/bundle-id.js +53 -0
- package/dist/vendor/config/client-config.js +141 -0
- package/dist/vendor/config/company.js +334 -15
- package/dist/vendor/config/dev-facts.js +48 -0
- package/dist/vendor/config/env-delivery.js +231 -9
- package/dist/vendor/config/env-retired.js +137 -0
- package/dist/vendor/config/env-rules.js +22 -3
- package/dist/vendor/config/env-schema.js +234 -117
- package/dist/vendor/config/env.js +55 -26
- package/dist/vendor/config/environment.js +189 -0
- package/dist/vendor/config/hooks.js +13 -11
- package/dist/vendor/config/index.js +121 -44
- package/dist/vendor/config/load.js +366 -115
- package/dist/vendor/config/merge.js +2 -2
- package/dist/vendor/config/order.js +3 -3
- package/dist/vendor/config/platforms.js +276 -0
- package/dist/vendor/config/repo.js +226 -104
- package/dist/vendor/config/retired-keys.js +232 -27
- package/dist/vendor/config/schema.js +525 -99
- package/dist/vendor/config/site-global.js +63 -53
- package/dist/vendor/config/targets.js +187 -0
- package/dist/vendor/config/validate.js +119 -59
- package/dist/vendor/devkit/argv.js +118 -0
- package/dist/vendor/devkit/attach-log-file.js +21 -13
- package/dist/vendor/devkit/brand-tokens.js +278 -0
- package/dist/vendor/devkit/brand-version.js +264 -0
- package/dist/vendor/devkit/build-json.js +91 -0
- package/dist/vendor/devkit/bundle.js +48 -0
- package/dist/vendor/devkit/certificate-expiry.js +108 -0
- package/dist/vendor/devkit/certs.js +16 -194
- package/dist/vendor/devkit/ci-workflows.js +124 -8
- package/dist/vendor/devkit/cli-router.js +3 -3
- package/dist/vendor/devkit/defaults-engine.js +69 -7
- package/dist/vendor/devkit/deploy-follow.js +297 -0
- package/dist/vendor/devkit/deploy-precheck.js +23 -8
- package/dist/vendor/devkit/deploy-record.js +11 -27
- package/dist/vendor/devkit/deploy-snapshot.js +661 -0
- package/dist/vendor/devkit/deploy.js +445 -75
- package/dist/vendor/devkit/git-auth.js +73 -0
- package/dist/vendor/devkit/git-remote.js +95 -0
- package/dist/vendor/devkit/github-repo.js +290 -0
- package/dist/vendor/devkit/local.js +47 -0
- package/dist/vendor/devkit/merge-line-files.js +23 -16
- package/dist/vendor/devkit/omega-bin.js +18 -3
- package/dist/vendor/devkit/pack-local.js +391 -0
- package/dist/vendor/devkit/preludes/index.js +120 -0
- package/dist/vendor/devkit/preludes/origin-heal.js +156 -0
- package/dist/vendor/devkit/service-account.js +43 -0
- package/dist/vendor/devkit/ship-plan.js +112 -0
- package/dist/vendor/devkit/signing-env.js +180 -0
- package/dist/vendor/devkit/signing-tree.js +92 -0
- package/dist/vendor/devkit/target-seams.js +142 -0
- package/dist/vendor/devkit/target-secrets.js +235 -50
- package/dist/vendor/devkit/test/esm-only-fixture.js +48 -0
- package/dist/vendor/devkit/test/fixtures/esm-only-package/browser.js +19 -0
- package/dist/vendor/devkit/test/fixtures/esm-only-package/index.js +20 -0
- package/dist/vendor/devkit/test/fixtures/esm-only-package/package.json +13 -0
- package/dist/vendor/monitoring/env.js +20 -10
- 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 +1 -1
- package/docs/auto-updater.md +5 -5
- package/docs/boot-sequence.md +1 -1
- package/docs/build-system.md +15 -7
- package/docs/client-bridge.md +9 -7
- package/docs/config-schema.md +4 -4
- package/docs/css.md +8 -2
- package/docs/deep-link.md +12 -4
- package/docs/environment-detection.md +32 -24
- package/docs/hooks.md +3 -1
- package/docs/icons.md +7 -7
- package/docs/index.md +61 -23
- package/docs/installer-options.md +24 -21
- package/docs/logging.md +5 -5
- package/docs/releasing.md +25 -17
- package/docs/runner.md +40 -5
- package/docs/shared/brands.md +12 -6
- package/docs/shared/breaking-changes.md +375 -21
- package/docs/shared/config.md +757 -199
- package/docs/shared/deploys.md +194 -91
- package/docs/shared/icons.md +18 -0
- package/docs/shared/local-dev.md +24 -6
- package/docs/shared/logging.md +9 -6
- package/docs/shared/monitoring.md +27 -13
- package/docs/shared/publishing.md +3 -3
- package/docs/shared/rulings.md +2 -2
- package/docs/shared/testing.md +1 -1
- package/docs/shared/theming.md +26 -1
- package/docs/shared/translation.md +49 -7
- package/docs/shared/updates.md +1 -1
- package/docs/signing.md +59 -33
- package/docs/test-framework.md +10 -5
- package/docs/themes.md +15 -1
- package/package.json +18 -12
- package/bin/omega-desktop +0 -2
- package/dist/commands/push-secrets.js +0 -141
- package/dist/test/suites/build/deliver-certs.test.js +0 -95
- package/dist/test/suites/build/derive-signing-env.test.js +0 -122
- package/dist/test/suites/build/push-secrets.test.js +0 -226
- package/dist/test/suites/build/resolve-signing-cert.test.js +0 -342
- package/dist/utils/deliver-certs.js +0 -69
- package/dist/utils/derive-signing-env.js +0 -56
- package/dist/utils/resolve-signing-cert.js +0 -175
- package/dist/vendor/config/desktop-artifacts.js +0 -110
- package/dist/vendor/config/instances.js +0 -208
- /package/dist/defaults/config/icons/{macos → mac}/dmg.png +0 -0
- /package/dist/defaults/config/icons/{macos → mac}/icon.png +0 -0
- /package/dist/defaults/config/icons/{macos → mac}/tray.png +0 -0
|
@@ -22,6 +22,16 @@
|
|
|
22
22
|
},
|
|
23
23
|
},
|
|
24
24
|
|
|
25
|
+
// Where this brand's code and artifacts live (#883): ONE org, and every repo
|
|
26
|
+
// derives from `<brand.id>-<role>`: `<brand.id>-omega` (source),
|
|
27
|
+
// `<brand.id>-releases` (the public artifact channel this app's updater
|
|
28
|
+
// polls), `<brand.id>-<web target>` (a built site). No repo NAME is ever
|
|
29
|
+
// typed. Uncomment and name the org to address them.
|
|
30
|
+
// repo: {
|
|
31
|
+
// provider: 'github',
|
|
32
|
+
// org: 'MyOrg',
|
|
33
|
+
// },
|
|
34
|
+
|
|
25
35
|
monitoring: {
|
|
26
36
|
providers: {
|
|
27
37
|
sentry: {
|
|
@@ -84,13 +94,19 @@
|
|
|
84
94
|
appearance: 'system',
|
|
85
95
|
},
|
|
86
96
|
|
|
87
|
-
// ── Target-scoped config.
|
|
88
|
-
//
|
|
89
|
-
//
|
|
97
|
+
// ── Target-scoped config. Every key is a target NAME (the folder
|
|
98
|
+
// targets/<name> in a brand monorepo) and every entry declares its framework
|
|
99
|
+
// `type`. For a standalone desktop repo only the `desktop` entry exists; in a
|
|
100
|
+
// brand monorepo the brand-level omega.json5 lists every declared target.
|
|
90
101
|
targets: {
|
|
91
102
|
desktop: {
|
|
103
|
+
type: 'desktop',
|
|
104
|
+
|
|
92
105
|
// App-level metadata — universal cross-platform fields. @omega.js/desktop auto-derives sensible
|
|
93
|
-
// defaults from the BRAND: `appId` ←
|
|
106
|
+
// defaults from the BRAND: `appId` ← `certificates.providers.apple.bundleIdPrefix`
|
|
107
|
+
// plus `brand.id` with its dashes as dots (`com.example` + `my-app` →
|
|
108
|
+
// `com.example.my.app`), the same id the certificates service registers.
|
|
109
|
+
// No prefix declared → reverse-domain of `brand.url`
|
|
94
110
|
// (`https://foo.example.com` → `com.example.foo`; no url → `app.<brand.id>`),
|
|
95
111
|
// `productName` ← `brand.name`, `copyright` ← `© <year>, <brand.name>`.
|
|
96
112
|
// Override any of these explicitly only if you must.
|
|
@@ -112,7 +128,7 @@
|
|
|
112
128
|
darkModeSupport: true, // mac honors via NSRequiresAquaSystemAppearance; win/linux ignore
|
|
113
129
|
// Icons are convention-only. Drop PNGs at:
|
|
114
130
|
// config/icons/global/<slot>.png — universal default for all platforms
|
|
115
|
-
// config/icons/
|
|
131
|
+
// config/icons/mac/<slot>.png : macOS override (beats global)
|
|
116
132
|
// config/icons/windows/<slot>.png — Windows override
|
|
117
133
|
// config/icons/linux/<slot>.png — Linux override (otherwise falls back to global → windows)
|
|
118
134
|
// Slots: icon, tray (mac+win+linux); dmg (mac-only).
|
|
@@ -120,14 +136,26 @@
|
|
|
120
136
|
// macOS tray must be 32×32; @omega.js/desktop renames the dist output to trayTemplate.png for the
|
|
121
137
|
// OS dark-mode auto-inversion magic.
|
|
122
138
|
},
|
|
123
|
-
//
|
|
124
|
-
//
|
|
125
|
-
//
|
|
126
|
-
//
|
|
127
|
-
//
|
|
128
|
-
//
|
|
139
|
+
// What this app SHIPS, plus each platform's install knobs (#867). The
|
|
140
|
+
// vocabulary is the client's: mac, windows, linux (never macos, never win).
|
|
141
|
+
//
|
|
142
|
+
// `formats` is the declaration: presence = enabled, every format below is
|
|
143
|
+
// ON by default, and the only way to drop one is `false` (e.g.
|
|
144
|
+
// `snap: false`). Per-format settings live inside the format. The keys
|
|
145
|
+
// beside `formats` are install knobs that map onto the same
|
|
146
|
+
// electron-builder concepts (`mac.target`, `win.target`, `linux.target`),
|
|
147
|
+
// but @omega.js/desktop owns the actual target list so auto-update keeps
|
|
148
|
+
// working (see docs/installer-options.md for why). Each block exposes only
|
|
149
|
+
// the knobs that exist for that platform: there is no cross-platform
|
|
150
|
+
// analog for any of these.
|
|
129
151
|
platforms: {
|
|
130
152
|
mac: {
|
|
153
|
+
// The disk image the site's /download/mac/dmg hands over. The
|
|
154
|
+
// auto-update zip is not a format: electron-updater fetches it from
|
|
155
|
+
// the feed and nobody links it, so the mac leg always builds it.
|
|
156
|
+
formats: {
|
|
157
|
+
dmg: {},
|
|
158
|
+
},
|
|
131
159
|
arch: ['universal'], // universal binary (x64 + arm64 lipo'd) — one .dmg/.zip for both
|
|
132
160
|
// Entitlements override map. @omega.js/desktop ships sensible defaults (allow-jit,
|
|
133
161
|
// allow-unsigned-executable-memory, disable-library-validation, network.client/server,
|
|
@@ -148,7 +176,12 @@
|
|
|
148
176
|
entitlementsInherit: null,
|
|
149
177
|
},
|
|
150
178
|
},
|
|
151
|
-
|
|
179
|
+
windows: {
|
|
180
|
+
// The one installer, at /download/windows/nsis. NSIS merges every
|
|
181
|
+
// arch below into a single .exe.
|
|
182
|
+
formats: {
|
|
183
|
+
nsis: {},
|
|
184
|
+
},
|
|
152
185
|
arch: ['x64', 'ia32'], // 64-bit + 32-bit (single multi-arch NSIS installer)
|
|
153
186
|
oneClick: true, // no installer wizard, just installs immediately
|
|
154
187
|
desktopShortcut: true,
|
|
@@ -168,25 +201,28 @@
|
|
|
168
201
|
},
|
|
169
202
|
},
|
|
170
203
|
linux: {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
204
|
+
formats: {
|
|
205
|
+
deb: {}, // /download/linux/deb (needs brand.url + brand.contact.email)
|
|
206
|
+
appimage: {}, // /download/linux/appimage
|
|
207
|
+
// Snap publishing, on by default: adds a `snap` target to the linux
|
|
208
|
+
// build and publishes to the Snap Store on release. Needs
|
|
209
|
+
// SNAPCRAFT_STORE_CREDENTIALS in your `.env` (the manage walk asks
|
|
210
|
+
// for it; `snapcraft export-login -` mints it, then `omega deploy`
|
|
211
|
+
// flows it to GH Actions). `snap: false` drops it.
|
|
212
|
+
snap: {
|
|
213
|
+
confinement: 'strict',
|
|
214
|
+
grade: 'stable',
|
|
215
|
+
autoStart: true,
|
|
216
|
+
channels: ['stable'],
|
|
217
|
+
},
|
|
182
218
|
},
|
|
219
|
+
arch: ['x64'], // amd64; ia32 is essentially extinct on Linux
|
|
183
220
|
},
|
|
184
221
|
},
|
|
185
222
|
// Auto-updater (electron-updater wrapper). Feed URL is auto-derived from `releases` (below).
|
|
186
223
|
// Set `OMEGA_DEV_UPDATE=available|unavailable|error` to simulate updates in dev.
|
|
187
224
|
autoUpdate: {
|
|
188
225
|
enabled: true,
|
|
189
|
-
channel: 'latest',
|
|
190
226
|
autoDownload: true,
|
|
191
227
|
startupDelayMs: 10000, // 10s after whenReady → first check
|
|
192
228
|
feedCheckIntervalMs: 3600000, // 1h between feed polls (HTTP — keep slow)
|
|
@@ -234,17 +270,15 @@
|
|
|
234
270
|
// Add a `windows: {}` block here only if you want to override defaults persistently.
|
|
235
271
|
|
|
236
272
|
// Releases: the ONE public repo where built artifacts (and the auto-update feed) live.
|
|
237
|
-
// The
|
|
238
|
-
//
|
|
239
|
-
//
|
|
273
|
+
// The source repo can stay private; this one is always public, for unauthenticated downloads + auto-updates.
|
|
274
|
+
// Nothing names it: it is always `<brand.id>-releases` under the top-level `repo.org`, so this block is
|
|
275
|
+
// a presence switch and nothing more (#883). An empty `releases: {}` addresses the repo in full.
|
|
240
276
|
// `npx omega deploy`'s precheck auto-creates it if it doesn't exist (uses GH_TOKEN).
|
|
241
|
-
// Artifact names carry NO version (MyApp-mac-
|
|
242
|
-
// site: https://github.com/<
|
|
243
|
-
// versions, and the website derives its download buttons from it. See docs/releasing.md.
|
|
277
|
+
// Artifact names carry NO version (MyApp-mac-dmg.dmg), so this repo also serves the marketing
|
|
278
|
+
// site: https://github.com/<org>/<brand.id>-releases/releases/latest/download/<asset> never changes
|
|
279
|
+
// across versions, and the website derives its download buttons from it. See docs/releasing.md.
|
|
244
280
|
releases: {
|
|
245
281
|
enabled: true,
|
|
246
|
-
// owner: null, // null = the brand repo's owner
|
|
247
|
-
// repo: 'myapp-releases', // default: `<brand.id>-releases`
|
|
248
282
|
},
|
|
249
283
|
// Deep links: scheme is automatically `<brand.id>://...`. Built-in routes:
|
|
250
284
|
// auth/token → @omega.js/client auth token handoff
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Optional consumer extension hook: called by `omega deploy` on both lanes, after the local
|
|
2
|
+
// scaffold and BEFORE the network precheck, the dispatch, or a local publish. No-op by default.
|
|
3
|
+
// A dry run skips it.
|
|
4
|
+
//
|
|
5
|
+
// Use this for: resetting a release the deploy will recreate, last-mile validations, anything
|
|
6
|
+
// that must happen before the publish reaches the release repo.
|
|
7
|
+
|
|
8
|
+
module.exports = async (ctx) => {
|
|
9
|
+
// ctx = { manager, projectRoot, mode }
|
|
10
|
+
};
|
|
@@ -4,11 +4,16 @@
|
|
|
4
4
|
// Customize Classy theme variables here. See:
|
|
5
5
|
// node_modules/@omega.js/desktop/dist/assets/themes/classy/_config.scss for all available variables.
|
|
6
6
|
|
|
7
|
+
// The brand accent, generated from `brand.color` in config/omega.json5 by the
|
|
8
|
+
// sass task. Deliberate divergence? Put a literal in its place below:
|
|
9
|
+
// $primary: #2563EB, // in place of `brand.$primary`
|
|
10
|
+
@use 'brand';
|
|
11
|
+
|
|
7
12
|
@use 'omega-desktop' as * with (
|
|
8
13
|
// ============================================
|
|
9
14
|
// Brand Colors
|
|
10
15
|
// ============================================
|
|
11
|
-
$primary:
|
|
16
|
+
$primary: brand.$primary,
|
|
12
17
|
// $secondary: #6C757D,
|
|
13
18
|
|
|
14
19
|
// ============================================
|
|
@@ -28,7 +33,12 @@
|
|
|
28
33
|
// $border-radius: 0.5rem,
|
|
29
34
|
);
|
|
30
35
|
|
|
36
|
+
// The runtime --omega-accent ramp, the same light and dark families the web
|
|
37
|
+
// target inlines into its <head>. It goes AFTER the framework import so it wins
|
|
38
|
+
// the cascade over the token sheet's placeholders.
|
|
39
|
+
@include brand.ramp;
|
|
40
|
+
|
|
31
41
|
// ============================================
|
|
32
42
|
// Custom Global Styles
|
|
33
43
|
// ============================================
|
|
34
|
-
// Add your project-specific styles below
|
|
44
|
+
// Add your project-specific styles below, applied on every page.
|
|
@@ -25,7 +25,7 @@ module.exports = ({ manager, tray }) => {
|
|
|
25
25
|
|
|
26
26
|
// ───────── Examples (uncomment to use) ─────────
|
|
27
27
|
//
|
|
28
|
-
// // Override the icon path (otherwise auto-resolved from config/icons/
|
|
28
|
+
// // Override the icon path (otherwise auto-resolved from config/icons/mac/tray.png).
|
|
29
29
|
// // On macOS, the filename MUST end in `Template.png` for OS dark-mode auto-inversion.
|
|
30
30
|
// tray.icon('src/assets/icons/my-trayTemplate.png');
|
|
31
31
|
//
|
package/dist/gulp/main.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Strip ELECTRON_RUN_AS_NODE
|
|
1
|
+
// Strip ELECTRON_RUN_AS_NODE: see src/cli-run.js for the full story. Belt-and-suspenders
|
|
2
2
|
// at the gulp boundary too because gulp can be invoked outside of mgr (e.g. `npx gulp build`).
|
|
3
3
|
delete process.env.ELECTRON_RUN_AS_NODE;
|
|
4
4
|
|
|
@@ -15,10 +15,16 @@ const package = Manager.getPackage('main');
|
|
|
15
15
|
const project = Manager.getPackage('project');
|
|
16
16
|
const projectRoot = Manager.getRootPath('project');
|
|
17
17
|
|
|
18
|
-
// Resolve the .env cascade from the project root (shell > app > brand > company)
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
|
|
18
|
+
// Resolve the .env cascade from the project root (shell > app > brand > company)
|
|
19
|
+
// and derive the signing paths the brand's signing tree implies. gulp is its own
|
|
20
|
+
// PROCESS (npm start invokes it with no CLI above it), so it asks the same
|
|
21
|
+
// wrapper the CLI asks and gets the same answer
|
|
22
|
+
// ([#891](https://github.com/Omega-JS-Stack/omega/issues/891)). The load has to
|
|
23
|
+
// precede the log tee (the tee reads the env it populates), so what it derived
|
|
24
|
+
// is REPORTED below instead: the derived lines are what a CI signing failure is
|
|
25
|
+
// diagnosed from, and they belong in build.log.
|
|
26
|
+
const { loadDesktopEnv, reportSigningEnv } = require('../utils/load-env.js');
|
|
27
|
+
const signingEnv = loadDesktopEnv(projectRoot);
|
|
22
28
|
|
|
23
29
|
// Empty-string signing placeholders (CSC_LINK="" etc. from the .env template)
|
|
24
30
|
// must read as UNSET — app-builder-lib only null-checks and would resolve ''
|
|
@@ -40,26 +46,8 @@ if (logFileEnv !== 'false' && logFileEnv !== '0') {
|
|
|
40
46
|
logger.log(`Logs tee'd to ${logPath}`);
|
|
41
47
|
}
|
|
42
48
|
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
// setup keeps getting). Runs AFTER the log tee so the chosen source and reason
|
|
46
|
-
// land in build.log — the line a CI signing failure is diagnosed from.
|
|
47
|
-
// See utils/resolve-signing-cert.js.
|
|
48
|
-
const signingCert = require('../utils/resolve-signing-cert.js')({ projectRoot });
|
|
49
|
-
if (signingCert.source === 'certificates') {
|
|
50
|
-
process.env.CSC_LINK = signingCert.cscLink;
|
|
51
|
-
}
|
|
52
|
-
logger.log(`Signing certificate: ${signingCert.source} (${signingCert.reason})`);
|
|
53
|
-
|
|
54
|
-
// The signing paths the DELIVERED artifacts imply (#678): the manager's
|
|
55
|
-
// disperse service used to stamp CSC_LINK / APPLE_API_KEY into the target's
|
|
56
|
-
// .env; no machine writes a target .env any more, so an unset key whose file
|
|
57
|
-
// sits in config/certs/ is derived here instead. Runs last: an explicit
|
|
58
|
-
// answer, and the lookup above, always win. See utils/derive-signing-env.js.
|
|
59
|
-
const derivedSigningKeys = require('../utils/derive-signing-env.js')({ env: process.env, projectDir: projectRoot });
|
|
60
|
-
if (derivedSigningKeys.length) {
|
|
61
|
-
logger.log(`Derived signing env from the certs dir: ${derivedSigningKeys.map((entry) => `${entry.key}=${entry.value}`).join(', ')}`);
|
|
62
|
-
}
|
|
49
|
+
// What the env load derived, now that build.log is catching lines.
|
|
50
|
+
reportSigningEnv(signingEnv, logger);
|
|
63
51
|
|
|
64
52
|
logger.log('Starting...', argv);
|
|
65
53
|
|
package/dist/gulp/tasks/audit.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
const path = require('path');
|
|
21
21
|
const jetpack = require('fs-jetpack');
|
|
22
22
|
const Manager = new (require('../../build.js'));
|
|
23
|
-
const { validateConfig, releasesRepo } = require('../../vendor/config/index.js');
|
|
23
|
+
const { validateConfig, releasesRepo, hasOmegaConfig, loadConfig } = require('../../vendor/config/index.js');
|
|
24
24
|
|
|
25
25
|
const logger = Manager.logger('audit');
|
|
26
26
|
|
|
@@ -41,6 +41,18 @@ module.exports = function audit(done) {
|
|
|
41
41
|
const { errors: schemaErrors } = validateConfig(config, { target: 'desktop' });
|
|
42
42
|
errors.push(...schemaErrors);
|
|
43
43
|
|
|
44
|
+
// ...and the validator's WARNINGS, which this task used to drop on the floor
|
|
45
|
+
// while reporting `0 warnings` ([#911](https://github.com/Omega-JS-Stack/omega/issues/911)).
|
|
46
|
+
// A key the schema does not declare is what a typo looks like, and the
|
|
47
|
+
// consumer has to see it at build time. They come off the LOAD, the same
|
|
48
|
+
// resolution `Manager.getConfig()` runs: loadConfig judges what the brand
|
|
49
|
+
// AUTHORED, before the loader fills its own resolved facts (`company.name`
|
|
50
|
+
// and friends) and before the build attaches `environment`.
|
|
51
|
+
const { warnings: configWarnings } = hasOmegaConfig(cwd)
|
|
52
|
+
? loadConfig(cwd, 'desktop', { environment: Manager.getEnvironment() })
|
|
53
|
+
: { warnings: [] };
|
|
54
|
+
warnings.push(...configWarnings);
|
|
55
|
+
|
|
44
56
|
// 2. File existence for paths the build references (not in schema because these are
|
|
45
57
|
// tied to the build pipeline, not the config shape).
|
|
46
58
|
fileMustExist('src/main.js', 'src/main.js');
|
|
@@ -49,11 +61,11 @@ module.exports = function audit(done) {
|
|
|
49
61
|
// Icon must exist when packaging — dev runs fine with the default Electron icon.
|
|
50
62
|
fileMustExist(config.brand.images?.icon, 'config.brand.images.icon');
|
|
51
63
|
}
|
|
52
|
-
// Publishing needs an ADDRESS for the releases repo,
|
|
53
|
-
// @omega.js/config's releasesRepo
|
|
54
|
-
// brand
|
|
55
|
-
if (Manager.isPublishMode() && config.releases?.enabled !== false && !releasesRepo(config)
|
|
56
|
-
errors.push('the releases repo is unaddressable: set repo.
|
|
64
|
+
// Publishing needs an ADDRESS for the releases repo, and no repo name is ever
|
|
65
|
+
// typed: @omega.js/config's releasesRepo derives `<brand.id>-releases` under
|
|
66
|
+
// the brand's org, so only a missing org (or brand.id) leaves it unaddressable.
|
|
67
|
+
if (Manager.isPublishMode() && config.releases?.enabled !== false && !releasesRepo(config)) {
|
|
68
|
+
errors.push('the releases repo is unaddressable: set repo.org and brand.id. The repo is always "<brand.id>-releases" under that org');
|
|
57
69
|
}
|
|
58
70
|
|
|
59
71
|
// 3. Soft warnings — not fatal but worth surfacing.
|