All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning using Conventional Commits.
Since v4.6.0
, we have switched to automated releases and this file does not need to be manually updated.
4.13.6 (2024-11-26)
- bld: fs.promises.copyFile -> fs.promises.cp (c1909c7)
4.13.5 (2024-11-26)
- util: validate windows options.app.* iff defined (8a65a6d)
4.13.4 (2024-11-26)
- util: validate options.app.company iff defined (a273e23)
4.13.3 (2024-11-25)
- bld: correct fs.promises.copyFile function call (63fd422)
4.13.2 (2024-11-25)
- bld: parse options.app.icon correctly during build mode (bd0ef96)
- bld: use fs.promises.copyFile to copy app files in build mode with glob enabled (e1843f0)
4.13.1 (2024-11-24)
- run: return NW.js Node process during run mode from nwbuild function (fa94df2)
- types: correct nwbuild function return type (b274d27)
4.13.0 (2024-11-24)
4.12.1 (2024-11-24)
- util: correct Array.isArray usage (31c4132)
4.12.0 (2024-11-21)
- miscellaneous quality of life improvements (#1296) (a82c140)
- util: validate options.* correctly (#1298) (3034f5c)
- util: validate options.app.* values (#1302) (4f388a9), closes #1279 #1293
- deps-dev: bump the npm group across 1 directory with 6 updates (#1301) (56c1192)
- deps: bump cross-spawn from 7.0.3 to 7.0.6 (#1305) (2803af3)
- deps: bump davelosert/vitest-coverage-report-action from 2.6.0 to 2.7.0 in /.github/workflows in the gha group (#1295) (23aaad8)
- deps: bump davelosert/vitest-coverage-report-action from 2.7.0 to 2.8.0 in /.github/workflows in the gha group (#1303) (ceaf348)
4.11.6 (2024-11-01)
- bld: set product_string property in manifest to rename MacOS Helper apps (#1290) (b1caad7), closes #1286
4.11.5 (2024-11-01)
- deps-dev: bump nw from 0.92.0 to 0.93.0 in the npm group across 1 directory (#1289) (ed275ad)
- deps: bump the gha group across 1 directory with 2 updates (#1285) (13081c9)
- docs: clarify priority for defined options (#1281) (632db41), closes #1261
- docs: improve terminology (84fa2a4)
4.11.4 (2024-10-13)
- deps: bump actions/checkout from 4.2.0 to 4.2.1 in /.github/workflows in the gha group (#1273) (3165f2b)
- deps: bump the npm group across 1 directory with 7 updates (#1275) (5f26f21)
- deps: drop Dependabot support for v3 branch (19cf479)
4.11.3 (2024-10-02)
4.11.2 (2024-10-02)
4.11.1 (2024-10-01)
- deps-dev: bump the npm group across 1 directory with 6 updates (#1250) (94da963)
- deps: bump rollup from 4.22.1 to 4.22.4 (#1241) (6601ebc)
- deps: bump the gha group across 1 directory with 2 updates (#1247) (526454e)
4.11.0 (2024-09-20)
- bld: remove repetitive code for updating MacOS Helper apps (#1214) (e1edc05)
- cli: migrate from yargs to commander (#1216) (7ca5a28)
- deps: bump actions/setup-node from 4.0.3 to 4.0.4 in /.github/workflows in the gha group (#1232) (8473fc6)
- deps: bump the npm group across 1 directory with 7 updates (#1233) (9efa2f4)
- deps: bump vite from 5.3.5 to 5.4.6 (#1231) (6135682)
4.10.0 (2024-08-24)
- deps: bump davelosert/vitest-coverage-report-action from 2.5.0 to 2.5.1 in /.github/workflows in the gha group (#1210) (6d69ae3)
- deps: bump the npm group across 1 directory with 3 updates (#1212) (20b7e81)
- get: improve error message when comparing shasums (#1213) (b37068f), closes #1209
- test: move tests to seperate dir (#1205) (da0e353)
- test: rename fixtures dir (c6193bb)
4.9.0 (2024-08-15)
- deps: bump the npm group across 1 directory with 4 updates (#1199) (b07d1fc)
- deps: bump volta-cli/action from 4.1.1 to 4.2.1 in /.github/workflows in the gha group across 1 directory (#1189) (282ea7a)
- deps: remove license check logic (9dde7b2)
4.8.1 (2024-08-05)
- deps: bump the npm group across 1 directory with 6 updates (#1185) (f4c0822)
- deps: remove unused cli-progress package (8f4e07d)
4.8.0 (2024-07-27)
- ci: check for valid licenses (#1150) (ab99731)
- deps: bump actions/setup-node from 4.0.2 to 4.0.3 in /.github/workflows in the gha group (#1151) (7130930)
- deps: bump the npm group across 1 directory with 8 updates (#1177) (9410455)
- deps: migrate from compressing to tar and archiver (7c73903)
- docs: improve install/quick start (a87f44b)
- fsm -> fs.promises (08d79bf)
4.7.8 (2024-07-02)
- ci: add Vitest Coverage Action (#1136) (4d32845), closes #1041
- deps-dev: bump eslint-plugin-jsdoc from 48.2.13 to 48.4.0 in the npm group (#1138) (61189de)
- deps-dev: bump the npm group across 1 directory with 4 updates (#1142) (761963d)
- deps: bump davelosert/vitest-coverage-report-action from 2.4.0 to 2.5.0 in /.github/workflows in the gha group (#1140) (fddaf9f)
- test: enable vitest json reporter (e44aadb)
4.7.7 (2024-06-22)
4.7.6 (2024-06-19)
- deps-dev: bump @stylistic/eslint-plugin-js from 2.1.0 to 2.2.1 in the npm group (#1123) (fcd83a9)
- deps-dev: bump ws from 8.17.0 to 8.17.1 (#1126) (7aa6f08)
- deps: bump actions/checkout from 4.1.6 to 4.1.7 in /.github/workflows in the gha group (#1116) (eefde68)
- test: enable e2e tests (#1120) (f802947)
4.7.5 (2024-06-11)
- run: set stdio behaviour to inherit (a3d181a)
- bld: migrate from rcedit with resedit (#1094) (03a55b9)
- deps: bump actions/checkout from 4.1.5 to 4.1.6 in /.github/workflows in the gha group (#1095) (0f1b126)
- deps: bump google-github-actions/release-please-action from 4.1.0 to 4.1.1 in /.github/workflows in the gha group (#1091) (316741b)
- deps: bump googleapis/release-please-action from 4.1.1 to 4.1.3 in /.github/workflows in the gha group (#1114) (e284f5b)
- deps: bump the npm group across 1 directory with 3 updates (#1112) (fde3491)
- deps: bump the npm group across 1 directory with 6 updates (#1105) (eb63ded)
- deps: upgrade to eslint v9 (ffe6dd0)
- docs: add missing platform-specific app options info (#1093) (715097f)
4.7.4 (2024-05-12)
4.7.3 (2024-05-09)
4.7.2 (2024-05-09)
- ci: correct config hopefully (0bad4d2)
- deps: bump the gha group in /.github/workflows with 2 updates (#1074) (fd8a633)
- deps: bump the npm group across 1 directory with 11 updates (#1078) (7158c7b)
- deps: bump vite from 5.1.6 to 5.2.8 (#1060) (c52dbb6)
- docs: update contributing guidelines (efdbdca)
4.7.1 (2024-03-30)
- get: missing import (bd2273a)
- deps: reconfigure dependabot (698ecd5)
4.7.0 (2024-03-26)
- get: support
file://
foroptions.downloadUrl
(094567c)
- deps: bump follow-redirects from 1.15.5 to 1.15.6 (#1052) (8258de9)
- deps: bump the gha group in /.github/workflows with 1 update (#1054) (1935800)
- deps: bump the gha group in /.github/workflows with 2 updates (#1051) (0362403)
- deps: bump the npm group with 1 update (#1055) (5a7bc71)
- deps: bump the npm group with 3 updates (#1050) (a70aabc)
- deps: bump the npm group with 8 updates (#1048) (0ca3c34)
- get: deprecate get mode (#1053) (386fc18)
4.6.4 (2024-02-24)
4.6.3 (2024-02-22)
- docs: update contributing guidelines (ca594df)
4.6.2 (2024-02-22)
- get: ffmpeg and symlinks (d5c1bf5)
- deps: bump ip from 2.0.0 to 2.0.1 (2284d52)
4.6.1 (2024-02-15)
- ci: add chores section to changelog (#1028) (d630720)
- ci: fixup release please action (#1032) (f9ae7cd)
- ci: remove
schema
prop (33238b1) - deps: bump the gha group in /.github/workflows with 1 update (70030df)
- docs: update PR template to simplify commit descriptions (#1029) (6da9b89)
- docs: update readme and changelog (63fd50b)
- fix remaining lint errors (334ae74)
- get: refactor implementation (#1025) (72f65e1)
- get: refactor unzip symlink implementation (#1030) (69661c3)
- get: simplify symlink logic (#1035) (4f64307), closes #1030
- release-please-action: do not point to manifest file (96eeec8)
- release-please-action: point to config and manifest (0a6a44d)
- release-please: correct path to package (3719cee)
- release-please: remove manifest (23a16fb)
- run: mark run mode as deprecated (#1027) (1115728)
- test: try adding chores to release notes (#1031) (5cabc20)
4.6.0 (2024-02-01)
- Migrate from
unzipper
toyauzl-promise
to prevent corrupting files.
- Wrap
unzipper
call inside Promise to prevent race condition.
- Fix
yargs/helpers
import for cli usage.
- Manually create symbolic links for MacOS builds.
- Use
unzipper
to decompress ZIP files.
- Use
tar
to extract tarballs. - Disable
options.nativeAddon
.
- Remove
yauzl-promise
since it does not preserve symlinks on MacOS.
- Use
yauzl-promise
to decompress MacOS build on MacOS platform.
- Native package
unzip
usage.
- Align cache implementation with
nwjs/npm-installer
nw
module can use theoptions.cacheDir
to get cached NW.js binaries.
- Node Native Addon support using GYP. To enable, set
options.nativeAddon
togyp
.
- Managed Manifest mode.
options.ManagedManifest
defaults tofalse
. - If
true
, then firstpackage.json
globbed is parsed as manifest. - If JSON type, object is parsed as manifest.
- If string type, then resolve as file path to manifest.
- Fix FFmpeg decompression.
- Auto generate docs from JSDoc comments.
- Improve TypeScript type definitions.
- Fix get mode.
- Refactor build mode.
- Generate markdown docs from JSDocs.
- Improve debug logging.
- Fixed handling of argv.
- Cache community FFmpeg.
- Move FFmpeg decompress function to relevant location
- Separate download logic for NW.js and FFmpeg.
- Do not copy the first
package.json
encountered to the root ofoptions.outDir
whenoptions.glob
is enabled. This may seem like a breaking change but it is actually reverting incorrect behaviour.
- Some mac environments don't restore symlinks when using compressing lib. Now we will use system
unzip
command to extract zip files
- Handle error during ffmpeg copy on some mac environments
- Move community
ffmpeg
in the correct folder.
- Move community
ffmpeg
in the correct folder.
- Return promise in get mode to await it correctly.
- Conditonally set Icon for Windows build.
- Refactor
get
mode into a single file.
- Set
NSHumanReadableCopyright
property in*.app/Resources/en.lproj/InfoPlist.strings
to update copyright
NSHumanReadableCopyright
fromInfo.plist
- Descriptions and argument types for remaining cli arguments.
- Replace the icon at
nwjs.app/Contents/Resources/app.icns
with the icon atoptions.app.icon
file path.
xattr
package. Thecom.apple.quarantine
flag should be handled by the developer.
- Compress
outDir
tozip
,tar
andtgz
formats. - Specify log level via
options.logLevel
. - Add platform, arch, Node and NW.js info in debug log.
- Add MacOS name, version, description and legal metadata
- Removed redundant
options.app.icon
property (Refer to NW.js docs on how to set icon)
- Refactor
zip
implementation. Usecompressing
instead ofarchiver
package. - If
zip
istrue
or"zip"
, then remove outDir after compression. (This was supposed to be the intented behavior all along).
- Redownload
manifest.json
every time thenwbuild
function is executed. - If
manifest.json
already exists and we are unable to connect to thenwjs.io
domain, then use the existing manifest. - If no
manifest.json
exists in the cache dir, then thevalidate
function will cache this and throw an error - preventing the build.
- Preserve relative symbolic links of NW.js files during build mode
- Rename executable using
options.app.name
value.
- Migrate from
decompress
tocompressing
- Preserve relative symbolic links during build mode
- Do not resolve
options.srcDir
when parsingoptions
object.
- Fix module imports which broke in 04ccd51
- Validation for
options.version
. - Type definition file for
nwbuild
function.
- Set
files
tooptions.srcDir
if glob disabled preventing apackage.json
not found error.
- Glob flag defaulting to true. Currently file globbing is broken and it is recommended to set
glob
to false.
- Fixed
get
mode - Fixed
run
mode - Fixed
build
mode - Updated
get
mode docs
- Parse the first
package.json
file and treat it as the NW.js manifest. Copy it tooutDir/package.nw/package.json
for Linux and Windows andoutDir/nwjs.app/Contents/Resources/app.nw/package.json
for MacOS.
To simplify your workflow, you can pass the path to the package.json
first:
nwbuild ./path/to/package.json ./app/**/* ./node_modules/**/*
Make sure your manifest file's main
property points to a valid file path. In this case it might be:
{
"main": "app/index.html"
}
get
mode to only download NW.js binaries. Example use case: download during Node'spostinstall
hook:
{
"scripts": {
"postinstall": "nwbuild --mode=get --flavor=sdk"
}
}
- Check if NW.js's Node version matches host's Node version
- Fix undefined import for Windows configuration
- Remove false test for run mode.
- Glob file and directory differently.
- MacOS ARM build is no longer behind
beta
version.
- Allow list
https://npmmirror.com/mirrors/nwjs/
andhttps://npm.taobao.org/mirrors/nwjs/
mirrors.
- Do not convert srcDir files to absolute paths.
- Copy files to correct location.
- Resolve path iff file path type is valid.
- MacOS ARM support
- Use (community) prebuilt version of
ffmpeg
if theffmpeg
flag istrue
(defaults tofalse
).
await
platform specific config steps
- Security update
http-cache-semantics
tov4.1.1
.
options.cli
flag to preventnode-glob
from globbing already globbed files and erroring out with apackage.json not found in srcDir file glob patterns
message.
- Copy subdirectories of
options.srDir
in the correct location.
- Run and build demo app in CI.
- Fixed false positives in CI
- Throw errors instead of returning them
- Reject error object instead of exit code
- Flag to check if specific
nw
release is cached. #772
- Create
cacheDir
,outDir
before getting release info. #772
-
Do not throw error if
nwbuild
is ofobject
type. #769 -
Fix
package.json
path forupdateNotifier
. #767
- Warn about loss of permissions if building Linux or MacOS on Windows. 8793d4b
- Fix error when
options.version
islatest
. 33ef184
- CJS support 968f798
- Prevent duplicate globbing of
srcDir
files. 07901c9
- Convert
srcDir
type fromstring[]
tostring
. 1a699af
-
Skip modification of Windows executable if platform is not Windows or Wine is not installed. #739
-
Run mode should only require
srcDir
,version
andflavor
. #718
- Allow user to rename NW executable. #712
- Support for Desktop Entry file. #690
-
Resolve promise in
close
event with respect to compression. #698 -
Check for release info after downloading NW binaries in
cacheDir
. #697
- Fix mac and windows build
nwbuild
function which accidently got removed.
- Update usage docs for
nwbuild
- Refactor download function
- Check for first instance of
package.json
platforms
argument also accepts comma separated (without spaces) values
- Support for multiple file paths
- Fix regex to match
package.json
files only
mode
option which defaults to runnwbuild
functionquiet
option to documentation
- CLI options by matching them to the API
- Remove
Version
fromCFBundleShortVersionString
#576
- Added options
buildType
,macCredits
,macPlist
,zip
,zipOptions
to CLI #575
- Update lint command #575
- Update contributing guide #569
- Switch from TypeScript to JSDocs #568
- Set window icon with
rcedit
#566 - Refactor
checkCache
#565 - Simplify demo
- Refactor
detectCurrentPlatform
#564 - Update dependencies #561 #532
- GitHub Actions for CICD #552
- Support multiple locales on OSX #389
- Pull request and issue template #553
- Dependencies #550
- Documentation #540 #553 #555
- Improve run mode by detecting current platform to prevent downloading additional binaries
- Travis
- AppVeyor
- JSHint
- EditorConfig
- Source platform overrides module into the project instead of it being an extenal dependency. This helped us get rid of a vulnerable lodash version. See #500
- Add option.winVersionString for accurate process name. See #459.
- Small platform overrides fix. See https://github.com/nwjs-community/nw-builder/pull/477/files.
- The
bluebird
dependency. We're now using native promises instead.
- If using the package programmatically and it's out of date, a message will be shown (this was always the case for the CLI).
- There is now a README in every directory (with at least a single sentence summarizing the directory) to help with onboarding contributors.
- Some dependencies are updated.
osx32
is removed from the default list of platforms. Thanks to @preaction (PR #439).- An unnecessary
rcedit
dependency is removed.
- For Node 7+ users, you won't see a
os.tmpDir
deprecation warning anymore.
- 2017-05-22
3.2.3
Fix for caching when a version is specified (thanks @piwonesien for the help). - 2017-05-20
3.2.2
Fix: when using thenwbuild
in run mode, the-p
option was ignored and the current platform was always used. - 2017-05-16
3.2.1
Fix: NW.js 0.22.0+ apps didn't open. - 2017-02-12
3.2.0
Defaults to HTTPS now, addedmanifestUrl
option, and bumped some dependencies. - 2016-10-09
3.1.2
Fix for passing array as files option when running app (plus some security fixes). - 2016-10-09
3.1.1
Fix for flavor feature when using CLI. - 2016-09-14
3.1.0
Ability to select any flavor of NW.js, not justsdk
. - 2016-08-28
3.0.0
bumping graceful-fs-extra dependency to 2.0.0. - 2016-08-14
2.2.7
fix for macIcns option when using NW.js 0.12.3 - 2016-07-31
2.2.6
fix for OS X caching - 2016-07-03
2.2.5
fix for update-notifier usage in bin - 2016-07-03
2.2.4
fix for syntax error in CLI - 2016-07-02
2.2.3
a few small fixes for the run option and more - 2016-07-02
2.2.2
fix for cache check of some legacy versions - 2016-07-02
2.2.1
supports newer NW.js versions (via http://nwjs.io/versions.json), plus other fixes. - 2015-12-18
2.2.0
addedzip
option. - 2015-12-06
2.1.0
addedcacheDir
command-line option, fix for no info being passed back, etc. - 2015-06-28
2.0.2
put upper bound to semver check for windows. - 2015-06-14
2.0.1
safer validation of versions. - 2015-06-14
2.0.0
changed to nw-builder, etc. - 2015-05-05
1.0.12
when using latest NW.js version, it's first validated that it's not an alpha version (fixes #222). Plus a fix for thewinIco
&macIcns
command line options - 2015-01-29
1.0.8
fixed EMFILE errors (see #147 #148) - 2015-01-21
1.0.7
fixed about screen when copyright is not supplied - 2015-01-15
1.0.6
fixed downloads for nw.js version 0.12.0-alpha1 - 2015-01-15
1.0.5
fixed downloads for NW.js versions < 0.12.0-alpha - 2014-12-12
1.0.0
64-bit support, improved platform-overrides and no more EMFILE errors. - 2014-12-07
0.4.0
macPlist CFBundleIdentifier is generated frompackage.json
(see #131) - 2014-11-14
0.3.0
macPlist option improvements (see #96) - 2014-10-30
0.2.0
adds support for platform-specific manifest overrides (see #94) - 2014-08-19
0.1.2
adds a progress bar to downloads, fixes downloading through a proxy, fixed winIco, bug fixes - 2014-08-01
0.1.0
use app filename for generated executables, optimized version checking, (known issue:winIco
on windows) - 2014-07-31
0.0.4
fixed compatibility with nodewebkit 0.10.0 - 2014-04-20 Added run option, bug fixes
- 2014-04-13 Preview Release