Skip to content

Releases: GustavoBelo/OpenCouch

Open Couch v1.7.0

Choose a tag to compare

@GustavoBelo GustavoBelo released this 23 Aug 03:00

Highlights

  • Auto-return on controller disconnect: Couch Mode now closes Big Picture and restores the desktop layout when all controllers are turned off (10s debounce, requires 60s of controller use in session, via /dev/input/js*)
  • Resource Control: Optionally close selected apps when entering Couch Mode — with protected processes safeguard and configurable delay
  • Enhanced diagnostics: Structured logging of missing host components (ERROR/WARNING), persistent append-log for app events, and clearer log view highlighting
  • Native app cleanup engine: Fast, async scanning of installed and running apps without blocking the UI

Features

Controller Management (EXIT_ON_ALL_CONTROLLERS_OFF)

  • New config EXIT_ON_ALL_CONTROLLERS_OFF (Settings → Game Controllers) — app/src/displaysettingsmodel.{h,cpp}, backend/open-couch-engine
  • Detection via /dev/input/js* with CONTROLLER_DEBOUNCE_SECS=10 and CONTROLLER_MIN_USAGE_SECS=60
  • Integration in both play and watch flows; warns if wmctrl is missing
  • 7 languages: en, pt_BR, de_DE, es_ES, fr_FR, en_GB, zh_CN

Resource Control (CLOSE_APPS_*)

  • New config keys: CLOSE_APPS_ENABLED, CLOSE_APPS_WAIT_SECONDS (default 5s), APPS_TO_CLOSE (comma-separated) — app/src/configstore.*, backend/open-couch-engine:44-46
  • PROTECTED_PROCESSES list (plasmashell, kwin_*, ksmserver, steam*, open-couch, Xwayland, etc.) — never closed or listed
  • Engine: is_protected_process(), close_tracked_apps() via pkill -x, invoked async after Big Picture appears — backend/open-couch-engine:612-646,1125-1131
  • Legacy engine helpers desktop_process_names(), list_apps(), list_running_apps() kept for CLI/host fallback (GUI no longer uses list-running/list-apps)

Logging & Diagnostics

  • log_missing_host_components() reports missing REQUIRED_HOST_COMMANDS (jq, kscreen-doctor, pgrep) as ERROR and OPTIONAL_HOST_COMMANDS (wmctrl) as WARNINGbackend/open-couch-engine:159-179, logged on status
  • New engine command append-log <message> (sanitized, 500 chars) used by app to persist events — backend/open-couch-engine:1283-1294
  • print_status() now logs full config including EXIT_ON_ALL_CONTROLLERS_OFF and CLOSE_APPS_* + engine version check
  • Backend::startWatcher now handles CrashExit and persists ERROR: Big Picture watcher exited unexpectedly via append-logapp/src/backend.cpp
  • DashboardPage.qml now highlights WARN/WARNING in red, calls backend.clearLog() on enter

App Models & UI

  • New AppCleanupModel (C++17, native): Scans .desktop files via QStandardPaths/QDir/QFile/QDirIterator (depth 2, follows flatpak symlinks) + /proc (exe/comm/cmdline), filters PROTECTED_PROCESSES, deduplicates lower-case, caches in-memory per session (QMap), async via QThread::createapp/src/appcleanupmodel.{h,cpp} (677 LOC)
    • Properties: installedApps, runningApps, loadingInstalled, loadingRunning; methods requestInstalledApplications() / requestRunningApplications() + BusyIndicator
    • Flatpak sandbox support via /run/host and flatpak-spawn --host open-couch-engine fallback
    • Registered as appCleanupModel QML context property (app/src/main.cpp)
  • New UI: AppRowDelegate.qml, ChooseAppDialog.qml, RunningAppsDialog.qml with Kirigami.SearchField, BusyIndicator, filteredApps
  • SetupPage: New Resource Control section (enable checkbox, warning label, apps list, choose/running buttons, wait SpinBox) — app/qml/SetupPage.qml (refactored to rectangles, consistent spacing)
  • Other QML: OnboardingSheet.qml spacing improved, RunningAppsDialog centered, main.qml larger window dimensions, DashboardPage.qml layout polish — 99b6049

Fixes

  • fix: ScrollBar reference in DashboardPage.qmla05b6d9
  • Move QQmlApplicationEngine declaration after translator installation — 9615735
  • Refactor Dashboard/SetupPage config logic in main.qmlb9e1dc6

Translations

  • New keys resource_control.* (heading, description, enable_cleanup, warning_terminate, apps_to_close, choose_app, running_apps, picker titles/empty) added to opencouch_en.ts (base) and pt_BR, de_DE, es_ES, fr_FR, en_GB, zh_CN31f8e85

Packaging & Docs

  • New packaging/build-appimage.sh (replicates release.yml, run via distrobox enter fedora -- bash -c "packaging/build-appimage.sh") + .gitignore appimage-dist/46cd3a2
  • Updated AGENTS.md with AppCleanupModel native scanning, async behavior, engine 1.7.0 commands and options — 4c779fa, ccd2b55

Engine & Versioning

  • Engine 1.7.0 (backend/open-couch-engine:5-6): ENGINE_VERSION="1.7.0" / MIN_VERSION="1.7.0" (bumped via kMinEngineVersion in app/src/engineclient.cpp:13)
  • Action required: Users on older engine will be prompted to reinstall. Reinstall via app onboarding (Refresh Status → Install) or ~/.local/bin/open-couch-engine --update / packaging/host/install.sh --update

Full Changelog: v1.6.20...v1.7.0

Open Couch v1.6.20

Choose a tag to compare

@github-actions github-actions released this 19 Aug 19:00

Full Changelog: v1.6.19...v1.6.20

Open Couch v1.5.1

Choose a tag to compare

@github-actions github-actions released this 16 Aug 04:53

Full Changelog: v1.5.0...v1.5.1

Open Couch v1.5.0

Choose a tag to compare

@github-actions github-actions released this 16 Aug 04:35

Full Changelog: v1.4.0...v1.5.0

Open Couch v1.4.0

Choose a tag to compare

@github-actions github-actions released this 16 Aug 04:35

Full Changelog: v1.3.0...v1.4.0

Open Couch v1.3.0

Choose a tag to compare

@github-actions github-actions released this 16 Aug 02:15

Full Changelog: v1.2.0...v1.3.0

Open Couch v1.2.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 06:25

Full Changelog: v1.1.2...v1.2.0

Open Couch v1.1.2

Choose a tag to compare

@github-actions github-actions released this 15 Aug 04:43

Full Changelog: v1.1.1...v1.1.2

Open Couch v1.1.1

Choose a tag to compare

@github-actions github-actions released this 15 Aug 04:35

Full Changelog: v1.1.0...v1.1.1

Open Couch v1.1.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 04:13

Full Changelog: v1.0.1...v1.1.0