@omega.js/desktop 0.1.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/LICENSE +98 -0
- package/README.md +166 -0
- package/bin/omega +2 -0
- package/bin/omega-desktop +2 -0
- package/bin/omg +2 -0
- package/dist/assets/css/core/_fontawesome.scss +146 -0
- package/dist/assets/css/core/_initialize.scss +38 -0
- package/dist/assets/css/omega-desktop.scss +39 -0
- package/dist/assets/css/shell/_index.scss +207 -0
- package/dist/assets/css/tokens/_index.scss +166 -0
- package/dist/assets/js/bootstrap.bundle.js +1 -0
- package/dist/assets/js/core/app-shell.js +136 -0
- package/dist/assets/themes/_template/README.md +115 -0
- package/dist/assets/themes/_template/_config.scss +60 -0
- package/dist/assets/themes/_template/_theme.js +14 -0
- package/dist/assets/themes/_template/_theme.scss +28 -0
- package/dist/assets/themes/_template/css/base/_root.scss +19 -0
- package/dist/assets/themes/_template/css/components/_components.scss +23 -0
- package/dist/assets/themes/base/README.md +5 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.html +33 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.json5 +33 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.scss +183 -0
- package/dist/assets/themes/base/_components/heading/masthead/component.html +22 -0
- package/dist/assets/themes/base/_components/heading/masthead/component.json5 +30 -0
- package/dist/assets/themes/base/_components/heading/section-head/component.html +18 -0
- package/dist/assets/themes/base/_components/heading/section-head/component.json5 +27 -0
- package/dist/assets/themes/base/_components/pricing/features/component.html +29 -0
- package/dist/assets/themes/base/_components/pricing/features/component.json5 +30 -0
- package/dist/assets/themes/base/_hero/orbit/index.html +30 -0
- package/dist/assets/themes/base/_hero/orbit/script.js +33 -0
- package/dist/assets/themes/base/_hero/orbit/style.scss +133 -0
- package/dist/assets/themes/base/_includes/admin/sections/sidebar.html +3 -0
- package/dist/assets/themes/base/_includes/admin/sections/topbar.html +3 -0
- package/dist/assets/themes/base/_includes/backend/sections/sidebar.html +3 -0
- package/dist/assets/themes/base/_includes/backend/sections/topbar.html +3 -0
- package/dist/assets/themes/base/_includes/frontend/components/connection-card.html +49 -0
- package/dist/assets/themes/base/_includes/frontend/components/post-card.html +54 -0
- package/dist/assets/themes/base/_includes/frontend/sections/account-connections.html +42 -0
- package/dist/assets/themes/base/_includes/frontend/sections/account-section-header.html +11 -0
- package/dist/assets/themes/base/_includes/frontend/sections/footer.html +154 -0
- package/dist/assets/themes/base/_includes/frontend/sections/nav.html +276 -0
- package/dist/assets/themes/base/_includes/global/sections/account.html +72 -0
- package/dist/assets/themes/base/_includes/global/sections/app-sidebar.html +248 -0
- package/dist/assets/themes/base/_includes/global/sections/app-topbar.html +228 -0
- package/dist/assets/themes/base/_includes/global/sections/page-header.html +99 -0
- package/dist/assets/themes/base/_layouts/admin/core/minimal-viewport-locked.html +22 -0
- package/dist/assets/themes/base/_layouts/admin/core/minimal.html +23 -0
- package/dist/assets/themes/base/_layouts/backend/core/base.html +57 -0
- package/dist/assets/themes/base/_layouts/backend/core/minimal-viewport-locked.html +32 -0
- package/dist/assets/themes/base/_layouts/backend/core/minimal.html +32 -0
- package/dist/assets/themes/base/_layouts/backend/pages/dashboard/index.html +230 -0
- package/dist/assets/themes/base/_layouts/frontend/core/base.html +31 -0
- package/dist/assets/themes/base/_layouts/frontend/core/cover.html +40 -0
- package/dist/assets/themes/base/_layouts/frontend/core/minimal.html +47 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/404.html +54 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/about.html +144 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/account/index.html +2104 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/alternative.html +319 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/index.html +186 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/app.html +142 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/reset.html +53 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signin.html +90 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signup.html +141 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/token.html +44 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/category.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/index.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/index.html +255 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/post.html +261 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/index.html +84 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/tag.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/category.html +72 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/document.html +54 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/index.html +84 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/connections/callback.html +55 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/contact.html +214 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/download.html +793 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/extension/index.html +253 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/extension/installed.html +198 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/feedback.html +171 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/index.html +66 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/legal/document.html +78 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/payment/checkout.html +459 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/payment/confirmation.html +131 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/portal/email-preferences.html +104 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/pricing.html +596 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/status.html +361 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/team/index.html +210 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/team/member.html +125 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/updates/index.html +119 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/updates/update.html +118 -0
- package/dist/assets/themes/base/_sections/about/hero/section.html +68 -0
- package/dist/assets/themes/base/_sections/about/hero/section.json5 +58 -0
- package/dist/assets/themes/base/_sections/about/letter/section.html +60 -0
- package/dist/assets/themes/base/_sections/about/letter/section.json5 +56 -0
- package/dist/assets/themes/base/_sections/about/photo-band/section.html +24 -0
- package/dist/assets/themes/base/_sections/about/photo-band/section.json5 +23 -0
- package/dist/assets/themes/base/_sections/about/principles/section.html +17 -0
- package/dist/assets/themes/base/_sections/about/principles/section.json5 +34 -0
- package/dist/assets/themes/base/_sections/about/timeline/section.html +20 -0
- package/dist/assets/themes/base/_sections/about/timeline/section.json5 +34 -0
- package/dist/assets/themes/base/_sections/marketing/bento/section.html +91 -0
- package/dist/assets/themes/base/_sections/marketing/bento/section.json5 +152 -0
- package/dist/assets/themes/base/_sections/marketing/cta/section.html +44 -0
- package/dist/assets/themes/base/_sections/marketing/cta/section.json5 +47 -0
- package/dist/assets/themes/base/_sections/marketing/faq/section.html +52 -0
- package/dist/assets/themes/base/_sections/marketing/faq/section.json5 +68 -0
- package/dist/assets/themes/base/_sections/marketing/hero/section.html +349 -0
- package/dist/assets/themes/base/_sections/marketing/hero/section.json5 +335 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.html +38 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.js +86 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.json5 +29 -0
- package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.html +115 -0
- package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.json5 +72 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.html +62 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.js +44 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.json5 +52 -0
- package/dist/assets/themes/base/_sections/marketing/prose/section.html +22 -0
- package/dist/assets/themes/base/_sections/marketing/prose/section.json5 +41 -0
- package/dist/assets/themes/base/_sections/marketing/showcase/section.html +35 -0
- package/dist/assets/themes/base/_sections/marketing/showcase/section.json5 +52 -0
- package/dist/assets/themes/base/_sections/marketing/stats/section.html +32 -0
- package/dist/assets/themes/base/_sections/marketing/stats/section.json5 +44 -0
- package/dist/assets/themes/base/_sections/marketing/testimonials/section.html +54 -0
- package/dist/assets/themes/base/_sections/marketing/testimonials/section.json5 +70 -0
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.html +30 -0
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.json5 +38 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.html +7 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.js +22 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.json5 +24 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.scss +24 -0
- package/dist/assets/themes/base/_theme.js +13 -0
- package/dist/assets/themes/base/_theme.scss +4 -0
- package/dist/assets/themes/bootstrap/_theme.js +16 -0
- package/dist/assets/themes/bootstrap/_theme.scss +11 -0
- package/dist/assets/themes/bootstrap/js/index.esm.js +19 -0
- package/dist/assets/themes/bootstrap/js/index.umd.js +34 -0
- package/dist/assets/themes/bootstrap/js/src/alert.js +87 -0
- package/dist/assets/themes/bootstrap/js/src/base-component.js +86 -0
- package/dist/assets/themes/bootstrap/js/src/button.js +72 -0
- package/dist/assets/themes/bootstrap/js/src/carousel.js +474 -0
- package/dist/assets/themes/bootstrap/js/src/collapse.js +297 -0
- package/dist/assets/themes/bootstrap/js/src/dom/data.js +55 -0
- package/dist/assets/themes/bootstrap/js/src/dom/event-handler.js +317 -0
- package/dist/assets/themes/bootstrap/js/src/dom/manipulator.js +71 -0
- package/dist/assets/themes/bootstrap/js/src/dom/selector-engine.js +126 -0
- package/dist/assets/themes/bootstrap/js/src/dropdown.js +458 -0
- package/dist/assets/themes/bootstrap/js/src/modal.js +378 -0
- package/dist/assets/themes/bootstrap/js/src/offcanvas.js +282 -0
- package/dist/assets/themes/bootstrap/js/src/popover.js +97 -0
- package/dist/assets/themes/bootstrap/js/src/scrollspy.js +296 -0
- package/dist/assets/themes/bootstrap/js/src/tab.js +315 -0
- package/dist/assets/themes/bootstrap/js/src/toast.js +224 -0
- package/dist/assets/themes/bootstrap/js/src/tooltip.js +632 -0
- package/dist/assets/themes/bootstrap/js/src/util/backdrop.js +151 -0
- package/dist/assets/themes/bootstrap/js/src/util/component-functions.js +35 -0
- package/dist/assets/themes/bootstrap/js/src/util/config.js +65 -0
- package/dist/assets/themes/bootstrap/js/src/util/focustrap.js +115 -0
- package/dist/assets/themes/bootstrap/js/src/util/index.js +306 -0
- package/dist/assets/themes/bootstrap/js/src/util/sanitizer.js +117 -0
- package/dist/assets/themes/bootstrap/js/src/util/scrollbar.js +114 -0
- package/dist/assets/themes/bootstrap/js/src/util/swipe.js +146 -0
- package/dist/assets/themes/bootstrap/js/src/util/template-factory.js +160 -0
- package/dist/assets/themes/bootstrap/overrides/_accordion.scss +21 -0
- package/dist/assets/themes/bootstrap/overrides/_avatars.scss +51 -0
- package/dist/assets/themes/bootstrap/overrides/_blog-images.scss +45 -0
- package/dist/assets/themes/bootstrap/overrides/_buttons-adaptive.scss +141 -0
- package/dist/assets/themes/bootstrap/overrides/_color-shades.scss +25 -0
- package/dist/assets/themes/bootstrap/overrides/_cursor-utilities.scss +13 -0
- package/dist/assets/themes/bootstrap/overrides/_index.scss +30 -0
- package/dist/assets/themes/bootstrap/overrides/_links.scss +26 -0
- package/dist/assets/themes/bootstrap/overrides/_soft-colors.scss +99 -0
- package/dist/assets/themes/bootstrap/overrides/_spacing-extended.scss +74 -0
- package/dist/assets/themes/bootstrap/overrides/_spinners.scss +22 -0
- package/dist/assets/themes/bootstrap/overrides/_typography-utilities.scss +40 -0
- package/dist/assets/themes/bootstrap/scss/_accordion.scss +153 -0
- package/dist/assets/themes/bootstrap/scss/_alert.scss +68 -0
- package/dist/assets/themes/bootstrap/scss/_badge.scss +38 -0
- package/dist/assets/themes/bootstrap/scss/_breadcrumb.scss +40 -0
- package/dist/assets/themes/bootstrap/scss/_button-group.scss +147 -0
- package/dist/assets/themes/bootstrap/scss/_buttons.scss +216 -0
- package/dist/assets/themes/bootstrap/scss/_card.scss +238 -0
- package/dist/assets/themes/bootstrap/scss/_carousel.scss +226 -0
- package/dist/assets/themes/bootstrap/scss/_close.scss +66 -0
- package/dist/assets/themes/bootstrap/scss/_containers.scss +41 -0
- package/dist/assets/themes/bootstrap/scss/_dropdown.scss +250 -0
- package/dist/assets/themes/bootstrap/scss/_forms.scss +9 -0
- package/dist/assets/themes/bootstrap/scss/_functions.scss +302 -0
- package/dist/assets/themes/bootstrap/scss/_grid.scss +39 -0
- package/dist/assets/themes/bootstrap/scss/_helpers.scss +12 -0
- package/dist/assets/themes/bootstrap/scss/_images.scss +42 -0
- package/dist/assets/themes/bootstrap/scss/_list-group.scss +199 -0
- package/dist/assets/themes/bootstrap/scss/_maps.scss +174 -0
- package/dist/assets/themes/bootstrap/scss/_mixins.scss +42 -0
- package/dist/assets/themes/bootstrap/scss/_modal.scss +240 -0
- package/dist/assets/themes/bootstrap/scss/_nav.scss +197 -0
- package/dist/assets/themes/bootstrap/scss/_navbar.scss +289 -0
- package/dist/assets/themes/bootstrap/scss/_offcanvas.scss +147 -0
- package/dist/assets/themes/bootstrap/scss/_pagination.scss +109 -0
- package/dist/assets/themes/bootstrap/scss/_placeholders.scss +51 -0
- package/dist/assets/themes/bootstrap/scss/_popover.scss +196 -0
- package/dist/assets/themes/bootstrap/scss/_progress.scss +68 -0
- package/dist/assets/themes/bootstrap/scss/_reboot.scss +611 -0
- package/dist/assets/themes/bootstrap/scss/_root.scss +187 -0
- package/dist/assets/themes/bootstrap/scss/_spinners.scss +85 -0
- package/dist/assets/themes/bootstrap/scss/_tables.scss +171 -0
- package/dist/assets/themes/bootstrap/scss/_toasts.scss +73 -0
- package/dist/assets/themes/bootstrap/scss/_tooltip.scss +119 -0
- package/dist/assets/themes/bootstrap/scss/_transitions.scss +27 -0
- package/dist/assets/themes/bootstrap/scss/_type.scss +106 -0
- package/dist/assets/themes/bootstrap/scss/_utilities.scss +806 -0
- package/dist/assets/themes/bootstrap/scss/_variables-dark.scss +102 -0
- package/dist/assets/themes/bootstrap/scss/_variables.scss +1753 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-grid.scss +62 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-reboot.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-utilities.scss +19 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap.scss +52 -0
- package/dist/assets/themes/bootstrap/scss/forms/_floating-labels.scss +97 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-check.scss +189 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-control.scss +214 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-range.scss +91 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-select.scss +80 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-text.scss +11 -0
- package/dist/assets/themes/bootstrap/scss/forms/_input-group.scss +132 -0
- package/dist/assets/themes/bootstrap/scss/forms/_labels.scss +36 -0
- package/dist/assets/themes/bootstrap/scss/forms/_validation.scss +12 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_clearfix.scss +3 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_color-bg.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_colored-links.scss +30 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_focus-ring.scss +5 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_icon-link.scss +25 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_position.scss +36 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_ratio.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_stacks.scss +15 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_stretched-link.scss +15 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_text-truncation.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_vr.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_alert.scss +18 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_backdrop.scss +14 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_banner.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_border-radius.scss +78 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_box-shadow.scss +18 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_breakpoints.scss +127 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_buttons.scss +70 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_caret.scss +69 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_clearfix.scss +9 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_color-mode.scss +21 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_color-scheme.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_container.scss +11 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_deprecate.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_forms.scss +163 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_gradients.scss +47 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_grid.scss +151 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_image.scss +16 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_list-group.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_lists.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_pagination.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_reset-text.scss +17 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_resize.scss +6 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_table-variants.scss +24 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_text-truncate.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_transition.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_utilities.scss +97 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
- package/dist/assets/themes/bootstrap/scss/tests/jasmine.js +16 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_auto-import-of-variables-dark.test.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
- package/dist/assets/themes/bootstrap/scss/tests/sass-true/register.js +14 -0
- package/dist/assets/themes/bootstrap/scss/tests/sass-true/runner.js +17 -0
- package/dist/assets/themes/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
- package/dist/assets/themes/bootstrap/scss/utilities/_api.scss +47 -0
- package/dist/assets/themes/bootstrap/scss/vendor/_rfs.scss +348 -0
- package/dist/assets/themes/classy/README.md +89 -0
- package/dist/assets/themes/classy/_config.scss +245 -0
- package/dist/assets/themes/classy/_theme.js +31 -0
- package/dist/assets/themes/classy/_theme.scss +57 -0
- package/dist/assets/themes/classy/css/app/_panels.scss +183 -0
- package/dist/assets/themes/classy/css/base/_fonts.scss +79 -0
- package/dist/assets/themes/classy/css/base/_no-raise.scss +49 -0
- package/dist/assets/themes/classy/css/base/_root.scss +113 -0
- package/dist/assets/themes/classy/css/base/_typography.scss +154 -0
- package/dist/assets/themes/classy/css/base/_utilities.scss +284 -0
- package/dist/assets/themes/classy/css/components/_alerts.scss +51 -0
- package/dist/assets/themes/classy/css/components/_badges.scss +46 -0
- package/dist/assets/themes/classy/css/components/_buttons.scss +175 -0
- package/dist/assets/themes/classy/css/components/_cards.scss +41 -0
- package/dist/assets/themes/classy/css/components/_dropdowns.scss +48 -0
- package/dist/assets/themes/classy/css/components/_forms.scss +171 -0
- package/dist/assets/themes/classy/css/components/_receipt.scss +45 -0
- package/dist/assets/themes/classy/css/layout/_footer.scss +298 -0
- package/dist/assets/themes/classy/css/layout/_general.scss +209 -0
- package/dist/assets/themes/classy/css/layout/_nav.scss +154 -0
- package/dist/assets/themes/classy/css/layout/_shell.scss +458 -0
- package/dist/assets/themes/classy/css/marketing/_bento.scss +238 -0
- package/dist/assets/themes/classy/css/marketing/_content.scss +1328 -0
- package/dist/assets/themes/classy/css/marketing/_downloads.scss +246 -0
- package/dist/assets/themes/classy/css/marketing/_hero.scss +311 -0
- package/dist/assets/themes/classy/css/marketing/_sections.scss +649 -0
- package/dist/assets/themes/classy/css/pages/404/index.scss +67 -0
- package/dist/assets/themes/classy/css/pages/_auth.scss +235 -0
- package/dist/assets/themes/classy/css/pages/admin/firebase/index.scss +22 -0
- package/dist/assets/themes/classy/css/pages/blog/[slug].scss +56 -0
- package/dist/assets/themes/classy/css/pages/cookies.scss +2 -0
- package/dist/assets/themes/classy/css/pages/dashboard/account/index.scss +31 -0
- package/dist/assets/themes/classy/css/pages/feedback/index.scss +39 -0
- package/dist/assets/themes/classy/css/pages/legal/_document.scss +192 -0
- package/dist/assets/themes/classy/css/pages/payment/checkout/index.scss +585 -0
- package/dist/assets/themes/classy/css/pages/payment/confirmation/index.scss +9 -0
- package/dist/assets/themes/classy/css/pages/privacy.scss +2 -0
- package/dist/assets/themes/classy/css/pages/status/index.scss +164 -0
- package/dist/assets/themes/classy/css/pages/terms.scss +2 -0
- package/dist/assets/themes/classy/css/pages/updates/index.scss +128 -0
- package/dist/assets/themes/classy/fonts/inter-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-italic-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-normal-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-italic-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-normal-latin.woff2 +0 -0
- package/dist/assets/themes/classy/js/hero-demo-form.js +56 -0
- package/dist/assets/themes/neobrutalism/README.md +118 -0
- package/dist/assets/themes/neobrutalism/_config.scss +139 -0
- package/dist/assets/themes/neobrutalism/_layouts/frontend/core/base.html +30 -0
- package/dist/assets/themes/neobrutalism/_layouts/frontend/pages/index.html +275 -0
- package/dist/assets/themes/neobrutalism/_theme.js +24 -0
- package/dist/assets/themes/neobrutalism/_theme.scss +61 -0
- package/dist/assets/themes/neobrutalism/css/base/_mixins.scss +46 -0
- package/dist/assets/themes/neobrutalism/css/base/_root.scss +169 -0
- package/dist/assets/themes/neobrutalism/css/base/_typography.scss +61 -0
- package/dist/assets/themes/neobrutalism/css/base/_utilities.scss +89 -0
- package/dist/assets/themes/neobrutalism/css/components/_billing-toggle.scss +74 -0
- package/dist/assets/themes/neobrutalism/css/components/_buttons.scss +148 -0
- package/dist/assets/themes/neobrutalism/css/components/_cards.scss +47 -0
- package/dist/assets/themes/neobrutalism/css/components/_forms.scss +88 -0
- package/dist/assets/themes/neobrutalism/css/components/_marketing.scss +244 -0
- package/dist/assets/themes/neobrutalism/css/layout/_general.scss +213 -0
- package/dist/assets/themes/neobrutalism/css/layout/_navigation.scss +171 -0
- package/dist/assets/themes/neobrutalism/css/pages/index.scss +203 -0
- package/dist/assets/themes/neobrutalism/css/pages/pricing/index.scss +58 -0
- package/dist/assets/themes/neobrutalism/css/pages/test/libraries/layers/index.scss +7 -0
- package/dist/assets/themes/neobrutalism/js/pages/test/libraries/layers/index.js +9 -0
- package/dist/assets/themes/newsflash/README.md +117 -0
- package/dist/assets/themes/newsflash/_components/heading/lede/component.html +14 -0
- package/dist/assets/themes/newsflash/_components/heading/lede/component.json5 +23 -0
- package/dist/assets/themes/newsflash/_components/heading/rule-head/component.html +17 -0
- package/dist/assets/themes/newsflash/_components/heading/rule-head/component.json5 +23 -0
- package/dist/assets/themes/newsflash/_components/news/byline/component.html +12 -0
- package/dist/assets/themes/newsflash/_components/news/byline/component.json5 +18 -0
- package/dist/assets/themes/newsflash/_components/news/story-card/component.html +25 -0
- package/dist/assets/themes/newsflash/_components/news/story-card/component.json5 +21 -0
- package/dist/assets/themes/newsflash/_config.scss +147 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/core/base.html +51 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/index.html +299 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/post.html +235 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/index.html +328 -0
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.html +39 -0
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.json5 +49 -0
- package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.html +103 -0
- package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.json5 +50 -0
- package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.html +28 -0
- package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.json5 +40 -0
- package/dist/assets/themes/newsflash/_theme.js +24 -0
- package/dist/assets/themes/newsflash/_theme.scss +70 -0
- package/dist/assets/themes/newsflash/css/base/_fonts.scss +80 -0
- package/dist/assets/themes/newsflash/css/base/_mixins.scss +51 -0
- package/dist/assets/themes/newsflash/css/base/_root.scss +257 -0
- package/dist/assets/themes/newsflash/css/base/_typography.scss +49 -0
- package/dist/assets/themes/newsflash/css/base/_utilities.scss +122 -0
- package/dist/assets/themes/newsflash/css/components/_badges.scss +65 -0
- package/dist/assets/themes/newsflash/css/components/_billing-toggle.scss +61 -0
- package/dist/assets/themes/newsflash/css/components/_buttons.scss +139 -0
- package/dist/assets/themes/newsflash/css/components/_cards.scss +47 -0
- package/dist/assets/themes/newsflash/css/components/_editorial.scss +173 -0
- package/dist/assets/themes/newsflash/css/components/_forms.scss +75 -0
- package/dist/assets/themes/newsflash/css/components/_infinite-scroll.scss +102 -0
- package/dist/assets/themes/newsflash/css/components/_panels.scss +156 -0
- package/dist/assets/themes/newsflash/css/components/_ticker.scss +67 -0
- package/dist/assets/themes/newsflash/css/layout/_general.scss +330 -0
- package/dist/assets/themes/newsflash/css/layout/_navigation.scss +168 -0
- package/dist/assets/themes/newsflash/css/pages/404/index.scss +79 -0
- package/dist/assets/themes/newsflash/css/pages/blog/[slug].scss +186 -0
- package/dist/assets/themes/newsflash/css/pages/blog/index.scss +17 -0
- package/dist/assets/themes/newsflash/css/pages/index.scss +157 -0
- package/dist/assets/themes/newsflash/css/pages/pricing/index.scss +55 -0
- package/dist/assets/themes/newsflash/css/pages/test/libraries/layers/index.scss +7 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/js/pages/blog/[slug].js +29 -0
- package/dist/assets/themes/newsflash/js/pages/test/libraries/layers/index.js +9 -0
- package/dist/build.js +249 -0
- package/dist/cli-run.js +34 -0
- package/dist/cli.js +49 -0
- package/dist/commands/build.js +32 -0
- package/dist/commands/cdp/capture.js +91 -0
- package/dist/commands/cdp/client.js +140 -0
- package/dist/commands/cdp/eval.js +20 -0
- package/dist/commands/cdp/quit.js +84 -0
- package/dist/commands/cdp/relaunch.js +62 -0
- package/dist/commands/cdp/shot.js +20 -0
- package/dist/commands/cdp/status.js +38 -0
- package/dist/commands/cdp/theme.js +21 -0
- package/dist/commands/cdp.js +53 -0
- package/dist/commands/clean.js +34 -0
- package/dist/commands/deploy.js +75 -0
- package/dist/commands/finalize-release.js +238 -0
- package/dist/commands/install.js +37 -0
- package/dist/commands/launch.js +150 -0
- package/dist/commands/lib/dependencies.js +35 -0
- package/dist/commands/lib/deploy-precheck.js +117 -0
- package/dist/commands/lib/ensure-target.js +300 -0
- package/dist/commands/logs.js +185 -0
- package/dist/commands/package.js +31 -0
- package/dist/commands/publish.js +34 -0
- package/dist/commands/push-secrets.js +141 -0
- package/dist/commands/release.js +286 -0
- package/dist/commands/runner.js +1874 -0
- package/dist/commands/sign-windows.js +563 -0
- package/dist/commands/test.js +121 -0
- package/dist/commands/update.js +21 -0
- package/dist/commands/validate-certs.js +238 -0
- package/dist/commands/version.js +9 -0
- package/dist/config/page-template.html +35 -0
- package/dist/defaults/.github/workflows/build.yml +276 -0
- package/dist/defaults/AGENTS.md +109 -0
- package/dist/defaults/CHANGELOG.md +15 -0
- package/dist/defaults/CLAUDE.md +1 -0
- package/dist/defaults/_.gitignore +24 -0
- package/dist/defaults/_mas/README.md +49 -0
- package/dist/defaults/_mas/entitlements.mas.inherit.plist +12 -0
- package/dist/defaults/_mas/entitlements.mas.loginhelper.plist +8 -0
- package/dist/defaults/_mas/entitlements.mas.plist +33 -0
- package/dist/defaults/config/certs/.gitkeep +0 -0
- package/dist/defaults/config/certs/README.md +60 -0
- package/dist/defaults/config/icons/macos/dmg.png +0 -0
- package/dist/defaults/config/icons/macos/icon.png +0 -0
- package/dist/defaults/config/icons/macos/tray.png +0 -0
- package/dist/defaults/config/icons/windows/icon.png +0 -0
- package/dist/defaults/config/omega.json5 +279 -0
- package/dist/defaults/docs/README.md +17 -0
- package/dist/defaults/gulpfile.js +6 -0
- package/dist/defaults/hooks/build/post.js +9 -0
- package/dist/defaults/hooks/build/pre.js +9 -0
- package/dist/defaults/hooks/notarize/post.js +16 -0
- package/dist/defaults/hooks/release/post.js +9 -0
- package/dist/defaults/hooks/release/pre.js +9 -0
- package/dist/defaults/src/assets/js/components/about/index.js +10 -0
- package/dist/defaults/src/assets/js/components/main/index.js +14 -0
- package/dist/defaults/src/assets/js/components/settings/index.js +10 -0
- package/dist/defaults/src/assets/scss/main.scss +34 -0
- package/dist/defaults/src/assets/scss/pages/about.scss +3 -0
- package/dist/defaults/src/assets/scss/pages/main.scss +4 -0
- package/dist/defaults/src/assets/scss/pages/settings.scss +3 -0
- package/dist/defaults/src/integrations/context-menu/index.js +60 -0
- package/dist/defaults/src/integrations/menu/index.js +58 -0
- package/dist/defaults/src/integrations/tray/index.js +60 -0
- package/dist/defaults/src/main.js +78 -0
- package/dist/defaults/src/preload.js +15 -0
- package/dist/defaults/src/views/about/index.html +3 -0
- package/dist/defaults/src/views/main/index.html +8 -0
- package/dist/defaults/src/views/settings/index.html +3 -0
- package/dist/defaults/test/README.md +41 -0
- package/dist/defaults/test/_init.js +10 -0
- package/dist/gulp/main.js +144 -0
- package/dist/gulp/tasks/audit.js +82 -0
- package/dist/gulp/tasks/build-config.js +445 -0
- package/dist/gulp/tasks/bundle.js +451 -0
- package/dist/gulp/tasks/defaults.js +20 -0
- package/dist/gulp/tasks/distribute.js +8 -0
- package/dist/gulp/tasks/html.js +95 -0
- package/dist/gulp/tasks/package-quick.js +102 -0
- package/dist/gulp/tasks/package.js +53 -0
- package/dist/gulp/tasks/release.js +57 -0
- package/dist/gulp/tasks/sass.js +82 -0
- package/dist/gulp/tasks/serve.js +191 -0
- package/dist/hooks/notarize.js +70 -0
- package/dist/index.js +14 -0
- package/dist/lib/_menu-mixin.js +199 -0
- package/dist/lib/analytics.js +360 -0
- package/dist/lib/app-state.js +220 -0
- package/dist/lib/auth-flow.js +160 -0
- package/dist/lib/auth-persistence.js +207 -0
- package/dist/lib/auto-updater.js +752 -0
- package/dist/lib/client-bridge.js +371 -0
- package/dist/lib/context-menu.js +302 -0
- package/dist/lib/context.js +162 -0
- package/dist/lib/deep-link.js +370 -0
- package/dist/lib/fontawesome.js +203 -0
- package/dist/lib/ipc.js +169 -0
- package/dist/lib/logger-lite.js +259 -0
- package/dist/lib/logger.js +4 -0
- package/dist/lib/menu.js +521 -0
- package/dist/lib/protocol.js +85 -0
- package/dist/lib/remote-config.js +224 -0
- package/dist/lib/remote-scripts.js +158 -0
- package/dist/lib/restart-manager/index.js +550 -0
- package/dist/lib/restart-manager/install.js +353 -0
- package/dist/lib/restart-manager/protocol.js +274 -0
- package/dist/lib/sign-helpers/auto-unlock.js +95 -0
- package/dist/lib/sign-helpers/entitlements.js +98 -0
- package/dist/lib/sign-helpers/resolve-icons.js +171 -0
- package/dist/lib/sign-helpers/sign-events.js +75 -0
- package/dist/lib/sign-helpers/update-info.js +186 -0
- package/dist/lib/startup.js +214 -0
- package/dist/lib/storage.js +193 -0
- package/dist/lib/templating.js +85 -0
- package/dist/lib/theme.js +173 -0
- package/dist/lib/tray.js +414 -0
- package/dist/lib/usage.js +141 -0
- package/dist/lib/window-manager.js +509 -0
- package/dist/main.js +542 -0
- package/dist/omega-bin.js +6 -0
- package/dist/preload.js +241 -0
- package/dist/renderer.js +456 -0
- package/dist/test/assert.js +4 -0
- package/dist/test/fixtures/consumer-app/config/omega.json5 +39 -0
- package/dist/test/fixtures/consumer-app/package.json +13 -0
- package/dist/test/fixtures/consumer-app/src/assets/js/components/main/index.js +11 -0
- package/dist/test/fixtures/consumer-app/src/assets/scss/main.scss +3 -0
- package/dist/test/fixtures/consumer-app/src/main.js +17 -0
- package/dist/test/fixtures/consumer-app/src/preload.js +4 -0
- package/dist/test/fixtures/consumer-app/src/views/main/index.html +4 -0
- package/dist/test/harness/boot-entry.js +237 -0
- package/dist/test/harness/main-entry.js +494 -0
- package/dist/test/harness/package.json +6 -0
- package/dist/test/harness/renderer-entry.js +173 -0
- package/dist/test/harness/renderer-preload.js +310 -0
- package/dist/test/harness/renderer.html +12 -0
- package/dist/test/index.js +65 -0
- package/dist/test/runner.js +99 -0
- package/dist/test/runners/boot.js +414 -0
- package/dist/test/runners/electron.js +92 -0
- package/dist/test/runners/render-event.js +46 -0
- package/dist/test/suites/boot/build-isolation.test.js +54 -0
- package/dist/test/suites/boot/consumer-app-boots.test.js +99 -0
- package/dist/test/suites/boot/restart-manager.test.js +38 -0
- package/dist/test/suites/boot/storage-bundled.test.js +59 -0
- package/dist/test/suites/boot/theme.test.js +68 -0
- package/dist/test/suites/boot/view-suite.test.js +47 -0
- package/dist/test/suites/build/attach-log-file.test.js +99 -0
- package/dist/test/suites/build/audit.test.js +271 -0
- package/dist/test/suites/build/boot-fixture.test.js +48 -0
- package/dist/test/suites/build/build-config.test.js +457 -0
- package/dist/test/suites/build/build-verbs.test.js +156 -0
- package/dist/test/suites/build/build-workflow-jobs.test.js +55 -0
- package/dist/test/suites/build/cdp.test.js +89 -0
- package/dist/test/suites/build/cli.test.js +135 -0
- package/dist/test/suites/build/config-schema.test.js +133 -0
- package/dist/test/suites/build/defaults-scaffold.test.js +192 -0
- package/dist/test/suites/build/deliver-certs.test.js +95 -0
- package/dist/test/suites/build/derive-signing-env.test.js +122 -0
- package/dist/test/suites/build/electron-node-version.test.js +49 -0
- package/dist/test/suites/build/electron-targets.test.js +92 -0
- package/dist/test/suites/build/ensure-target.test.js +131 -0
- package/dist/test/suites/build/entitlements.test.js +107 -0
- package/dist/test/suites/build/env-delivery.test.js +166 -0
- package/dist/test/suites/build/env-watch.test.js +86 -0
- package/dist/test/suites/build/exports.test.js +63 -0
- package/dist/test/suites/build/finalize-release.test.js +152 -0
- package/dist/test/suites/build/format-fetch-error.test.js +85 -0
- package/dist/test/suites/build/framework-deps.test.js +173 -0
- package/dist/test/suites/build/get-config.test.js +137 -0
- package/dist/test/suites/build/github-utils.test.js +54 -0
- package/dist/test/suites/build/icon-sheet.test.js +62 -0
- package/dist/test/suites/build/license-stamp.test.js +63 -0
- package/dist/test/suites/build/logger-lite.test.js +148 -0
- package/dist/test/suites/build/logs-command.test.js +226 -0
- package/dist/test/suites/build/manager.test.js +193 -0
- package/dist/test/suites/build/menu-mixin.test.js +130 -0
- package/dist/test/suites/build/merge-line-files.test.js +230 -0
- package/dist/test/suites/build/omega-shell.test.js +94 -0
- package/dist/test/suites/build/omega-tokens.test.js +64 -0
- package/dist/test/suites/build/project-scripts-deps.test.js +90 -0
- package/dist/test/suites/build/push-secrets.test.js +226 -0
- package/dist/test/suites/build/release-pipeline.test.js +365 -0
- package/dist/test/suites/build/renderer-auth-bridge.test.js +158 -0
- package/dist/test/suites/build/renderer-entry-key.test.js +37 -0
- package/dist/test/suites/build/renderer-node-shims.test.js +125 -0
- package/dist/test/suites/build/resolve-icons.test.js +296 -0
- package/dist/test/suites/build/resolve-signing-cert.test.js +342 -0
- package/dist/test/suites/build/restart-manager-install.test.js +178 -0
- package/dist/test/suites/build/restart-manager-protocol.test.js +158 -0
- package/dist/test/suites/build/run-consumer-hook.test.js +137 -0
- package/dist/test/suites/build/runner.test.js +2599 -0
- package/dist/test/suites/build/sanitize-signing-env.test.js +98 -0
- package/dist/test/suites/build/sanitize-url.test.js +78 -0
- package/dist/test/suites/build/secure-remote-url.test.js +42 -0
- package/dist/test/suites/build/sentry.test.js +89 -0
- package/dist/test/suites/build/serve-resolve-electron.test.js +58 -0
- package/dist/test/suites/build/setup-scripts.test.js +172 -0
- package/dist/test/suites/build/sign-events.test.js +90 -0
- package/dist/test/suites/build/sign-windows-e2e.test.js +302 -0
- package/dist/test/suites/build/sign-windows.test.js +313 -0
- package/dist/test/suites/build/strip-dev-blocks.test.js +116 -0
- package/dist/test/suites/build/templating.test.js +95 -0
- package/dist/test/suites/build/test-discovery.test.js +64 -0
- package/dist/test/suites/build/test-stealth.test.js +83 -0
- package/dist/test/suites/build/test-target-no-match.test.js +119 -0
- package/dist/test/suites/build/update-info.test.js +224 -0
- package/dist/test/suites/build/url-helpers.test.js +289 -0
- package/dist/test/suites/build/validate-certs.test.js +103 -0
- package/dist/test/suites/build/validate-config.test.js +90 -0
- package/dist/test/suites/build/verb-logs.test.js +43 -0
- package/dist/test/suites/build/wave5-pins.test.js +35 -0
- package/dist/test/suites/main/analytics.test.js +364 -0
- package/dist/test/suites/main/app-state.test.js +197 -0
- package/dist/test/suites/main/auth-flow.test.js +196 -0
- package/dist/test/suites/main/auth-persistence.test.js +167 -0
- package/dist/test/suites/main/auto-updater.test.js +1138 -0
- package/dist/test/suites/main/boot-sequence.test.js +77 -0
- package/dist/test/suites/main/client-bridge.integration.test.js +134 -0
- package/dist/test/suites/main/client-bridge.test.js +249 -0
- package/dist/test/suites/main/context-menu.test.js +365 -0
- package/dist/test/suites/main/context.test.js +155 -0
- package/dist/test/suites/main/deep-link.test.js +288 -0
- package/dist/test/suites/main/epipe-handler.test.js +40 -0
- package/dist/test/suites/main/fontawesome.test.js +147 -0
- package/dist/test/suites/main/harness-cdp.test.js +49 -0
- package/dist/test/suites/main/ipc.test.js +165 -0
- package/dist/test/suites/main/menu.test.js +419 -0
- package/dist/test/suites/main/protocol.test.js +77 -0
- package/dist/test/suites/main/remote-config.test.js +189 -0
- package/dist/test/suites/main/remote-scripts.test.js +276 -0
- package/dist/test/suites/main/restart-manager.test.js +328 -0
- package/dist/test/suites/main/startup-paths-and-ua.test.js +99 -0
- package/dist/test/suites/main/startup.test.js +129 -0
- package/dist/test/suites/main/stealth-window.test.js +74 -0
- package/dist/test/suites/main/storage.test.js +89 -0
- package/dist/test/suites/main/theme.test.js +137 -0
- package/dist/test/suites/main/tray.test.js +322 -0
- package/dist/test/suites/main/truncate-on-boot.test.js +22 -0
- package/dist/test/suites/main/url-helpers.test.js +429 -0
- package/dist/test/suites/main/usage.test.js +127 -0
- package/dist/test/suites/main/window-bounds.test.js +169 -0
- package/dist/test/suites/main/window-manager.test.js +233 -0
- package/dist/test/suites/renderer/analytics-bridge.test.js +128 -0
- package/dist/test/suites/renderer/cross-context-helpers.test.js +131 -0
- package/dist/test/suites/renderer/fontawesome.test.js +190 -0
- package/dist/test/suites/renderer/round-trip.test.js +107 -0
- package/dist/test/suites/renderer/theme.test.js +118 -0
- package/dist/test/suites/renderer/tooltips.test.js +166 -0
- package/dist/test/suites/renderer/verts.test.js +100 -0
- package/dist/test/suites/renderer/window-em-surface.test.js +107 -0
- package/dist/test/utils/dist-snapshot.js +36 -0
- package/dist/test/utils/extended-mode-warning.js +13 -0
- package/dist/utils/app-root.js +28 -0
- package/dist/utils/attach-log-file.js +4 -0
- package/dist/utils/build-pipeline.js +58 -0
- package/dist/utils/deliver-certs.js +69 -0
- package/dist/utils/derive-signing-env.js +56 -0
- package/dist/utils/dist-root.js +21 -0
- package/dist/utils/electron-node-version.js +48 -0
- package/dist/utils/electron-targets.js +72 -0
- package/dist/utils/format-fetch-error.js +38 -0
- package/dist/utils/github.js +73 -0
- package/dist/utils/load-consumer-file.js +26 -0
- package/dist/utils/merge-line-files.js +5 -0
- package/dist/utils/mode-helpers.js +147 -0
- package/dist/utils/resolve-signing-cert.js +175 -0
- package/dist/utils/run-consumer-hook.js +38 -0
- package/dist/utils/runner-env.js +687 -0
- package/dist/utils/safe-install.js +4 -0
- package/dist/utils/sanitize-signing-env.js +45 -0
- package/dist/utils/sanitize-url.js +28 -0
- package/dist/utils/secure-remote-url.js +25 -0
- package/dist/utils/stealth-window.js +37 -0
- package/dist/utils/test-stealth.js +29 -0
- package/dist/utils/url-helpers.js +169 -0
- package/dist/vendor/account/engine.js +182 -0
- package/dist/vendor/account/features.js +220 -0
- package/dist/vendor/account/index.js +53 -0
- package/dist/vendor/account/schema.js +272 -0
- package/dist/vendor/account/subscription.js +38 -0
- package/dist/vendor/analytics/adapters/ga4.js +26 -0
- package/dist/vendor/analytics/adapters/meta.js +26 -0
- package/dist/vendor/analytics/adapters/resolve.js +130 -0
- package/dist/vendor/analytics/adapters/tiktok.js +27 -0
- package/dist/vendor/analytics/catalog.js +908 -0
- package/dist/vendor/analytics/consent.js +49 -0
- package/dist/vendor/analytics/core.js +141 -0
- package/dist/vendor/analytics/identity.js +136 -0
- package/dist/vendor/analytics/index.js +170 -0
- package/dist/vendor/analytics/logger.js +40 -0
- package/dist/vendor/analytics/transports/browser.js +110 -0
- package/dist/vendor/config/company.js +31 -0
- package/dist/vendor/config/defaults.js +173 -0
- package/dist/vendor/config/demo.js +18 -0
- package/dist/vendor/config/desktop-artifacts.js +110 -0
- package/dist/vendor/config/edit.js +769 -0
- package/dist/vendor/config/env-delivery.js +145 -0
- package/dist/vendor/config/env-rules.js +93 -0
- package/dist/vendor/config/env-schema.js +1078 -0
- package/dist/vendor/config/env.js +445 -0
- package/dist/vendor/config/hooks.js +97 -0
- package/dist/vendor/config/index.js +237 -0
- package/dist/vendor/config/instances.js +208 -0
- package/dist/vendor/config/load.js +490 -0
- package/dist/vendor/config/merge.js +68 -0
- package/dist/vendor/config/order.js +139 -0
- package/dist/vendor/config/ports.js +374 -0
- package/dist/vendor/config/providers.js +32 -0
- package/dist/vendor/config/repo.js +142 -0
- package/dist/vendor/config/retired-keys.js +430 -0
- package/dist/vendor/config/schema.js +1610 -0
- package/dist/vendor/config/secrets.js +50 -0
- package/dist/vendor/config/seed.js +34 -0
- package/dist/vendor/config/site-global.js +205 -0
- package/dist/vendor/config/validate.js +554 -0
- package/dist/vendor/config/winback.js +61 -0
- package/dist/vendor/devkit/actions-secrets.js +145 -0
- package/dist/vendor/devkit/attach-log-file.js +262 -0
- package/dist/vendor/devkit/bundle.js +292 -0
- package/dist/vendor/devkit/certs.js +199 -0
- package/dist/vendor/devkit/ci-workflows.js +520 -0
- package/dist/vendor/devkit/clean-dirs.js +28 -0
- package/dist/vendor/devkit/cli-router.js +156 -0
- package/dist/vendor/devkit/defaults-engine.js +372 -0
- package/dist/vendor/devkit/deploy-precheck.js +54 -0
- package/dist/vendor/devkit/deploy-record.js +180 -0
- package/dist/vendor/devkit/deploy.js +286 -0
- package/dist/vendor/devkit/empty-modules-plugin.js +64 -0
- package/dist/vendor/devkit/env-watch.js +132 -0
- package/dist/vendor/devkit/framework-deps.js +46 -0
- package/dist/vendor/devkit/license.js +155 -0
- package/dist/vendor/devkit/local.js +1905 -0
- package/dist/vendor/devkit/logger.js +128 -0
- package/dist/vendor/devkit/merge-line-files.js +296 -0
- package/dist/vendor/devkit/npm-registry.js +52 -0
- package/dist/vendor/devkit/omega-bin.js +345 -0
- package/dist/vendor/devkit/prompt.js +187 -0
- package/dist/vendor/devkit/safe-install.js +18 -0
- package/dist/vendor/devkit/scaffold-guard.js +96 -0
- package/dist/vendor/devkit/stop-signals.js +28 -0
- package/dist/vendor/devkit/strip-dev-blocks-plugin.js +29 -0
- package/dist/vendor/devkit/strip-dev-blocks.js +32 -0
- package/dist/vendor/devkit/target-dependencies.js +137 -0
- package/dist/vendor/devkit/target-secrets.js +165 -0
- package/dist/vendor/devkit/test/assert.js +120 -0
- package/dist/vendor/devkit/test/define-cases.js +104 -0
- package/dist/vendor/devkit/test/extended-mode-warning.js +22 -0
- package/dist/vendor/devkit/test/runner-core.js +554 -0
- package/dist/vendor/devkit/test/scope.js +162 -0
- package/dist/vendor/devkit/update.js +569 -0
- package/dist/vendor/monitoring/core.js +180 -0
- package/dist/vendor/monitoring/env.js +49 -0
- package/dist/vendor/monitoring/index.js +28 -0
- package/dist/vendor/monitoring/logger.js +39 -0
- package/dist/vendor/monitoring/main.js +99 -0
- package/dist/vendor/monitoring/preload.js +45 -0
- package/dist/vendor/monitoring/renderer.js +87 -0
- package/docs/analytics.md +140 -0
- package/docs/app-state.md +92 -0
- package/docs/audit.md +69 -0
- package/docs/auto-updater.md +243 -0
- package/docs/boot-sequence.md +39 -0
- package/docs/build-system.md +161 -0
- package/docs/cdp-debugging.md +169 -0
- package/docs/client-bridge.md +267 -0
- package/docs/common-mistakes.md +21 -0
- package/docs/config-schema.md +120 -0
- package/docs/context-menu.md +112 -0
- package/docs/context.md +81 -0
- package/docs/css.md +84 -0
- package/docs/deep-link.md +178 -0
- package/docs/environment-detection.md +104 -0
- package/docs/fontawesome.md +107 -0
- package/docs/hooks.md +87 -0
- package/docs/icons.md +79 -0
- package/docs/index.md +279 -0
- package/docs/installer-options.md +162 -0
- package/docs/ipc.md +61 -0
- package/docs/lib-modules.md +53 -0
- package/docs/logging.md +229 -0
- package/docs/menu.md +160 -0
- package/docs/releasing.md +229 -0
- package/docs/remote-config.md +118 -0
- package/docs/remote-scripts.md +144 -0
- package/docs/restart-manager.md +144 -0
- package/docs/runner.md +253 -0
- package/docs/sentry.md +97 -0
- package/docs/shared/agent-docs.md +89 -0
- package/docs/shared/analytics.md +612 -0
- package/docs/shared/brands.md +51 -0
- package/docs/shared/breaking-changes.md +497 -0
- package/docs/shared/config.md +1387 -0
- package/docs/shared/deploys.md +215 -0
- package/docs/shared/icons.md +201 -0
- package/docs/shared/local-dev.md +147 -0
- package/docs/shared/logging.md +202 -0
- package/docs/shared/monitoring.md +153 -0
- package/docs/shared/publishing.md +183 -0
- package/docs/shared/rulings.md +34 -0
- package/docs/shared/testing.md +147 -0
- package/docs/shared/theming.md +604 -0
- package/docs/shared/translation.md +291 -0
- package/docs/shared/updates.md +61 -0
- package/docs/signing.md +267 -0
- package/docs/startup.md +142 -0
- package/docs/storage.md +59 -0
- package/docs/templating.md +101 -0
- package/docs/test-boot-layer.md +157 -0
- package/docs/test-framework.md +357 -0
- package/docs/themes.md +135 -0
- package/docs/tooltips.md +99 -0
- package/docs/tray.md +164 -0
- package/docs/usage.md +58 -0
- package/docs/verts.md +62 -0
- package/docs/windows.md +149 -0
- package/package.json +184 -0
- package/scripts/sync-nvmrc.js +100 -0
package/docs/tray.md
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# Tray
|
|
2
|
+
|
|
3
|
+
File-based tray/menubar. @omega.js/desktop looks for `src/integrations/tray/index.js`; if it exists, the exported function is called during boot with a builder API + id-path API. If absent, @omega.js/desktop ships a default tray template (see ids below).
|
|
4
|
+
|
|
5
|
+
## Config
|
|
6
|
+
|
|
7
|
+
No config block. Path is conventional: `src/integrations/tray/index.js`. To opt out, call `manager.tray.disable()` from your main entry — idempotent, tears down any existing Tray.
|
|
8
|
+
|
|
9
|
+
## Definition file
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
// src/integrations/tray/index.js
|
|
13
|
+
module.exports = ({ manager, tray }) => {
|
|
14
|
+
// @omega.js/desktop auto-resolves the tray icon from config/icons/<platform>/tray.png at build
|
|
15
|
+
// time, so explicit tray.icon() is OPTIONAL. Call it only to override.
|
|
16
|
+
// Note: on macOS, if you pass your own path, the filename MUST end in
|
|
17
|
+
// `Template.png` for the OS to auto-invert it in dark mode.
|
|
18
|
+
// tray.icon('src/assets/icons/my-trayTemplate.png');
|
|
19
|
+
tray.tooltip(manager.config?.app?.productName);
|
|
20
|
+
|
|
21
|
+
// Easiest: start from @omega.js/desktop's default template.
|
|
22
|
+
tray.useDefaults();
|
|
23
|
+
|
|
24
|
+
// Then customize by id (flat — no `tray/` prefix needed):
|
|
25
|
+
tray.insertAfter('open', {
|
|
26
|
+
id: 'dashboard',
|
|
27
|
+
label: 'Open Dashboard',
|
|
28
|
+
click: () => manager.windows.show('dashboard'),
|
|
29
|
+
});
|
|
30
|
+
tray.update('open', { label: 'Show Window' });
|
|
31
|
+
tray.remove('website');
|
|
32
|
+
tray.hide('check-for-updates');
|
|
33
|
+
};
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Builder API (during definition)
|
|
37
|
+
|
|
38
|
+
```js
|
|
39
|
+
tray.icon(path) // sets the tray icon (relative paths resolved from cwd)
|
|
40
|
+
tray.tooltip(text)
|
|
41
|
+
tray.item(descriptor) // see "Item descriptors" below
|
|
42
|
+
tray.separator()
|
|
43
|
+
tray.submenu(label, items)
|
|
44
|
+
tray.useDefaults() // populate with @omega.js/desktop's default template (id-tagged)
|
|
45
|
+
tray.clear() // start over
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Id-path API
|
|
49
|
+
|
|
50
|
+
Same shape across menu / tray / context-menu. Available **during definition** (on the `tray` builder arg) AND **at runtime** on `manager.tray`:
|
|
51
|
+
|
|
52
|
+
```js
|
|
53
|
+
.find(idPath) // live descriptor or null
|
|
54
|
+
.has(idPath) // bool
|
|
55
|
+
.update(idPath, patch) // Object.assign + re-render. returns true if found.
|
|
56
|
+
.remove(idPath) // splice + re-render. returns true if removed.
|
|
57
|
+
.enable(idPath, bool = true) // sugar over update({enabled})
|
|
58
|
+
.show(idPath, bool = true) // sugar over update({visible})
|
|
59
|
+
.hide(idPath) // visible:false
|
|
60
|
+
.insertBefore(idPath, item) // splice in a sibling
|
|
61
|
+
.insertAfter(idPath, item) // splice in a sibling
|
|
62
|
+
.appendTo(idPath, item) // push into a submenu (creates submenu if absent)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Tray ids are **flat** — no `tray/` prefix (the lib namespace is implicit). For nested submenus you can address children by `parent/child` paths (the resolver walks `submenu` arrays).
|
|
66
|
+
|
|
67
|
+
## Default template ids
|
|
68
|
+
|
|
69
|
+
| ID | Item |
|
|
70
|
+
|---|---|
|
|
71
|
+
| `title` | Disabled label showing the app name |
|
|
72
|
+
| `open` | "Open `<app>`" — calls `manager.windows.show('main')` |
|
|
73
|
+
| `check-for-updates` | Wired to `manager.autoUpdater` (label updates dynamically) |
|
|
74
|
+
| `website` | Visit `brand.url` (only present if configured) |
|
|
75
|
+
| `quit` | Quit the app |
|
|
76
|
+
|
|
77
|
+
## Submenus
|
|
78
|
+
|
|
79
|
+
Submenus work the same as Electron's. The id-path resolver walks `submenu` arrays so children are addressable as `parent/child`:
|
|
80
|
+
|
|
81
|
+
```js
|
|
82
|
+
tray.item({ id: 'account', label: 'Account', submenu: [
|
|
83
|
+
{ id: 'sign-in', label: 'Sign in', click: () => {} },
|
|
84
|
+
{ id: 'sign-out', label: 'Sign out', click: () => {} },
|
|
85
|
+
]});
|
|
86
|
+
|
|
87
|
+
manager.tray.find('account/sign-out');
|
|
88
|
+
manager.tray.update('account/sign-out', { enabled: false });
|
|
89
|
+
manager.tray.appendTo('account', { id: 'profile', label: 'Profile' });
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Item descriptors
|
|
93
|
+
|
|
94
|
+
Mirror Electron's [`MenuItemConstructorOptions`](https://www.electronjs.org/docs/latest/api/menu#menubuildfromtemplatetemplate), with these additions:
|
|
95
|
+
|
|
96
|
+
| Field | Type | Notes |
|
|
97
|
+
|---|---|---|
|
|
98
|
+
| `id` | string | Used for id-path lookups (`open`, `quit`, `account/sign-out`, …) |
|
|
99
|
+
| `label` | string \| `() => string` | Function form re-evaluated on every `refresh()` |
|
|
100
|
+
| `enabled` | boolean \| `() => boolean` | Same |
|
|
101
|
+
| `visible` | boolean \| `() => boolean` | Same |
|
|
102
|
+
| `checked` | boolean \| `() => boolean` | Same |
|
|
103
|
+
| `click` | function | Wrapped to swallow errors so a bad handler can't kill the menu |
|
|
104
|
+
| `submenu` | array | Recursively resolved with the same conveniences |
|
|
105
|
+
|
|
106
|
+
## Runtime API on `manager.tray`
|
|
107
|
+
|
|
108
|
+
```js
|
|
109
|
+
manager.tray.refresh() // re-evaluate dynamic state and re-render
|
|
110
|
+
manager.tray.define(fn) // replace the whole definition at runtime
|
|
111
|
+
manager.tray.disable() // tear down + stop responding (idempotent)
|
|
112
|
+
manager.tray.setIcon(path)
|
|
113
|
+
manager.tray.setTooltip(text)
|
|
114
|
+
manager.tray.addItem(descriptor) // append (preserves existing items)
|
|
115
|
+
manager.tray.clearItems()
|
|
116
|
+
manager.tray.destroy() // tear down (mostly for tests)
|
|
117
|
+
|
|
118
|
+
// Id-path API — same as listed above.
|
|
119
|
+
manager.tray.find('quit')
|
|
120
|
+
manager.tray.update('quit', { label: 'Goodbye' })
|
|
121
|
+
manager.tray.remove('website')
|
|
122
|
+
manager.tray.insertAfter('open', { id: 'preferences', label: 'Preferences...', click: ... })
|
|
123
|
+
manager.tray.hide('check-for-updates')
|
|
124
|
+
|
|
125
|
+
// Inspection
|
|
126
|
+
manager.tray.getItems() // shallow copy of raw descriptors
|
|
127
|
+
manager.tray.getIcon()
|
|
128
|
+
manager.tray.getTooltip()
|
|
129
|
+
manager.tray.isRendered()
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Common patterns
|
|
133
|
+
|
|
134
|
+
### Update label after auth state changes
|
|
135
|
+
|
|
136
|
+
```js
|
|
137
|
+
// in your renderer/main code, after sign-in:
|
|
138
|
+
manager.storage.set('user', { ... });
|
|
139
|
+
manager.tray.refresh(); // dynamic-label functions re-evaluate
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Hide updater item if you ship without auto-update
|
|
143
|
+
|
|
144
|
+
```js
|
|
145
|
+
// src/integrations/tray/index.js
|
|
146
|
+
module.exports = ({ tray }) => {
|
|
147
|
+
tray.icon('...');
|
|
148
|
+
tray.useDefaults();
|
|
149
|
+
tray.remove('check-for-updates');
|
|
150
|
+
};
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Replace the entire tray at runtime
|
|
154
|
+
|
|
155
|
+
```js
|
|
156
|
+
manager.tray.define(({ manager, tray }) => {
|
|
157
|
+
tray.icon('icons/dark-mode.png');
|
|
158
|
+
tray.item({ id: 'x', label: 'New layout', click: ... });
|
|
159
|
+
});
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Default scaffold
|
|
163
|
+
|
|
164
|
+
The scaffold every verb runs ships `src/integrations/tray/index.js` calling `tray.useDefaults()` so you start with the same items the framework would supply on its own — plus commented-out examples covering insertAfter, update, remove, hide, enable, and submenus.
|
package/docs/usage.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Usage
|
|
2
|
+
|
|
3
|
+
Tracks app-launch + hours-of-use stats. Sister of legacy @omega.js/desktop's Usage library, but uses `manager.storage` instead of a separate electron-store.
|
|
4
|
+
|
|
5
|
+
## What's tracked
|
|
6
|
+
|
|
7
|
+
```js
|
|
8
|
+
manager.usage.opens() // total app launches
|
|
9
|
+
manager.usage.hoursTotal() // cumulative hours-of-use across clean exits
|
|
10
|
+
manager.usage.hoursThisSession() // live, computed from session start
|
|
11
|
+
manager.usage.installedAt() // ISO timestamp of first launch
|
|
12
|
+
manager.usage.toJSON() // all of the above as a structured-cloneable object
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## How it accumulates
|
|
16
|
+
|
|
17
|
+
Persisted shape (`storage.usage`):
|
|
18
|
+
|
|
19
|
+
```js
|
|
20
|
+
{
|
|
21
|
+
opens: 12,
|
|
22
|
+
hoursTotal: 4.75,
|
|
23
|
+
installedAt: '2025-12-01T...',
|
|
24
|
+
lastLaunchAt: '...',
|
|
25
|
+
lastQuitAt: '...' | null,
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
On boot:
|
|
30
|
+
|
|
31
|
+
1. Read previous snapshot.
|
|
32
|
+
2. If `lastQuitAt` is set, accumulate `(lastQuitAt - lastLaunchAt)` into `hoursTotal`. This is the "previous session ended cleanly" case.
|
|
33
|
+
3. If `lastQuitAt` is null, the previous session crashed — we don't credit any hours. We don't know how long it ran.
|
|
34
|
+
4. `opens += 1`, `lastLaunchAt = now`, `lastQuitAt = null`.
|
|
35
|
+
|
|
36
|
+
On quit (via `app.on('before-quit')`):
|
|
37
|
+
|
|
38
|
+
5. `lastQuitAt = now` written to storage.
|
|
39
|
+
6. Next launch's step 2 picks up the duration.
|
|
40
|
+
|
|
41
|
+
So `hoursTotal` is intentionally a lower bound — it never over-counts crashed sessions.
|
|
42
|
+
|
|
43
|
+
`hoursThisSession()` is computed live from `(Date.now() - sessionStart) / 3600000`. Never stale.
|
|
44
|
+
|
|
45
|
+
## Renderer
|
|
46
|
+
|
|
47
|
+
```js
|
|
48
|
+
const snap = await window.desktop.usage.get();
|
|
49
|
+
// { opens: 12, hoursTotal: 4.75, hoursThisSession: 0.05, installedAt: '...' }
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Why not just use app-state?
|
|
53
|
+
|
|
54
|
+
`app-state.js` already tracks `launchCount` (= opens). We could fold these in. But `app-state` is concerned with first-launch / crash-sentinel / version-change semantics — `usage` is concerned with telemetry. Keeping them separate keeps each module focused. Both write to disjoint keys in `manager.storage`.
|
|
55
|
+
|
|
56
|
+
## Tests
|
|
57
|
+
|
|
58
|
+
- `src/test/suites/main/usage.test.js` — opens-bumps-on-reinit, hoursTotal accumulation from clean prior session, no-credit for crashed sessions, installedAt persistence, IPC handler.
|
package/docs/verts.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Verts — the `data-omega-vert` auto-bind
|
|
2
|
+
|
|
3
|
+
@omega.js/desktop renderers auto-bind the OMEGA verts (ads) system (monorepo
|
|
4
|
+
`docs/web/ads-system.md`, phase 4): drop a `[data-omega-vert]` element into any
|
|
5
|
+
view and the renderer bootstrap hands it to `@omega.js/client`'s verts module —
|
|
6
|
+
zero consumer JS, same element vocabulary as the web `verts/unit` section and
|
|
7
|
+
@omega.js/extension.
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<div data-omega-vert data-omega-vert-size="banner"></div>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## What the wiring does
|
|
14
|
+
|
|
15
|
+
`renderer.js _wireAds` (runs inside `manager.initialize()`, same liveness
|
|
16
|
+
model as the FontAwesome/tooltip wiring) binds every `[data-omega-vert]`
|
|
17
|
+
element present at init AND inserted later (MutationObserver), marking bound
|
|
18
|
+
hosts `data-omega-vert-bound="house"`. Everything after the bind lives in the
|
|
19
|
+
client module (`@omega.js/client/modules/verts.js`): lazy arming near the
|
|
20
|
+
viewport, a sandboxed iframe to the resolved in-house source's
|
|
21
|
+
`/omega/verts/serve`, origin-validated postMessage, host-owned rotation +
|
|
22
|
+
staleness recovery, and no-fill collapse (the host hides itself).
|
|
23
|
+
|
|
24
|
+
## House/company lane ONLY — no AdSense
|
|
25
|
+
|
|
26
|
+
Desktop surfaces never run the AdSense provider lane (policy: no web
|
|
27
|
+
context). The wiring pins `type: 'house'` on every mount — the pin wins over
|
|
28
|
+
the element's `data-omega-vert` type, so even a shared omega.json5 that carries
|
|
29
|
+
`advertising.providers.adsense` (the web target uses it) can only
|
|
30
|
+
ever reach the house/company inventory here. Pinned by the renderer verts
|
|
31
|
+
suite: an AdSense-configured harness must never see an `adsbygoogle` script
|
|
32
|
+
or `<ins>`.
|
|
33
|
+
|
|
34
|
+
## Config
|
|
35
|
+
|
|
36
|
+
The shared `advertising` section of `config/omega.json5` flows into the
|
|
37
|
+
renderer via `OMEGA_BUILD_JSON` like every other section:
|
|
38
|
+
|
|
39
|
+
```json5
|
|
40
|
+
advertising: {
|
|
41
|
+
providers: {
|
|
42
|
+
inhouse: { source: 'company' }, // 'self' | 'company' | full URL
|
|
43
|
+
},
|
|
44
|
+
tags: ['music', 'audio-tools'], // contextual targeting inputs
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
No `advertising` key (or no resolvable inhouse source) → bound units collapse
|
|
49
|
+
quietly. Nothing else to configure.
|
|
50
|
+
|
|
51
|
+
## Element vocabulary
|
|
52
|
+
|
|
53
|
+
| Attribute | Meaning |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `data-omega-vert` | binds the element (type value is ignored on desktop — house pin) |
|
|
56
|
+
| `data-omega-vert-size` | size preset (`banner`/`leaderboard`/`rectangle`/…) or raw px max-height |
|
|
57
|
+
| `data-omega-vert-id` | pin a specific vert |
|
|
58
|
+
| `data-omega-vert-tags` | comma-separated contextual tags for this unit |
|
|
59
|
+
| `data-omega-vert-bound` | set by the wiring (`"house"`) once bound — observability/debugging |
|
|
60
|
+
|
|
61
|
+
Units emit `omega-vert:fill` / `omega-vert:no-fill` / `omega-vert:click` /
|
|
62
|
+
`omega-vert:reload` CustomEvents on the host (bubbling) for app-side hooks.
|
package/docs/windows.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Windows
|
|
2
|
+
|
|
3
|
+
**Lazy named-window registry.** @omega.js/desktop does NOT auto-create any window. Your `main.js` calls `manager.windows.create('main', { show: !startup.isLaunchHidden() })` from inside `manager.initialize().then(() => { ... })`. Always create `main` — its presence in the registry is what lets @omega.js/desktop's `app.on('activate')` (macOS dock click) and `app.on('second-instance')` (win/linux re-launch) handlers surface UI when the user double-clicks the running app. In hidden launches, pass `show: false` to keep the window invisible until something explicitly calls `windows.show('main')`. Use the registry for the common case (named, persistent, integrated windows). For one-off windows (a toast, a print preview), use `new BrowserWindow()` directly — `window-manager` doesn't get in the way.
|
|
4
|
+
|
|
5
|
+
## Re-surface on user re-launch
|
|
6
|
+
|
|
7
|
+
When the user double-clicks a running app (or clicks its dock icon on macOS), @omega.js/desktop transparently shows the main window — no consumer wiring needed.
|
|
8
|
+
|
|
9
|
+
- **macOS** → `app.on('activate')` calls `windows.show('main')` if `main` is in the registry.
|
|
10
|
+
- **Windows / Linux** → `app.on('second-instance')` does the same. (The OS spawns a duplicate process, the single-instance lock kills it, and the original instance receives the activation.)
|
|
11
|
+
|
|
12
|
+
Both handlers are no-ops if `main` isn't in the registry. So consumers who genuinely never want a window can omit `windows.create('main', ...)`. Otherwise, the canonical pattern (`windows.create('main', { show: !isLaunchHidden() })`) gives CleanMyMac-style behavior: tray-only at login, full window when the user manually opens the app.
|
|
13
|
+
|
|
14
|
+
## API
|
|
15
|
+
|
|
16
|
+
```js
|
|
17
|
+
await manager.windows.create('main', overrides?) // canonical entry point
|
|
18
|
+
await manager.windows.createNamed('main', mgr, opts?) // identical; .create() is sugar
|
|
19
|
+
manager.windows.get('main') // BrowserWindow | null
|
|
20
|
+
manager.windows.show('main') // show + focus + auto app.dock.show()
|
|
21
|
+
manager.windows.hide('main')
|
|
22
|
+
manager.windows.close('main') // force-close (bypasses hideOnClose)
|
|
23
|
+
manager.windows.list() // string[] of currently-open names
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`create()` is single-instance: a second call with the same name returns the existing window and focuses it (no double-create).
|
|
27
|
+
|
|
28
|
+
## Defaults
|
|
29
|
+
|
|
30
|
+
No JSON config required. @omega.js/desktop bakes in sensible defaults so `manager.windows.create('main')` "just works":
|
|
31
|
+
|
|
32
|
+
| Window | Defaults |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `main` | `{ width: 1024, height: 720, hideOnClose: true, view: 'main' }` |
|
|
35
|
+
| any other name | `{ width: 800, height: 600, hideOnClose: false, view: name }` |
|
|
36
|
+
|
|
37
|
+
Override at the call site:
|
|
38
|
+
|
|
39
|
+
```js
|
|
40
|
+
manager.windows.create('main', { width: 1280, height: 800 });
|
|
41
|
+
manager.windows.create('settings', { width: 600, height: 480 });
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Config (optional)
|
|
45
|
+
|
|
46
|
+
If you want to override defaults persistently (without typing them at every `create()` call), add a `windows:` block to `config/omega.json5`:
|
|
47
|
+
|
|
48
|
+
```jsonc
|
|
49
|
+
"windows": {
|
|
50
|
+
"main": { "width": 1280, "height": 800 }
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Merge order: **framework defaults < JSON config < call-site overrides**.
|
|
55
|
+
|
|
56
|
+
Per-window keys:
|
|
57
|
+
|
|
58
|
+
| Key | Default (main) | Default (other) | Description |
|
|
59
|
+
|---|---|---|---|
|
|
60
|
+
| `view` | `main` | `<name>` | Folder under `src/views/`. Loads `dist/views/<view>/index.html`. |
|
|
61
|
+
| `width` / `height` | 1024 / 720 | 800 / 600 | Initial size (overridden by saved bounds if `persistBounds: true`). |
|
|
62
|
+
| `minWidth` / `minHeight` | 400 / 300 | 400 / 300 | |
|
|
63
|
+
| `show` | `true` | `true` | Auto-show on `ready-to-show`. `false` keeps the window hidden until `manager.windows.show()`. |
|
|
64
|
+
| `hideOnClose` | `true` | `false` | Discord-style: X click hides instead of closes. See "Hide-on-close" below. |
|
|
65
|
+
| `title` | `app.productName` | `app.productName` | Window title. |
|
|
66
|
+
| `backgroundColor` | `#ffffff` | `#ffffff` | Background color before the page loads. |
|
|
67
|
+
| `persistBounds` | `true` | `true` | Remember position+size across launches (see below). |
|
|
68
|
+
| `skipTaskbar` | `false` | `false` | Suppress taskbar/dock entry for THIS window. |
|
|
69
|
+
| `titleBar` | `'inset'` | `'inset'` | `'inset'` (mac/win native overlay) or `'native'` (full system frame). |
|
|
70
|
+
| `titleBarOverlay` | platform default | platform default | Override Windows overlay color/symbolColor/height. |
|
|
71
|
+
| `trafficLightPosition` | OS inset default | OS inset default | macOS only: `{ x, y }` custom position for the traffic lights (e.g. to center them inside a floating chrome panel). Only applies in `'inset'` mode. |
|
|
72
|
+
|
|
73
|
+
## Inset titlebar (default)
|
|
74
|
+
|
|
75
|
+
@omega.js/desktop ships an inset titlebar by default — the OS draws all the window controls and @omega.js/desktop adds a draggable strip in the page template:
|
|
76
|
+
|
|
77
|
+
| Platform | Behavior |
|
|
78
|
+
|---|---|
|
|
79
|
+
| **macOS** | `titleBarStyle: 'hiddenInset'` — traffic lights inset into the chrome region. Reposition them via `config.windows.<name>.trafficLightPosition = { x, y }` (e.g. when the app draws a floating chrome panel and the lights should sit inside it). |
|
|
80
|
+
| **Windows** | `titleBarStyle: 'hidden'` + `titleBarOverlay: { color, symbolColor, height: 36 }` — native min/max/close buttons drawn by the OS |
|
|
81
|
+
| **Linux** | Native frame (full system title bar) |
|
|
82
|
+
|
|
83
|
+
The page template (`<em>/src/config/page-template.html`, framework-internal — not consumer-overrideable) ships an `.omega-titlebar` div with `-webkit-app-region: drag`. Per-platform spacing is handled by `themes/classy/css/components/_titlebar.scss`, which keys off `html[data-platform]` (set by @omega.js/client during init):
|
|
84
|
+
|
|
85
|
+
- **mac** → `padding-left: 70px` (clear the traffic lights)
|
|
86
|
+
- **windows** → `padding-right: 140px` (clear the native overlay)
|
|
87
|
+
- **linux** → `display: none` (native frame draws title bar)
|
|
88
|
+
|
|
89
|
+
Override per-window via `config.windows.<name>.titleBar = 'native'` to opt out and get a full system frame on every platform.
|
|
90
|
+
|
|
91
|
+
## Hide-on-close (Discord-style)
|
|
92
|
+
|
|
93
|
+
The `main` window's X button **hides instead of closes** by default. Real quit only via:
|
|
94
|
+
|
|
95
|
+
- `Cmd+Q` (macOS standard `role: 'quit'` accelerator)
|
|
96
|
+
- Menu Quit (`main/quit` on mac, `file/quit` on win/linux)
|
|
97
|
+
- Tray Quit (`quit` item)
|
|
98
|
+
- Auto-updater install (`autoUpdater.installNow()`)
|
|
99
|
+
- Programmatic `manager.quit({ force: true })`
|
|
100
|
+
|
|
101
|
+
The window-manager close handler checks three flags before deciding to swallow vs let through:
|
|
102
|
+
|
|
103
|
+
| Flag | Set by | Means |
|
|
104
|
+
|---|---|---|
|
|
105
|
+
| `manager._allowQuit` | `manager.quit({ force: true })`, `autoUpdater.installNow()` | Programmatic force — let the close go through. |
|
|
106
|
+
| `manager._isQuitting` | `app.on('before-quit')` (every quit path Electron knows about) | App is quitting — let close events flow naturally. |
|
|
107
|
+
| `win._emForceClose` | `manager.windows.close(name)` | Per-window override. |
|
|
108
|
+
|
|
109
|
+
Other named windows default to `hideOnClose: false` (X actually closes). Override per window via config or call-site overrides.
|
|
110
|
+
|
|
111
|
+
## Bounds persistence
|
|
112
|
+
|
|
113
|
+
Every named window's position and size persist to storage on resize / move / maximize / unmaximize / fullscreen-enter / fullscreen-leave / close. Restored on next `create()`.
|
|
114
|
+
|
|
115
|
+
- Storage key: `windows.<name>.bounds`
|
|
116
|
+
- Saves debounced 250ms; close flushes synchronously.
|
|
117
|
+
- Off-screen detection: if a saved position has less than 100×50px overlap with any current display's `workArea`, position is dropped (size kept). Handles "monitor unplugged" gracefully.
|
|
118
|
+
- Maximized / fullscreen state is stored separately and restored via `win.maximize()` / `win.setFullScreen(true)`.
|
|
119
|
+
- Sanity floor: saved entries with `width < 100` or `height < 100` are ignored.
|
|
120
|
+
- Opt out per-window: `persistBounds: false`.
|
|
121
|
+
|
|
122
|
+
## macOS dock auto-show
|
|
123
|
+
|
|
124
|
+
When `LSUIElement: true` is baked at build time (`startup.mode: 'hidden'`), the app launches with **no dock icon, no Cmd+Tab, no taskbar**. The first time `manager.windows.create()` or `manager.windows.show()` runs, @omega.js/desktop calls `app.dock.show()` automatically — the dock icon appears alongside the window.
|
|
125
|
+
|
|
126
|
+
**And the inverse**: for `startup.mode: 'hidden'` apps, when the LAST visible named window hides (hide-on-close X, `windows.hide()`, any consumer `win.hide()`), @omega.js/desktop calls `app.dock.hide()` again — the app returns to its fully-invisible posture, dock and UI appearing and vanishing together. Normal-mode apps keep their dock icon for life; quit paths are untouched (`manager._isQuitting` guard).
|
|
127
|
+
|
|
128
|
+
This means agent / menubar apps can stay completely invisible until the user explicitly asks for UI:
|
|
129
|
+
|
|
130
|
+
```js
|
|
131
|
+
manager.initialize().then(() => {
|
|
132
|
+
// Don't call windows.create() here — app stays invisible.
|
|
133
|
+
// Surface UI later when something warrants it:
|
|
134
|
+
manager.tray.update('open', { click: () => manager.windows.create('main') });
|
|
135
|
+
});
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Auto-attach context-menu
|
|
139
|
+
|
|
140
|
+
Every window created via `manager.windows.create()` is automatically wired up with the consumer's `src/integrations/context-menu/index.js` (see [context-menu.md](context-menu.md)). Idempotent per webContents (uses a WeakSet). For windows you create directly with `new BrowserWindow()`, call `manager.contextMenu.attach(win.webContents)` manually.
|
|
141
|
+
|
|
142
|
+
## Testing mode: stealth surfacing
|
|
143
|
+
|
|
144
|
+
When `manager.isTesting()` (i.e. under `npx omega test`), every surfacing path in this lib — `ready-to-show`, `windows.show()`, the create-dedup focus — goes **stealth** instead of `win.show()`: `_surface()` applies the shared recipe from `src/utils/stealth-window.js` and surfaces via `showInactive()`, with no `win.focus()`/dock surfacing. **The full stealth story lives in [test-framework.md](test-framework.md) (SSOT)** — the recipe and why it's not `hide()`/`minimize()`, the raw-window `browser-window-created` hook, `webContents.focus()` suppression, macOS app-level activation suppression, and the **`OMEGA_TEST_SHOW=1`** opt-out. Covered by `suites/main/stealth-window.test.js`.
|
|
145
|
+
|
|
146
|
+
## Platform behavior
|
|
147
|
+
|
|
148
|
+
- `window-all-closed` → `app.quit()` on Windows/Linux only. macOS apps are sticky (stay running with no windows).
|
|
149
|
+
- All event listeners (`close` / `closed` / `resize` / `move` / `ready-to-show` / etc.) are attached **before** `await loadFile()` resolves, so the window is fully observable the moment it lands in the registry.
|
package/package.json
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@omega.js/desktop",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "OMEGA desktop framework — build, test, and package Electron apps for macOS, Windows, and Linux",
|
|
5
|
+
"private": false,
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"main": "dist/index.js",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": "./dist/index.js",
|
|
12
|
+
"./config": "./dist/vendor/config/index.js",
|
|
13
|
+
"./gulp": "./dist/gulp/main.js",
|
|
14
|
+
"./main": "./dist/main.js",
|
|
15
|
+
"./renderer": "./dist/renderer.js",
|
|
16
|
+
"./preload": "./dist/preload.js",
|
|
17
|
+
"./build": "./dist/build.js",
|
|
18
|
+
"./test": "./dist/test/index.js",
|
|
19
|
+
"./hooks/notarize": "./dist/hooks/notarize.js",
|
|
20
|
+
"./lib/app-state": "./dist/lib/app-state.js",
|
|
21
|
+
"./lib/auto-updater": "./dist/lib/auto-updater.js",
|
|
22
|
+
"./lib/context-menu": "./dist/lib/context-menu.js",
|
|
23
|
+
"./lib/deep-link": "./dist/lib/deep-link.js",
|
|
24
|
+
"./lib/ipc": "./dist/lib/ipc.js",
|
|
25
|
+
"./lib/logger": "./dist/lib/logger.js",
|
|
26
|
+
"./lib/logger-lite": "./dist/lib/logger-lite.js",
|
|
27
|
+
"./lib/menu": "./dist/lib/menu.js",
|
|
28
|
+
"./lib/protocol": "./dist/lib/protocol.js",
|
|
29
|
+
"./lib/restart-manager": "./dist/lib/restart-manager/index.js",
|
|
30
|
+
"./lib/restart-manager/protocol": "./dist/lib/restart-manager/protocol.js",
|
|
31
|
+
"./lib/startup": "./dist/lib/startup.js",
|
|
32
|
+
"./lib/storage": "./dist/lib/storage.js",
|
|
33
|
+
"./lib/templating": "./dist/lib/templating.js",
|
|
34
|
+
"./lib/tray": "./dist/lib/tray.js",
|
|
35
|
+
"./lib/client-bridge": "./dist/lib/client-bridge.js",
|
|
36
|
+
"./lib/window-manager": "./dist/lib/window-manager.js",
|
|
37
|
+
"./cli": "./dist/cli-run.js",
|
|
38
|
+
"./scripts/sync-nvmrc": "./scripts/sync-nvmrc.js"
|
|
39
|
+
},
|
|
40
|
+
"bin": {
|
|
41
|
+
"omega": "./bin/omega",
|
|
42
|
+
"omg": "./bin/omg",
|
|
43
|
+
"mgr": "./bin/omega",
|
|
44
|
+
"omega-desktop": "./bin/omega-desktop"
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"bin/",
|
|
48
|
+
"dist/",
|
|
49
|
+
"docs/",
|
|
50
|
+
"scripts/"
|
|
51
|
+
],
|
|
52
|
+
"preparePackage": {
|
|
53
|
+
"input": "./src",
|
|
54
|
+
"output": "./dist",
|
|
55
|
+
"type": "copy",
|
|
56
|
+
"replace": {},
|
|
57
|
+
"hooks": {
|
|
58
|
+
"after": [
|
|
59
|
+
"node -e \"require('@omega.js/devkit/vendor')()\"",
|
|
60
|
+
"node -e \"require('@omega.js/devkit/prepare-guard').rewire()\""
|
|
61
|
+
],
|
|
62
|
+
"afterBlocking": true
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"omega": {
|
|
66
|
+
"nodeRuntime": "24",
|
|
67
|
+
"vendorAssets": [
|
|
68
|
+
{
|
|
69
|
+
"package": "@omega.js/web",
|
|
70
|
+
"from": "core/css/tokens/_index.scss",
|
|
71
|
+
"to": "assets/css/tokens/_index.scss"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"package": "@omega.js/web",
|
|
75
|
+
"from": "core/css/shell",
|
|
76
|
+
"to": "assets/css/shell"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"package": "@omega.js/web",
|
|
80
|
+
"from": "core/css/core/_custom-font-awesome.scss",
|
|
81
|
+
"to": "assets/css/core/_fontawesome.scss"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"package": "@omega.js/web",
|
|
85
|
+
"from": "core/js/core/app-shell.js",
|
|
86
|
+
"to": "assets/js/core/app-shell.js"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"package": "@omega.js/web",
|
|
90
|
+
"from": "themes",
|
|
91
|
+
"to": "assets/themes"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
"scripts": {
|
|
96
|
+
"start": "npm run prepare:watch",
|
|
97
|
+
"prepare": "node -e \"require('@omega.js/devkit/prepare-guard')() && require('prepare-package')()\"",
|
|
98
|
+
"prepare:watch": "node -e \"require('prepare-package/watch')()\"",
|
|
99
|
+
"test": "node ./bin/omega-desktop test"
|
|
100
|
+
},
|
|
101
|
+
"projectScripts": {
|
|
102
|
+
"start": "omega clean && npm run gulp --",
|
|
103
|
+
"gulp": "gulp",
|
|
104
|
+
"build": "omega build",
|
|
105
|
+
"package": "omega package",
|
|
106
|
+
"package:quick": "omega package --quick",
|
|
107
|
+
"publish": "omega publish",
|
|
108
|
+
"release": "omega release",
|
|
109
|
+
"release:local": "omega publish --local",
|
|
110
|
+
"postinstall": "node -e \"try { require('@omega.js/desktop/scripts/sync-nvmrc') } catch (e) {}\"",
|
|
111
|
+
"test": "omega test",
|
|
112
|
+
"electron": "electron ."
|
|
113
|
+
},
|
|
114
|
+
"engines": {
|
|
115
|
+
"node": ">=22"
|
|
116
|
+
},
|
|
117
|
+
"keywords": [
|
|
118
|
+
"omega",
|
|
119
|
+
"electron",
|
|
120
|
+
"desktop-app",
|
|
121
|
+
"cross-platform",
|
|
122
|
+
"electron-builder",
|
|
123
|
+
"electron-updater",
|
|
124
|
+
"auto-update",
|
|
125
|
+
"gulp",
|
|
126
|
+
"sass",
|
|
127
|
+
"esbuild"
|
|
128
|
+
],
|
|
129
|
+
"author": "ITW Creative Works",
|
|
130
|
+
"license": "Elastic-2.0",
|
|
131
|
+
"peerDependencies": {
|
|
132
|
+
"electron": ">=42",
|
|
133
|
+
"electron-builder": ">=26",
|
|
134
|
+
"gulp": "^5.0.1"
|
|
135
|
+
},
|
|
136
|
+
"devDependencies": {
|
|
137
|
+
"@electron/notarize": "^3.1.1",
|
|
138
|
+
"@omega.js/analytics": "*",
|
|
139
|
+
"@omega.js/config": "*",
|
|
140
|
+
"@omega.js/devkit": "*",
|
|
141
|
+
"@omega.js/monitoring": "*",
|
|
142
|
+
"@omega.js/web": "*",
|
|
143
|
+
"electron": "^42.0.1",
|
|
144
|
+
"electron-builder": "^26.8.1",
|
|
145
|
+
"firebase-admin": "^13.9.0",
|
|
146
|
+
"prepare-package": "^2.2.0"
|
|
147
|
+
},
|
|
148
|
+
"dependencies": {
|
|
149
|
+
"@fortawesome/fontawesome-free": "^7.3.0",
|
|
150
|
+
"@inquirer/prompts": "^8.5.2",
|
|
151
|
+
"@octokit/rest": "^22.0.1",
|
|
152
|
+
"@omega.js/client": "0.1.0",
|
|
153
|
+
"@popperjs/core": "^2.11.8",
|
|
154
|
+
"@sentry/electron": "^7.13.0",
|
|
155
|
+
"chalk": "^5.6.2",
|
|
156
|
+
"dotenv": "^17.4.2",
|
|
157
|
+
"electron-log": "^5.4.3",
|
|
158
|
+
"electron-store": "^11.0.2",
|
|
159
|
+
"electron-updater": "^6.8.3",
|
|
160
|
+
"esbuild": "^0.28.1",
|
|
161
|
+
"extract-zip": "^2.0.1",
|
|
162
|
+
"fs-jetpack": "^5.1.0",
|
|
163
|
+
"glob": "^13.0.6",
|
|
164
|
+
"gulp-clean-css": "^4.3.0",
|
|
165
|
+
"gulp-rename": "^2.1.0",
|
|
166
|
+
"gulp-responsive-modern": "^1.0.0",
|
|
167
|
+
"gulp-sass": "^6.0.1",
|
|
168
|
+
"js-yaml": "^4.1.1",
|
|
169
|
+
"json5": "^2.2.3",
|
|
170
|
+
"lodash": "^4.18.1",
|
|
171
|
+
"minimatch": "^10.2.5",
|
|
172
|
+
"node-powertools": "^3.0.0",
|
|
173
|
+
"plist": "^4.0.0",
|
|
174
|
+
"sass": "^1.99.0",
|
|
175
|
+
"uuid": "^14.0.0",
|
|
176
|
+
"wonderful-fetch": "^2.0.5",
|
|
177
|
+
"wonderful-version": "^1.3.2",
|
|
178
|
+
"ws": "^8.20.0",
|
|
179
|
+
"yargs": "^18.0.0"
|
|
180
|
+
},
|
|
181
|
+
"optionalDependencies": {
|
|
182
|
+
"automately": "^1.0.5"
|
|
183
|
+
}
|
|
184
|
+
}
|