v0.8.1
This commit is contained in:
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
|
||||
@@ -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 || ""
|
||||
|
||||
@@ -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.
@@ -16,7 +16,7 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
appVersion = "0.8.0"
|
||||
appVersion = "0.8.1"
|
||||
pluginID = "local.omarchy-citizen"
|
||||
)
|
||||
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -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
@@ -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.",
|
||||
|
||||
@@ -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'
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user