hyperspace

授权协议 View license
开发语言 Java
所属分类 手机/移动开发、 Android UI 组件
软件类型 开源软件
地区 不详
投 递 者 能远
操作系统 Android
开源组织
适用人群 未知
 软件概览

Hyperspace Desktop

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

Build Status

Socialize and communicate with your friends in the fediverse (ActivityPub-powered social networks like Mastodon and Pleroma) with Hyperspace Desktop. Browse your timelines, check in with friends, and share your experiences across the fediverse in a beautiful, clean, and customizable way.

What Hyperspace Desktop offers:

  • A clean, responsive, and streamlined design that fits in with your Mac
  • Support for switching between accounts to access the accounts you use the most
  • Customization support, ranging from several beautiful themes to masonry layout and infinite scrolling
  • Powerful toot composer with media uploads, emojis, and polls
  • Activity and recommended views that give you insight on the community/instance you reside in

Get started

Hyperspace Desktop is available for the major desktop platforms via our downloads page, GitHub, and other store platforms where applicable.

Download from our website ›

Download from a store

via WinGet:

winget install HyperspaceDesktop

Build from source

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

  • Node.js v10 or later
  • (macOS-only) Xcode 10 or higher

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

Run any of the following scripts to test:

  • npm start - Starts a local server hosted at https://localhost:3000.
  • npm run electron:build - 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 electron:prebuilt - Similar to electron:build but doesn't build the project before running.

The location key in config.json 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.

Note: Hyperspace Desktop v1.1.0-beta3 and older versions require the location field to be changed to "https://localhost:3000" 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 apps

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

  • npm run build:desktop-all: Builds the desktop apps for all platforms (eg. Windows, macOS, Linux). Will run npm run build before building.
  • npm run build:win: Builds the desktop app for Windows without running npm run build.
  • npm run build:mac: Builds the desktop apps for macOS without running npm run build. See the details below for more information on building for macOS.
  • npm run build:mas: Builds the desktop apps for the Mac App Store without running npm run build. See the details below for more information on building for macOS.
  • npm run build:linux: Builds the desktop apps for Linux (eg. Debian package, AppImage, and Snap) without running npm run build.
  • npm run build:linux-select-targets: Builds the desktop app for Linux without running npm run build. Targets are required as parameters.

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

Extra steps for macOS

The macOS builds of Hyperspace Desktop require a bit more effort and resources to build and distribute accordingly. The following is a quick guide to building Hyperspace Desktop for macOS and for the Mac App Store.

Gather your tools

To create a code-signed and notarized version of Hyperspace Desktop, you'll need to acquire some provisioning profiles and certificates from a valid Apple Developer account.

For certificates, make sure your Mac has the following certificates installed:

  • 3rd Party Mac Developer Application
  • 3rd Party Mac Developer Installer
  • Developer ID Application
  • Developer ID Installer
  • Mac Developer

The easiest way to handle this is by opening Xcode and going to Preferences › Accounts and create the certificates from "Manage Certificates".

You'll also need to create a provisioning profile for Mac App Store distribution and save it to the desktop folder as embedded.provisonprofile.

Create your entitlements files

You'll also need to create the entitlements files in the desktop directory that declares the permissions for Hyperspace Desktop. Replace TEAM_ID with the appropriate Apple Developer information and BUNDLE_ID with the bundle ID of your app.

entitlements.mac.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
    <key>com.apple.security.files.user-selected.read-write</key>
    <true/>
  </dict>
</plist>
entitlements.mas.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>com.apple.security.cs.allow-jit</key>
	<true/>
	<key>com.apple.security.network.client</key>
	<true/>
	<key>com.apple.security.app-sandbox</key>
	<true/>
	<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
	<true/>
	<key>com.apple.security.application-groups</key>
	<array>
		<string>TEAM_ID.BUNDLE_ID</string>
	</array>
	<key>com.apple.security.files.user-selected.read-only</key>
	<true/>
	<key>com.apple.security.files.user-selected.read-write</key>
	<true/>
</dict>
</plist>
entitlements.mas.inherit.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
	<dict>
	<key>com.apple.security.app-sandbox</key>
	<true/>
	<key>com.apple.security.inherit</key>
	<true/>
	<key>com.apple.security.cs.allow-jit</key>
	<true/>
	<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
	<true/>
	</dict>
</plist>
entitlements.mas.loginhelper.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
  </dict>
