@overlayed/cli
v2.1.0
- feat(cli): say which legal URL is missing when a public release is refused
releases create,releases promote,releases publishandbundle --releasenow say when a release to a public channel is refused because the application has no privacy policy URL or terms of service URL, name which is missing, and link to Settings › Application in the dashboard. The command still exits1- With
--json, the error haskindpublic_release_missing_legal_urlsandmissing_urls(privacy_url,terms_urlor both) releases promote --jsonaddserror_kind, andmissing_urlsfor this refusal, besideerror.bundle --release --jsonaddsrelease_error_kind, andrelease_missing_urlsfor this refusal, besiderelease_error.error_kindandrelease_error_kindare the API error’skindwhen creating a release failed with one, andnullotherwise
-
feat(cli): JSON output, failing exit codes and no prompts in CI
- Breaking:
overlayed bundlenow exits non-zero when a build fails, is cancelled, or is still running when the wait times out. It used to exit 0 in all three cases, so a pipeline relying on exit 0 (or grepping the output for success) should check the exit code instead - Breaking: waiting gives up after 15 minutes by default instead of about 5. Change it with
--wait-timeout <seconds>orOVERLAYED_WAIT_TIMEOUT - Breaking: without a terminal, commands no longer prompt.
overlayed bundlefails asking for--app/--siteand a bundle name, andoverlayed loginfails asking you to setOVERLAYED_API_KEYinstead - Added a global
--jsonflag. Every command then prints only its result as JSON on stdout (ids, statuses and dashboard links), with progress and errors on stderr. A failing command prints{ "error": … } overlayed bundleprints the bundle id and build job id with their dashboard links, not only the build job’s linkoverlayed loginnow pre-fills release (read, create, update) and channel (read) permissions alongside bundle permissions, so one key can bundle and release. Keys created before still bundle- API errors are explained instead of dumped as JSON. A missing permission names the permission and says how to get a key that has it
- Breaking:
-
feat(cli): list, inspect, wait on and download from the CLI
overlayed bundles list|show <id>,overlayed jobs list|show <id>|wait <id>andoverlayed releases list|latest|show <id>|wait <id>list bundles, build jobs and releases newest first, and show one with its status, version, channel, commit and dashboard link. A failed build job shows its errorreleases listfilters by--channel(id or name) and--type, andreleases latest --channel --typefinds a channel’s newest release of a bundle typejobs waitandreleases waitexit non-zero when the build fails, is cancelled or revoked, or the wait times out (--wait-timeout,OVERLAYED_WAIT_TIMEOUT)overlayed releases download <id>saves a built app release’s installer (--installer classic|modern,--output), or prints a link that expires after 5 minutes with--url
-
feat(cli): work with several logged-in accounts at once
- Commands run without a terminal (CI, scripts, coding agents) now use the stored account that matches the application in the current directory, instead of failing with “Not authenticated” whenever it is not the account you last logged in to. The default account is left alone, so runs in different applications can happen in parallel
- Added
overlayed accountsto list the accounts you are logged in to overlayed logoutnow removes only the account the current directory uses, rather than every account with the same email, and no longer needs a working API key to do so. Use--email,--applicationor--allto log out of other accountsoverlayed whoamireports the application of the account in use rather than of the default account
-
feat(cli): promote releases, and release what
bundlebuilt- Added
overlayed releases promote <version> --to <channel>to release a release’s bundle on another channel, e.g. beta to stable. Name the release with--release <id>, or promote a channel’s latest built release with--from <channel> --type app|site|both. The promoted release keeps the source’s public and internal notes unless new ones are given, and takes the same draft, rollout, confirmation and waiting options asreleases create --type bothpromotes the app and site together: the app first, then the site with its minimum app version set to the promoted app’s version.<version>applies to both, unless--app-versionor--site-versiongives one its ownoverlayed bundle --release <channel> --release-version <version>releases what it bundled once the builds succeed, with the same release options. Bundling the app and site together releases the app first, then the site with its minimum app version set to the new app version.--app-release-versionand--site-release-versionset each one’s version- If a build fails nothing is released. If the app is released but the site isn’t, the command fails, names the app release, and prints the command that releases the site on its own
- Added
-
feat(cli): create, publish, roll out and cancel releases
- Added
overlayed releases create <version> --bundle <id> --channel <id-or-name>to release a bundle to a channel.<version>is a version like1.2.3, orpatch,minorormajorto bump the channel’s latest release of the bundle’s type releases createtakes--draft,--rollout <percent>or a rollout window (--rollout-start,--rollout-end),--public-notes,--internal-notesand, for site bundles,--min-app-version. With no rollout given it uses the channel’s default rollout duration, as the dashboard does, else releases to everyonereleases createwaits for the release to build and exits non-zero if it fails, is cancelled or is still building when the wait times out.--no-waitreturns as soon as it’s created- Added
overlayed releases publish <id>to publish a draft,overlayed releases rollout <id> <percent>to raise a rollout, andoverlayed releases cancel <id>to cancel a release that is still building or revoke a built one - Changing a public channel asks for confirmation in a terminal;
--yesskips it, and without a terminal it goes ahead. Private channels never ask - Release commands find the application from
OVERLAYED_APPLICATION_ID, theoverlayed.configin the directory, or the API key’s application, so CI needs no config file to release - When the API refuses a release or a change (public releases off, draft review, a version that isn’t higher, a rollout that can’t go down), the error names the rule and what to do instead
- Added
-
fix(cli):
overlayed --helpand--versionnow print in about a tenth of the time. Each command’s dependencies are loaded only when that command runs, and the npm update check no longer runs for help and version output -
fix(cli): installing the CLI no longer warns about an unmet
listr2peer dependency.@listr2/prompt-adapter-inquirerpinslistr2to one exact version per release, so the two are now pinned as a matching pair instead of floating independently
v1.3.1
-
fix(cli): stop every command paying for config discovery up front (the search no longer walks
node_modules, and only runs for commands that need it), and fix the update check crashing node on exit on Windows fix(cli): look foroverlayed.config.{js,ts,mts}in the current directory and its parents first, and only fall back to searching up to 3 directories below it. Running the CLI from a folder containing many projects no longer crawls and loads every project’s config; a config nested deeper than 3 directories is no longer found from above
v1.3.0
- feat(cli): warn when a newer version of
@overlayed/clior@overlayed/appis available, replacing update-notifier (which was suppressed inside npm/pnpm scripts)
v1.2.1
- feat(cli): link directly to each bundle’s build job instead of the filtered job list
- fix(cli): stop waiting on bundle build jobs that were cancelled
- feat(cli): prefill the asset bundle read and write permissions when
overlayed loginopens the API key creation page, so a key made for the CLI can runoverlayed bundlewithout picking permissions by hand
v1.2.0
-
feat(cli): add
--debug-filesflag tooverlayed bundlethat lists the files each bundle would include, then exits without authenticating or uploading -
fix(cli): harden bundle command for large bundles — stream
--debugzips to disk (removes the 2 GiBERR_OUT_OF_RANGEcrash), open file streams lazily during zip generation (eager opens exhausted file descriptors and hunggenerateAsyncon bundles with >~8k files), dedupe overlapping glob matches, and warn when a bundle exceeds 500 MB before compression - fix(build): forward VITE_* env vars to vp run build tasks so import.meta.env.VITE_API_BASE_URL/VITE_DASHBOARD_URL are actually replaced in published builds
- fix(cli): bundle command failed with EISDIR when a glob matched a symlinked directory (e.g. pnpm’s node_modules junctions on Windows) — symlinked directories are now traversed and their contents bundled
v1.1.4
- chore(deps): update memfs and vite-plus, and raise the Node engine floor to >=24 (LTS) so it stays aligned with commander
v1.1.3
- fix(build): forward VITE_* env vars to vp run build tasks so import.meta.env.VITE_API_BASE_URL/VITE_DASHBOARD_URL are actually replaced in published builds
v1.1.2
- fix(cli): resolve import.meta.env.VITE_DASHBOARD_URL in published build
v1.1.1
- fix: build
v1.1.0
- fix(cli): fail app bundle if electron version doesn’t match @overlayed/electron version
- chore: bump internal dependencies
- chore: update internal package versions
v1.0.4
- chore: fix error when no application is scoped
- feat: support api key scoping
v1.0.3
- fix(cli): edge case when bundling sites and apps
v1.0.2
- feat(cli): include metadata when creating bundles
v1.0.1
- Skip bundle name prompt when
--no-waitis passed
-
🚀 Features
- Auto-updating support: Complete implementation of application update flow including support for private channels
- Campaigns: Ability to create UTM campaigns for tracking user acquisition
- Electron Window Logging: Logs from electron windows will now be in feedback submissions
- Ads enhancements: New
getAdsScriptElementandgetAdsScriptUrlmethods for better ads integration - Enhanced CLI bundling: Improved the CLI bundling process to be more robust and reliable
📚 Documentation Improvements
- Deployment guides: New documentation sections on application deployments and updating mechanisms
- Refreshed docs theme: Refreshed the docs theme
- Local Development: Established guideliens for local development
📝 Breaking Changes
- After updating, you’ll need to run
overlayed loginand thenoverlayed init. This only needs to be done once, and is only needed for local development.
🐛 Bug Fixes
- Fixed broken documentation links
v0.6.10
- feat(cli): allow custom bundle names
v0.6.9
- chore: temporarily revert previous changes
v0.6.8
- feat(cli): Adds bundle type selection options
- feat: Support
OVERLAYED_API_KEYenvironment variable for authentication
v0.6.7
- chore(cli): internal changes
- chore(cli): internal changes
v0.6.6
- refactor: move config store internals
v0.6.5
- fix: console color logging
- fix(cli): output file format changed
v0.6.4
- chore: bump package versions
v0.6.3
- chore: update dependencies fix: various types exported from @overlayed/app like RenderWindow, etc.
v0.6.2
- fix(cli): update broken bundle task link
v0.6.1
- feat(cli): open api key form when running login command
v0.6.0
- feat(cli): support
baseDirin overlayed.config.ts
v0.5.0
- feat(cli): add update notifications
v0.4.0
- feat(cli): add debug option, fix
../in bundler file paths not working
v0.3.1
- fix(cli): bundle command not working for folders
v0.3.0
- feat(cli): add bundle command, add whoami command
v0.1.1
- fix: built package size
v0.1.0
- feat(cli): add login, logout, and whomai commands
- fix(cli): .ts config files not working

