v0.6.4
This commit is contained in:
+4
-4
@@ -1,4 +1,4 @@
|
||||
# Omarchy Citizen 0.6.3 – Plug-&-Play-Installation
|
||||
# Omarchy Citizen 0.6.4 – Plug-&-Play-Installation
|
||||
|
||||
## Ziel
|
||||
|
||||
@@ -275,9 +275,9 @@ Damit brauchst du im ersten Supportkontakt normalerweise keine Terminalbefehle
|
||||
vom Nutzer anzufordern.
|
||||
|
||||
|
||||
## Hotfix 0.6.3 – Setup-Button
|
||||
## Hotfix 0.6.4 – Setup-Button
|
||||
|
||||
Version 0.6.3 ändert die Ausführung der Panel-Aktionen grundlegend.
|
||||
Version 0.6.4 ändert die Ausführung der Panel-Aktionen grundlegend.
|
||||
|
||||
Beim Klick auf **EINRICHTEN & STARTKLAR MACHEN** wird die Aktion nun direkt als
|
||||
Quickshell-Prozess gestartet. Das Panel zeigt sofort **WIRD GESTARTET**.
|
||||
@@ -290,7 +290,7 @@ im Support-Paket.
|
||||
Nach der Installation wird der Omarchy-Shellprozess einmal neu gestartet, damit
|
||||
die neue QML-Version sicher aktiv ist.
|
||||
|
||||
## 0.6.3 – unvollständiger Wine-Prefix
|
||||
## 0.6.4 – unvollständiger Wine-Prefix
|
||||
|
||||
Ein Ordner wie `~/Games/star-citizen` gilt jetzt erst dann als fertiger Wine-Prefix,
|
||||
wenn mindestens `drive_c`, `system.reg` und `user.reg` existieren.
|
||||
|
||||
@@ -12,7 +12,7 @@ Panel {
|
||||
property var anchorItem: null
|
||||
property var hostWidget: null
|
||||
|
||||
property string pluginVersion: "0.6.3"
|
||||
property string pluginVersion: "0.6.4"
|
||||
property string health: "checking"
|
||||
property string depsState: "checking"
|
||||
property string depsMissing: ""
|
||||
@@ -97,7 +97,7 @@ Panel {
|
||||
values[lines[i].slice(0, p)] = lines[i].slice(p + 1)
|
||||
}
|
||||
|
||||
pluginVersion = values.plugin_version || "0.6.3"
|
||||
pluginVersion = values.plugin_version || "0.6.4"
|
||||
health = values.health || "setup"
|
||||
depsState = values.deps || "missing"
|
||||
depsMissing = values.deps_missing || ""
|
||||
@@ -122,6 +122,7 @@ Panel {
|
||||
function stateIcon(state) {
|
||||
if (state === "ready" || state === "current") return "✓"
|
||||
if (state === "available") return "↑"
|
||||
if (state === "warning") return "!"
|
||||
if (state === "partial" || state === "unknown") return "…"
|
||||
if (state === "checking") return "·"
|
||||
return "!"
|
||||
@@ -129,11 +130,28 @@ Panel {
|
||||
|
||||
function stateColor(state) {
|
||||
if (state === "ready" || state === "current") return success
|
||||
if (state === "available") return warning
|
||||
if (state === "available" || state === "warning") return warning
|
||||
if (state === "partial" || state === "unknown" || state === "checking") return accent
|
||||
return danger
|
||||
}
|
||||
|
||||
function pluginUpdateText() {
|
||||
if (root.pluginUpdate === "available") return "Update verfügbar"
|
||||
if (root.pluginUpdate === "current") return "aktuell"
|
||||
if (root.pluginUpdate === "blocked-dirty") return "lokale Änderungen · Update pausiert"
|
||||
if (root.pluginUpdate === "blocked-diverged") return "Git-Stand abweichend · Update pausiert"
|
||||
if (root.pluginUpdate === "blocked-remote") return "Updatequelle geändert · Update pausiert"
|
||||
if (root.pluginUpdate === "zip") return "ZIP-Installation"
|
||||
return root.pluginUpdate
|
||||
}
|
||||
|
||||
function pluginUpdateState() {
|
||||
if (root.pluginUpdate === "available") return "available"
|
||||
if (root.pluginUpdate === "current") return "current"
|
||||
if (String(root.pluginUpdate).indexOf("blocked-") === 0) return "warning"
|
||||
return "unknown"
|
||||
}
|
||||
|
||||
function healthColor() {
|
||||
if (health === "ready") return success
|
||||
if (health === "recover-prefix" || health === "repair") return warning
|
||||
@@ -219,17 +237,22 @@ Panel {
|
||||
}
|
||||
|
||||
onStarted: {
|
||||
root.actionStatus = root.actionKind === "primary"
|
||||
? "Setup/Start wird vorbereitet…"
|
||||
: "Aktion wird ausgeführt…"
|
||||
if (root.actionKind === "primary" && root.health === "recover-prefix")
|
||||
root.actionStatus = "Reparatur-Fenster wird geöffnet…"
|
||||
else if (root.actionKind === "primary")
|
||||
root.actionStatus = "Setup/Start wird vorbereitet…"
|
||||
else
|
||||
root.actionStatus = "Aktion wird ausgeführt…"
|
||||
}
|
||||
|
||||
onExited: function(exitCode) {
|
||||
if (exitCode === 0) {
|
||||
root.actionError = ""
|
||||
root.actionStatus = root.actionKind === "primary" && root.health !== "ready"
|
||||
? "Setup-Fenster wurde geöffnet. Folge dort einfach den angezeigten Schritten."
|
||||
: "Aktion wurde gestartet."
|
||||
root.actionStatus = root.actionKind === "primary" && root.health === "recover-prefix"
|
||||
? "Reparatur-Fenster wurde geöffnet. Dort läuft die sichere Wiederherstellung."
|
||||
: (root.actionKind === "primary" && root.health !== "ready"
|
||||
? "Setup-Fenster wurde geöffnet. Folge dort einfach den angezeigten Schritten."
|
||||
: "Aktion wurde gestartet.")
|
||||
root.refreshStatus()
|
||||
|
||||
if (root.actionCloseOnSuccess)
|
||||
@@ -594,11 +617,8 @@ Panel {
|
||||
|
||||
StatusLine {
|
||||
label: "Plugin-Stand"
|
||||
state: root.pluginUpdate === "available" ? "available" :
|
||||
(root.pluginUpdate === "current" ? "current" : "unknown")
|
||||
value: root.pluginUpdate === "available"
|
||||
? "Update verfügbar"
|
||||
: (root.pluginUpdate === "current" ? "aktuell" : root.pluginUpdate)
|
||||
state: root.pluginUpdateState()
|
||||
value: root.pluginUpdateText()
|
||||
}
|
||||
|
||||
Grid {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Omarchy Citizen 0.6.3
|
||||
# Omarchy Citizen 0.6.4
|
||||
|
||||
A plug-and-play Star Citizen control panel for Omarchy.
|
||||
|
||||
@@ -70,7 +70,7 @@ remote; unattended updates stop if that remote changes or the checkout is dirty.
|
||||
See [`backend/README.md`](backend/README.md) and [`GIT_DISTRIBUTION.md`](GIT_DISTRIBUTION.md).
|
||||
|
||||
|
||||
## 0.6.3 hotfix
|
||||
## 0.6.4 hotfix
|
||||
|
||||
- primary/setup actions now run through a Quickshell `Process` instead of fire-and-forget `bar.run`
|
||||
- the panel shows `WIRD GESTARTET` immediately after a click
|
||||
@@ -78,7 +78,7 @@ See [`backend/README.md`](backend/README.md) and [`GIT_DISTRIBUTION.md`](GIT_DIS
|
||||
- terminal launch has a monitored fallback path and logs immediate launcher failures
|
||||
- installers restart the Omarchy shell after QML changes to avoid stale third-party plugin QML
|
||||
|
||||
## 0.6.3 UI / setup hotfix
|
||||
## 0.6.4 UI / setup hotfix
|
||||
|
||||
- fixed `undefined` in reusable status rows and chips
|
||||
- panel no longer inherits the bar's theme font; uses a neutral system sans font
|
||||
@@ -86,7 +86,7 @@ See [`backend/README.md`](backend/README.md) and [`GIT_DISTRIBUTION.md`](GIT_DIS
|
||||
- setup terminal is launched directly through `xdg-terminal-exec`/UWSM with separate argv
|
||||
- failed package/AUR setup remains visible instead of the terminal disappearing immediately
|
||||
|
||||
## 0.6.3 incomplete-prefix recovery
|
||||
## 0.6.4 incomplete-prefix recovery
|
||||
|
||||
- a configured folder is no longer considered a valid Wine prefix merely because it exists
|
||||
- valid prefixes require `drive_c`, `system.reg`, and `user.reg`
|
||||
@@ -95,3 +95,13 @@ See [`backend/README.md`](backend/README.md) and [`GIT_DISTRIBUTION.md`](GIT_DIS
|
||||
- stale LUG target config files are backed up before a clean reinstall
|
||||
- existing `Data.p4k` is never moved by Omarchy Citizen; migration is delegated to the LUG Helper
|
||||
- support bundles now include the newest `/tmp/lughelper-install-*.log` and a prefix-health report
|
||||
|
||||
## 0.6.4 visible recovery hotfix
|
||||
|
||||
- incomplete-prefix recovery no longer spawns a hidden second background process
|
||||
- `SETUP SICHER REPARIEREN` opens a visible terminal directly
|
||||
- the incomplete prefix is automatically renamed to a timestamped backup; it is never deleted
|
||||
- LUG reinstall output remains visible and is logged at the same time
|
||||
- if recovery fails, the terminal stays open with the error code and support instructions
|
||||
- guided setup, repair assistant, support bundle creation and NGL file selection no longer use nested `nohup` wrappers
|
||||
- updater status `blocked-dirty` is displayed as the user-friendly `lokale Änderungen · Update pausiert`
|
||||
|
||||
Binary file not shown.
@@ -16,7 +16,7 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
appVersion = "0.6.3"
|
||||
appVersion = "0.6.4"
|
||||
pluginID = "local.omarchy-citizen"
|
||||
)
|
||||
|
||||
|
||||
+109
-82
@@ -2,7 +2,7 @@
|
||||
set -u
|
||||
|
||||
PLUGIN_ID="local.omarchy-citizen"
|
||||
PLUGIN_VERSION="0.6.3"
|
||||
PLUGIN_VERSION="0.6.4"
|
||||
|
||||
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/starcitizen-lug"
|
||||
DATA_DIR="${XDG_DATA_HOME:-$HOME/.local/share}"
|
||||
@@ -198,6 +198,21 @@ run_helper_sync() {
|
||||
fi
|
||||
}
|
||||
|
||||
run_helper_visible() {
|
||||
local helper
|
||||
helper="$(find_helper)" || {
|
||||
echo "Der Star Citizen LUG Helper wurde nicht gefunden." >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
log_line "lug-helper visible args=$*"
|
||||
if [[ "$helper" == *.sh ]]; then
|
||||
bash "$helper" "$@"
|
||||
else
|
||||
"$helper" "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
run_helper_gui() {
|
||||
local helper
|
||||
helper="$(find_helper)" || {
|
||||
@@ -518,103 +533,113 @@ stop_prefix_wineserver() {
|
||||
fi
|
||||
}
|
||||
|
||||
recover_incomplete_prefix_interactive() {
|
||||
recover_incomplete_prefix_terminal() {
|
||||
set -Ee
|
||||
exec > >(tee -a "$LOG_FILE") 2>&1
|
||||
|
||||
local prefix stamp backup datap4k=""
|
||||
|
||||
recovery_failed() {
|
||||
local rc=$?
|
||||
trap - ERR
|
||||
echo
|
||||
echo "=================================================="
|
||||
echo " REPARATUR KONNTE NICHT ABGESCHLOSSEN WERDEN"
|
||||
echo "=================================================="
|
||||
echo
|
||||
echo "Fehlercode: $rc"
|
||||
echo
|
||||
echo "Dein vorheriger Ordner wurde nicht gelöscht."
|
||||
echo "Im SC-Panel kannst du jetzt „Support-Paket erstellen“ wählen."
|
||||
echo
|
||||
log_line "recover-prefix-terminal failed rc=$rc"
|
||||
notify "Omarchy Citizen" "Setup-Reparatur fehlgeschlagen. Bitte erstelle ein Support-Paket."
|
||||
if [[ -t 0 ]]; then
|
||||
read -r -p "Drücke Enter, um dieses Fenster zu schließen … " _ || true
|
||||
else
|
||||
sleep 10
|
||||
fi
|
||||
exit "$rc"
|
||||
}
|
||||
trap recovery_failed ERR
|
||||
|
||||
prefix="$(find_incomplete_prefix 2>/dev/null)" || {
|
||||
log_line "recover-prefix requested but no incomplete prefix found"
|
||||
guided_setup_interactive
|
||||
return
|
||||
echo "Es wurde kein unvollständiger Wine-Prefix mehr gefunden."
|
||||
echo "Starte stattdessen die normale Einrichtung."
|
||||
log_line "recover-prefix-terminal no incomplete prefix found"
|
||||
trap - ERR
|
||||
return 0
|
||||
}
|
||||
|
||||
datap4k="$prefix/drive_c/Program Files/Roberts Space Industries/StarCitizen/LIVE/Data.p4k"
|
||||
|
||||
# If real game data is present, never move it ourselves. Let the LUG Helper's
|
||||
# built-in reinstall/migration path handle it.
|
||||
echo
|
||||
echo "=================================================="
|
||||
echo " Omarchy Citizen – Setup sicher reparieren"
|
||||
echo "=================================================="
|
||||
echo
|
||||
echo "Unvollständiger Wine-Prefix:"
|
||||
echo " $prefix"
|
||||
echo
|
||||
|
||||
# Never move real game data ourselves.
|
||||
if [[ -f "$datap4k" ]]; then
|
||||
log_line "incomplete prefix contains Data.p4k; delegating migration to LUG Helper"
|
||||
run_helper_sync --install || true
|
||||
return
|
||||
echo "Vorhandene Star-Citizen-Spieldaten wurden erkannt."
|
||||
echo "Omarchy Citizen verschiebt diese Daten nicht selbst."
|
||||
echo "Die Reparatur wird an den LUG Helper übergeben."
|
||||
echo
|
||||
log_line "recover-prefix-terminal Data.p4k present; delegate to LUG"
|
||||
run_helper_visible --install
|
||||
trap - ERR
|
||||
return 0
|
||||
fi
|
||||
|
||||
stamp="$(date '+%Y%m%d-%H%M%S')"
|
||||
backup="${prefix}-incomplete-${stamp}"
|
||||
|
||||
if command -v zenity >/dev/null 2>&1; then
|
||||
if ! zenity --question \
|
||||
--width=600 \
|
||||
--title="Omarchy Citizen – unvollständiges Setup reparieren" \
|
||||
--ok-label="Automatisch reparieren" \
|
||||
--cancel-label="Abbrechen" \
|
||||
--text="Omarchy Citizen hat einen halbfertigen Star-Citizen-Wine-Prefix erkannt:
|
||||
echo "Der halbfertige Ordner wird NICHT gelöscht."
|
||||
echo "Er wird gesichert als:"
|
||||
echo " $backup"
|
||||
echo
|
||||
echo "Danach wird der offizielle LUG-Installer sauber neu gestartet."
|
||||
echo
|
||||
|
||||
$prefix
|
||||
log_line "recover-prefix-terminal prefix=$prefix backup=$backup"
|
||||
|
||||
Es fehlen drive_c und/oder die Wine-Registrydateien. Fertige Star-Citizen-Spieldaten (Data.p4k) wurden nicht gefunden.
|
||||
|
||||
Der Ordner wird NICHT gelöscht, sondern sicher umbenannt nach:
|
||||
|
||||
$backup
|
||||
|
||||
Danach startet der offizielle LUG-Installer sauber neu." 2>/dev/null; then
|
||||
return 0
|
||||
fi
|
||||
else
|
||||
printf '\nUnvollständiges Star-Citizen-Setup gefunden:\n%s\n\n' "$prefix"
|
||||
printf 'Es wird gesichert als:\n%s\n\n' "$backup"
|
||||
read -r -p "Automatisch reparieren? [j/N]: " answer
|
||||
case "${answer,,}" in
|
||||
j|ja|y|yes) ;;
|
||||
*) return 0 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
log_line "recovering incomplete prefix=$prefix backup=$backup"
|
||||
stop_prefix_wineserver "$prefix"
|
||||
|
||||
if ! mv -- "$prefix" "$backup"; then
|
||||
notify_error "Der unvollständige Star-Citizen-Ordner konnte nicht gesichert werden.
|
||||
|
||||
Bitte erstelle ein Support-Paket."
|
||||
return 1
|
||||
fi
|
||||
|
||||
mv -- "$prefix" "$backup"
|
||||
backup_lug_target_configs "$stamp"
|
||||
|
||||
notify "Omarchy Citizen" "Unvollständiges Setup wurde gesichert. Der LUG-Installer startet jetzt neu."
|
||||
run_helper_sync --install || {
|
||||
log_line "fresh LUG install after incomplete-prefix recovery failed"
|
||||
if command -v zenity >/dev/null 2>&1; then
|
||||
if zenity --question \
|
||||
--width=560 \
|
||||
--title="Star-Citizen-Setup fehlgeschlagen" \
|
||||
--ok-label="Support-Paket erstellen" \
|
||||
--cancel-label="Später" \
|
||||
--text="Auch der saubere Neuversuch konnte den Wine-Prefix nicht vollständig erstellen.
|
||||
echo "✓ Backup erstellt."
|
||||
echo
|
||||
echo "Starte frische LUG-Einrichtung …"
|
||||
echo
|
||||
|
||||
Deine vorherige Installation wurde nicht gelöscht; sie liegt als Backup vor.
|
||||
|
||||
Soll Omarchy Citizen jetzt direkt ein Support-Paket erstellen?" 2>/dev/null; then
|
||||
"$SELF" support-build
|
||||
fi
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
run_helper_visible --install
|
||||
|
||||
echo
|
||||
echo "Prüfe den neu angelegten Wine-Prefix …"
|
||||
if read_prefix >/dev/null 2>&1; then
|
||||
notify "Omarchy Citizen" "Wine-Prefix wurde erfolgreich erstellt."
|
||||
log_line "incomplete-prefix recovery succeeded"
|
||||
else
|
||||
log_line "LUG install returned but prefix still incomplete"
|
||||
notify_error "Der LUG-Installer wurde beendet, aber der Wine-Prefix ist weiterhin unvollständig.
|
||||
|
||||
Bitte erstelle ein Support-Paket."
|
||||
return 1
|
||||
echo "✓ Wine-Prefix ist vollständig initialisiert."
|
||||
log_line "recover-prefix-terminal succeeded"
|
||||
trap - ERR
|
||||
notify "Omarchy Citizen" "Wine-Prefix wurde erfolgreich neu erstellt."
|
||||
echo
|
||||
echo "Reparatur abgeschlossen. Du kannst dieses Fenster schließen."
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Der LUG-Installer wurde beendet, aber drive_c/system.reg/user.reg"
|
||||
echo "sind weiterhin nicht vollständig vorhanden."
|
||||
echo
|
||||
log_line "recover-prefix-terminal LUG returned but prefix still incomplete"
|
||||
return 1
|
||||
}
|
||||
|
||||
recover_incomplete_prefix() {
|
||||
nohup bash "$SELF" recover-prefix-interactive >>"$LOG_FILE" 2>&1 &
|
||||
launch_terminal_action recover-prefix-terminal
|
||||
}
|
||||
|
||||
guided_setup_interactive() {
|
||||
@@ -626,8 +651,8 @@ guided_setup_interactive() {
|
||||
fi
|
||||
|
||||
if find_incomplete_prefix >/dev/null 2>&1; then
|
||||
log_line "guided setup found incomplete prefix; switching to recovery"
|
||||
recover_incomplete_prefix_interactive
|
||||
log_line "guided setup found incomplete prefix; opening visible recovery terminal"
|
||||
launch_terminal_action recover-prefix-terminal
|
||||
return $?
|
||||
fi
|
||||
|
||||
@@ -657,7 +682,7 @@ guided_setup() {
|
||||
launch_terminal_action install-stack-terminal
|
||||
return
|
||||
fi
|
||||
nohup bash "$SELF" guided-setup-interactive >>"$LOG_FILE" 2>&1 &
|
||||
guided_setup_interactive
|
||||
}
|
||||
|
||||
install_stack_terminal() {
|
||||
@@ -722,9 +747,11 @@ install_stack_terminal() {
|
||||
if find_incomplete_prefix >/dev/null 2>&1; then
|
||||
echo
|
||||
echo "Eine frühere, unvollständige Wine-Prefix-Erstellung wurde erkannt."
|
||||
echo "Die Reparatur wird jetzt grafisch fortgesetzt."
|
||||
echo "Öffne die sichere Reparatur in einem eigenen Fenster."
|
||||
echo
|
||||
recover_incomplete_prefix_interactive
|
||||
trap - ERR
|
||||
launch_terminal_action recover-prefix-terminal
|
||||
return 0
|
||||
elif ! read_prefix >/dev/null 2>&1; then
|
||||
run_helper_sync --install || true
|
||||
fi
|
||||
@@ -824,7 +851,7 @@ repair_assistant_interactive() {
|
||||
return
|
||||
;;
|
||||
recover-prefix)
|
||||
recover_incomplete_prefix_interactive
|
||||
launch_terminal_action recover-prefix-terminal
|
||||
return
|
||||
;;
|
||||
install)
|
||||
@@ -896,7 +923,7 @@ repair_assistant_interactive() {
|
||||
}
|
||||
|
||||
repair_assistant() {
|
||||
nohup bash "$SELF" repair-interactive >>"$LOG_FILE" 2>&1 &
|
||||
repair_assistant_interactive
|
||||
}
|
||||
|
||||
sanitize_to() {
|
||||
@@ -1131,7 +1158,7 @@ Schicke dieses Archiv zusammen mit der Support-ID an den Plugin-Support." \
|
||||
}
|
||||
|
||||
support_start() {
|
||||
nohup bash "$SELF" support-build >>"$LOG_FILE" 2>&1 &
|
||||
support_build
|
||||
}
|
||||
|
||||
open_debug_log() {
|
||||
@@ -1260,7 +1287,7 @@ Fortfahren?" 2>/dev/null; then
|
||||
}
|
||||
|
||||
ngl_install() {
|
||||
nohup bash "$SELF" ngl-install-interactive >>"$LOG_FILE" 2>&1 &
|
||||
ngl_install_interactive
|
||||
}
|
||||
|
||||
case "$ACTION" in
|
||||
@@ -1268,7 +1295,7 @@ case "$ACTION" in
|
||||
primary) primary_action ;;
|
||||
setup) guided_setup ;;
|
||||
recover-prefix) recover_incomplete_prefix ;;
|
||||
recover-prefix-interactive) recover_incomplete_prefix_interactive ;;
|
||||
recover-prefix-terminal) recover_incomplete_prefix_terminal ;;
|
||||
guided-setup-interactive) guided_setup_interactive ;;
|
||||
repair) repair_assistant ;;
|
||||
repair-interactive) repair_assistant_interactive ;;
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ omarchy plugin enable "$PLUGIN_ID"
|
||||
omarchy restart shell >/dev/null 2>&1 || true
|
||||
|
||||
echo
|
||||
echo "Omarchy Citizen 0.6.3 wurde installiert:"
|
||||
echo "Omarchy Citizen 0.6.4 wurde installiert:"
|
||||
echo " $DEST"
|
||||
echo
|
||||
echo "Links-Klick auf 'SC' in der Omarchy-Leiste öffnet das Star-Citizen-Panel."
|
||||
|
||||
+2
-2
@@ -2,10 +2,10 @@
|
||||
"schemaVersion": 1,
|
||||
"id": "local.omarchy-citizen",
|
||||
"name": "Omarchy Citizen",
|
||||
"version": "0.6.3",
|
||||
"version": "0.6.4",
|
||||
"author": "Community prototype",
|
||||
"license": "MIT",
|
||||
"description": "Plug-and-play Star Citizen controls for Omarchy. 0.6.3 detects and safely recovers incomplete Wine prefixes and improves LUG install diagnostics.",
|
||||
"description": "Plug-and-play Star Citizen controls for Omarchy. 0.6.4 removes nested background UI actions and performs incomplete-prefix recovery in a visible, logged terminal.",
|
||||
"kinds": [
|
||||
"bar-widget"
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user