README.md
Rama main · réplica de lectura del repositorio original.
# Sablem
> Release mirror for [Sable](https://github.com/AminulIslamSifat/Sable) — built packages live here.
This repo holds the **AUR package source** and stages **built release artifacts** for Sable. It contains no application source.
***
## Packages
Each release ships prebuilt desktop packages. No runtime installation, no Python, no `uv sync` — the app is self-contained.
| Package | Platform | Install |
|:--|:--|:--|
| `Sable-<version>-x86_64.AppImage` | Any Linux | `chmod +x` and run |
| `Sable-<version>-amd64.deb` | Debian / Ubuntu | `sudo apt install ./Sable-<version>-amd64.deb` |
| `sable-bin` (AUR) | Arch Linux | `yay -S sable-bin` |
***
## Install
### Arch Linux (AUR)
```bash
yay -S sable-bin
```
Installs the AppImage to `/opt/sable/`, adds `sable` to your `$PATH`, and registers the desktop entry and icon.
### Debian / Ubuntu
```bash
sudo apt install ./Sable-<version>-amd64.deb
```
### Any Linux (AppImage)
```bash
chmod +x Sable-<version>-x86_64.AppImage
./Sable-<version>-x86_64.AppImage
```
The AppImage is portable — no install, no root. It carries its own server binary, so it does not need Python or any system runtime.
***
## Building a release
Everything is driven by `build_app/build.py` in the Sable source repo:
```bash
cd Sable-exp
./build_app/build.py --clean
```
By default this:
1. Applies source patches (idempotent)
2. Freezes the Python server with PyInstaller
3. Runs the verification gates (bundle contents, frozen-safe paths, `--run-script` dispatch)
4. Packages the Electron app as **AppImage + deb**
5. Stages both artifacts into `Sablem/releases/`
6. Regenerates `Sablem/aur/sable-bin/{PKGBUILD,.SRCINFO}` with a fresh `sha256`
Useful flags:
| Flag | Effect |
|:--|:--|
| `--target deb` | Build only the deb |
| `--target AppImage` | Build only the AppImage |
| `--no-sablem` | Don't stage into this repo |
| `--no-aur` | Don't regenerate the PKGBUILD |
| `--verify-only` | Re-run verification on an existing build |
***
## Publishing
The build stages artifacts but never uploads. To publish a release:
```bash
gh release create v<version> \
Sablem/releases/Sable-<version>-x86_64.AppImage \
Sablem/releases/Sable-<version>-amd64.deb \
--repo AminulIslamSifat/Sable \
--title "Sable <version>" \
--notes "..."
```
The tag **must** match `version` in Sable's `pyproject.toml` — the AUR `PKGBUILD` points at the release asset URL.
> [!IMPORTANT]
> `releases/` is gitignored. Artifacts belong on GitHub Releases, never in git history. Only `aur/` is tracked here.
***
## Layout
```
Sablem/
├── README.md
├── aur/
│ └── sable-bin/
│ ├── PKGBUILD # generated by build.py
│ └── .SRCINFO # generated by makepkg --printsrcinfo
└── releases/ # gitignored — stage only, upload to GitHub Releases
├── Sable-<version>-x86_64.AppImage
└── Sable-<version>-amd64.deb
```
***
<p align="center"><sub>packages only — source lives in <a href="https://github.com/AminulIslamSifat/Sable">Sable</a></sub></p>