Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9c38657c46 |
+2
-2
@@ -18,11 +18,11 @@ Sunstone.zip
|
||||
|
||||
# Packaging build artifacts
|
||||
/dist/
|
||||
/packaging/arch/*.pkg.tar.zst
|
||||
/packaging/arch/src/
|
||||
/packaging/arch/pkg/
|
||||
|
||||
# Release artifacts (anywhere in the tree)
|
||||
# Prebuilt packages — distributed via the Releases page, never committed
|
||||
*.pkg.tar.zst
|
||||
*.deb
|
||||
*.flatpak
|
||||
|
||||
|
||||
@@ -1,26 +1,31 @@
|
||||
<p align="center">
|
||||
<img src="crates/sunstone-gtk/assets/sunstone-mark.svg" alt="Sunstone" width="120">
|
||||
</p>
|
||||
|
||||
# Sunstone
|
||||
|
||||
A native Linux desktop [nostr](https://nostr.com) client — GTK4 + libadwaita,
|
||||
written in Rust on [rust-nostr](https://github.com/rust-nostr/nostr).
|
||||
|
||||
Social feed, long-form articles, live streams, video, DMs, groups, calendar,
|
||||
and zaps. Outbox (gossip) model on by default. Feeds are chronological.
|
||||
Follows feed, long-form articles, live streams, video, DMs, groups, calendar,
|
||||
and zaps. Outbox (gossip) model on by default.
|
||||
|
||||
> Status: Im still adding things as I see fit. Most things should be stable. There will be bugs and Ill try not to break shit with updates.
|
||||
> I want add music notes and expand on that side of things.
|
||||
|
||||
> Status: usable daily-driver, pre-1.0. Things move fast and may break.
|
||||
|
||||
## Features
|
||||
|
||||
**Identity & keys**
|
||||
**Login**
|
||||
- Local `nsec`, stored NIP-49 encrypted (`ncryptsec`) behind a passphrase
|
||||
- NIP-46 remote signer (bunker) support
|
||||
- NIP-05 verification
|
||||
- NIP-46 remote signer (bunker) support
|
||||
|
||||
**Feed & posting**
|
||||
- Following feed + browse any relay; NIP-65 relay lists with gossip/outbox routing
|
||||
- Notes, replies and threads (NIP-01/10) with inline `@`-mention typeahead
|
||||
- Notes, replies and threads.
|
||||
- Quote reposts and reposts (NIP-18); reactions incl. NIP-30 custom emoji (NIP-25)
|
||||
- Polls (NIP-88), highlights (NIP-84)
|
||||
- Content warnings (NIP-36), deletions (NIP-09), comments (NIP-22)
|
||||
- Polls (NIP-88)
|
||||
- Content warnings (NIP-36), deletions (NIP-09).
|
||||
- Live note preview, broadcast to relays, seen-on-relays, and copy raw JSON
|
||||
|
||||
**Articles** — long-form (NIP-23): discovery (Following / second-degree Network /
|
||||
@@ -30,7 +35,6 @@ with system spellcheck, and your published + draft library.
|
||||
**Media & live**
|
||||
- Live streams with HLS playback + NIP-53 chat; adaptive quality, audio-only mode
|
||||
- Video (NIP-71); inline feed video; picture-in-picture
|
||||
- Media upload via NIP-96 / Blossom, NIP-92 `imeta`
|
||||
|
||||
**Zaps** — NIP-57 lightning zaps over a NIP-47 (NWC) wallet.
|
||||
|
||||
@@ -41,13 +45,13 @@ with system spellcheck, and your published + draft library.
|
||||
**Organize** — NIP-51 bookmarks, NIP-37 encrypted drafts, time-sectioned and
|
||||
grouped notifications (replies / mentions / reactions / reposts / zaps / poll votes).
|
||||
|
||||
**Proxy** — relay and media traffic can be routed through a SOCKS5/Tor proxy.
|
||||
**Proxy** — relay and media traffic can be routed through a SOCKS5/Tor proxy. I plan on adding internal TOR and I2P support soon.
|
||||
|
||||
## Install
|
||||
|
||||
There are no distro repositories yet. Prebuilt packages are built by hand and
|
||||
attached to the [Releases page](https://git.utn.lol/enki/sunstone/releases) —
|
||||
download one, or build from source.
|
||||
Download a prebuilt package for your distro from the
|
||||
[Releases page](https://git.utn.lol/enki/sunstone/releases), then install the
|
||||
downloaded file — or build from source.
|
||||
|
||||
### Flatpak (any distro)
|
||||
|
||||
@@ -67,7 +71,11 @@ sudo apt install ./sunstone_0.1.0-1_amd64.deb
|
||||
|
||||
### Arch Linux
|
||||
|
||||
No AUR package yet — build it from the bundled recipe:
|
||||
```sh
|
||||
sudo pacman -U sunstone-0.1.0-1-x86_64.pkg.tar.zst
|
||||
```
|
||||
|
||||
Or build it yourself:
|
||||
|
||||
```sh
|
||||
cd packaging/arch
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build a native Arch package (.pkg.tar.zst) from the current git HEAD, without
|
||||
# needing a published forge release. Uses the same recipe as ./PKGBUILD but
|
||||
# sources a tarball of the local checkout instead of downloading from the forge.
|
||||
# Build a native Arch package (.pkg.tar.zst) from the CURRENT WORKING TREE
|
||||
# (the files on disk right now), without needing a published forge release.
|
||||
#
|
||||
# This repo is synced across machines with Syncthing, so the on-disk tree —
|
||||
# not git HEAD — is the source of truth. We snapshot the working directory
|
||||
# (minus VCS metadata and heavy build/output dirs) and run makepkg on it, so
|
||||
# uncommitted/unpushed changes are included.
|
||||
#
|
||||
# Usage: packaging/arch/build-local.sh
|
||||
# Output: dist/sunstone-<ver>-<rel>-x86_64.pkg.tar.zst (in the repo root)
|
||||
@@ -9,7 +13,7 @@
|
||||
# Install the result with: sudo pacman -U dist/sunstone-*.pkg.tar.zst
|
||||
set -euo pipefail
|
||||
|
||||
repo_root="$(git -C "$(dirname "$0")" rev-parse --show-toplevel)"
|
||||
repo_root="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||
pkgbuild="$repo_root/packaging/arch/PKGBUILD"
|
||||
ver="$(awk -F\" '/^version = / {print $2; exit}' "$repo_root/Cargo.toml")"
|
||||
|
||||
@@ -17,11 +21,22 @@ distdir="$repo_root/dist"
|
||||
workdir="$(mktemp -d)"
|
||||
trap 'rm -rf "$workdir"' EXIT
|
||||
|
||||
echo ">> Packaging sunstone $ver from $(git -C "$repo_root" rev-parse --short HEAD)"
|
||||
echo ">> Packaging sunstone $ver from the working tree at $repo_root"
|
||||
|
||||
# tracked files only, extracted under sunstone/ to match _srcdir in PKGBUILD.
|
||||
git -C "$repo_root" archive --format=tar.gz --prefix="sunstone/" \
|
||||
-o "$workdir/sunstone-$ver.tar.gz" HEAD
|
||||
# Snapshot the working tree under sunstone/ (matches _srcdir in PKGBUILD),
|
||||
# excluding VCS metadata and heavy build/output dirs we don't want compiled in.
|
||||
tar czf "$workdir/sunstone-$ver.tar.gz" \
|
||||
--transform 's,^\./,sunstone/,' \
|
||||
--exclude='./.git' \
|
||||
--exclude='./.claude' \
|
||||
--exclude='./target' \
|
||||
--exclude='./build-dir' \
|
||||
--exclude='./.flatpak-builder' \
|
||||
--exclude='./dist' \
|
||||
--exclude='./design_handoff_*' \
|
||||
--exclude='./*.flatpak' \
|
||||
--exclude='./Sunstone.zip' \
|
||||
-C "$repo_root" .
|
||||
|
||||
# Local PKGBUILD: pin pkgver + swap the forge source for the local tarball.
|
||||
sed -e "s|^pkgver=.*|pkgver=$ver|" \
|
||||
|
||||
Reference in New Issue
Block a user