This PR provides an initial implementation for the Latreutes desktop application. Specifically, it:
Provides a first-iteration implementation for #1 based on the approach described in https://github.com/sargassum-eco/latreutes/issues/1#issuecomment-900153936 : the user must copy ZeroTier's authtoken.secret file into a directory accessible to Latreutes (e.g. on Linux it's at ~/.config/sargassum/latreutes), and then Latreutes will automatically load the ZeroTier One auth token from that copy of the file. This PR also provides a one-click way for the user to copy that file on Linux (specifically, any system which provides the pkexec command from PolicyKit), buried in a bunch of instructions; on macOS and Windows, the user still needs to manually copy the file.
Resolves #2 by displaying information about each network and peer inside accordions in an "entity info card" UI element per network/peer
Resolves #3 by displaying information about the node on the home screen, in an "info panel" UI element
Resolves #4 by providing a button to leave a network inside an accordion in the entity info card for the network
Resolves #5 and resolves #7 by providing a wizard sidepanel (with a modal interaction style) to join a network, with a non-default form option to join the network by its ZeroTier network ID, and with a default form option to join the network by its domain name (which causes a lookup at the domain name for a DNS TXT record of format zerotier-net-id=8056c2e21c000001.
Resolves #8 by using Chakra UI as a very flexible and easy-to-use UI components library.
Resolves #9 by using React Query to perform and cache HTTP API requests in a reasonably simple way.
Resolves #11 by defaulting to displaying the names of ZeroTier networks as their network ID in a monospace font (where the node address component is highlighted in pastel blue and the network number component is highlighted in pastel green) combined with their self-declared network name in the Atkinson Hyperlegible font (which helps disambiguate capital-i with lowercase-L and makes each character distinctly recognizable) in bold; this is not as usable, but it's what would get displayed for untrusted and non-Sargassum networks. When a network's self-declared name is domain name which has a TXT record pointing to the network's ZeroTier network ID (which is part of the specifications for Sargassum networks), then only that domain name is shown (in Atkinson Hyperlegible bold font), because it's confirmed to be a unique name - and this is a human-readable, actually usable name.
Additionally, it improves the Github Actions workfows by having build artifacts be attached to the job rather than having them try to be uploaded into a new tagged release; and it adds an automatic build for the aarch64 architecture (however, Debian and Ubuntu expect the arm64 architecture, which is equivalent except for the name; building for ARM64 on Ubuntu 18.04 should still be done manually; and the built binary does not work properly on Ubuntu 18.04 with the NVIDIA Jetson Nano).
This PR provides an initial implementation for the Latreutes desktop application. Specifically, it:
~/.config/sargassum/latreutes
), and then Latreutes will automatically load the ZeroTier One auth token from that copy of the file. This PR also provides a one-click way for the user to copy that file on Linux (specifically, any system which provides thepkexec
command from PolicyKit), buried in a bunch of instructions; on macOS and Windows, the user still needs to manually copy the file.zerotier-net-id=8056c2e21c000001
.Additionally, it improves the Github Actions workfows by having build artifacts be attached to the job rather than having them try to be uploaded into a new tagged release; and it adds an automatic build for the aarch64 architecture (however, Debian and Ubuntu expect the arm64 architecture, which is equivalent except for the name; building for ARM64 on Ubuntu 18.04 should still be done manually; and the built binary does not work properly on Ubuntu 18.04 with the NVIDIA Jetson Nano).