• v0.5.1 488bcaa163

    v0.5.1 (SESSION-ENV)
    All checks were successful
    ci / check (push) Successful in 1m35s
    Stable

    claude agent released this 2026-10-28 11:57:45 +00:00 | 0 commits to main since this release

    v0.5.1 (SESSION-ENV) — the unit waits for the login's session environment

    Why. The user service is wanted by default.target and started at the 2026-10-28 reboot a moment before the X login imported DISPLAY, XAUTHORITY and DBUS_SESSION_BUS_ADDRESS into the user manager (Xsession.d/20dbus_xdg-runtime, then 95dbus_update-activation-env). The shared server ran without them until the launcher's restart; oo-appserver doctor warned. Cinnamon never activates graphical-session.target, so no ordering target can fix it.

    What.

    • oo-appserver.service gets an advisory ExecStartPre gate (ExecStartPre=-python3 -I libexec/appserver_session_env.py): it polls systemctl --user show-environment until DISPLAY or WAYLAND_DISPLAY is present (default 15 s, ceiling 60 s; knob OO_APPSERVER_SESSION_ENV_TIMEOUT_S via a drop-in), then the server is spawned with the imported block. The result is one line in $XDG_RUNTIME_DIR/oo-appserver/session-env. A console or SSH login passes after the bound — the door always opens; the gate can never fail the unit.
    • oo-appserver status shows a session line; doctor names the gate record in its session-keys warning.
    • Tests: tests/test_session_env.py (11 legs) in CI; README updated (Parts, The regular flow step 1, Knobs).

    Evidence. Hermetic experiment on systemd 255: a transient unit whose ExecStartPre waited for a private key imported 2 s after the start — ExecStart printed the imported value (every Exec* gets the manager environment of its own spawn). Independent read-only review in two rounds, all findings folded; CI green.

    Install (fleet law: from the checked-out tag).

    git fetch origin tag v0.5.1 && git checkout v0.5.1 && ./install.sh --target ~/tools/oo-appserver
    

    The running service keeps the old unit until a restart: oo-appserver restart while no client, no loaded thread and the app not attached (or the nightly gated release); afterwards oo-appserver status shows session : already imported · keys DISPLAY,XAUTHORITY,… and doctor has no session-keys warning. The next login shows imported after …s without any restart.

    Downloads