Blenderskool Blaze Versions Save

⚡ File sharing progressive web app built using WebTorrent and WebSockets

v3.0.1

9 months ago

This is a patch update with minor bug fixes and changes.

Changes:

  • Fix rendering of emojis as first character in nicknames. Thanks to @Dalfonzo
  • Add additional tracker for WebTorrent to increase reliability.
  • Update WebTorrent library version to 1.9.7

For all new features in v3, refer - https://github.com/blenderskool/blaze/releases/tag/v3.0.0

v3.0.0

1 year ago

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.

https://user-images.githubusercontent.com/21107799/210567425-2336079d-d092-4724-a989-97c7e28dc326.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.

Closes #132, #143, #151

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.

v2.1.3

2 years ago

This is a minor update that adds small features and fixes recent bugs.

Additions

  • Senders can now view transfer percentage! 🤞
  • Migrated automated Docker builds to GitHub actions 🔨 🐳
  • Add usage instructions for Blaze higher-level image in README.

Fixes

  • Fixed missing favicon in PWA when accessed using direct links.
  • Fixed Blaze higher-level image Dockerfile failing at installing node.
  • Update various packages with security vulnerabilities.
  • Update various linter warnings.
  • Update status check serverless function to check URL set in env variable.

Read more about above changes

v2.1.2

3 years ago

This is a minor update that adds small features and fixes some of the recently identified bugs.

Additions

  • Blaze badges! Readme of Blaze now shows new custom badges indicating some details about the project. This is powered by the serverless functions of Vercel. :tada:
  • Active link highlighting in the header. Thanks to @hashkazi00.
  • Better messaging when room names with unsupported characters are added in input.

Fixes:

  • Explicit 404 redirection when no routes are matched.
  • Extend 404 redirection to /app routes.
  • Fix window object accessed during pre-render, causing builds to fail.
  • Fix nginx config to proxy the HTTP requests to the server.
  • Update node version to 14.16.1. This change is also made in all Dockerfiles.
  • Update URLs to personal site and donations
  • Update year in the footer.

v2.1.1

3 years ago

This update fixes security vulnerabilities in some packages in dependencies.

v2.1.0

3 years ago

This update to Blaze brings a bunch of features and improvements thanks to Hacktoberfest 2020 :tada:

Introducing Instant Rooms :sparkles:

Rooms are a fundamental concept of Blaze that enables a group of users to share files with each other. Since Blaze allowed user-named rooms, there were situations when unexpected users joined a room just by guessing the name. Instant Rooms reduce these collisions by generating a unique room name which is random yet memorizable. These rooms are guaranteed to be empty while creation.

Here's a demo

A new section to copy/share room link has been added to encourage the user to share the room link with other devices when the room has less than 2 peers necessary for sharing files.

Other improvements

  • Update title of the page to match room name. Thanks to @omnone
  • Fix shared.txt file being shared when using share targets. Thanks to @cristicismas
  • Show copy link button when web share API is unavailable. Thanks to @abhishek-aa
  • Accessibility fixes of images. Thanks to @RotonEvan
  • Fix social link preview. Thanks to @sreejithNS
  • Improvements to tested browsers list. Thanks to @RedLinus
  • Update modals to close when pressing the escape key. Thanks to @sooster910
  • Add a slide and fade animation to toasts.

v2.0.0

3 years ago

TLDR; This is the biggest update to Blaze!

Blaze v2.0.0 marks a new milestone in the history of Blaze. I started this project almost 2 years ago to build an app that would make it simple to transfer files between my pc and mobile seamlessly. I never expected it to become # 1 Product of the day on Product Hunt and grow to this stage! With Blaze v2.0.0, the focus has been to improve stability, performance, and user experience of file-sharing altogether.

Major changes in v2.0.0 :confetti_ball:

  • Blaze now has a new look :zap:! This new look aligns better with the vision of Blaze.

  • The top-level Blaze project has been split into a standalone blaze-client and blaze-server project (in the same repo). This makes it easier to manage dependencies and keep the frontend and server decoupled from each other.

  • Blaze server has migrated from socket.io to a custom implementation using ws. This not only gives us more control over the WebSockets structure but also improves server performance :tada:

  • Blaze client has been rewritten using Preact. Preact was chosen as not only did it support all the needed features from React but also had a tiny footprint making it easy to transition from Svelte keeping the bundle sizes low. Preact CLI was used for project scaffolding which supports pre-rendering, pwa support out of the box. The major reasons for this rewrite were:

    • There were no mature frameworks for Svelte that supported pre-rendering required for some pages.
    • Tooling support was not up to the mark. (This was before Svelte released Typescript support)
    • There were issues with project structure and how styles were being written. A major restructuring of the project was necessary in any case.
  • Blaze client has shifted from using socket.io-p2p to using a new concept of Torrents for peer-to-peer file sharing. This has been made possible using this amazing WebTorrent project. :raised_hands:

  • The Blaze server now runs on DigitalOcean! Thank you DigitalOcean for sponsoring Blaze :blue_heart: :innocent:

Additions

  • Web Share target for sending files using the share tray of the devices after PWA is installed.
  • Option to share the link of the room using Web Share API.
  • More metadata for files being shared. These include:
    • If the file was sent or received.
    • An icon associated with the file type.
    • Who sent the file.
  • New How it works page to explain various steps during sharing files with Blaze.
  • New 404 page.
  • New loading animation built on the new logo of Blaze.
  • Google Analytics to the client for basic tracking.
  • New Docker images for both Blaze server and Blaze client.

Updates

  • No more file zipping during file transfer. This was done because unzipping had to be done manually and broke the user experience. The files are now sent as is.
  • Improved chunking by using file read streams.
  • Blaze client is updated to use a new font family - Jost.
  • Updated File sharing visualizer to support both WebTorrent and WebSocket transfers.
  • Moved to use feather icons instead of icomoon for better icons on the interface.
  • Illustrations are converted to SVGs from PNGs.
  • Improvements to Footer.
  • Improvements to how errors are communicated during file sharing.
  • Improvements to styling of different UI components to better align with the theme.
  • Updated README and added CONTRIBUTING.
  • Updated File room name to be maximum of 20 characters and include spaces

What happened to Blaze v1.0.0?

The previous release of Blaze was versioned v1.0.0-beta.3. The changes in this update were so huge, I decided to call it a 2.0.0 release instead of just bumping it to 1.0.0.