41 Commits

Author SHA1 Message Date
6ed4be029a Merge pull request #40 from RoboSats/v0.8.1-alpha
Update to v0.8.1-alpha
2025-08-12 15:58:05 +00:00
f1e4731cbf v0.8.1-alpha 2025-08-12 17:44:34 +02:00
8d6966233f Merge pull request #38 from RoboSats/v0.8.0-alpha
v0.8.0-alpha
2025-07-14 20:05:17 +00:00
79eab20760 v0.8.0-alpha 2025-07-14 15:12:17 +02:00
1b2ca3f28a Merge pull request #37 from Start9Labs/master
Re-enable LAN (.local) URL on StartOS
2025-06-30 10:59:24 +00:00
12a62f896f Turn on LAN URL after robosats-079 chat bugfix (#6)
* Turn on LAN URL after robosats-079 chat bugfix

* stop warning about needing Tor

* Add release note about enabling of LAN web interface
2025-06-30 03:54:59 +00:00
0fdee03050 Merge pull request from RoboSats/robosats-startos
Update to RoboSats v0.7.9-alpha
2025-06-26 14:22:08 -06:00
d6f1fac86c Merge pull request #36 from RoboSats/v0.7.9-alpha
Update to v0.7.9-alpha
2025-06-26 10:11:45 +00:00
beba7b49e7 Update to v0.7.9-alpha 2025-06-26 12:10:33 +02:00
c5d6bda9cb Merge pull request #35 from RoboSats/update-v0.7.8-alpha
Update v0.7.8-alpha
2025-05-27 19:05:11 +00:00
4dc34563f2 Update v0.7.8-alpha 2025-05-27 21:02:54 +02:00
b147abd08d Merge pull request #34 from RoboSats/Update/v0.7.7-alpha
v0.7.7-alpha
2025-05-04 16:35:23 +00:00
f9c5a41c45 v0.7.7-alpha 2025-05-04 18:34:52 +02:00
3f1d2fff07 Merge branch 'RoboSats:master' into master 2025-04-09 17:12:31 +00:00
1227f95d29 Merge pull request #33 from RoboSats/Update/v0.7.6-alpha
Update v0.7.6-alpha
2025-04-09 10:54:58 +00:00
57404e40ad Update v0.7.6-alpha 2025-04-09 12:54:32 +02:00
a8860d82b7 Get rid of unnecessary make clean line 2025-03-30 22:26:50 -06:00
d247820324 Merge pull request #32 from Start9Labs/update/v0.7.5-alpha
Update RoboSats v0.7.5-alpha
2025-03-24 08:05:45 +00:00
884eb2ec3d Update RoboSats v0.7.5-alpha 2025-03-23 23:05:44 -06:00
325a171934 Merge pull request #31 from RoboSats/Update/v0.7.5-alpha
Update v0.7.5-alpha
2025-03-23 08:59:07 +00:00
79e5cc8d57 Update v0.7.5-alpha 2025-03-23 09:58:33 +01:00
46449095f3 Merge pull request #29 from Start9Labs/master
update/v0.7.4
2025-03-23 08:56:14 +00:00
9b26310671 update/v0.7.4-alpha 2025-03-14 20:59:46 +00:00
f61aac128f Remove redundant bundle.ts 2025-02-25 22:15:27 -07:00
8a3532bdcd Revert repo URL to github.com/start9labs/ 2025-02-25 22:12:54 -07:00
cd55317960 Update to v0.74-alpha 2025-02-25 21:51:15 -07:00
80a8f6a46b Merge branch 'RoboSats:master' into master 2025-02-25 16:36:10 -05:00
b1d403e7b5 Merge pull request #28 from RoboSats/Update/v0.7.4-alpha
Update/v0.7.3-alpha
2025-02-22 16:17:07 +00:00
e2bd51aee7 Update/v0.7.3-alpha 2025-02-22 17:16:40 +01:00
26b5d8af91 Merge branch 'RoboSats:master' into master 2025-02-20 12:58:29 -05:00
a6af49c26f Merge pull request #27 from gStart9/update/v0.7.3-alpha
Update/v0.7.3-alpha
2025-02-15 13:04:13 +00:00
2e67f21f23 Implement build and publish workflows 2025-01-30 17:19:21 +01:00
11bcf2b40e Update/v0.7.3-alpha 2024-11-24 10:50:11 -07:00
bb155f78c0 Merge pull request #25 from gStart9/update/v0.7.1-alpha
Update/v0.7.1-alpha
2024-11-05 17:11:46 +00:00
415289caf4 Update RoboSats-client to v0.7.1-alpha 2024-10-19 13:26:40 -06:00
44676a5f4e Remove release note about LAN access being restored 2024-10-16 11:24:28 -06:00
5937808858 Remove .local LAN access, update license year 2024-10-16 11:22:42 -06:00
407dd513c2 Merge pull request #23 from gStart9/update/v0.7.0-alpha(+1ba8183)
Update to RoboSats client v0.7.0 (+1ba8183)
2024-09-16 22:45:42 +00:00
5aaf5c60bd Update to RoboSats client v0.7.0 (+1ba8183) 2024-09-13 16:29:50 -06:00
087b0b5419 v060 update (#21) 2024-03-29 01:52:45 +00:00
a44b3f5036 Update/v0.5.3 (#18)
* Several copy fixes and improvements

* Remove config, minor copy edits to reflect same
2023-10-19 14:39:41 -06:00
13 changed files with 179 additions and 73 deletions

37
.github/workflows/buildService.yml vendored Normal file
View File

@ -0,0 +1,37 @@
name: Build Service
on:
workflow_dispatch:
pull_request:
paths-ignore: ['*.md']
branches: ['main', 'master']
push:
paths-ignore: ['*.md']
branches: ['main', 'master']
jobs:
BuildPackage:
runs-on: ubuntu-latest
steps:
- name: Prepare StartOS SDK
uses: Start9Labs/sdk@v1
- name: Checkout services repository
uses: actions/checkout@v4
- name: Build the service package
id: build
run: |
git submodule update --init --recursive
start-sdk init
make
PACKAGE_ID=$(yq -oy ".id" manifest.*)
echo "package_id=$PACKAGE_ID" >> $GITHUB_ENV
printf "\n SHA256SUM: $(sha256sum ${PACKAGE_ID}.s9pk) \n"
shell: bash
- name: Upload .s9pk
uses: actions/upload-artifact@v4
with:
name: ${{ env.package_id }}.s9pk
path: ./${{ env.package_id }}.s9pk

72
.github/workflows/releaseService.yml vendored Normal file
View File

@ -0,0 +1,72 @@
name: Release Service
on:
push:
tags:
- 'v*.*'
jobs:
ReleasePackage:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Prepare StartOS SDK
uses: Start9Labs/sdk@v1
- name: Checkout services repository
uses: actions/checkout@v4
- name: Build the service package
run: |
git submodule update --init --recursive
start-sdk init
make
- name: Setting package ID and title from the manifest
id: package
run: |
echo "package_id=$(yq -oy ".id" manifest.*)" >> $GITHUB_ENV
echo "package_title=$(yq -oy ".title" manifest.*)" >> $GITHUB_ENV
shell: bash
- name: Generate sha256 checksum
run: |
PACKAGE_ID=${{ env.package_id }}
printf "\n SHA256SUM: $(sha256sum ${PACKAGE_ID}.s9pk) \n"
sha256sum ${PACKAGE_ID}.s9pk > ${PACKAGE_ID}.s9pk.sha256
shell: bash
- name: Generate changelog
run: |
PACKAGE_ID=${{ env.package_id }}
echo "## What's Changed" > change-log.txt
yq -oy '.release-notes' manifest.* >> change-log.txt
echo "## SHA256 Hash" >> change-log.txt
echo '```' >> change-log.txt
sha256sum ${PACKAGE_ID}.s9pk >> change-log.txt
echo '```' >> change-log.txt
shell: bash
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
name: ${{ env.package_title }} ${{ github.ref_name }}
prerelease: true
body_path: change-log.txt
files: |
./${{ env.package_id }}.s9pk
./${{ env.package_id }}.s9pk.sha256
- name: Publish to Registry
env:
S9USER: ${{ secrets.S9USER }}
S9PASS: ${{ secrets.S9PASS }}
S9REGISTRY: ${{ secrets.S9REGISTRY }}
run: |
if [[ -z "$S9USER" || -z "$S9PASS" || -z "$S9REGISTRY" ]]; then
echo "Publish skipped: missing registry credentials."
else
start-sdk publish https://$S9USER:$S9PASS@$S9REGISTRY ${{ env.package_id }}.s9pk
fi

View File

@ -1,12 +1,13 @@
FROM recksato/robosats-client:v0.5.2-alpha
FROM recksato/robosats-client:v0.8.1-alpha
RUN apk add bash curl sudo tini wget yq; \
rm -f /var/cache/apk/*
ENV APP_HOST robosats.embassy
ENV APP_PORT 12596
ENV TOR_PROXY_IP embassy
ENV TOR_PROXY_PORT 9050
ENV APP_HOST=robosats.embassy
ENV APP_PORT=12596
ENV TOR_PROXY_IP=embassy
ENV TOR_PROXY_PORT=9050
ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh
RUN chmod a+x /usr/local/bin/*.sh
RUN chmod a+x *.sh

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2022 Start9 Labs
Copyright (c) 2025 Start9 Labs
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -8,10 +8,10 @@ TS_FILES := $(shell find ./ -name \*.ts)
all: verify
verify: $(PKG_ID).s9pk
embassy-sdk verify s9pk $(PKG_ID).s9pk
start-sdk verify s9pk $(PKG_ID).s9pk
install: $(PKG_ID).s9pk
embassy-cli package install $(PKG_ID).s9pk
start-cli package install $(PKG_ID).s9pk
clean:
rm -rf docker-images
@ -19,8 +19,16 @@ clean:
rm -f $(PKG_ID).s9pk
rm -f scripts/*.js
# for rebuilding just the arm image. will include docker-images/x86_64.tar into the s9pk if it exists
arm: docker-images/aarch64.tar scripts/embassy.js
start-sdk pack
# for rebuilding just the x86 image. will include docker-images/aarch64.tar into the s9pk if it exists
x86: docker-images/x86_64.tar scripts/embassy.js
start-sdk pack
scripts/embassy.js: $(TS_FILES)
deno bundle scripts/embassy.ts scripts/embassy.js
deno run --allow-read --allow-write --allow-env --allow-net scripts/bundle.ts
docker-images/x86_64.tar: Dockerfile docker_entrypoint.sh
mkdir -p docker-images
@ -30,5 +38,5 @@ docker-images/aarch64.tar: Dockerfile docker_entrypoint.sh
mkdir -p docker-images
docker buildx build --tag start9/$(PKG_ID)/main:$(PKG_VERSION) --platform=linux/arm64 --build-arg PLATFORM=arm64 -o type=docker,dest=docker-images/aarch64.tar .
$(PKG_ID).s9pk: manifest.yaml instructions.md LICENSE icon.png scripts/embassy.js docker-images/aarch64.tar docker-images/x86_64.tar
embassy-sdk pack
$(PKG_ID).s9pk: manifest.yaml instructions.md LICENSE icon.png scripts/embassy.js docker-images/x86_64.tar docker-images/aarch64.tar
start-sdk pack

View File

@ -1,5 +1,5 @@
# Wrapper for RoboSats
RoboSats is a simple and private bitcoin exchange
A simple and private Lightning P2P exchange you can use directly from StartOS.
## Dependencies
- [docker](https://docs.docker.com/get-docker)
@ -7,7 +7,7 @@ RoboSats is a simple and private bitcoin exchange
- [yq](https://mikefarah.gitbook.io/yq)
- [deno](https://deno.land/)
- [make](https://www.gnu.org/software/make/)
- [embassy-sdk](https://github.com/Start9Labs/start-os/tree/master/backend)
- [start-sdk](https://github.com/Start9Labs/start-os/tree/master/backend)
## Build enviroment
Prepare your StartOS build enviroment. In this example we are using Ubuntu 20.04.
@ -46,12 +46,12 @@ curl https://sh.rustup.rs -sSf | sh
# Choose nr 1 (default install)
source $HOME/.cargo/env
```
8. Build and install embassy-sdk
8. Build and install start-sdk
```
cd ~/ && git clone --recursive https://github.com/Start9Labs/start-os.git
cd start-os/backend/
./install-sdk.sh
embassy-sdk init
start-sdk init
```
Now you are ready to build your **robosats** service
@ -59,7 +59,7 @@ Now you are ready to build your **robosats** service
Clone the project locally.
```
git clone https://github.com/kn0wmad/robosats-wrapper.git
git clone https://github.com/Start9Labs/robosats-startos.git
cd robosats-wrapper
```
@ -75,9 +75,9 @@ Run the following commands to determine successful install:
> :information_source: Change <SERVER-NAME>.local to your Start9 server address
```
embassy-cli auth login
start-cli auth login
#Enter your Start9 server master password
embassy-cli --host https://<SERVER-NAME>.local package install robosats.s9pk
start-cli --host https://<SERVER-NAME>.local package install robosats.s9pk
```
**Tip:** You can also install the robosats.s9pk using **Sideload Service** under the **System > Settings** section.
## Verify Install

View File

@ -1,12 +1,9 @@
# Welcome to RoboSats!
A simple and private Lightning P2P exchange you can use directly from StartOS.
A simple and private bitcoin exchange you can use right here on your Embassy.
You can find detailed documentation on how to use RoboSats by [Clicking here](https://learn.robosats.com/)
## Basic Usage Instructions
You can find a quick start guide, tutorial videos, and detailed documentation at [Learn RoboSats](https://learn.robosats.org/).
## Basic Use
1. Open RoboSats by using the `LAUNCH UI` button.
2. For the first time using RoboSats, you will be provided a robot token.
3. You can save this token on the RoboSats service config screen if you need to persist your session.
2. For the first time using RoboSats, you will be provided a robot token (a unique, transient identifier) - you can create as many of these as you'd like.
**Note: It is strongly recommended to use a new robot every time when using RoboSats.**
**Note: Robots are saved in your "garage." It is strongly recommended to use a new robot every time you start a new exchange.**

View File

@ -1,24 +1,27 @@
id: robosats
id: robosats
title: "RoboSats"
version: 0.5.2
version: 0.8.1
release-notes: |
* Updated to v0.5.2-alpha [Release Notes](https://github.com/Reckless-Satoshi/robosats/releases/tag/v0.5.2-alpha)
* Updated to RoboSats v0.8.1-alpha [Release Notes](https://github.com/RoboSats/robosats/releases/tag/v0.8.1-alpha)
* Brand new mobile view
* New in-app private notifications system using nostr
* Revertible payments warning
license: mit
wrapper-repo: "https://github.com/kn0wmad/robosats-wrapper"
upstream-repo: "https://github.com/Reckless-Satoshi/robosats"
support-site: "https://github.com/Reckless-Satoshi/robosats/issues"
marketing-site: "https://learn.robosats.com/"
donation-url: "https://learn.robosats.com/contribute/donate/"
wrapper-repo: "https://github.com/Start9Labs/robosats-startos"
upstream-repo: "https://github.com/RoboSats/robosats"
support-site: "https://github.com/Start9Labs/robosats-startos/issues"
marketing-site: "https://learn.robosats.org/"
donation-url: "https://robosats.org/contribute/donate/"
# The series of commands to build the project into an s9pk for arm64/v8. In this case we are using a Makefile with the simple build command "make".
build: ["make"]
# Human readable descriptors for the service. These are used throughout the StartOS user interface, primarily in the marketplace.
description:
# This is the first description visible to the user in the marketplace.
short: A simple and private bitcoin exchange
short: A simple and private p2p bitcoin exchange
# This description will display with additional details in the service's individual marketplace page
long: |
RoboSats is a simple and private way to exchange bitcoin for national currencies. Robosats simplifies the peer-to-peer user experience and uses lightning hold invoices to minimize custody and trust requirements. The deterministically generated avatars help users stick to best privacy practices.
# These assets are static files necessary for packaging the service for Start9 (into an s9pk). Each value is a path to the specified asset. If an asset is missing from this list, or otherwise denoted, it will be defaulted to the values denoted below.
# These assets are static files necessary for packaging the service for Start9 (into an s9pk). Each value is a path to the specified asset. If an asset is missing from this list, or otherwise denoted, it will be defaulted to the values denoted below.
assets:
# Default = LICENSE.md
license: LICENSE
@ -34,18 +37,14 @@ main:
args: []
mounts:
main: /root
# Health checks
health-checks:
# Health checks
health-checks:
web-ui:
name: Web Interface
success-message: The RoboSats UI is ready to visit in a web browser
success-message: The RoboSats UI is ready
type: script
config:
get:
type: script
set:
type: script
# properties:
config: ~
# properties:
# type: script
# This denotes any data, asset, or pointer volumes that should be connected when the "docker run" command is invoked
volumes:
@ -59,11 +58,15 @@ interfaces:
# A human readable name for display in the UI
name: User Interface
# A descriptive description of what the interface does
description: A simple user interface that is expected to display the text "Hello Word"
description: Your RoboSats Tor Hidden Service address
tor-config:
# Port mappings are from the external port to the internal container port
# Port mappings are from the external port to the internal container port
port-mapping:
80: "12596"
lan-config:
443:
ssl: true
internal: 12596
# Port mappings are from the external port to the internal container port
# Denotes if the service has a user interface to display
ui: true
@ -73,8 +76,8 @@ interfaces:
- http
dependencies: {}
alerts:
start: |
ATTENTION: Your browser must have Tor support to use this service.
start: #|
#ATTENTION: Your browser must have Tor support to use this service.
# Specifies how backups should be run for this service. The default EmbassyOS provided option is to use the duplicity backup library on a system image (compat)
backup:
create:
@ -82,10 +85,10 @@ backup:
type: docker
# The docker image to use. In this case, a pre-loaded system image called compat
image: compat
# Required if the action uses a system image. The default value is false.
system: true
# Required if the action uses a system image. The default value is false.
system: true
# The executable to run the command to begin the backup create process
entrypoint: compat
entrypoint: compat
# Arguments to pass into the entrypoint executable. In this example, the full command run will be: `compat duplicity hello-world /mnt/backup /root/data`
args:
- duplicity
@ -94,9 +97,9 @@ backup:
# For duplicity, the backup mount point needs to be something other than `/root`, so we default to `/root/data`
- /root/data
mounts:
# BACKUP is the default volume that is used for backups. This is whatever backup drive is mounted to the device, or a network filesystem.
# BACKUP is the default volume that is used for backups. This is whatever backup drive is mounted to the device, or a network filesystem.
# The value here donates where the mount point will be. The backup drive is mounted to this location.
BACKUP: "/mnt/backup"
BACKUP: "/mnt/backup"
main: "/root/data"
# The action to execute the backup restore functionality. Details for the keys below are the same as above.
restore:

View File

@ -1,8 +0,0 @@
#!/bin/bash
# install yq
wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq &&\
chmod +x /usr/bin/yq
# install deno
cargo install deno

3
scripts/bundle.ts Normal file
View File

@ -0,0 +1,3 @@
import { bundle } from "https://deno.land/x/emit@0.40.0/mod.ts";
const result = await bundle("scripts/embassy.ts");
await Deno.writeTextFile("scripts/embassy.js", result.code);

View File

@ -1 +1,2 @@
export * from "https://deno.land/x/embassyd_sdk@v0.3.3.0.9/mod.ts";
export * from "https://deno.land/x/embassyd_sdk@v0.3.3.0.11/mod.ts";
export * from "https://deno.land/x/embassyd_sdk@v0.3.3.0.11/util.ts";

View File

@ -21,12 +21,4 @@ export const getConfig: T.ExpectedExports.getConfig = compat.getConfig({
"target": "lan-address",
"interface": "main",
},
"rs-hash": {
"type": "string",
"name": "Robosats Unique Token",
"description": "This is just a place that you can store your unique token if you choose. This is the nym identity that is randomly generated at boot for you on each startup.",
"nullable": true,
"copyable": true,
"masked": false,
}
});

View File

@ -1,4 +1,4 @@
import { compat, types as T } from "../deps.ts";
export const migration: T.ExpectedExports.migration = compat.migrations
.fromMapping({}, "0.5.2" );
export const migration: T.ExpectedExports.migration =
compat.migrations.fromMapping({}, "0.8.1");