Release Info
Item | SHA-256 | Desc |
---|---|---|
๐ ntfy-desktop-2.2.0-win32-arm64.zip | de62a4762adbbd253d635331012595667388b9d88d34173d5d313d196996c5d1
| Windows arm64 (64-bit) binaries |
๐ ntfy-desktop-2.2.0-win32-ia32.zip | 262787447910e8e080d0326ac0bdd83bcbc94f02aa5867b5a64c5941aff1f83f
| Windows ia32 (32-bit) binaries |
๐ ntfy-desktop-2.2.0-win32-amd64.zip | 9d7ce3f6df9dde7a79e0f9a3e95745591b2ab5c69211425f319c6728e6a8eafa
| Windows x64 (64-bit) binaries |
๐ ntfy-desktop-2.2.0-linux-arm64.zip | 06359a6d48f948ab54788180a6158d6f066db02e7e85d238971c79a7ea8415ca
| Linux arm64 (64-bit) binaries |
๐ ntfy-desktop-2.2.0-linux-armv7l.zip | c91c6092d4b8354eba733826d392805cc19a6812fb757d2baa2507a2502d76c6
| Linux armv7l (32-bit) binaries |
๐ ntfy-desktop-2.2.0-linux-amd64.zip | 4c98fe1a773bde72bf3e0725c5e62afa4781a28363b341d103175c3adf72815e
| Linux x64 (64-bit) binaries |
๐ ntfy-desktop-2.2.0-darwin-arm64.zip | 298750372e775f8c92505956a7abebfac95fe99f621a880d48190ddcd13db79a
| Darwin / macOS arm64 (64-bit) binaries |
๐ ntfy-desktop-2.2.0-darwin-amd64.zip | f82ee7ea0a763a561723c685dd4df85a398cfd7cbef0801c055c1edf6cc07d92
| Darwin / macOS x64 (64-bit) binaries |
๐ sha256sum.txt.asc | Signed SHA256 hash digest | |
๐ sha1sum.txt.asc | Signed SHA1 hash digest | |
๐ท๏ธ GUID | 22ce449b-259e-57f4-bf70-d94d669cc4b0
| |
๐ท๏ธ UUID | ae6d8eea-511d-53a8-bb01-6231ecfb9298
| |
๐ Stamp | 2.1.2-2025-06-09T18:44:32.000Z ๐บ 2.1.3-2025-06-25T03:04:15.000Z
| |
๐ Last Release | 15 days ago
|
What's New
This release contains the following changes:
Note
This major releases focuses on a complete re-write of the entire app. It also utilizes a proper file structure, separating the application files from other git repo or template files. Additionally, this release focuses on security and utilizing proper practices within Electron to ensure the end-user is not exposed to potential harmful attacks later through open processes that could be intercepted. We have no idea if people are using this app to transmit sensitive information, but it's better to be safe than sorry. Numerous performance enhancing changes have also been made, including proper graceful shutdowns for all operating systems, including MacOSX.
There are plans for more features, but this re-write needed to come first in order to establish a proper structure.
feat
: New Notification Badge #27 #88- When the user receives a new message, a numerical value is shown in the OS taskbar indicating how many un-read messages the user has.
- Unread will clear once the user interacts with the menu
feat
: New Inter-Process Communication- Electron's different processes now communicate safely with one another without the risk of exposing sensitive info
- Main process and renderer are completely segregated from one another
feat
: Action Triggers- Ntfy Desktop now can interpret what buttons you are clicking on the interface; which opens the door to many new features based on a user's navigation
- Introduced with new badge notification counter
improvement
: Class Segregation- All classes now reside in a dedicated folder, instead of in the main app code
improvement
: Application Restructured- For the most part, the app has been entirely re-written
- Ntfy app files now reside in
src/
folder instead of app and repo files being mingled together
improvement
: Migrated Electron Menus- Instead of residing in the main app file; menus have been migrated to their own independent class
improvement
: Rewrote Windows and Linux Build Scripts- Can utilize both local and global node packages
- Changed the compression functionality for MacOSX users
improvement
: Switched to Node Imports- App now uses node imports instead of relative file paths
- Satisfies eslint error import/no-relative-parent-imports
improvement
: Re-wroteisValidUrl
Functionality- Now supports both external and internal (localhost) instances of Ntfy
improvement
: Electron Preloader and Renderer- Added
preloader.js
andrenderer.js
to handle the different processes
- Added
improvement
: Consistent API Token Handling- Safer fallback for empty API tokens
improvement
: Topics Validation- Check for empty/missing topics before attempting requests
improvement
: Proper Interval Management- Store and cleanup polling intervals properly
improvement
: Shutdown State Management- Prevent operations during app shutdown
improvement
: Enhanced User-Agent- Include app version in requests
improvement
: Shutdown Checks- Skip operations when app is shutting down
improvement
: Null Response Handling- Handle cases where requests return null
improvement
: Poll Rate Clamping- Automatically fix out-of-bounds poll rates
improvement
: Proper macOS Support- Handle window lifecycle correctly on macOS
improvement
: Enhanced URL Validation- Better localhost detection and fallback handling
pref
: Request Timeout Handling- Added 30-second timeout for message requests with proper cleanup
pref
: Concurrent Polling Prevention- Added isPolling flag to prevent multiple simultaneous requests
pref
: Graceful Shutdown System- Implemented proper cleanup when app closes
pref
: Poll Rate Validation- Added bounds checking (5s minimum, 1 hour maximum)
pref
: Better Error Handling- Distinguish between timeout and network errors
pref
: Improved Logging- More detailed error messages and URI information
pref
: Menu Initialization- Menus now wait until Ntfy is completely initialized before loading
fix(security)
: Disabled Node Integration #117- Changed
nodeIntegration: false
to prevent renderer from accessing Node.js APIs
- Changed
fix(security)
: Enabled Context Isolation #117- Ensures proper isolation between main and renderer processes
fix(security)
: Disabled Remote Module #117- Prevents potential security vulnerabilities
fix(security)
: Enabled Web Security #117- Blocks insecure content and experimental features
fix(security)
: Sandboxed About Window #117- Added sandbox mode for the about dialog
fix(build)
: Windows.batch
Build Script- windows batch build script provided with app failed to build if
build/
folders didn't already exist
- windows batch build script provided with app failed to build if
fix(build)
: MacOS Binaries Build Failed on Windows- when attempting to build macOSX binaries on Windows, script would fail due to windows compression
- changed to tar.gz
tests
: New Test Suite- Each release will now run an extensive set of tests to ensure Ntfy functionality works properly
- Utilizes both
Vitest
andPlaywright
Statistics
How the files have changed:
- Changed files : 16
- Changes : 2474
- Commits : 36
- Additions : 1965
- Deletions : 509
- PRs (categorized) : 24
- PRs (uncategorized) : 12
- PRs (open) : 0
Pull Requests
This release is associated with the following pull requests:
๐ช Continuous integration
- update workflow working directory for node commands : 737080d @Aetherinox
- update .env file working path : 3787357 @Aetherinox
- update working directory for
package.json
: e902918 @Aetherinox - change working directory on
npm-tests
workflow : d9b4ae1 @Aetherinox
๐ Features
- add
back
andforward
functionality toview
menu : 3387823 @Aetherinox - add new electron
preload.js
#116 : 90db478 @Aetherinox - add new electron
renderer.js
#116 : 455ef74 @Aetherinox - add
preload.js
to main dialog #116 : b1f3f96 @Aetherinox - add badge indicator to taskbar icon #27 : 9f66220 @Aetherinox
- add graceful shutdown functionality when app closed : 68cbe33 @Aetherinox
- force maximum retries on IsValidUrl : 8992075 @Aetherinox
- add polling rate when getting messages from ntfy server : 38fdf83 @Aetherinox
- add proper ipc communication from main process to renderer #117 : 58a1e16 @Aetherinox
- add AbortController when fetching messages from ntfy server : 225050b @Aetherinox
- add graceful shutdown for all supported operating systems : 07c7d10 @Aetherinox
๐ Bugfixes
- (security) set
nodeIntegration: false
to prevent renderer from accessing node api #117 : 69fc3ca @Aetherinox - (security) ensure proper isolation between main and renderer processes #117 : 72074cd @Aetherinox
- (security) prevent potential security vulnerabilities #117 : 90bc6f6 @Aetherinox
- (security) block insecure content and experimental features #117 : 3eaf513 @Aetherinox
- class
Log.js
importing package in wrong dir, addpackage.json
import : 4949702 @Aetherinox
๐ง Changes
- clean parent directory; migrate app to
src
#116 : 0aa9fbd @Aetherinox - update
.gitignore
: 0d667e3 @Aetherinox - assign new classes from
classes
folder to main process : c7ef861 @Aetherinox
n#### โจ Optimizations
- menus now wait on app to initialize before loading into memory : 1812db5 @Aetherinox
๐งน Housekeeping
- re-write build scripts, fix macos bugs with archive compression #116 : 2e11ecd @Aetherinox
- break up classes into separate folder
classes
#116 : 94a7e82 @Aetherinox - update eslint rules and dependencies #116 : 2e108b2 @Aetherinox
- update webpage templates #116 : 05e3e36 @Aetherinox
- electron menus migrated to class, and out of main.js #116 : faa2c47 @Aetherinox
- update comments : c218b28 @Aetherinox
- update url verification function to support localhost / self-hosted instances #116 : 1d89168 @Aetherinox
- add helper for variable getters : c38242f @Aetherinox
- update linter issues : 99e1c92 @Aetherinox
๐ฆ Build & Dependencies
- stop tracking
package-lock.json
: 9624c81 @Aetherinox - add
package.json
imports for loader : 41a0f53 @Aetherinox - update package dependencies : 75af126 @Aetherinox
- define
electron
types : 8f2659f @Aetherinox - (tests) add test suite to project : 50f6e1c @Aetherinox
- update
package.json
scripts to usenpx
: 07b902d @Aetherinox - bump project version to
v2.2.0
: 9531000 @Aetherinox