Blaze v3.0.0 ⚡
TLDR; Bunch of new features and improvements to Blaze!
Personal note
v3.0.0 marks a new milestone for Blaze. It's been 4 years since I started Blaze project and I never thought I'd be maintaining it for this long! The goal back then was — To make peer-to-peer file sharing as seamless as possible across different networks and devices which is true even to this day. I learnt various things from my time maintaining Blaze as a FOSS project which I shared in a talk at IndiaFOSS 2.0 last year.
blaze-v3.mp4
3 Major changes in v3.0.0 ⚡️
With Blaze v3.0.0, the focus has been to introduce new features and refinements to improve the flow of file sharing. This time, I made a public roadmap so that anyone could pickup tasks / suggest new features. This worked great for the major version bump, but I won't be maintaining this for upcoming minor releases.
1. Knock, knock! Who's there? It's Local file sharing room! 🏠
Rooms in Blaze allow multiple devices to share files with each other. Until now, all these rooms were public on the internet and anyone could join if they had(or guessed) the room name. One of the special and more common use-case that I personally observed was that most of us have multiple devices on our home networks and often, it's between these devices that we share the most amount of files.
Blaze v3 brings a special room called "Local network" room for sharing files with your devices in your local network. No one can explicitly join this kind of room without actually connecting to your local network! On a technical level, It makes use of the public IP addresses of the devices for creating these groups, and thus works great if there's a NAT in place that maps individual IP addresses of different devices to a single public IP address.
If for whatever reason, Blaze is not able to detect devices in your local network, you can easily join a named room like before to share files, no changes there 🙂
Closes #65
2. New settings & support pages ⚙️ 💚
One of the confusing aspects of Blaze was how the nickname system worked. There were cases where people trying out Blaze for the first time set same nicknames on two different devices and when they joined a common file sharing room, one of the devices could not join(because of the clashing nicknames). Unfortunately, there was no way for the user to resolve this without clearing the site data.
Blaze v3 brings a settings page that has option to edit your nickname and even clear all the locally stored data by Blaze. This page can be updated more in the future as and when new options make sense for this page. Additionally a support page has also been added which lists down various ways of supporting this project 💚
Closes #25
3. Redesigns 💄
One of the most distinctive visual change in the Blaze app UI is the bottom tabs section which provides navigation to new pages added(as mentioned above). Other redesigns can be seen in the Rooms page where each room also shows the last join time, and the new user onboarding screen for entering nickname which also gives some context of what nicknames do.
If you have a keen eye, you'll notice fresh new UI animations in the app! There are animations when entering / exiting pages, and also in the file transfer visualizer with smoooooth spring animations indicating peers joining / leaving rooms.
Other changes
- Option to show a QR code for sharing the room link, that other devices can scan. Closes #126
- Install button in the UI to install the Blaze PWA.
- App shortcuts for joining local network / instant file sharing room directly from the home screen. Thanks to @gVirtu
- Sending a file from clipboard by simply pasting it in the file sharing room. Closes #109
- Updated version of WebTorrent library to v1.9.6. This is a substantial version bump as Blaze v2 was using 0.x version of WebTorrent.
Minor changes & Bug fixes 🐛
- Fixed issue in rejoining a file sharing room when network connectivity was interrupted. Fixes #84.
- Fixed memory leak in the file transfer visualizer animation loop.
- Fixed room name matching logic to trim leading / trailing whitespaces and convert all non-alphanumeric characters in URL to spaces.
- Fixed styles of
outlined
variant buttons causing layout shifts. - Fixed height of the Blaze app on mobiles(with keyboard open).
- Fixed default margins around buttons on Safari.
- Fixed "Join an Instant room" overflowing to new line on small screens. Thanks @Medmly20208
- Fixed typos and copy in the UI.
- Updated
Donate
link on home page to GitHub sponsors link. - Updated usage of Blaze logo to svg imports instead of embedded svgs.
- Updated backdrop blur of Modals.
- Updated versions of various dependencies to the latest releases wherever possible.
- Updated supported Node.js version to 16.19.0 LTS.
- Updated default NGINX config to proxy server-side-events endpoints correctly. These are used in the local rooms feature.
- Added help descriptions while creating / joining a named / instant room.
- Added new size variants of buttons and new shades of accent color in the default palette.
- Added
DISABLE_SSE_EVENTS
environment variable to server for disabling server-side-events. - Added
TRUST_PROXY
environment variable to server which tells the server if the reverse proxy is to be trusted with the IP addresses it is forwarding. Set to true by default for Docker containers. - Replaced shortid with nanoid because of deprecation.
- Replaced node-sass with sass because of deprecation.
- Refactored reading / writing local storage logic to use react-localstorage-hooks. The abstractions provided in this library was being built within Blaze so it was extracted out as a separate standalone library!
- Refactored forms using React state for storing form data to use of uncontrolled components.