</plist>
info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>ElectronTeamID</key>
	<string>TEAM_ID</string>
	<key>com.apple.developer.team-identifier</key>
	<string>TEAM_ID</string>
	<key>com.apple.application-identifier</key>
	<string>TEAM_ID.BUNDLE_ID</string>
</dict>
</plist>
Edit notarize.js

You'll also need to edit notarize.js in the desktop directory. Replace <TEAM_ID>, <BUNDLE_ID>, and <APPLE_DEVELOPER_EMAIL> with the appropriate information from the app and your account from Apple Developer.

// notarize.js
// Script to notarize Hyperspace for macOS
// © 2019 Hyperspace developers. Licensed under Apache 2.0.

const { notarize } = require("electron-notarize");

// This is pulled from the Apple Keychain. To set this up,
// follow the instructions provided here:
// https://github.com/electron/electron-notarize#safety-when-using-appleidpassword
const password = `@keychain:AC_PASSWORD`;

exports.default = async function notarizing(context) {
    const { electronPlatformName, appOutDir } = context;
    if (electronPlatformName !== "darwin") {
        return;
    }

    console.log("Notarizing Hyperspace...");

    const appName = context.packager.appInfo.productFilename;

    return await notarize({
        appBundleId: "<BUNDLE_ID>",
        appPath: `${appOutDir}/${appName}.app`,
        appleId: "<APPLE_DEVELOPER_EMAIL>",
        appleIdPassword: password,
        ascProvider: "<TEAM_ID>"
    });
};

Note that the password is pulled from your keychain. You'll need to create an app password and store it in your keychain as AC_PASSWORD.

Build the apps

Run any of the following commands to build Hyperspace Desktop for the Mac:

  • npm run build:mac - Builds the macOS app in a DMG container.
  • npm run build:mac-unsigned - Similar to build:mac, but skips code signing and notarization. Use only for CI or in situations where code signing and notarization is not available.
  • npm run build:mas - Builds the Mac App Store package.

Licensing and Credits

Hyperspace Desktop 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 Desktop user/developer in the license for more information.

Hyperspace Desktop 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.

  • 命令:hyperspace  [hyperspace_ip:port]。 hyperspace命令可连接至hyperspace,并执行下列命令: mkdir ............. Creates a directory in Hyperspace mkdirs ............ Creates all paths leading upto and including director

  • Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 136    Accepted Submission(s): 66 Problem Description The great Mr.Smith has inven

  • Hyperspace初体验:Delta Lake表索引 1.简介 Hyperspace是一个由微软开发的开源的数据湖索引子系统。 1.1 特性 提供了一套定义完好的索引管理API (4.1 建索引, 5.2 增量刷新) 为用户提供更大的自由度,毕竟用户是最了解自己用例的人 不尝试去解决所有问题,有些问题没有固定答案 独立于数据和元数据,索引有自己的元数据/日志(4.2 Hyperspace日志)

  • We are excited to announce the release of Hyperspace 0.4.0! Notable new features / improvements: Delta Lake support: Hyperspace v0.4.0 supports creating index on Delta Lake tables. Please refer to the

  • 学了一下圆方树, 好神奇的东西呀。 #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #define PLI pair<LL, int> #define PII pair<int, int> #de

  • 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4666 题意:两种操作:(1)增加一个点到序列中;(2)删除序列中的某个点。在每次操作之后,输出序列中曼哈顿距离最远的两个点之间的距离。点最大为5维。 思路:我们先看二维空间的点,设两个点为(x1,y1),(x2,y2),那么曼哈顿距离为|x1-x2|+|y1-y2|,现在我们去掉绝对值,那么有四种情况

  • The great Mr.Smith has invented a hyperspace particle generator. The device is very powerful. The device can generate a hyperspace. In the hyperspace, particle may appear and disappear randomly. At th

  • 题目大意:给一张$n$个点$m$条边的图,保证若有一个环,一定是完全子图,多次询问两个点之间的最短路径长度 题解:把完全子图缩成一个点,圆方树,方点权值设成$1$,圆点设成$0$即可。 卡点:数组开小   C++ Code: #include <cstdio> #include <algorithm> #define maxn 100010 #define maxm 500010 inline i

  • Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 1219    Accepted Submission(s): 580 Problem Description The great Mr.Smith has inv

  • hyperspace dir : ------------------------------------------------------------------ / hypertable master[address, next_server_id, lock.generation] namemap ids 3 [lock.generation, name] 4 [lock.generati

  • Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 637    Accepted Submission(s): 287 Problem Description The great Mr.Smith has inve