Portable and lightweight cross-platform desktop application development framework
OTHER License
Bot releases are visible (Hide)
Published by github-actions[bot] over 1 year ago
In some scenarios, Neutralinojs app developers need to implement file watchers in their apps. Earlier, Neutralinojs API didn't offer a native file watcher API and developers had to use less-performant workarounds, such as making recursive filesystem.readDirectory
calls. The new file watchers API lets you create native, cross-platform, event-based file watchers for filesystem paths with the following functions:
filesystem.createWatcher(path)
: Creates a new file watcher for a given path and returns the watcher identifier.filesystem.removeWatcher(watcherId)
: Removes a files watcher based on a file watcher identifier.Whenever a filesystem change occurs, file watcher instances dispatch the watchFile
event with the following data:
id
: Watcher identifieraction
: Filesystem change: add
, delete
, modified
, and moved
dir
: Directory pathfilename
: Modified fileUpdate the config file option cli.binaryVersion
with 4.11.0
and enter neu update
to fetch this version.
Get started: https://neutralino.js.org/docs
This release was auto-generated by ReleaseZri ð
Published by github-actions[bot] over 1 year ago
arm64
(For Apple M1 and higher devices) and universal binaries with the GitHub workflow.neutralino.config.json
file.arm64
systems.Neutralinojs typically stores the client library implementation in a separate file (neutralino.js
). This approach makes Neutralinojs app development
process easier with a globally exposed JavaScript object, Neutralino
. But, modern web developers use ES modules and they usually like to fetch dependencies from NPM. So, now, developers can load the __neutralino_globals.js
internal script (i.e., <script src="__neutralino_globals.js"></script>
) to load only globals. Then, they can use the client library implementation via neutralino.mjs
with the neu CLI or from @neutralinojs/lib
with a Node package manager.
Update the config file option cli.binaryVersion
with 4.10.0
and enter neu update
to fetch this version.
Get started: https://neutralino.js.org/docs
This release was auto-generated by ReleaseZri ð
Published by github-actions[bot] almost 2 years ago
Neutralinojs offers the extensions API to write custom backend code with any programming language, but extensions come with the following drawbacks that affect apps in several scenarios:
Alternatively, a developer can download the framework C++ code, modify it, and re-compile it. But, the developer may face issues while synching upstream code modifications. So, Neutralinojs offers a separate namespace, a function template, inbuilt helper functions (i.e., to get the window handler, validation, etc.), and a developer guide to add custom APIs to the Neutralinojs framework without updating the framework core.
Example:
let res = await Neutralino.custom.fetch('https://neutralino.js.org');
If developers make a custom API that others can use, we motivate them to contribute to the Neutralinojs framework by adding it to the main codebase.
Example:
let res = await Neutralino.net.fetch('https://neutralino.js.org');
If the developer adds a new custom method to the framework, the client library will automatically export it to the Neutralino.custom
namespace by using the NL_CMETHODS
internal global variable. The Neutralino.custom.getMethods
function returns an array of custom methods similar to NL_CMETHODS
.
The current Neutralinojs API offers non-stream-based (Promise-based but synchronous-like) functions for working with files. For example, the filesystem.readFile
function reads the file content and retrieves data synchronously even though the WebSocket communication mechanism supports asynchronous patterns. However, the synchronous API lets developers work with files in a simple way, but they face the following issues in some scenarios:
To solve this issue, we offer an event-based file stream API with the following functions/events:
filesystem.openFile
: Creates a file stream by openning a file.filesystem.updateOpenedFile
: Triggers a file read
/readAll
event or sets the file cursor.filesystem.getOpenedFileInfo
: Returns (awaited) information about the file stream (Props: id
, eof
, pos
, and lastRead
)openedFile
: Occurs per each file read event and whenever the file stream reaches EOF
.Update the config file option cli.binaryVersion
with 4.9.0
and enter neu update
to fetch this version.
Get started: https://neutralino.js.org/docs
This release was auto-generated by ReleaseZri ð
Published by github-actions[bot] about 2 years ago
os.getEnv
returns a value for a given environment variable key. Developers had to use alternative methods to retrieve a list of all environment variables with values. The os.getEnvs
returns all environment variables as a JavaScript object similar to Node's process.env
.
pos
and size
options for readFile
and readBinaryFile
methods to set the file cursor position and buffer size respectively.Added the storage.getKeys
function to get an array of Neutralinojs storage keys. Now, developers don't need to write their own functions to retrieve storage keys with the filesystem API.
Returns the current mouse cursor position via a JavaScript object that has x
and y
props. This function is helpful for develping interactive desktop widgets on all supported platforms.
Update the config file option cli.binaryVersion
with 4.8.0
and enter neu update
to fetch this version.
Get started: https://neutralino.js.org/docs
This release was auto-generated by ReleaseZri ð
Published by github-actions[bot] over 2 years ago
Ealier, we had the getMemoryInfo
function in the computer
namespace to retrieve system memory statistics. Now, we have added more functions to get details about the CPU, operating system, kernel, and connected displays:
computer.getArch
: Returns the CPU architecture. i.e, x64
, arm
, etc.computer.getKernelInfo
: Returns the operating system's kernel details.computer.getOSInfo
: Returns the operating system details.computer.getCPUInfo
: Returns the CPU details.computer.getDisplays
: Returns an array of all connected displays with the resolution, frequency-like information.defaultPath
option to showSaveDialog
, showOpenDialog
, and showFolderDialog
functions to set the initial path/filename of system dialogs.armhf
framework binary generation issue in the GitHub Actions workflow.--enable-automation
flag to the config file if they need the particular command-line switch.Update the config file option cli.binaryVersion
with 4.7.0
and enter neu update
to fetch this version.
Get started: https://neutralino.js.org/docs
This release was auto-generated by ReleaseZri ð
Published by github-actions[bot] over 2 years ago
We have os.execCommand
for launching processes, but it's synchronous, meaning, the developer has to wait unti process completion to receive pid
, stdOut
and stdErr
. execCommand
is not suitable for long-running processes. The new spawning API offers API functions for handling long-running processes in a multi-threaded way.
os.spawnProcess(command)
: Spawns a process and returns id
(A virtual Neutralino-scoped pid) and pid
(Operating system-level pid).os.getSpawnedProcesses()
: Returns a list of spawned processes.os.updateSpawnedProcess(id, action, data)
: Sends an action event for the spawned process. Supports the following actions:
stdIn
: Sends a string via the standard input stream. data
is the input string.stdInEnd
: Closes the standard input stream.exit
: Terminates the spawned process.spawnedProcess
: Dispatched when there is a change in the spawned process. CustomEvent
gets triggered with the following object:{
id: <id>,
pid: <pid>,
action: <action>,
data: <data>
}
Available actions:
stdOut
: Outputs standard output data. data
contains the standard output payload.stdErr
: Outputs standard error data. data
contains the standard error payload.exit
: Notified when the process terminates. data
contains the process exit code.createdAt
and modifiedAt
JavaScript timestamps via the filesystem.getStats
function..storage
directory (Neutralinojs storage location) on Windows.index.html?v=2.0
is supported, but caching is not yet implemented.Update the config file option cli.binaryVersion
with 4.6.0
and enter neu update
to fetch this version.
Get started: https://neutralino.js.org/docs
This release was auto-generated by ReleaseZri ð
Published by github-actions[bot] over 2 years ago
windowFocus
and windowBlur
native events.nightly
version tag.NE_OS_TRAYIER
from the os.setTray
function for initialization failures.filesystem.writeBinaryFile
function. This was fixed by using LF
as the line breaker on all platforms as a portable solution. If the developer needs CRLF on Windows (or CR on Darwin), the developer needs to handle it explicitly with NL_OS
.NL_COMMIT
to hold framework's release commit. This is helpful to find the nightly release's code snapshot.Update the config file option cli.binaryVersion
with 4.5.0
and enter neu update
to fetch this version.
Get started: https://neutralino.js.org/docs
This release was auto-generated by ReleaseZri ð
Published by github-actions[bot] over 2 years ago
window.getPosition
to get the current window coordinates.filesystem.appendFile
to append text content to a file. Thrown errors are similar to the filesystem.writeFile
function.filesystem.appendBinaryFile
to append binary content to a file. Thrown errors are similar to the filesystem.writeBinaryFile
function.ayatana-appindicator3-0.1
instead of appindicator3-0.1
(Marked as obsolete in Debian packages)SetProcessDpiAwarenessContext
function to support previous Windows versions.NE_RT_NATPRME
error payload.Update the config file option cli.binaryVersion
with 4.4.0
and enter neu update
to fetch this version.
Get started: https://neutralino.js.org/docs
This release was auto-generated by ReleaseZri ð
Published by github-actions[bot] over 2 years ago
tokenSecurity
to the configuration to improve the security of NL_TOKEN
. Accepted values are none
and one-time
. If none
is set, Neutralinojs server will always expose NL_TOKEN
for any application instance, so you can open Neutralinojs apps from browser directly. If one-time
(recommended) is set, Neutralinojs server expose NL_TOKEN
only once and client persists the token in sessionStorage
, so all other clients that acces the app after the initial client will get an auth error message (Displayed to the user via HTML).window.setAlwaysOnTop(bool)
was added.window.getSize
was added.NL_EXTENABLED
which returns true
if extensions are enabled. It is used to check extensions status faster during initialization process.Update the config file option cli.binaryVersion
with 4.3.0
and enter neu update
to fetch this version.
Get started: https://neutralino.js.org/docs
This release was auto-generated by ReleaseZri ð
Published by github-actions[bot] over 2 years ago
--chrome-width
, --chrome-height
, and --chrome-args
.--neu-dev-extension
to enable devtools connections (For internal usages with CLI).serverHeaders
option.NL_RESMODE
to get details about application resources source. Returns bundle
if resources are loaded from resources.neu
. Otherwise, returns directory
.Update the config file option cli.binaryVersion
with 4.2.0
and enter neu update
to fetch this version.
Get started: https://neutralino.js.org/docs
This release was auto-generated by ReleaseZri ð
Published by github-actions[bot] almost 3 years ago
window.getTitle
returns the current native window title.NE_OS_ENVNOEX
from os.getEnv
and return an empty string if environment variable is not defined.chrome
mode.modes.chrome
. Added height
, width
, and args specially for the chrome mode.Get started: https://neutralino.js.org/docs
Published by shalithasuranga almost 3 years ago
Milestone v4.0.0 was closed with 31 issues.
shouldRunInBackground
option to background
.stdIn
as an optional input.stdOut
, stdErr
, pid
, and exitCode
.extensions
array globally or in a specific mode.extensions
array.extension
setting has 4 fields: id
, command
, commandLinux
,commandDarwin
, and commandWindows
.command
's (platform-specific command's) value accepts ${NL_PATH}
global variable.--nl-port={}
, --nl-extension-id={}
and --nl-token={}
enableExtensions
config.documentRoot
) via config. Now, it's possible to launch the app without a subdirectory in the URL.Now developers can use Neutralinojs as a part of their software with any programming language by spawning Neutralinojs as a child process.
Use exportAuthInfo
to write auth details to ${NL_PATH}/.tmp/auth_info.json
. Then the parent process can pick up access details there. Note that WebSocket communication needs to be initiated via extensions API/loader.
dispatch
: Sends an event to a specific extension.broadcast
: Sends an event to all connected extensions. Useful for sending shutdown signals.getStats
: Returns details about loaded extensions and connected extensions.checkForUpdates
: Send a request to a seed URL (JSON) and fetch update details.install
: Install updates based on the currently downloaded manifest.appClientConnect
and appClientDisconnect
: Occurs when a new app instance is launched and closed respectively.extClientConnect
and extClientDisconnect
: Occurs when a new extension is connected and disconnected respectively.extensionReady
can be used to implement immediate extension calls. This is implemented from the client-side with extensions.getStats
and extClientConnect
. This event gurantees that it will be triggered regardless of the extension's start time.NE_EX_EXTNOTC
: Thrown by extensions.dispatch
if the target extension is not connected.NE_UP_CUPDMER
: Thrown by updater.checkForUpdates
if the JSON update manifest is invalid or applicationId is not matching.NE_UP_CUPDERR
: Thrown by updater.checkForUpdates
if the updater API cannot fetch the manifest.NE_UP_UPDNOUF
: Thrown by updater.install
when the update manifest is not loaded.NE_UP_UPDINER
: Thrown by updater.install
for update installation errors.NL_PORT
also becomes 0.writeToLogFile
config option. Earlier, the log file was created even thisfalse
.NL_APPVERSION
: Value of the version
key in the config file.Get started: https://neutralino.js.org/docs
Published by shalithasuranga about 3 years ago
Milestone v3.0.0 was closed with 16 issues.
exitProcessOnClose
config.os.getPath(name)
to get known platform-specific folders.logging
) for enabling/disabling logging feature.ready
, clientConnect
and clientDisconnect
Get started: https://neutralino.js.org/docs
Published by shalithasuranga about 3 years ago
Milestone v2.8.0 was closed with 5 issues.
NL_PID
global variable to get the process ID.Get started: https://neutralino.js.org/docs
Published by shalithasuranga about 3 years ago
Milestone v2.7.0 was closed with 7 issues.
windowClose
event.app.exit()
function.Get started: https://neutralino.js.org/docs
Published by shalithasuranga about 3 years ago
Milestone v2.6.0 was closed with 5 issues.
*
in block/allow lists.nativeAllowList
in config.Neutralino.os.showDialogOpen
Get started: https://neutralino.js.org/docs
Published by shalithasuranga over 3 years ago
Milestone v2.5.0 was closed with 5 issues.
setFullScreen
, isFullScreen
etc.Get started: https://neutralino.js.org/docs
Published by shalithasuranga over 3 years ago
Milestone v2.4.1 was closed with 4 issues.
Get started: https://neutralino.js.org/docs
Published by shalithasuranga over 3 years ago
Milestone v2.4.0 was closed with 2 issues.
Get started: https://neutralino.js.org/docs
Published by shalithasuranga over 3 years ago
Milestone v2.3.0 was closed with 3 issues.
minWidth
, minHeight
, maxWidth
, maxHeight
, and resizable
Get started: https://neutralino.js.org/docs