This commit is contained in:
2026-08-31 18:32:28 +02:00
parent d8a11bb2bf
commit 21c588f17a
13 changed files with 523 additions and 748 deletions
+6 -4
View File
@@ -1,4 +1,4 @@
# Development status — 0.8.0
# Development status — 0.8.1
This archive is a **development preview**, not a claim that Star Citizen has
been end-to-end validated on real gaming hardware yet.
@@ -6,8 +6,10 @@ been end-to-end validated on real gaming hardware yet.
## Verified in this build
- Shell scripts pass `bash -n`.
- `citizenctl` has a fake-backend regression test covering status, full setup, launch, repair and updater routing.
- GitHub Actions CI runs shell checks, Go tests/vet/build and the adapter smoke test.
- Go unit tests pass.
- Go backend builds as version `0.8.0`.
- Go backend builds as version `0.8.1`.
- Git-plugin updater integration test passes.
- Backend contains the owned `game-status`, `game-install`, `game-launch`, and
`game-repair` paths.
@@ -20,10 +22,10 @@ been end-to-end validated on real gaming hardware yet.
## Still needs real-hardware validation
The following must be tested on an Omarchy machine with a real Vulkan-capable
AMD/NVIDIA/Intel GPU before calling 0.8.0 a production release:
AMD/NVIDIA/Intel GPU before calling 0.8.1 a production release:
- fresh Wine prefix creation with the selected runner
- current Winetricks verbs (`arial`, `tahoma`, `dxvk`, `powershell`, `win11`)
- current Winetricks verbs (`arial`, `tahoma`, `powershell`, `win11`) plus separately managed DXVK
- current RSI Launcher unattended installation
- first RSI login and game download
- actual Star Citizen launch and EAC behavior
+3 -3
View File
@@ -38,12 +38,12 @@ Update ruft das Backend Omarchys eigenen nicht-interaktiven Plugin-Updater auf.
Vor jedem Commit/Release:
```bash
cd backend
./build.sh
cd ..
./tests/verify.sh
omarchy plugin validate .
```
Die GitHub-Actions-Datei `.github/workflows/ci.yml` führt dieselben Kernprüfungen automatisch bei Push und Pull Request aus.
Dann Versionsnummern in `manifest.json`, `citizenctl`, Go-Backend und Dokumentation
synchron halten, committen und pushen.
+2 -2
View File
@@ -1,4 +1,4 @@
# Omarchy Citizen 0.8.0 – Rundum-Sorglos
# Omarchy Citizen 0.8.1 – Rundum-Sorglos
## Installation
@@ -85,7 +85,7 @@ Das Paket enthält zusätzlich:
- Maintenance-Ergebnis
- Updater-Log
## Wine-Kompatibilitätsfallback (0.8.0)
## Wine-Kompatibilitätsfallback (0.8.1)
Autopilot verwendet nicht blind die höchste Versionsnummer.
+2 -2
View File
@@ -12,7 +12,7 @@ Panel {
property var anchorItem: null
property var hostWidget: null
property string pluginVersion: "0.8.0"
property string pluginVersion: "0.8.1"
property string health: "checking"
property string depsState: "checking"
property string depsMissing: ""
@@ -106,7 +106,7 @@ Panel {
values[lines[i].slice(0, p)] = lines[i].slice(p + 1)
}
pluginVersion = values.plugin_version || "0.8.0"
pluginVersion = values.plugin_version || "0.8.1"
health = values.health || "setup"
depsState = values.deps || "missing"
depsMissing = values.deps_missing || ""
+12 -1
View File
@@ -1,4 +1,4 @@
# Omarchy Citizen 0.8.0 — Development Preview
# Omarchy Citizen 0.8.1 — Development Preview
Omarchy Citizen is moving from a frontend around the LUG installer to an
**owned, self-maintaining Star Citizen stack for Omarchy**.
@@ -49,3 +49,14 @@ See `DEVELOPMENT_STATUS.md`.
## License
MIT.
## 0.8.1 adapter hotfix
The 0.8.0 preview accidentally mixed legacy shell actions with the new Go-owned
stack. `citizenctl` has been rewritten as a thin adapter. There is now one
authoritative implementation for install/status/launch/repair: the Go backend.
A regression test exercises the adapter with a fake backend, including the exact
full-setup path that previously failed with `backend_game_status: command not
found` / `notify: command not found`.
Binary file not shown.
+1 -1
View File
@@ -16,7 +16,7 @@ import (
)
const (
appVersion = "0.8.0"
appVersion = "0.8.1"
pluginID = "local.omarchy-citizen"
)
+1 -1
View File
@@ -580,7 +580,7 @@ func (a *App) ensurePrefixComponents(gc GameConfig) error {
cache := filepath.Join(a.cacheDir, "winetricks-cache", tag)
_ = os.MkdirAll(cache, 0o755)
env = append(env, "W_CACHE="+cache, "WINETRICKS_DOWNLOADER=curl")
cmd := exec.Command(wt, "-q", "arial", "tahoma", "dxvk", "powershell", "win11")
cmd := exec.Command(wt, "-q", "arial", "tahoma", "powershell", "win11")
cmd.Env = env
out, err := cmd.CombinedOutput()
a.logf("winetricks %s output=%s", tag, compactDiagnostic(string(out)))
+340 -731
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -48,7 +48,7 @@ omarchy plugin enable "$PLUGIN_ID"
omarchy restart shell >/dev/null 2>&1 || true
echo
echo "Omarchy Citizen 0.8.0 wurde installiert:"
echo "Omarchy Citizen 0.8.1 wurde installiert:"
echo " $DEST"
echo
echo "Links-Klick auf 'SC' in der Omarchy-Leiste öffnet das Star-Citizen-Panel."
@@ -56,5 +56,5 @@ echo
echo "Falls 'SC' nicht sichtbar ist:"
echo " omarchy bar move $PLUGIN_ID --section right"
echo
echo "LUG Helper Status:"
echo "Omarchy Citizen Status:"
bash "$DEST/citizenctl" status
+1 -1
View File
@@ -2,7 +2,7 @@
"schemaVersion": 1,
"id": "local.omarchy-citizen",
"name": "Omarchy Citizen",
"version": "0.8.0",
"version": "0.8.1",
"author": "Community prototype",
"license": "MIT",
"description": "Omarchy Citizen self-managed Star Citizen stack: compatible Wine selection, owned prefix/launcher installation, automatic DXVK/RSI updates, hardware gate, rollback and support diagnostics.",
+132
View File
@@ -0,0 +1,132 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT
mkdir -p "$TMP/home/.local/lib/omarchy-citizen" "$TMP/bin" "$TMP/home/Downloads"
CALLS="$TMP/calls.log"
cat > "$TMP/home/.local/lib/omarchy-citizen/omarchy-citizen-backend" <<'BACKEND'
#!/usr/bin/env bash
set -u
printf '%s\n' "$*" >> "${FAKE_CALLS:?}"
case "${1:-status}" in
game-status)
cat <<STATUS
backend_version=0.8.1
health=${FAKE_HEALTH:-install}
hardware=ready
hardware_reason=
gpu=Test GPU
vulkan=ready
cpu_avx=true
ram_gib=32
combined_gib=40
disk_free_gib=300
prefix=$HOME/Games/star-citizen
prefix_state=${FAKE_PREFIX_STATE:-missing}
launcher_state=${FAKE_LAUNCHER_STATE:-missing}
game_state=${FAKE_GAME_STATE:-missing}
wine_version=11.14-1
dxvk_version=v2.7
lug_version=v4.16
rsi_installer=RSI-Setup.exe
autopilot=true
STATUS
;;
status|check)
cat <<STATUS
backend_version=0.8.1
managed=git
auto_apply=true
auto_maintain=true
lug_version=v4.16
wine_version=11.14-1
dxvk_version=v2.7
last_maintenance=now
maintenance_result=ok
update=current
remote=https://example.invalid/repo.git
trusted_remote=https://example.invalid/repo.git
branch=main
local_commit=abc
remote_commit=abc
dirty=false
last_check=now
last_update=
last_result=ok
STATUS
;;
doctor) echo 'runner=test'; echo 'wine_selftest=ok' ;;
autopilot|auto|maintain|update|game-install|game-launch|game-repair) : ;;
*) echo "unexpected fake backend command: $*" >&2; exit 3 ;;
esac
BACKEND
chmod +x "$TMP/home/.local/lib/omarchy-citizen/omarchy-citizen-backend"
cat > "$TMP/bin/xdg-terminal-exec" <<'TERM'
#!/usr/bin/env bash
printf 'terminal:%s\n' "$*" >> "${FAKE_CALLS:?}"
exit 0
TERM
cat > "$TMP/bin/uwsm-app" <<'UWSM'
#!/usr/bin/env bash
[[ "${1:-}" == "--" ]] && shift
exec "$@"
UWSM
cat > "$TMP/bin/notify-send" <<'NOTIFY'
#!/usr/bin/env bash
exit 0
NOTIFY
cat > "$TMP/bin/xdg-user-dir" <<'XDG'
#!/usr/bin/env bash
printf '%s/Downloads\n' "$HOME"
XDG
chmod +x "$TMP/bin/"*
export HOME="$TMP/home"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
export XDG_CACHE_HOME="$HOME/.cache"
export PATH="$TMP/bin:/usr/bin:/bin"
export FAKE_CALLS="$CALLS"
# 1. Status must be fully routed through the Go backend without missing shell functions.
out="$(bash "$ROOT/citizenctl" status 2>&1)"
grep -q '^plugin_version=0.8.1$' <<<"$out"
grep -q '^health=install$' <<<"$out"
grep -q '^managed_wine_version=11.14-1$' <<<"$out"
! grep -qi 'command not found' <<<"$out"
# 2. The complete setup terminal action must call all owned backend stages.
: > "$CALLS"
bash "$ROOT/citizenctl" install-stack-terminal >/dev/null 2>&1
grep -q '^autopilot enable$' "$CALLS"
grep -q '^doctor$' "$CALLS"
grep -q '^game-install$' "$CALLS"
grep -q '^maintain$' "$CALLS"
# 3. Primary setup routing must open the visible setup terminal.
: > "$CALLS"
FAKE_HEALTH=install bash "$ROOT/citizenctl" primary >/dev/null 2>&1
grep -q 'terminal:.*install-stack-terminal' "$CALLS"
# 4. A ready installation launches through the Go backend directly.
: > "$CALLS"
FAKE_HEALTH=ready FAKE_PREFIX_STATE=ready FAKE_LAUNCHER_STATE=ready FAKE_GAME_STATE=ready \
bash "$ROOT/citizenctl" primary >/dev/null 2>&1
grep -q '^game-launch$' "$CALLS"
# 5. Repair routing remains visible.
: > "$CALLS"
FAKE_HEALTH=repair bash "$ROOT/citizenctl" primary >/dev/null 2>&1
grep -q 'terminal:.*repair-stack-terminal' "$CALLS"
# 6. Plugin updater wrapper must not collide with the combined status function.
: > "$CALLS"
bash "$ROOT/citizenctl" plugin-update-check >/dev/null 2>&1
grep -q '^check$' "$CALLS"
echo 'citizenctl smoke tests: OK'
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"
for f in citizenctl install.sh INSTALLIEREN.sh uninstall.sh; do
bash -n "$f"
done
python3 -m py_compile support-sanitize.py
(
cd backend
gofmt -w cmd/omarchy-citizen-backend/*.go
go test ./...
go vet ./...
bash build.sh
)
bash tests/smoke-citizenctl.sh
echo "Omarchy Citizen verification: OK"