The new beautiful, fluffy client for the fediverse written in TypeScript and React
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:
Hyperspace Desktop is available for the major desktop platforms via our downloads page, GitHub, and other store platforms where applicable.
via WinGet:
winget install HyperspaceDesktop
To build Hyperspace Desktop, you'll need the following tools and packages:
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
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:
npm start
or running via react-scripts
.Note: Hyperspace Desktop v1.1.0-beta3 and older versions require the location field to be changed to
"https://localhost:3000"
before running.
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.
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.
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.
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:
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
.
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.
<?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>
<?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>
<?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>
<?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>
<?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>
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
.
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.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.
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