Il client per il fediverso. Socializza e comunica con i tuoi amici nel fediverso (social network alimentati da ActivityPub come Mastodon e Pleroma) con Hyperspace Desktop. https://mastodon.uno/about
Go to file
Marquis Kurt 931244cb5a
Pull changes from b4
2020-02-16 14:20:50 -05:00
.github Remove change verfication 2019-12-23 15:02:45 -05:00
desktop Update version number 2019-09-17 16:01:28 -04:00
public Upgrade license to NPLv4 2020-01-13 20:48:51 -05:00
src Pull changes from b4 2020-02-16 14:20:50 -05:00
.gitignore Update .gitignore, add more menu options to desktop app 2019-09-17 17:08:14 -04:00
.prettierrc Add Prettier to fix code styles 2019-09-18 13:44:10 -04:00
LICENSE.txt Upgrade license to NPLv4 2020-01-13 20:48:51 -05:00
MIGRATING.md Update README 2019-05-12 15:07:35 -04:00
README.md Upgrade license to NPLv4 2020-01-13 20:48:51 -05:00
package-lock.json Update package-lock.json 2019-12-22 16:19:09 -05:00
package.json Bump package version to 1.1.0-beta4 2020-01-25 15:46:36 -05:00
patreon.md Add Patreon contributors list 2019-05-19 13:09:22 -04:00
screenshot.png Update screenshot 2019-10-04 13:51:58 -04:00
tsconfig.json Perform regression on tsconfig.json 2019-08-05 21:54:00 -04:00

README.md

“Hyperspace”

Hyperspace

The new beautiful, fluffy client for the fediverse written in TypeScript and React

Hyperspace 1.0 on a MacBook Pro

Matrix room Discord server Build Status GitHub release (latest SemVer including pre-releases) License: NPLv4+ Hyperspace

Hyperspace is the fluffiest client for Mastodon and other fediverse networks written in TypeScript and React. Hyperspace offers a fun, clean, fast, and responsive design that scales beautifully across devices and enhances the fediverse experience.

Features

  • Responsive by design: Hyperspace is beautifully designed to put your content front and center and bring a familiar experience to Mastodon. View threads and profiles with ease and compose anywhere with the compose button. And, of course, Hyperspace scales across devices beautifully, providing the same experience anywhere.
  • Customizable: Hyperspace allows customization and configuration at every level, from the server level with branding and instance setup, down to the user level with dark mode, custom themes, and multi-user account support. And, if the default configuration settings aren't enough, anyone can make their own version of Hyperspace with custom additions.
  • Open-source: Hyperspace is free (libre) and open-source software. Licensed under the Non-Violent Public License, anyone can modify, redistribute, or contribute to the Hyperspace project without restriction. Hyperspace is written in TypeScript and takes advantage of multiple open-source libraries and projects such as React, Megalodon, and Material-UI, so web and Node.js developers will feel right at home.

If you've used Hyperspace 0.x, you'll note many changes with the 1.x and later series. You can learn more about these changes in the migration article.

Downloads

Hyperspace is available for download on GitHub as well as other platforms.

Get latest release

Get on the Snap Store

Looking for the Mac App Store version? Read more

Build instructions

Prerequisites

To develop Hyperspace, you'll need the following tools and packages:

  • Node.js 8 or later

Installing dependencies

First, clone the repository from GitHub:

git clone https://github.com/hyperspacedev/hyperspace

Then, in the app directory, run the following command to install all of the package dependencies:

npm install

Testing changes

Before testing Hyperspace, you'll need to modify the location key in public/config.json. For example:

    "location": "https://localhost:3000"

The location key can take the following values during testing:

  • https://localhost:3000: Most suitable for running npm start or running via react-scripts.
  • desktop: Most suitable for when testing the desktop application.

After changing this setting, run any of the following scripts to test:

  • npm start - Starts a local server hosted at https://localhost:3000.
  • npm run electrify - Builds a copy of the source code and then runs the app through Electron. Ensure that the location key in config.json points to "desktop" before running this.
  • npm run electrify-nobuild - Similar to electrify but doesn't build the project before running.

Building a release

To build a release, run the following command:

npm run build

The built files will be available under build as static files that can be hosted on a web server. If you plan to release these files alongside the desktop apps, compress these files in a ZIP.

Building desktop releases

You can run any of the following commands to build a release for the desktop:

  • npm run build-desktop: Builds the desktop apps for all platforms (eg. Windows, macOS, Linux). Will run npm run build before building.
  • npm run build-desktop-win: Builds the desktop app for Windows without running npm run build.
  • npm run build-desktop-darwin: Builds the desktop apps for macOS (eg. disk image, Mac App Store) without running npm run build. See the details below for more information on building for macOS.
  • npm run build-desktop-linux: Builds the desktop apps for Linux (eg. Debian package, AppImage, and Snap) without running npm run build.
  • npm run build-desktop-linux-select: Builds the desktop app for Linux without running npm run build. Target is required as a parameter.

The built files will be available under dist that can be uploaded to your app distributor or website.

Building for macOS

More recent version of macOS require that the Hyperspace desktop app be both digitally code-signed and notarized (uploaded to Apple to check for malware). Hyperspace includes the tools necessary to automate this process when building the macOS version either by npm run build-desktop or by npm run build-desktop-darwin.

Make sure you have your provisioning profiles for the Mac App Store (embedded.provisionprofile) and standard distribution (nonmas.provisionprofile) in the desktop directory. These provision profiles can be obtained through Apple Developer. You'll also need to create entitlements files in the desktop directory that list the following entitlements for your app:

  • com.apple.security.app-sandbox
  • com.apple.security.files.downloads.read-write
  • com.apple.security.files.user-selected.read-write
  • com.apple.security.allow-unsigned-executable-memory
  • com.apple.security.network.client

For the child ones (inherited entitlements.mas.inherit.plist):

  • com.apple.security.app-sandbox
  • com.apple.security.inherit
  • com.apple.security.files.downloads.read-write
  • com.apple.security.files.user-selected.read-write
  • com.apple.security.allow-unsigned-executable-memory
  • com.apple.security.network.client

⚠️ Note that the inherited permissions are the same as that of the parent. This is due to an issue where the hardened runtime fails to pass down the inherited properties (see electron/electron#20560). This might change in future versions of macOS.

It is also recommended to add the com.apple.security.applications-groups entry with your bundle's identifier. You'll also need to create an info.plist in the desktop directory containing the team identifier and application identifier and install the developer certificates on the Mac you plan to build from.

You'll also want to modify the notarize.js file to change the details from the default to your App Store Connect account details and app identifier.

⚠️ Warning: The package.json file also includes the build-desktop-darwin-nosign script. This script is specifically intended for automated systems that cannot run notarization (Azure Pipelines, GitHub Actions, etc.). Do not use this command to build production-ready versions of Hyperspace.

Licensing and Credits

Hyperspace is licensed under the Non-violent Public License v4+, a permissive license under the conditions that you do not use this for any unethical purposes and to file patent claims. Please read what your rights are as a Hyperspace user/developer in the license for more information.

Hyperspace has been made possible by the React, TypeScript, Megalodon, and Material-UI projects as well our Patrons and our contributors on GitHub.

Contribute

Contribution guidelines are available in the contributing file and when you make an issue/pull request. Additionally, you can access our Code of Conduct.

If you want to aid the project in other ways, consider supporting the project on Patreon.