Skip to content

Add a non-interactive release-bundle installer upgrade mode #96

Description

@Staphylococcus

Parent: #91

Depends on: #95, #100

Outcome

Allow a verified release bundle to update a host that passes the runtime compatibility checks without rerunning interactive setup or TV pairing.

Scope

  • Add an explicit install.sh --upgrade mode.
  • Expose a candidate-specific non-mutating preflight that checks the candidate installer requirements defined with Add runtime host upgrade compatibility preflight #100.
  • Refuse an incompatible host before privileged mutation.
  • Load and preserve the existing config path, settings, updates.channel, and profile-scoped native credentials.
  • Skip network discovery, interactive configuration, and pairing.
  • Avoid Python virtual-environment recreation for native-only installations; repair the legacy Python environment only when required and unhealthy.
  • Complete user-space preflight before requesting sudo.
  • Replace only LG Buddy-owned runtime, integration, desktop, hook, and unit files.
  • Reload and restart system and user services in a defined order.
  • Verify the installed binary identity and report partial failures with recovery guidance.

Acceptance criteria

  • Candidate-specific preflight is non-mutating and refuses incompatible layouts before sudo or installation writes.
  • The upgrade path never invokes interactive configure.sh behavior or pairing.
  • Configuration, update policy, and native credentials are byte-for-byte preserved.
  • Native-only upgrades do not recreate the Python environment.
  • Service/unit/hook replacement and post-install version verification are covered in the sandboxed bundle smoke test.
  • Shell syntax and focused installer smoke coverage pass.

Out of scope

  • Defining the complete or permanent host-compatibility check set; tracked and evolved in Add runtime host upgrade compatibility preflight #100.
  • GitHub release discovery or downloading.
  • Public lg-buddy updates install orchestration.
  • Full transactional rollback after privileged mutation begins.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions