swayfx-mosaic/docs/UPSTREAM.md

50 lines
1.6 KiB
Markdown

# Upstream relationship
SwayFX Mosaic is intentionally maintained as a small feature delta above SwayFX.
## Initial base
- Project: SwayFX
- Upstream: https://github.com/WillPower3309/swayfx
- Tag: `0.6`
- Commit: `fd71a6bdc061bd633b488ae7b83e8a6981d22f86`
- Sway base reported by SwayFX: 1.12.0
- wlroots ABI used by this base: 0.20
- SceneFX ABI used by this base: 0.5
The original local Arch package was `swayfx 0.6-1`. Its exact build-source commit could not be reconstructed, so the signed/verifiable project base is the public upstream 0.6 tag commit rather than a claim of byte-for-byte equivalence with that package.
## Remote policy
Local development uses:
```text
upstream → SwayFX upstream
origin → Forgejo canonical repository
github → GitHub mirror
```
Only the project remotes receive Mosaic commits.
Do not push Mosaic branches to `upstream`.
## Version policy
Mosaic versions follow the SwayFX base explicitly.
Example:
```text
swayfx 0.6
swayfx-mosaic 0.6+mosaic.1
```
A future SwayFX 0.7 does not automatically imply a working Mosaic 0.7 package. The patch must be rebased and validated first.
## Why a separate binary?
SwayFX does not expose a stable runtime plugin ABI for injecting a new layout. Mosaic therefore cannot be shipped as a small external `.so` while leaving the running `/usr/bin/sway` binary unchanged.
The package instead builds the compositor with the Mosaic delta but installs it under a different executable name.
This preserves the operational requirement that ordinary SwayFX can continue to update and remain a safe fallback.