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; \ RUN apk add bash curl sudo tini wget yq; \
rm -f /var/cache/apk/* rm -f /var/cache/apk/*
ENV APP_HOST robosats.embassy ENV APP_HOST=robosats.embassy
ENV APP_PORT 12596 ENV APP_PORT=12596
ENV TOR_PROXY_IP embassy ENV TOR_PROXY_IP=embassy
ENV TOR_PROXY_PORT 9050 ENV TOR_PROXY_PORT=9050
ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh
RUN chmod a+x /usr/local/bin/*.sh RUN chmod a+x /usr/local/bin/*.sh
RUN chmod a+x *.sh RUN chmod a+x *.sh

View File

@ -1,6 +1,6 @@
MIT License 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 Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal 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 all: verify
verify: $(PKG_ID).s9pk verify: $(PKG_ID).s9pk
embassy-sdk verify s9pk $(PKG_ID).s9pk start-sdk verify s9pk $(PKG_ID).s9pk
install: $(PKG_ID).s9pk install: $(PKG_ID).s9pk
embassy-cli package install $(PKG_ID).s9pk start-cli package install $(PKG_ID).s9pk
clean: clean:
rm -rf docker-images rm -rf docker-images
@ -19,8 +19,16 @@ clean:
rm -f $(PKG_ID).s9pk rm -f $(PKG_ID).s9pk
rm -f scripts/*.js 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) 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 docker-images/x86_64.tar: Dockerfile docker_entrypoint.sh
mkdir -p docker-images mkdir -p docker-images
@ -30,5 +38,5 @@ docker-images/aarch64.tar: Dockerfile docker_entrypoint.sh
mkdir -p docker-images 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 . 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 $(PKG_ID).s9pk: manifest.yaml instructions.md LICENSE icon.png scripts/embassy.js docker-images/x86_64.tar docker-images/aarch64.tar
embassy-sdk pack start-sdk pack

View File

@ -1,5 +1,5 @@
# Wrapper for RoboSats # 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 ## Dependencies
- [docker](https://docs.docker.com/get-docker) - [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) - [yq](https://mikefarah.gitbook.io/yq)
- [deno](https://deno.land/) - [deno](https://deno.land/)
- [make](https://www.gnu.org/software/make/) - [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 ## Build enviroment
Prepare your StartOS build enviroment. In this example we are using Ubuntu 20.04. 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) # Choose nr 1 (default install)
source $HOME/.cargo/env 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 ~/ && git clone --recursive https://github.com/Start9Labs/start-os.git
cd start-os/backend/ cd start-os/backend/
./install-sdk.sh ./install-sdk.sh
embassy-sdk init start-sdk init
``` ```
Now you are ready to build your **robosats** service 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. 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 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 > :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 #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. **Tip:** You can also install the robosats.s9pk using **Sideload Service** under the **System > Settings** section.
## Verify Install ## Verify Install

View File

@ -1,12 +1,9 @@
# Welcome to RoboSats! # 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 a quick start guide, tutorial videos, and detailed documentation at [Learn RoboSats](https://learn.robosats.org/).
## Basic Use
You can find detailed documentation on how to use RoboSats by [Clicking here](https://learn.robosats.com/)
## Basic Usage Instructions
1. Open RoboSats by using the `LAUNCH UI` button. 1. Open RoboSats by using the `LAUNCH UI` button.
2. For the first time using RoboSats, you will be provided a robot token. 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.
3. You can save this token on the RoboSats service config screen if you need to persist your session.
**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" title: "RoboSats"
version: 0.5.2 version: 0.8.1
release-notes: | 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 license: mit
wrapper-repo: "https://github.com/kn0wmad/robosats-wrapper" wrapper-repo: "https://github.com/Start9Labs/robosats-startos"
upstream-repo: "https://github.com/Reckless-Satoshi/robosats" upstream-repo: "https://github.com/RoboSats/robosats"
support-site: "https://github.com/Reckless-Satoshi/robosats/issues" support-site: "https://github.com/Start9Labs/robosats-startos/issues"
marketing-site: "https://learn.robosats.com/" marketing-site: "https://learn.robosats.org/"
donation-url: "https://learn.robosats.com/contribute/donate/" 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". # 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"] build: ["make"]
# Human readable descriptors for the service. These are used throughout the StartOS user interface, primarily in the marketplace. # Human readable descriptors for the service. These are used throughout the StartOS user interface, primarily in the marketplace.
description: description:
# This is the first description visible to the user in the marketplace. # 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 # This description will display with additional details in the service's individual marketplace page
long: | 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. 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: assets:
# Default = LICENSE.md # Default = LICENSE.md
license: LICENSE license: LICENSE
@ -34,18 +37,14 @@ main:
args: [] args: []
mounts: mounts:
main: /root main: /root
# Health checks # Health checks
health-checks: health-checks:
web-ui: web-ui:
name: Web Interface 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 type: script
config: config: ~
get: # properties:
type: script
set:
type: script
# properties:
# type: script # type: script
# This denotes any data, asset, or pointer volumes that should be connected when the "docker run" command is invoked # This denotes any data, asset, or pointer volumes that should be connected when the "docker run" command is invoked
volumes: volumes:
@ -59,11 +58,15 @@ interfaces:
# A human readable name for display in the UI # A human readable name for display in the UI
name: User Interface name: User Interface
# A descriptive description of what the interface does # 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: 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: port-mapping:
80: "12596" 80: "12596"
lan-config:
443:
ssl: true
internal: 12596
# Port mappings are from the external port to the internal container port # Port mappings are from the external port to the internal container port
# Denotes if the service has a user interface to display # Denotes if the service has a user interface to display
ui: true ui: true
@ -73,8 +76,8 @@ interfaces:
- http - http
dependencies: {} dependencies: {}
alerts: alerts:
start: | start: #|
ATTENTION: Your browser must have Tor support to use this service. #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) # 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: backup:
create: create:
@ -82,10 +85,10 @@ backup:
type: docker type: docker
# The docker image to use. In this case, a pre-loaded system image called compat # The docker image to use. In this case, a pre-loaded system image called compat
image: compat image: compat
# Required if the action uses a system image. The default value is false. # Required if the action uses a system image. The default value is false.
system: true system: true
# The executable to run the command to begin the backup create process # 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` # 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: args:
- duplicity - 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` # For duplicity, the backup mount point needs to be something other than `/root`, so we default to `/root/data`
- /root/data - /root/data
mounts: 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. # 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" main: "/root/data"
# The action to execute the backup restore functionality. Details for the keys below are the same as above. # The action to execute the backup restore functionality. Details for the keys below are the same as above.
restore: 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", "target": "lan-address",
"interface": "main", "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"; import { compat, types as T } from "../deps.ts";
export const migration: T.ExpectedExports.migration = compat.migrations export const migration: T.ExpectedExports.migration =
.fromMapping({}, "0.5.2" ); compat.migrations.fromMapping({}, "0.8.1");