install.sh asked /releases/latest and installed whatever came back. That is v0.1.0 today, which predates the updater, and it was about to get worse: the `stable` pointer release write-manifest.sh creates is non-prerelease and holds only latest.json, so from the next v* tag onward it would have WON /releases/latest and the installer would have found nothing to install. So resolve a channel instead of a "latest". `--channel stable|dev` (or TS_CHANNEL), default stable, named to match update.rs's Channel exactly. dev reads /releases/tags/dev. stable reads the pointer's own latest.json, takes its version, and installs that v* release — the same file the app reads, so the installer and the updater cannot disagree about what stable means. Two things found on the way. The dev release's description still told people to run the stable command, and always would have: publish-release.sh writes a body only when it CREATES a release, and a fixed-tag release is only created once, so the text froze at the first build. The 409 path now PATCHes it. And the asset greps were unanchored, so a .AppImage.sig URL could match as the bundle URL — harmless by coincidence, not by construction. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MKsUY9Z45KQd34V956hZ9Q
72 lines
2.8 KiB
Markdown
72 lines
2.8 KiB
Markdown
# ThoughtSync desktop — Arch package
|
|
|
|
A **prebuilt** native pacman package, published as an asset on every ThoughtSync
|
|
release. Nothing to compile, no toolchain to install.
|
|
|
|
Installing natively on Arch matters for more than tidiness: pacman pulls
|
|
`webkit2gtk-4.1` itself and the app runs against your system's graphics stack,
|
|
which is what keeps the bundled-library `EGL_BAD_PARAMETER` black window
|
|
(issue 2021) from coming back. It also means the app is package-manager tracked
|
|
and uninstalls cleanly.
|
|
|
|
## Install
|
|
|
|
Easiest — the one-command installer picks this package automatically on any
|
|
pacman system:
|
|
|
|
```sh
|
|
curl -fsSL https://git.fabledsword.com/bvandeusen/thoughtsync/raw/branch/dev/desktop/packaging/install.sh | sh
|
|
```
|
|
|
|
That installs the newest tagged release. To follow the rolling development
|
|
channel instead, pass the flag through the pipe:
|
|
|
|
```sh
|
|
curl -fsSL https://git.fabledsword.com/bvandeusen/thoughtsync/raw/branch/dev/desktop/packaging/install.sh | sh -s -- --channel dev
|
|
```
|
|
|
|
Or grab the `.pkg.tar.*` from the
|
|
[releases page](https://git.fabledsword.com/bvandeusen/thoughtsync/releases)
|
|
and install it directly:
|
|
|
|
```sh
|
|
sudo pacman -U thoughtsync-desktop-*-x86_64.pkg.tar.*
|
|
```
|
|
|
|
The compression suffix depends on what the build image provides — `.zst` when
|
|
`zstd` is installed, otherwise `.xz` (today's builds are `.xz`). pacman reads
|
|
all of them; only the filename differs.
|
|
|
|
Either way you get:
|
|
|
|
- `/usr/bin/thoughtsync` — the app
|
|
- `/usr/share/applications/thoughtsync.desktop` — the menu entry
|
|
- `/usr/share/icons/hicolor/*/apps/thoughtsync.png` — themed icons
|
|
|
|
Launch **ThoughtSync** from your app menu, or run `thoughtsync`.
|
|
|
|
Uninstall: `sudo pacman -R thoughtsync-desktop`.
|
|
|
|
## How the package is built
|
|
|
|
`package-prebuilt.sh` runs in CI (`.forgejo/workflows/desktop.yml`) and wraps the
|
|
binary the Linux build already produced into a pacman package — it does not
|
|
compile anything a second time.
|
|
|
|
Packaging a Debian-compiled binary for Arch is safe here because the binary
|
|
bundles nothing: it resolves `libwebkit2gtk-4.1.so.0`, `libgtk-3.so.0` and
|
|
`libsoup-3.0.so.0` by SONAME at runtime and those are identical on both distros,
|
|
SQLite is compiled in (`rusqlite` "bundled"), and glibc's forward compatibility
|
|
means building on Debian's older glibc and running on Arch's newer one is the
|
|
safe direction.
|
|
|
|
CI is Debian and has no `pacman`, so it cannot install-test the result. The build
|
|
step instead logs the package's `.PKGINFO` and complete file listing, so the
|
|
package is auditable from the run log; a real `pacman -U` is the final proof.
|
|
|
|
## Previously
|
|
|
|
This directory used to hold a source-build `PKGBUILD` requiring `makepkg -si`
|
|
with `rust` + `nodejs` + `npm` installed. It was removed once prebuilt packages
|
|
shipped — asking every user to install a compiler toolchain isn't distribution.
|