From da29ea46d9078df2ca41b5be33ed44a8adc3014a Mon Sep 17 00:00:00 2001 From: Nadia Liliana Kulczycka Date: Thu, 23 Jul 2026 22:50:33 +0200 Subject: [PATCH 1/7] Add guide for getting Sable from Obtainium. --- .vscode/settings.json | 2 +- README.md | 31 +++++++++++++++++++++++++++++++ obtainium-source-nightly.json | 11 +++++++++++ obtainium-source-stable.json | 11 +++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 obtainium-source-nightly.json create mode 100644 obtainium-source-stable.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 78a3d23b9a..6c391fa534 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,7 +11,7 @@ "editor.defaultFormatter": "oxc.oxc-vscode" }, "[json]": { - "editor.defaultFormatter": "oxc.oxc-vscode" + "editor.defaultFormatter": "vscode.json-language-features" }, "[rust]": { "editor.defaultFormatter": "rust-lang.rust-analyzer" diff --git a/README.md b/README.md index bc361d5b6e..e715a25012 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,37 @@ Sable iOS builds are distributed as unsigned IPAs through [AltStore](https://alt iOS builds are produced by the `ios` job in [`tauri-build.yml`](.github/workflows/tauri-build.yml) and track the same `dev`/`v*` triggers as desktop builds. +## Android (Obtainium) + +### Nightly Source + +Add to Obtainium +  + +### Stable Source + +Add to Obtainium +  + +### Setup and install + +1. Set up [Obtainium](https://wiki.obtainium.imranr.dev/) on your device. +2. Add the Sable source by either: + - Tapping one of the buttons above. + - Importing one of the JSON files: + - [Nightly](https://raw.githubusercontent.com/SableClient/Sable/refs/heads/dev/obtainium-source-nightly.json) + - [Stable](https://raw.githubusercontent.com/SableClient/Sable/refs/heads/dev/obtainium-source-stable.json) + - Adding it manually - use as the GitHub link and follow the section below with regards to setting app variables +3. Install Sable from the source. + +### Relevant variables and switching between Nightly and Stable + +Relevant variable differences between Nightly and Stable: +- *Include prereleases* - `true` for Nightly, `false` for Stable +- *Fallback to older releases* - `false` for Nightly, `true` for Stable +- *Use latest asset upload as release date* - `true` for Nightly, `false` for Stable (this is due to Nightly builds being uploaded to one release instead of creating new ones) +- *Use release date as version string (pseudo-version)* - `true` for Nightly, `false` for Stable (this is due to Nightly builds being uploaded to one release instead of creating new ones) + ## Self-hosting You have a few options for self hosting, you can: 1. Run the prebuilt docker container. diff --git a/obtainium-source-nightly.json b/obtainium-source-nightly.json new file mode 100644 index 0000000000..9d4e3bdd00 --- /dev/null +++ b/obtainium-source-nightly.json @@ -0,0 +1,11 @@ +{ + "apps": [ + { + "id": "moe.sable.client", + "url": "https://github.com/SableClient/Sable", + "author": "SableClient", + "name": "Sable", + "additionalSettings": "{\"includePrereleases\":true,\"fallbackToOlderReleases\":false,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":true,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":true,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"Sable\",\"shizukuPretendToBeGooglePlay\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"An almost stable Matrix client\",\"appAuthor\":\"SableClient\"}" + } + ] +} \ No newline at end of file diff --git a/obtainium-source-stable.json b/obtainium-source-stable.json new file mode 100644 index 0000000000..9d4e3bdd00 --- /dev/null +++ b/obtainium-source-stable.json @@ -0,0 +1,11 @@ +{ + "apps": [ + { + "id": "moe.sable.client", + "url": "https://github.com/SableClient/Sable", + "author": "SableClient", + "name": "Sable", + "additionalSettings": "{\"includePrereleases\":true,\"fallbackToOlderReleases\":false,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":true,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":true,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"Sable\",\"shizukuPretendToBeGooglePlay\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"An almost stable Matrix client\",\"appAuthor\":\"SableClient\"}" + } + ] +} \ No newline at end of file From 8b7410df29c095da799872c688eb59e866995b82 Mon Sep 17 00:00:00 2001 From: Nadia Liliana Kulczycka Date: Thu, 23 Jul 2026 22:57:10 +0200 Subject: [PATCH 2/7] Fix docker tags in README --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e715a25012..df433fabf4 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,8 @@ You have a few options for self hosting, you can: Prebuilt images are published to `ghcr.io/sableclient/sable`. -- `latest` tracks the current `dev` branch image. +- `latest` tracks the current latest version release. +- `dev` tracks the current `dev` branch image. - `X.Y.Z` tags are versioned releases. - `X.Y` tags float within a release line. - Pushes to `dev` also publish a short commit SHA tag. From 987a5dabf4970c9a67e815606d574e6c54f0121f Mon Sep 17 00:00:00 2001 From: Nadia Liliana Kulczycka Date: Thu, 23 Jul 2026 23:06:34 +0200 Subject: [PATCH 3/7] Attempt to adjust image size --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index df433fabf4..0c609d111f 100644 --- a/README.md +++ b/README.md @@ -49,12 +49,12 @@ iOS builds are produced by the `ios` job in [`tauri-build.yml`](.github/workflow ### Nightly Source -Add to Obtainium +Add to Obtainium   ### Stable Source -Add to Obtainium +Add to Obtainium   ### Setup and install From e47cb02ab04c519264c9992774d2e11ed78547e6 Mon Sep 17 00:00:00 2001 From: Nadia Liliana Kulczycka Date: Thu, 23 Jul 2026 23:17:55 +0200 Subject: [PATCH 4/7] Reset the json default formatter --- .vscode/settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 6c391fa534..78a3d23b9a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,7 +11,7 @@ "editor.defaultFormatter": "oxc.oxc-vscode" }, "[json]": { - "editor.defaultFormatter": "vscode.json-language-features" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[rust]": { "editor.defaultFormatter": "rust-lang.rust-analyzer" From 26fa607cdc7cdbf052338e023b8e9e9bb68f6b35 Mon Sep 17 00:00:00 2001 From: Nadia Kulczycka Date: Tue, 4 Aug 2026 09:22:27 +0000 Subject: [PATCH 5/7] Remove old, non-generated obtainium scripts --- obtainium-source-nightly.json | 11 ----------- obtainium-source-stable.json | 11 ----------- 2 files changed, 22 deletions(-) delete mode 100644 obtainium-source-nightly.json delete mode 100644 obtainium-source-stable.json diff --git a/obtainium-source-nightly.json b/obtainium-source-nightly.json deleted file mode 100644 index 9d4e3bdd00..0000000000 --- a/obtainium-source-nightly.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "apps": [ - { - "id": "moe.sable.client", - "url": "https://github.com/SableClient/Sable", - "author": "SableClient", - "name": "Sable", - "additionalSettings": "{\"includePrereleases\":true,\"fallbackToOlderReleases\":false,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":true,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":true,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"Sable\",\"shizukuPretendToBeGooglePlay\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"An almost stable Matrix client\",\"appAuthor\":\"SableClient\"}" - } - ] -} \ No newline at end of file diff --git a/obtainium-source-stable.json b/obtainium-source-stable.json deleted file mode 100644 index 9d4e3bdd00..0000000000 --- a/obtainium-source-stable.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "apps": [ - { - "id": "moe.sable.client", - "url": "https://github.com/SableClient/Sable", - "author": "SableClient", - "name": "Sable", - "additionalSettings": "{\"includePrereleases\":true,\"fallbackToOlderReleases\":false,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":true,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":true,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"Sable\",\"shizukuPretendToBeGooglePlay\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"An almost stable Matrix client\",\"appAuthor\":\"SableClient\"}" - } - ] -} \ No newline at end of file From 9f3e6120087eba2e0f16c94e9e74a34406b0a8f9 Mon Sep 17 00:00:00 2001 From: Nadia Kulczycka Date: Tue, 4 Aug 2026 09:25:59 +0000 Subject: [PATCH 6/7] Test nightly button --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c524157a23..e1a5bd6c54 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,8 @@ Android APKs are published to every release, and [Obtainium](https://obtainium.i ### Nightly +Add to ObtainiumApp config   Download APK From f3031a692babe7883f86de651deba581544d3bf6 Mon Sep 17 00:00:00 2001 From: Nadia Kulczycka Date: Tue, 4 Aug 2026 09:33:11 +0000 Subject: [PATCH 7/7] Remove old Obtainium docs --- README.md | 39 ++++++++------------------------------- 1 file changed, 8 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index e1a5bd6c54..b4c66d24c5 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,14 @@ Android APKs are published to every release, and [Obtainium](https://obtainium.i Android builds are produced by the `android` job in [`tauri-build.yml`](.github/workflows/tauri-build.yml), and the config by the `obtainium` job in the same workflow. +### Relevant variables and switching between Nightly and Stable + +Relevant variable differences between Nightly and Stable: +- *Include prereleases* - `true` for Nightly, `false` for Stable +- *Fallback to older releases* - `false` for Nightly, `true` for Stable +- *Use latest asset upload as release date* - `true` for Nightly, `false` for Stable (this is due to Nightly builds being uploaded to one release instead of creating new ones) +- *Use release date as version string (pseudo-version)* - `true` for Nightly, `false` for Stable (this is due to Nightly builds being uploaded to one release instead of creating new ones) + ## iOS (AltStore / SideStore) Sable iOS builds are distributed as unsigned IPAs through [AltStore](https://altstore.io) and [SideStore](https://sidestore.io). Each release publishes both the IPA and an `altstore-source.json` manifest — stable builds to the [latest GitHub release](https://github.com/SableClient/Sable/releases/latest), nightly builds to the [`nightly` GitHub release](https://github.com/SableClient/Sable/releases/tag/nightly). @@ -73,37 +81,6 @@ Sable iOS builds are distributed as unsigned IPAs through [AltStore](https://alt iOS builds are produced by the `ios` job in [`tauri-build.yml`](.github/workflows/tauri-build.yml) and track the same `dev`/`v*` triggers as desktop builds. -## Android (Obtainium) - -### Nightly Source - -Add to Obtainium -  - -### Stable Source - -Add to Obtainium -  - -### Setup and install - -1. Set up [Obtainium](https://wiki.obtainium.imranr.dev/) on your device. -2. Add the Sable source by either: - - Tapping one of the buttons above. - - Importing one of the JSON files: - - [Nightly](https://raw.githubusercontent.com/SableClient/Sable/refs/heads/dev/obtainium-source-nightly.json) - - [Stable](https://raw.githubusercontent.com/SableClient/Sable/refs/heads/dev/obtainium-source-stable.json) - - Adding it manually - use as the GitHub link and follow the section below with regards to setting app variables -3. Install Sable from the source. - -### Relevant variables and switching between Nightly and Stable - -Relevant variable differences between Nightly and Stable: -- *Include prereleases* - `true` for Nightly, `false` for Stable -- *Fallback to older releases* - `false` for Nightly, `true` for Stable -- *Use latest asset upload as release date* - `true` for Nightly, `false` for Stable (this is due to Nightly builds being uploaded to one release instead of creating new ones) -- *Use release date as version string (pseudo-version)* - `true` for Nightly, `false` for Stable (this is due to Nightly builds being uploaded to one release instead of creating new ones) - ## Self-hosting You have a few options for self hosting, you can: 1. Run the prebuilt docker container.