release 0.1.2, renamed sup-server -> sup

This commit is contained in:
Egor 2026-01-26 01:39:08 -08:00
parent bd988ec7f0
commit 40630a6dee
8 changed files with 37 additions and 20 deletions

View file

@ -7,7 +7,7 @@ on:
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository_owner }}/sup-server
IMAGE_NAME: ${{ github.repository_owner }}/sup
jobs:
build:

2
.gitignore vendored
View file

@ -1,4 +1,4 @@
node_modules/
signal-cli
.env
sup-server
sup

View file

@ -188,7 +188,7 @@ For API-based monitoring, call `/api/health` which returns JSON:
SUP consists of two services that **MUST run together on the same machine**:
- **sup-server** (Bun): Receives webhooks, sends Signal messages via signal-cli. Optional: monitors Proton Mail IMAP
- **sup** (Bun): Receives webhooks, sends Signal messages via signal-cli. Optional: monitors Proton Mail IMAP
- **protonmail-bridge** (Official Proton, optional): Decrypts Proton Mail emails, runs local IMAP server
All services communicate over a private Docker network with no external exposure except Signal protocol. **Separating these services across multiple machines would expose plaintext IMAP traffic and compromise security.**

View file

@ -1,6 +1,6 @@
services:
server:
image: ghcr.io/lone-cloud/sup-server:latest
image: ghcr.io/lone-cloud/sup:latest
ports:
- '8080:8080'
environment:

View file

@ -1,6 +1,6 @@
{
"name": "sup",
"version": "0.1.2",
"version": "0.1.3",
"description": "Privacy-preserving push notifications using Signal as transport",
"private": true,
"type": "module",
@ -16,7 +16,7 @@
"scripts": {
"postinstall": "bun run scripts/install-signal-cli.ts || true",
"start": "bun run server/index.ts",
"build": "bun build --compile server/index.ts --outfile server/sup-server",
"build": "bun build --compile server/index.ts --outfile server/sup",
"check": "tsc --noEmit && biome check .",
"fix": "biome check --write --unsafe .",
"release": "bun run scripts/release.ts"

View file

@ -21,19 +21,36 @@ try {
console.log(`Pushing tag to trigger CI build...`);
await $`git push origin ${version}`;
console.log(`\nCreating GitHub release...`);
await $`gh release create ${version} --title ${version} --notes "## Docker Images
Pull the latest version:
\`\`\`bash
docker pull ghcr.io/lone-cloud/sup:${version}
\`\`\`
Or use in your \`docker-compose.yml\`:
\`\`\`yaml
services:
server:
image: ghcr.io/lone-cloud/sup:${version}
\`\`\`
### Architectures
- linux/amd64
- linux/arm64
### Changes
See commit history for details." --generate-notes`;
console.log(`
Release ${version} triggered!
Release ${version} complete!
GitHub Actions will now:
1. Build Docker images
2. Push to ghcr.io/lone-cloud/sup-server:${version}
3. Push to ghcr.io/lone-cloud/sup-server:latest
GitHub release: https://github.com/lone-cloud/sup/releases/tag/${version}
GitHub Actions: https://github.com/lone-cloud/sup/actions
Watch the build:
https://github.com/lone-cloud/sup/actions
Once complete, images will be available:
docker pull ghcr.io/lone-cloud/sup-server:${version}
Once CI completes, images will be available:
docker pull ghcr.io/lone-cloud/sup:${version}
`);
} catch (error) {
console.error('Release failed:', error);

View file

@ -7,7 +7,7 @@ RUN bun install --frozen-lockfile
COPY server ./server
RUN bun build --compile server/index.ts --outfile sup-server
RUN bun build --compile server/index.ts --outfile sup
FROM debian:13.3-slim
@ -34,7 +34,7 @@ RUN ARCH=$(uname -m) && \
rm /tmp/libsignal_jni_aarch64.so; \
fi
COPY --from=builder /app/sup-server /usr/local/bin/sup-server
COPY --from=builder /app/sup /usr/local/bin/sup
COPY --from=builder /app/server/public /public
ENV PATH="/usr/local/signal-cli/bin:${PATH}"
@ -42,4 +42,4 @@ ENV LD_LIBRARY_PATH="/usr/local/signal-cli/lib:${LD_LIBRARY_PATH}"
EXPOSE 8080
CMD ["sup-server"]
CMD ["sup"]

View file

@ -79,7 +79,7 @@ const handleHealthFragment = async () => {
const html = `
<div class="status">
<div class="status-item ${signalOk ? 'status-ok' : 'status-error'}">
<div class="status-item ${signalOk && linked ? 'status-ok' : 'status-error'}">
Signal: ${signalOk ? 'Connected' : 'Disconnected'} and ${linked ? 'Linked' : 'Unlinked'}
${linked && accountNumber ? `<span class="tooltip">${formatPhoneNumber(accountNumber)}</span>` : ''}
</div>