Skip to content

GNOME parity for the session keepalive feature #12

Open

Description

@danielbanariba

Feature request: GNOME parity for the session-keepalive feature

Follow-up to #10 / #11, which added an opt-in "keep the Claude 5-hour session window open" feature to the KDE widget only, with GNOME parity explicitly deferred.

Scope

shared/core/keepalive.js (from #11) is already platform-agnostic — the decision logic and the buildShellCommand() PATH-prefixing need no changes. What GNOME needs is its own thin platform layer, mirroring how extension/lib/runtime/fetch.js and fs.js already wrap Soup and Gio.File in Promises for the shared core to consume:

  • A new extension/lib/runtime/process.js wrapping Gio.Subprocess in a Promise, resolving {exitCode, stderr} — the same shape shared/core/keepalive.js already expects from KDE's ExecReader.qml.
  • Two new keys in extension/schemas/org.gnome.shell.extensions.brainusage.gschema.xml: keepalive-enabled (boolean, default false) and keepalive-command (string, default the same verified ping command from Keep the Claude 5-hour session window open (opt-in) #10).
  • Wiring the keepalive controller into the scheduler in extension.js's enable(), reading both settings live off the existing Gio.Settings object.
  • No new preferences UI: neither this extension's one existing setting (panel-label-mode) has a graphical prefs page, so the two new keys follow the same convention (gsettings set / dconf-editor), documented in the README.
  • The Claude-card warning line already renders through the shared buildUsageViewModel(), so no GNOME-specific UI work is needed there.

Why a separate issue/PR

shared/core/keepalive.js only exists on the feat/session-keepalive branch (#11) so far, not on main. This work is cut from that branch rather than from main, and the PR targets feat/session-keepalive until #11 merges.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions