mirror of
https://github.com/AsamK/signal-cli.git
synced 2026-05-14 12:40:33 +00:00
Merge branch 'master' into fix/unauthenticated-socket-keepalive
This commit is contained in:
commit
67105e14c1
8
.github/workflows/build.yml
vendored
8
.github/workflows/build.yml
vendored
@ -13,22 +13,22 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
# The "reproducible" entry is used to build the project with the LTS Java version used in reproducible builds script.
|
# java="25" is the LTS Java version used in reproducible builds script (default in Containerfile).
|
||||||
# More Java versions can be added to test compatibility, eg. "26".
|
# More Java versions can be added to test compatibility, eg. "26".
|
||||||
java: ["reproducible", "26"]
|
java: ["25", "26"]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
if [ "${{ matrix.java }}" != "reproducible" ]; then
|
if [ "${{ matrix.java }}" != "25" ]; then
|
||||||
export OVERRIDE_JAVA_VERSION="${{ matrix.java }}"
|
export OVERRIDE_JAVA_VERSION="${{ matrix.java }}"
|
||||||
fi
|
fi
|
||||||
./reproducible-builds/build.sh
|
./reproducible-builds/build.sh
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@v7
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: signal-cli-${{ matrix.java }}-${{ github.job }}
|
name: signal-cli-archive-${{ matrix.java }}
|
||||||
path: dist/*
|
path: dist/*
|
||||||
|
|
||||||
build-client:
|
build-client:
|
||||||
|
|||||||
11
.github/workflows/release.yml
vendored
11
.github/workflows/release.yml
vendored
@ -12,10 +12,11 @@ env:
|
|||||||
IMAGE_REGISTRY: ghcr.io/asamk
|
IMAGE_REGISTRY: ghcr.io/asamk
|
||||||
REGISTRY_USER: ${{ github.actor }}
|
REGISTRY_USER: ${{ github.actor }}
|
||||||
REGISTRY_PASSWORD: ${{ github.token }}
|
REGISTRY_PASSWORD: ${{ github.token }}
|
||||||
|
ARCHIVE_JAVA_VERSION: 25
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
uses: AsamK/signal-cli/.github/workflows/build.yml@master
|
uses: ./.github/workflows/build.yml
|
||||||
|
|
||||||
release:
|
release:
|
||||||
needs: build
|
needs: build
|
||||||
@ -31,7 +32,7 @@ jobs:
|
|||||||
- name: Get signal-cli version
|
- name: Get signal-cli version
|
||||||
id: version
|
id: version
|
||||||
run: |
|
run: |
|
||||||
mv ./signal-cli-reproducible-build/* .
|
mv ./signal-cli-archive-${{ env.ARCHIVE_JAVA_VERSION }}/* .
|
||||||
echo "version=$(cat VERSION)" >> $GITHUB_OUTPUT
|
echo "version=$(cat VERSION)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
@ -87,7 +88,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Move archive file
|
- name: Move archive file
|
||||||
run: |
|
run: |
|
||||||
tar xf ./signal-cli-reproducible-build/signal-cli-${{ needs.release.outputs.version }}.tar.gz
|
tar xf signal-cli-archive-${{ env.ARCHIVE_JAVA_VERSION }}/signal-cli-${{ needs.release.outputs.version }}.tar.gz
|
||||||
mkdir -p build/install/
|
mkdir -p build/install/
|
||||||
mv ./signal-cli-"${{ needs.release.outputs.version }}"/ build/install/signal-cli
|
mv ./signal-cli-"${{ needs.release.outputs.version }}"/ build/install/signal-cli
|
||||||
|
|
||||||
@ -127,7 +128,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Move archive file
|
- name: Move archive file
|
||||||
run: |
|
run: |
|
||||||
tar xf ./signal-cli-reproducible-build/signal-cli-${{ needs.release.outputs.version }}-Linux-native.tar.gz
|
tar xf signal-cli-archive-${{ env.ARCHIVE_JAVA_VERSION }}/signal-cli-${{ needs.release.outputs.version }}-Linux-native.tar.gz
|
||||||
mkdir -p build/native/nativeCompile/
|
mkdir -p build/native/nativeCompile/
|
||||||
mv signal-cli build/native/nativeCompile/
|
mv signal-cli build/native/nativeCompile/
|
||||||
chmod +x build/native/nativeCompile/signal-cli
|
chmod +x build/native/nativeCompile/signal-cli
|
||||||
@ -168,7 +169,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Move archive file
|
- name: Move archive file
|
||||||
run: |
|
run: |
|
||||||
tar xf ./signal-cli-reproducible-build/signal-cli-${{ needs.release.outputs.version }}-Linux-client.tar.gz
|
tar xf signal-cli-archive-${{ env.ARCHIVE_JAVA_VERSION }}/signal-cli-${{ needs.release.outputs.version }}-Linux-client.tar.gz
|
||||||
mkdir -p client/target/release/
|
mkdir -p client/target/release/
|
||||||
mv signal-cli-client client/target/release/
|
mv signal-cli-client client/target/release/
|
||||||
chmod +x client/target/release/signal-cli-client
|
chmod +x client/target/release/signal-cli-client
|
||||||
|
|||||||
14
CHANGELOG.md
14
CHANGELOG.md
@ -1,10 +1,22 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## [Unreleased]
|
## [0.14.3] - 2026-04-22
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fix sender key re-distribution on every group message (Thanks @meinecke)
|
||||||
|
|
||||||
|
### Improved
|
||||||
|
|
||||||
|
- Performance improvement when assigning admin role to multiple group members
|
||||||
|
- Increase disconnect timeout for websocket connections
|
||||||
|
- Release builds are now reproducible
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Send message results now surface server-advised retry time for plain rate-limit (HTTP 413) failures, not only for proof-required challenges. The `retryAfterSeconds` field in JSON-RPC `SendMessageResult` is populated whenever the server sends a `Retry-After` header. The canonical way to distinguish proof-required failures remains `token != null`. Text output includes "retry after N seconds" when known.
|
- Send message results now surface server-advised retry time for plain rate-limit (HTTP 413) failures, not only for proof-required challenges. The `retryAfterSeconds` field in JSON-RPC `SendMessageResult` is populated whenever the server sends a `Retry-After` header. The canonical way to distinguish proof-required failures remains `token != null`. Text output includes "retry after N seconds" when known.
|
||||||
|
- Add distinct JSON-RPC error code (6) for captcha rejection (Thanks @tonycpsu)
|
||||||
|
- No longer sends busy call response to allow linked devices to accept call
|
||||||
|
|
||||||
## [0.14.2] - 2026-04-04
|
## [0.14.2] - 2026-04-04
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@ plugins {
|
|||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
group = "org.asamk"
|
group = "org.asamk"
|
||||||
version = "0.14.3-SNAPSHOT"
|
version = "0.14.3"
|
||||||
}
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
|
|||||||
@ -45,6 +45,9 @@
|
|||||||
<content_attribute id="social-chat">intense</content_attribute>
|
<content_attribute id="social-chat">intense</content_attribute>
|
||||||
</content_rating>
|
</content_rating>
|
||||||
<releases>
|
<releases>
|
||||||
|
<release version="0.14.3" date="2026-04-22">
|
||||||
|
<url type="details">https://github.com/AsamK/signal-cli/releases/tag/v0.14.3</url>
|
||||||
|
</release>
|
||||||
<release version="0.14.2" date="2026-04-04">
|
<release version="0.14.2" date="2026-04-04">
|
||||||
<url type="details">https://github.com/AsamK/signal-cli/releases/tag/v0.14.2</url>
|
<url type="details">https://github.com/AsamK/signal-cli/releases/tag/v0.14.2</url>
|
||||||
</release>
|
</release>
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
0.90.0
|
0.92.1
|
||||||
|
|||||||
@ -1,13 +1,12 @@
|
|||||||
ARG ZULU_TAG="25.0.2-jdk@sha256:9582df6c4415d9c770eb5ff8fce426ebba53631149c9eb083ee126568d32fab3"
|
ARG ZULU_TAG="25-latest@sha256:8eca9375451a392bff01efe946f2e9263c50aa71a9d68423c068cc1061a41b7e"
|
||||||
|
|
||||||
FROM docker.io/azul/zulu-openjdk:$ZULU_TAG
|
FROM docker.io/azul/zulu-openjdk:$ZULU_TAG
|
||||||
ENV SOURCE_DATE_EPOCH=1767225600
|
ARG SOURCE_DATE_EPOCH="1776889382"
|
||||||
|
ENV SOURCE_DATE_EPOCH=$SOURCE_DATE_EPOCH
|
||||||
ENV LANG=C.UTF-8
|
ENV LANG=C.UTF-8
|
||||||
ENV LC_CTYPE=en_US.UTF-8
|
ENV LC_CTYPE=en_US.UTF-8
|
||||||
ARG SNAPSHOT=20260101T000000Z
|
RUN SNAPSHOT="$(date -u -d "@$SOURCE_DATE_EPOCH" +%Y%m%dT%H%M%SZ)" \
|
||||||
RUN echo "deb http://snapshot.ubuntu.com/ubuntu/${SNAPSHOT}/ jammy main" > /etc/apt/sources.list \
|
&& apt install -y make asciidoc-base --update --snapshot "$SNAPSHOT" --no-install-recommends --no-install-suggests
|
||||||
&& echo "deb http://snapshot.ubuntu.com/ubuntu/${SNAPSHOT}/ jammy universe" >> /etc/apt/sources.list
|
|
||||||
RUN apt update && apt install -y make asciidoc-base
|
|
||||||
COPY --chmod=0700 reproducible-builds/entrypoint.sh /usr/local/bin/entrypoint.sh
|
COPY --chmod=0700 reproducible-builds/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
WORKDIR /signal-cli
|
WORKDIR /signal-cli
|
||||||
ENTRYPOINT [ "/usr/local/bin/entrypoint.sh", "build" ]
|
ENTRYPOINT [ "/usr/local/bin/entrypoint.sh", "build" ]
|
||||||
|
|||||||
@ -18,11 +18,8 @@ fi
|
|||||||
VERSION=$(sed -n 's/\s*version\s*=\s*"\(.*\)".*/\1/p' build.gradle.kts | tail -n1)
|
VERSION=$(sed -n 's/\s*version\s*=\s*"\(.*\)".*/\1/p' build.gradle.kts | tail -n1)
|
||||||
echo "$VERSION" >dist/VERSION
|
echo "$VERSION" >dist/VERSION
|
||||||
|
|
||||||
$ENGINE build -t signal-cli:build ${OVERRIDE_JAVA_VERSION:+--build-arg ZULU_TAG=$OVERRIDE_JAVA_VERSION} -f reproducible-builds/build.Containerfile .
|
|
||||||
$ENGINE build -t signal-cli:native -f reproducible-builds/native.Containerfile .
|
|
||||||
$ENGINE build -t signal-cli:client -f reproducible-builds/client.Containerfile .
|
|
||||||
|
|
||||||
# Build jar
|
# Build jar
|
||||||
|
$ENGINE build -t signal-cli:build ${OVERRIDE_JAVA_VERSION:+--build-arg ZULU_TAG=$OVERRIDE_JAVA_VERSION} -f reproducible-builds/build.Containerfile .
|
||||||
git clean -Xfd -e '!/dist/' -e '!/dist/**' -e '!/github/' -e '!/github/**'
|
git clean -Xfd -e '!/dist/' -e '!/dist/**' -e '!/github/' -e '!/github/**'
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
$ENGINE run --pull=never --rm -v "$(pwd)":/signal-cli:Z -e VERSION="$VERSION" $USER signal-cli:build
|
$ENGINE run --pull=never --rm -v "$(pwd)":/signal-cli:Z -e VERSION="$VERSION" $USER signal-cli:build
|
||||||
@ -34,12 +31,14 @@ if [ -n "${OVERRIDE_JAVA_VERSION:-}" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Build native-image
|
# Build native-image
|
||||||
|
$ENGINE build -t signal-cli:native -f reproducible-builds/native.Containerfile .
|
||||||
git clean -Xfd -e '!/dist/' -e '!/dist/**' -e '!/github/' -e '!/github/**'
|
git clean -Xfd -e '!/dist/' -e '!/dist/**' -e '!/github/' -e '!/github/**'
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
$ENGINE run --pull=never --rm -v "$(pwd)":/signal-cli:Z -e VERSION="$VERSION" $USER signal-cli:native
|
$ENGINE run --pull=never --rm -v "$(pwd)":/signal-cli:Z -e VERSION="$VERSION" $USER signal-cli:native
|
||||||
mv build/signal-cli-*-Linux-native.tar.gz dist/
|
mv build/signal-cli-*-Linux-native.tar.gz dist/
|
||||||
|
|
||||||
# Build rust client
|
# Build rust client
|
||||||
|
$ENGINE build -t signal-cli:client -f reproducible-builds/client.Containerfile .
|
||||||
git clean -Xfd -e '!/dist/' -e '!/dist/**' -e '!/github/' -e '!/github/**'
|
git clean -Xfd -e '!/dist/' -e '!/dist/**' -e '!/github/' -e '!/github/**'
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
$ENGINE run --pull=never --rm -v "$(pwd)":/signal-cli:Z -e VERSION="$VERSION" $USER signal-cli:client
|
$ENGINE run --pull=never --rm -v "$(pwd)":/signal-cli:Z -e VERSION="$VERSION" $USER signal-cli:client
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
FROM docker.io/rust:1.94.1-slim-trixie@sha256:c6a474d7164ea2455e09b60a759b1edca38db7373c5689c1dae31780de4e71ac
|
ARG RUST_TAG="1-slim@sha256:715efd1ccdc4a63bd6a6e2f54387fff73f904b70e610d41b4d9d74ff38e13ad3"
|
||||||
ENV SOURCE_DATE_EPOCH=1767225600
|
|
||||||
|
FROM docker.io/rust:$RUST_TAG
|
||||||
|
ARG SOURCE_DATE_EPOCH="1776889382"
|
||||||
|
ENV SOURCE_DATE_EPOCH=$SOURCE_DATE_EPOCH
|
||||||
ENV LANG=C.UTF-8
|
ENV LANG=C.UTF-8
|
||||||
ENV LC_CTYPE=en_US.UTF-8
|
ENV LC_CTYPE=en_US.UTF-8
|
||||||
COPY --chmod=0700 reproducible-builds/entrypoint.sh /usr/local/bin/entrypoint.sh
|
COPY --chmod=0700 reproducible-builds/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
FROM container-registry.oracle.com/graalvm/native-image:25.0.2@sha256:4c0d5919f6840d89721274eb8cf81962faa2f870b816967e6732e2a151b150d8
|
ARG GRAALVM_TAG="25@sha256:38f835ccb37d4a106c37376a98e8713999077a8c8173d9876505f77da438332c"
|
||||||
ENV SOURCE_DATE_EPOCH=1767225600
|
|
||||||
|
FROM container-registry.oracle.com/graalvm/native-image:$GRAALVM_TAG
|
||||||
|
ARG SOURCE_DATE_EPOCH="1776889382"
|
||||||
|
ENV SOURCE_DATE_EPOCH=$SOURCE_DATE_EPOCH
|
||||||
ENV LANG=C.UTF-8
|
ENV LANG=C.UTF-8
|
||||||
ENV LC_CTYPE=en_US.UTF-8
|
ENV LC_CTYPE=en_US.UTF-8
|
||||||
COPY --chmod=0700 reproducible-builds/entrypoint.sh /usr/local/bin/entrypoint.sh
|
COPY --chmod=0700 reproducible-builds/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
|
|||||||
57
reproducible-builds/update-pinned-container-versions.sh
Executable file
57
reproducible-builds/update-pinned-container-versions.sh
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../"
|
||||||
|
cd "$ROOT_DIR"
|
||||||
|
|
||||||
|
if command -v podman >/dev/null; then
|
||||||
|
ENGINE=podman
|
||||||
|
elif command -v docker >/dev/null; then
|
||||||
|
ENGINE=docker
|
||||||
|
else
|
||||||
|
echo "error: neither podman nor docker is available" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
resolve_digest() {
|
||||||
|
local image_ref="$1"
|
||||||
|
"$ENGINE" pull "$image_ref" >/dev/null
|
||||||
|
"$ENGINE" image inspect --format '{{range .RepoDigests}}{{println .}}{{end}}' "$image_ref" \
|
||||||
|
| grep -m1 -E '@sha256:[0-9a-f]{64}$' \
|
||||||
|
| sed -E 's|.*(@sha256:[0-9a-f]{64})$|\1|'
|
||||||
|
}
|
||||||
|
|
||||||
|
update_arg_tag() {
|
||||||
|
local file="$1"
|
||||||
|
local arg_name="$2"
|
||||||
|
local image_prefix="$3"
|
||||||
|
local current
|
||||||
|
current="$(sed -n "s/^ARG ${arg_name}=\"\([^\"]*\)\"$/\\1/p" "$file")"
|
||||||
|
if [[ -z "$current" ]]; then
|
||||||
|
echo "error: could not find ARG ${arg_name} in $file" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
local tag
|
||||||
|
tag="${current%@*}"
|
||||||
|
local digest
|
||||||
|
digest="$(resolve_digest "${image_prefix}${tag}")"
|
||||||
|
sed -i -E "s|^ARG ${arg_name}=\"[^\"]+\"$|ARG ${arg_name}=\"${tag}${digest}\"|" "$file"
|
||||||
|
echo "updated $file -> ${tag}${digest}"
|
||||||
|
}
|
||||||
|
|
||||||
|
update_source_date_epoch() {
|
||||||
|
local file="$1"
|
||||||
|
local current_timestamp
|
||||||
|
current_timestamp="$(date +%s)"
|
||||||
|
sed -i -E "s|^ARG SOURCE_DATE_EPOCH=\"[^\"]+\"$|ARG SOURCE_DATE_EPOCH=\"${current_timestamp}\"|" "$file"
|
||||||
|
echo "updated $file SOURCE_DATE_EPOCH -> ${current_timestamp}"
|
||||||
|
}
|
||||||
|
|
||||||
|
update_arg_tag reproducible-builds/build.Containerfile ZULU_TAG docker.io/azul/zulu-openjdk:
|
||||||
|
update_arg_tag reproducible-builds/native.Containerfile GRAALVM_TAG container-registry.oracle.com/graalvm/native-image:
|
||||||
|
update_arg_tag reproducible-builds/client.Containerfile RUST_TAG docker.io/rust:
|
||||||
|
|
||||||
|
update_source_date_epoch reproducible-builds/build.Containerfile
|
||||||
|
update_source_date_epoch reproducible-builds/native.Containerfile
|
||||||
|
update_source_date_epoch reproducible-builds/client.Containerfile
|
||||||
Loading…
x
Reference in New Issue
Block a user