Skip to content

Remove bscpylgtv platform #55

Description

@Staphylococcus

Parent: #20

Phase: v2.0.0 final removal after #131, the v1.x compatibility window, and the installed-app migration gate in #137.

Blocked by: #131 and #137

Current boundary

By v1.8.0, fresh and native release-bundle installations no longer provision Python or bscpylgtv. Healthy existing profiles that explicitly select bscpylgtv, or predate the platform key and therefore resolve to it, remain recognizable for one final compatibility window.

Goal

Remove the bscpylgtv platform and Python bridge while retaining enough raw legacy recognition for the installed v2 application to launch migration on first startup.

Migration contract

  • tvs_primary_platform=bscpylgtv and a missing platform key both identify stale 1.x configuration.
  • Installing v2 does not first rewrite per-user configuration.
  • On foreground startup, Add v2 startup migration for stale 1.x configuration #137 launches before normal TV operations, explains the retired dependency, and establishes or verifies native pairing after the user clicks Migrate.
  • Write tv.platform=lg_webos only after native pairing succeeds.
  • Cancellation or failed pairing leaves v2 installed, preserves the stale setting, and gates normal runtime operations until migration is retried.
  • Do not import .aiopylgtv.sqlite or claim that legacy credentials are native credentials.
  • The v2 installer removes the obsolete LG Buddy-owned virtualenv as product payload cleanup; user-owned .aiopylgtv.sqlite and system/user Python installations remain untouched.

Scope

  • Remove bscpylgtv as a normal runtime tvs_primary_platform / tv.platform implementation while preserving typed stale-config detection for migration.
  • Keep lg_webos as the supported native platform.
  • Remove BscpylgtvCommandClient, subprocess launching, authentication ownership, environment overrides, and helper wiring.
  • Remove remaining Python, virtualenv, pip, and bscpylgtv installer/runtime support.
  • Remove compatibility mocks only after equivalent native coverage protects the full TV-control surface, including input, power, screen, brightness, audio, volume, mute, and pairing.
  • Update validation, diagnostics, documentation, and release smoke tests for install-first migration.
  • Keep platform selection profile-scoped for future TV-control platforms.

Acceptance criteria

  • Runtime TV control is fully handled by the native Rust implementation.
  • The installer and release bundle contain no Python/bscpylgtv runtime path.
  • Missing-key and explicit bscpylgtv profiles both trigger Add v2 startup migration for stale 1.x configuration #137 after v2 installation.
  • Successful migration verifies native pairing and writes current configuration atomically.
  • Failed or cancelled migration keeps normal operations gated and remains retryable without reinstalling.
  • Native configuration and credentials survive upgrade; user-owned legacy credentials and system dependencies are not deleted.
  • Native tests cover the product behavior previously protected by the Python bridge suite.
  • Documentation no longer describes bscpylgtv as a supported runtime platform.
  • No secondary backend or hidden implementation override is introduced.

Out of scope

  • New native feature work beyond parity.
  • Pre-install or silent platform migration.
  • Automatic legacy credential import.
  • Samsung/Tizen or other TV-control platforms.

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

    enhancementNew feature or request

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions