Add all code changes (features, deprecations, and enhancements) under the Unreleased
topic to track changes for
the next release. Once the changes are released,
rename Unreleased
topic with the new version tag. Finally, create a new Unreleased
topic for future changes.
Developers can launch Neutralinojs from any programming language using child process APIs (i.e., subprocess
in Python) and communicate with the framework process using the extension API. The new hostProject
configuration object extends the official CLI to help developers easily create, run, and build these host projects. For example, the following host project configuration instructs the CLI to run a Node.js host project:
"hostProject": {
"projectPath": "/node-src",
"buildPath": "/node-src/dist/",
"initCommand": "npm install",
"devCommand": "npm start",
"buildCommand": "npm run build"
}
Community projects implement bindings and templates to create host projects using Node.js, Python, Go, etc. For example, the node-neutralino
NPM package lets you launch Neutralinojs via Node.js environments and execute native APIs via the NeutralinoApp
class:
import NeutralinoApp from 'node-neutralino';
const app = new NeutralinoApp({
url: '/',
windowOptions: {
enableInspector: false,
}
});
app.init();
app.window.setTitle('Node.js');
Now, the neu build
command automatically updates the executable file icon and metadata based on the following configuration options:
author
: gets written into executable's metadata.description
: gets written into executable's metadata.copyright
: gets written into executable's metadata. Defaults to current date + generic "all rights reserved".applicationName
: gets written into executable's metadata. Defaults tocli.binaryName
.applicationIcon
: a relative path to an icon in.png
format. Defaults tomodes.window.icon
. If it is not set, uses Neutralinojs logo.
Use the zip-lib
package to handle ZIP files for better performance and simplicity in the source code.
- Fix initial loading issues with frontend library development file patching.
- Introduce the
--clean
flag to theneu build
command to clean previous build files. - Add file excluding feature for the app bundle and extensions directory via
cli.resourcesExclude
andcli.extensionsExclude
configuration properties. For example, now developers can use the"resourcesExclude": ".*\\.scss$|.*\\.d.ts$"
configuration to exclude*.scss
and*.d.ts
files from the final app bundle. - Let app developers customize the frontend library development server wait time using the
cli.frontendLibrary.waitTimeout
configuration property.
- The
neu version
command now compares the installed CLI version and the framework version with the latest released versions and displays a warning messages if the users use an older versions. - The
neu version
command now displays the(latest)
tag with CLI, binary, client library version details.
- Check and validate
neutralino.config.json
file before executing app-specific commands. - Check app template validity before downloading content from a specific GitHub repository using the official GitHub API.
- Add the app icon to the final app bundle only the specific project uses an app icon.
- Fix the port waiting timeout issue with frontend library-based development workflow.
- Add
cli.distributionPath
into theneutralino.config.json
file to customize the defaultdist
distribution directory.
- Clean existing app build files before creating another build using the
neu build
command. - Support older Node versions by removing the optional chaining feature usage.
- Fix the endless port waiting issue with the
--frontend-lib-dev
option.
- Change the WebSocket connection based on the v5 framework APIs.
- Fixed issues with the frontend library command execution.
- Fixed app development issues with the Vite server.
- Fixed several issues in the frontend-library-based development flow (i.e., removed the hardcoded port number, fixed double
devCommand
execution, etc.,).
Added new configuration options to the cli.frontendLibrary
key of the neutralino.config.json
:
projectPath
: Sets the project path of the frontend-library project. This path will be used as the current directory while executing the frontend-app-related commands.initCommand
: A command that gets executed after downloading an app template with theneu create
command.devCommand
: This command will run with theneu run
command to start the frontend development server. The CLI doesn't wait fordevCommand
completion, instead, it will wait for the frontend development server via thetcp-port-used
package.buildCommand
: Theneu build
command will execute this command before generating the app bundle, so you can generate static resources of your frontend app using this command.
- Download the latest Neutralinojs framework resources with the
--latest
option in theneu update
command. - If framework versions are not present in the app/template configuration, download the latest framework resources automatically. The CLI will download nightly releases if it can't fetch the latest release tag because of an GitHub API-related issue (i.e., Exceeded rate limits).
- Download the TypeScript definition file for standalone client library mode. This won't include the TypeScript definition file to the final application bundle.
- Fix the hot-reloading issue that occurs with newer Node runtime versions.
- Avoid copying the
WebView2Loader.dll
file to the final app package since it was removed from the Neutralinojs framework.
- Use the
decompress
library instead ofunzipper
to fix issues with latest Node.js runtime versions. - Generate the Mac universal binary with the
neu build
command.
- Implement a way to test plugins locally.
- Initiate a new Node.js-based test suite.
- Clean project files if the
neu create
command wan't successful. - Display an error message if the
neu build --copy-storage
fails due to missing.storage
directory. - Support Darwin
arm64
binaries natively without binary translation (x64
->arm64
). - Make the client library downloading process optional and support importing the client library via
@neutralinojs/lib
. - Download the module version of the client library based on the app configuration.
- Automatically re-install plugins when the neu CLI version is upgraded/downgraded via package managers.
- Support ARM (armhf/arm64) binaries.
- Add short descriptions for each command.
- Support to download nightly build versions.
- Fix plugin listing issue.
- Add a simple test-suite for testing CLI commands with a Bash script.
- Improve log messages and styles
- Display Neutralinojs process's STDIN and STDERR streams directly on the console.
- Remove
--verbose
option from therun
command.
- Fix client library path issue with hot-reload workaround on Windows.
- Fix browser mode exit issue with
neu run
.
- Add a workaround to use hot module reloading from the app developer's existing frontend library/framework.
- Allow downloading any community template via
neu create myapp --template <template>
.<template>
accepts valid GitHub repo identifiers. The default value isneutralinojs/neutralinojs-minimal
.
- Add
--verbose
option to identify framework initialization crashes. It will show STDERR and STDOUT of the framework once the process was terminated. - Support sending any internal CLI argument to the Neutralinojs process via
neu run -- <additional_args>
. - Remove
--mode=<mode>
option fromrun
since the same work can be done withneu run -- --mode=<mode>
.
- Fix the infinite retry issue with the
neu run
command. - Show an error message for download failures.
- Exclude auto-reload files via
cli.autoReloadExclude
. - Watch only the
cli.resourcesDir
to avoid many unwanted reloads.
- Add new
--copy-storage
flag to automatically copy storage data to the app bundle.
- Make
cli.extensionsDir
optional for bundling process.
- Fix an issue in websocket error log.
- Copy extensions to the app bundle.
- Rename
res.neu
toresources.neu
.
- Use websocket connection to auto reload app.
- Use server/client versions from config
- Removed global Neutralino version details