From 51173dae7a5dc50ff28c06643e5cb82a29f2a994 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 30 Jan 2026 13:50:23 -0800 Subject: [PATCH 01/40] Update Action Versions --- .github/workflows/build.yml | 6 +++--- .github/workflows/dev-release-build.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bfd8a6c..23acb69 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: runs-on: windows-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install PDM uses: pdm-project/setup-pdm@v4 @@ -42,7 +42,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install system dependencies run: | @@ -72,7 +72,7 @@ jobs: runs-on: macos-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install PDM uses: pdm-project/setup-pdm@v4 diff --git a/.github/workflows/dev-release-build.yml b/.github/workflows/dev-release-build.yml index 97061ff..fd2c02b 100644 --- a/.github/workflows/dev-release-build.yml +++ b/.github/workflows/dev-release-build.yml @@ -22,7 +22,7 @@ jobs: version: ${{ steps.set-version.outputs.version }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 filter: blob:none @@ -37,7 +37,7 @@ jobs: - name: Set Version id: set-version run: | - version=${{ steps.version.outputs.version }}.dev${{ github.run_number }} + version=${{ steps.version.outputs.version }}.dev${{ steps.version.outputs.increment }} echo "version=${version}" >> $GITHUB_OUTPUT echo "Development version: $version" From 60819ef4b3d7e9a1fd23c3ebeeedc5275bc58c18 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 30 Jan 2026 15:11:55 -0800 Subject: [PATCH 02/40] Update build.yml --- .github/workflows/build.yml | 170 ++++++++++++++++++------------------ 1 file changed, 85 insertions(+), 85 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 23acb69..8d7447c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,90 +4,90 @@ name: Build Executables # Does not handle packaging or publishing - that's the caller's responsibility. on: - workflow_call: - inputs: - version: - description: "Version string for the build" - required: true - type: string + workflow_call: + inputs: + version: + description: "Version string for the build" + required: true + type: string jobs: - build-windows: - if: github.repository_owner == 'synodic' - runs-on: windows-latest - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Install PDM - uses: pdm-project/setup-pdm@v4 - with: - python-version: "3.14" - cache: true - - - name: Install dependencies - run: pdm install -G build - - - name: Build executable - run: pdm run pyinstaller tool/pyinstaller/synodic.spec --distpath dist - - - name: Upload build artifact - uses: actions/upload-artifact@v4 - with: - name: build-windows-x64 - path: dist/* - - build-linux: - if: github.repository_owner == 'synodic' - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Install system dependencies - run: | - sudo apt-get update - sudo apt-get install -y libxcb-cursor0 libxkbcommon-x11-0 - - - name: Install PDM - uses: pdm-project/setup-pdm@v4 - with: - python-version: "3.14" - cache: true - - - name: Install dependencies - run: pdm install -G build - - - name: Build executable - run: pdm run pyinstaller tool/pyinstaller/synodic.spec --distpath dist - - - name: Upload build artifact - uses: actions/upload-artifact@v4 - with: - name: build-linux-x64 - path: dist/* - - build-macos: - if: github.repository_owner == 'synodic' - runs-on: macos-latest - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Install PDM - uses: pdm-project/setup-pdm@v4 - with: - python-version: "3.14" - cache: true - - - name: Install dependencies - run: pdm install -G build - - - name: Build executable - run: pdm run pyinstaller tool/pyinstaller/synodic.spec --distpath dist - - - name: Upload build artifact - uses: actions/upload-artifact@v4 - with: - name: build-macos-x64 - path: dist/* + build-windows: + if: github.repository_owner == 'synodic' + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Install PDM + uses: pdm-project/setup-pdm@v4 + with: + python-version: "3.14" + cache: true + + - name: Install dependencies + run: pdm install -G build + + - name: Build executable + run: pdm run pyinstaller tool/pyinstaller/synodic.spec --distpath dist + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: build-windows-x64 + path: dist/* + + build-linux: + if: github.repository_owner == 'synodic' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y libxcb-cursor0 libxkbcommon-x11-0 + + - name: Install PDM + uses: pdm-project/setup-pdm@v4 + with: + python-version: "3.14" + cache: true + + - name: Install dependencies + run: pdm install -G build + + - name: Build executable + run: pdm run pyinstaller tool/pyinstaller/synodic.spec --distpath dist + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: build-linux-x64 + path: dist/* + + build-macos: + if: github.repository_owner == 'synodic' + runs-on: macos-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Install PDM + uses: pdm-project/setup-pdm@v4 + with: + python-version: "3.14" + cache: true + + - name: Install dependencies + run: pdm install -G build + + - name: Build executable + run: pdm run pyinstaller tool/pyinstaller/synodic.spec --distpath dist + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: build-macos-x64 + path: dist/* From 140f5fd19dc2dbeb25d4d0ad2c4d85f9f2215133 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 4 Feb 2026 13:48:25 -0800 Subject: [PATCH 03/40] Update Chore --- pdm.lock | 211 ++++++++++++++++++++++++++++++++++--------------- pyproject.toml | 6 +- 2 files changed, 149 insertions(+), 68 deletions(-) diff --git a/pdm.lock b/pdm.lock index 0af3cef..82269de 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "build", "lint", "test"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:5cdbfc993ab725406e4f5a48caf2ef54f3ce085cf0e1f8b984139d9faaea4108" +content_hash = "sha256:c976f33c96439bf559fb8d5f46ecb565abe415cbfc4986f5f6c991b44c7adb98" [[metadata.targets]] requires_python = ">=3.14,<3.15" @@ -34,6 +34,33 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] +[[package]] +name = "anyio" +version = "4.12.1" +requires_python = ">=3.9" +summary = "High-level concurrency and networking framework on top of asyncio or Trio" +groups = ["default"] +dependencies = [ + "exceptiongroup>=1.0.2; python_version < \"3.11\"", + "idna>=2.8", + "typing-extensions>=4.5; python_version < \"3.13\"", +] +files = [ + {file = "anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c"}, + {file = "anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703"}, +] + +[[package]] +name = "certifi" +version = "2026.1.4" +requires_python = ">=3.7" +summary = "Python package for providing Mozilla's CA Bundle." +groups = ["default"] +files = [ + {file = "certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}, + {file = "certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}, +] + [[package]] name = "click" version = "8.3.1" @@ -139,6 +166,60 @@ files = [ {file = "coverage-7.13.2.tar.gz", hash = "sha256:044c6951ec37146b72a50cc81ef02217d27d4c3640efd2640311393cbbf143d3"}, ] +[[package]] +name = "h11" +version = "0.16.0" +requires_python = ">=3.8" +summary = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +groups = ["default"] +files = [ + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +requires_python = ">=3.8" +summary = "A minimal low-level HTTP client." +groups = ["default"] +dependencies = [ + "certifi", + "h11>=0.16", +] +files = [ + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, +] + +[[package]] +name = "httpx" +version = "0.28.1" +requires_python = ">=3.8" +summary = "The next generation HTTP client." +groups = ["default"] +dependencies = [ + "anyio", + "certifi", + "httpcore==1.*", + "idna", +] +files = [ + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, +] + +[[package]] +name = "idna" +version = "3.11" +requires_python = ">=3.8" +summary = "Internationalized Domain Names in Applications (IDNA)" +groups = ["default"] +files = [ + {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, + {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, +] + [[package]] name = "iniconfig" version = "2.3.0" @@ -236,20 +317,21 @@ files = [ [[package]] name = "porringer" -version = "0.1.1.dev12" +version = "0.1.1" requires_python = ">=3.14" summary = "" groups = ["default"] dependencies = [ - "packaging>=25.0", + "httpx>=0.28.1", + "packaging>=26.0", "platformdirs>=4.5.1", "pydantic>=2.12.5", "typer[all]>=0.21.1", "userpath>=1.9.2", ] files = [ - {file = "porringer-0.1.1.dev12-py3-none-any.whl", hash = "sha256:da817f50f3350b347cea37d446c0881f5d7b390ec0e785f319ee55eb2922fb9e"}, - {file = "porringer-0.1.1.dev12.tar.gz", hash = "sha256:ca2cf24f82868ba2401d0a5325ae099350b91e0787bc6cb58f258d66c6fbce77"}, + {file = "porringer-0.1.1-py3-none-any.whl", hash = "sha256:11f47e2ed5030fa72c669835a824c82b92a4982c4b7cc18591be059b7c9d2a7d"}, + {file = "porringer-0.1.1.tar.gz", hash = "sha256:b9dbe4ccf3a0f847c101c8cb18bce760fa186514bd1d3c9f52218e33e8c48c94"}, ] [[package]] @@ -370,74 +452,74 @@ files = [ [[package]] name = "pyrefly" -version = "0.50.1" +version = "0.51.0" requires_python = ">=3.8" summary = "A fast type checker and language server for Python with powerful IDE features" groups = ["lint"] files = [ - {file = "pyrefly-0.50.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:16ea4052b3df75206f5677a87ca7ee6c4c3a92b086081250206e98c60d85e7a8"}, - {file = "pyrefly-0.50.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:aac15d38f3ad548b2cd50a7fc054241743e32753a32872fe5d4bb88982d29b35"}, - {file = "pyrefly-0.50.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:603c4f7893eba4f8472523cfceb41f200a30ae89c0af90f4ba03de4eebf9732b"}, - {file = "pyrefly-0.50.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d2408be4b1f618ef80855042d6a3599128546a067654878002e34fdd56bfc54"}, - {file = "pyrefly-0.50.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9483e700ec0e156b249c2805896833c1393eda787f0b83ab430084c2723fec7e"}, - {file = "pyrefly-0.50.1-py3-none-win32.whl", hash = "sha256:68ff5eac338bfc74469f67ff79cc3500e826b51a753bba349ac2cfcb5705b32b"}, - {file = "pyrefly-0.50.1-py3-none-win_amd64.whl", hash = "sha256:ef9b5644cfef560fefe3e5093a78128f17d8d055eb01c5306e88644063c37a38"}, - {file = "pyrefly-0.50.1-py3-none-win_arm64.whl", hash = "sha256:b813120b2de86122933c424ebdb8e905e13191e72fca6403ea75ca94154eb898"}, - {file = "pyrefly-0.50.1.tar.gz", hash = "sha256:1859f36fb1dc4a903ba2298442c224dfadcda7fce5691aebd6bbc21c5f703299"}, + {file = "pyrefly-0.51.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:4013f914d3b523a9b1afc25a620a011406f7745ad5cfc5781ec95235bc9cd583"}, + {file = "pyrefly-0.51.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:4a6eeffd5649d393bf457b7c1253f89b33295d475b1cae0f9a21377986708804"}, + {file = "pyrefly-0.51.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:beace17854735136134848e5a0e8678b6862ee1144eaeb27f1bb70ff1f8fd9ca"}, + {file = "pyrefly-0.51.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40055df65c184d825081e7177b99d277c8a1cb29c6e41a54ff40828d355aa467"}, + {file = "pyrefly-0.51.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65689401e35b7d01a1394cdb1bafd46e2f49369b0f9891a333bce3568f100ce2"}, + {file = "pyrefly-0.51.0-py3-none-win32.whl", hash = "sha256:525e654aa50bc32bdfdd505dbc233b0cfab8ed2917a62b178c3156e2f80062c0"}, + {file = "pyrefly-0.51.0-py3-none-win_amd64.whl", hash = "sha256:0aa2db0cbf9f1d8c77a98464d12bcae7bdcbdaad80098a0456abf51d6f2ee275"}, + {file = "pyrefly-0.51.0-py3-none-win_arm64.whl", hash = "sha256:bc14eb4f273a5ec2be7318c70a8e5a50e2e9f7a42de3a7f73fb0cfdc7f6996d2"}, + {file = "pyrefly-0.51.0.tar.gz", hash = "sha256:99467db60f148bb6965c45cdc3e769d94b704100e9d57b6455cc6796e5a9e7b1"}, ] [[package]] name = "pyside6" -version = "6.10.1" +version = "6.10.2" requires_python = "<3.15,>=3.9" summary = "Python bindings for the Qt cross-platform application and UI framework" groups = ["default"] dependencies = [ - "PySide6-Addons==6.10.1", - "PySide6-Essentials==6.10.1", - "shiboken6==6.10.1", + "PySide6-Addons==6.10.2", + "PySide6-Essentials==6.10.2", + "shiboken6==6.10.2", ] files = [ - {file = "pyside6-6.10.1-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:d0e70dd0e126d01986f357c2a555722f9462cf8a942bf2ce180baf69f468e516"}, - {file = "pyside6-6.10.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4053bf51ba2c2cb20e1005edd469997976a02cec009f7c46356a0b65c137f1fa"}, - {file = "pyside6-6.10.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:7d3ca20a40139ca5324a7864f1d91cdf2ff237e11bd16354a42670f2a4eeb13c"}, - {file = "pyside6-6.10.1-cp39-abi3-win_amd64.whl", hash = "sha256:9f89ff994f774420eaa38cec6422fddd5356611d8481774820befd6f3bb84c9e"}, - {file = "pyside6-6.10.1-cp39-abi3-win_arm64.whl", hash = "sha256:9c5c1d94387d1a32a6fae25348097918ef413b87dfa3767c46f737c6d48ae437"}, + {file = "pyside6-6.10.2-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:4b084293caa7845d0064aaf6af258e0f7caae03a14a33537d0a552131afddaf0"}, + {file = "pyside6-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:1b89ce8558d4b4f35b85bff1db90d680912e4d3ce9e79ff804d6fef1d1a151ef"}, + {file = "pyside6-6.10.2-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:0439f5e9b10ebe6177981bac9e219096ec970ac6ec215bef055279802ba50601"}, + {file = "pyside6-6.10.2-cp39-abi3-win_amd64.whl", hash = "sha256:032bad6b18a17fcbf4dddd0397f49b07f8aae7f1a45b7e4de7037bf7fd6e0edf"}, + {file = "pyside6-6.10.2-cp39-abi3-win_arm64.whl", hash = "sha256:65a59ad0bc92525639e3268d590948ce07a80ee97b55e7a9200db41d493cac31"}, ] [[package]] name = "pyside6-addons" -version = "6.10.1" +version = "6.10.2" requires_python = "<3.15,>=3.9" summary = "Python bindings for the Qt cross-platform application and UI framework (Addons)" groups = ["default"] dependencies = [ - "PySide6-Essentials==6.10.1", - "shiboken6==6.10.1", + "PySide6-Essentials==6.10.2", + "shiboken6==6.10.2", ] files = [ - {file = "pyside6_addons-6.10.1-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:4d2b82bbf9b861134845803837011e5f9ac7d33661b216805273cf0c6d0f8e82"}, - {file = "pyside6_addons-6.10.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:330c229b58d30083a7b99ed22e118eb4f4126408429816a4044ccd0438ae81b4"}, - {file = "pyside6_addons-6.10.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:56864b5fecd6924187a2d0f7e98d968ed72b6cc267caa5b294cd7e88fff4e54c"}, - {file = "pyside6_addons-6.10.1-cp39-abi3-win_amd64.whl", hash = "sha256:b6e249d15407dd33d6a2ffabd9dc6d7a8ab8c95d05f16a71dad4d07781c76341"}, - {file = "pyside6_addons-6.10.1-cp39-abi3-win_arm64.whl", hash = "sha256:0de303c0447326cdc6c8be5ab066ef581e2d0baf22560c9362d41b8304fdf2db"}, + {file = "pyside6_addons-6.10.2-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:0de7d0c9535e17d5e3b634b61314a1867f3b0f6d35c3d7cdc99efc353192faff"}, + {file = "pyside6_addons-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:030a851163b51dbf0063be59e9ddb6a9e760bde89a28e461ccc81a224d286eaf"}, + {file = "pyside6_addons-6.10.2-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:fcee0373e3fd7b98f014094e5e37b4a39e4de7c5a47c13f654a7d557d4a426ad"}, + {file = "pyside6_addons-6.10.2-cp39-abi3-win_amd64.whl", hash = "sha256:c20150068525a17494f3b6576c5d61c417cf9a5870659e29f5ebd83cd20a78ea"}, + {file = "pyside6_addons-6.10.2-cp39-abi3-win_arm64.whl", hash = "sha256:3d18db739b46946ba7b722d8ad4cc2097135033aa6ea57076e64d591e6a345f3"}, ] [[package]] name = "pyside6-essentials" -version = "6.10.1" +version = "6.10.2" requires_python = "<3.15,>=3.9" summary = "Python bindings for the Qt cross-platform application and UI framework (Essentials)" groups = ["default"] dependencies = [ - "shiboken6==6.10.1", + "shiboken6==6.10.2", ] files = [ - {file = "pyside6_essentials-6.10.1-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:cd224aff3bb26ff1fca32c050e1c4d0bd9f951a96219d40d5f3d0128485b0bbe"}, - {file = "pyside6_essentials-6.10.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:e9ccbfb58c03911a0bce1f2198605b02d4b5ca6276bfc0cbcf7c6f6393ffb856"}, - {file = "pyside6_essentials-6.10.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:ec8617c9b143b0c19ba1cc5a7e98c538e4143795480cb152aee47802c18dc5d2"}, - {file = "pyside6_essentials-6.10.1-cp39-abi3-win_amd64.whl", hash = "sha256:9555a48e8f0acf63fc6a23c250808db841b28a66ed6ad89ee0e4df7628752674"}, - {file = "pyside6_essentials-6.10.1-cp39-abi3-win_arm64.whl", hash = "sha256:4d1d248644f1778f8ddae5da714ca0f5a150a5e6f602af2765a7d21b876da05c"}, + {file = "pyside6_essentials-6.10.2-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:1dee2cb9803ff135f881dadeb5c0edcef793d1ec4f8a9140a1348cecb71074e1"}, + {file = "pyside6_essentials-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:660aea45bfa36f1e06f799b934c2a7df963bd31abc5083e8bb8a5bfaef45686b"}, + {file = "pyside6_essentials-6.10.2-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:c2b028e4c6f8047a02c31f373408e23b4eedfd405f56c6aba8d0525c29472835"}, + {file = "pyside6_essentials-6.10.2-cp39-abi3-win_amd64.whl", hash = "sha256:0741018c2b6395038cad4c41775cfae3f13a409e87995ac9f7d89e5b1fb6b22a"}, + {file = "pyside6_essentials-6.10.2-cp39-abi3-win_arm64.whl", hash = "sha256:db5f4913648bb6afddb8b347edae151ee2378f12bceb03c8b2515a530a4b38d9"}, ] [[package]] @@ -519,30 +601,29 @@ files = [ [[package]] name = "ruff" -version = "0.14.14" +version = "0.15.0" requires_python = ">=3.7" summary = "An extremely fast Python linter and code formatter, written in Rust." groups = ["lint"] files = [ - {file = "ruff-0.14.14-py3-none-linux_armv6l.whl", hash = "sha256:7cfe36b56e8489dee8fbc777c61959f60ec0f1f11817e8f2415f429552846aed"}, - {file = "ruff-0.14.14-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6006a0082336e7920b9573ef8a7f52eec837add1265cc74e04ea8a4368cd704c"}, - {file = "ruff-0.14.14-py3-none-macosx_11_0_arm64.whl", hash = "sha256:026c1d25996818f0bf498636686199d9bd0d9d6341c9c2c3b62e2a0198b758de"}, - {file = "ruff-0.14.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f666445819d31210b71e0a6d1c01e24447a20b85458eea25a25fe8142210ae0e"}, - {file = "ruff-0.14.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c0f18b922c6d2ff9a5e6c3ee16259adc513ca775bcf82c67ebab7cbd9da5bc8"}, - {file = "ruff-0.14.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1629e67489c2dea43e8658c3dba659edbfd87361624b4040d1df04c9740ae906"}, - {file = "ruff-0.14.14-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:27493a2131ea0f899057d49d303e4292b2cae2bb57253c1ed1f256fbcd1da480"}, - {file = "ruff-0.14.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01ff589aab3f5b539e35db38425da31a57521efd1e4ad1ae08fc34dbe30bd7df"}, - {file = "ruff-0.14.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1cc12d74eef0f29f51775f5b755913eb523546b88e2d733e1d701fe65144e89b"}, - {file = "ruff-0.14.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb8481604b7a9e75eff53772496201690ce2687067e038b3cc31aaf16aa0b974"}, - {file = "ruff-0.14.14-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:14649acb1cf7b5d2d283ebd2f58d56b75836ed8c6f329664fa91cdea19e76e66"}, - {file = "ruff-0.14.14-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e8058d2145566510790eab4e2fad186002e288dec5e0d343a92fe7b0bc1b3e13"}, - {file = "ruff-0.14.14-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e651e977a79e4c758eb807f0481d673a67ffe53cfa92209781dfa3a996cf8412"}, - {file = "ruff-0.14.14-py3-none-musllinux_1_2_i686.whl", hash = "sha256:cc8b22da8d9d6fdd844a68ae937e2a0adf9b16514e9a97cc60355e2d4b219fc3"}, - {file = "ruff-0.14.14-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:16bc890fb4cc9781bb05beb5ab4cd51be9e7cb376bf1dd3580512b24eb3fda2b"}, - {file = "ruff-0.14.14-py3-none-win32.whl", hash = "sha256:b530c191970b143375b6a68e6f743800b2b786bbcf03a7965b06c4bf04568167"}, - {file = "ruff-0.14.14-py3-none-win_amd64.whl", hash = "sha256:3dde1435e6b6fe5b66506c1dff67a421d0b7f6488d466f651c07f4cab3bf20fd"}, - {file = "ruff-0.14.14-py3-none-win_arm64.whl", hash = "sha256:56e6981a98b13a32236a72a8da421d7839221fa308b223b9283312312e5ac76c"}, - {file = "ruff-0.14.14.tar.gz", hash = "sha256:2d0f819c9a90205f3a867dbbd0be083bee9912e170fd7d9704cc8ae45824896b"}, + {file = "ruff-0.15.0-py3-none-linux_armv6l.whl", hash = "sha256:aac4ebaa612a82b23d45964586f24ae9bc23ca101919f5590bdb368d74ad5455"}, + {file = "ruff-0.15.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:dcd4be7cc75cfbbca24a98d04d0b9b36a270d0833241f776b788d59f4142b14d"}, + {file = "ruff-0.15.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d747e3319b2bce179c7c1eaad3d884dc0a199b5f4d5187620530adf9105268ce"}, + {file = "ruff-0.15.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:650bd9c56ae03102c51a5e4b554d74d825ff3abe4db22b90fd32d816c2e90621"}, + {file = "ruff-0.15.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6664b7eac559e3048223a2da77769c2f92b43a6dfd4720cef42654299a599c9"}, + {file = "ruff-0.15.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f811f97b0f092b35320d1556f3353bf238763420ade5d9e62ebd2b73f2ff179"}, + {file = "ruff-0.15.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:761ec0a66680fab6454236635a39abaf14198818c8cdf691e036f4bc0f406b2d"}, + {file = "ruff-0.15.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:940f11c2604d317e797b289f4f9f3fa5555ffe4fb574b55ed006c3d9b6f0eb78"}, + {file = "ruff-0.15.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcbca3d40558789126da91d7ef9a7c87772ee107033db7191edefa34e2c7f1b4"}, + {file = "ruff-0.15.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:9a121a96db1d75fa3eb39c4539e607f628920dd72ff1f7c5ee4f1b768ac62d6e"}, + {file = "ruff-0.15.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5298d518e493061f2eabd4abd067c7e4fb89e2f63291c94332e35631c07c3662"}, + {file = "ruff-0.15.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:afb6e603d6375ff0d6b0cee563fa21ab570fd15e65c852cb24922cef25050cf1"}, + {file = "ruff-0.15.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:77e515f6b15f828b94dc17d2b4ace334c9ddb7d9468c54b2f9ed2b9c1593ef16"}, + {file = "ruff-0.15.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6f6e80850a01eb13b3e42ee0ebdf6e4497151b48c35051aab51c101266d187a3"}, + {file = "ruff-0.15.0-py3-none-win32.whl", hash = "sha256:238a717ef803e501b6d51e0bdd0d2c6e8513fe9eec14002445134d3907cd46c3"}, + {file = "ruff-0.15.0-py3-none-win_amd64.whl", hash = "sha256:dd5e4d3301dc01de614da3cdffc33d4b1b96fb89e45721f1598e5532ccf78b18"}, + {file = "ruff-0.15.0-py3-none-win_arm64.whl", hash = "sha256:c480d632cc0ca3f0727acac8b7d053542d9e114a462a145d0b00e7cd658c515a"}, + {file = "ruff-0.15.0.tar.gz", hash = "sha256:6bdea47cdbea30d40f8f8d7d69c0854ba7c15420ec75a26f463290949d7f7e9a"}, ] [[package]] @@ -569,16 +650,16 @@ files = [ [[package]] name = "shiboken6" -version = "6.10.1" +version = "6.10.2" requires_python = "<3.15,>=3.9" summary = "Python/C++ bindings helper module" groups = ["default"] files = [ - {file = "shiboken6-6.10.1-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:9f2990f5b61b0b68ecadcd896ab4441f2cb097eef7797ecc40584107d9850d71"}, - {file = "shiboken6-6.10.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f4221a52dfb81f24a0d20cc4f8981cb6edd810d5a9fb28287ce10d342573a0e4"}, - {file = "shiboken6-6.10.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:c095b00f4d6bf578c0b2464bb4e264b351a99345374478570f69e2e679a2a1d0"}, - {file = "shiboken6-6.10.1-cp39-abi3-win_amd64.whl", hash = "sha256:c1601d3cda1fa32779b141663873741b54e797cb0328458d7466281f117b0a4e"}, - {file = "shiboken6-6.10.1-cp39-abi3-win_arm64.whl", hash = "sha256:5cf800917008587b551005a45add2d485cca66f5f7ecd5b320e9954e40448cc9"}, + {file = "shiboken6-6.10.2-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:3bd4e94e9a3c8c1fa8362fd752d399ef39265d5264e4e37bae61cdaa2a00c8c7"}, + {file = "shiboken6-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:ace0790032d9cb0adda644b94ee28d59410180d9773643bb6cf8438c361987ad"}, + {file = "shiboken6-6.10.2-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:f74d3ed1f92658077d0630c39e694eb043aeb1d830a5d275176c45d07147427f"}, + {file = "shiboken6-6.10.2-cp39-abi3-win_amd64.whl", hash = "sha256:10f3c8c5e1b8bee779346f21c10dbc14cff068f0b0b4e62420c82a6bf36ac2e7"}, + {file = "shiboken6-6.10.2-cp39-abi3-win_arm64.whl", hash = "sha256:20c671645d70835af212ee05df60361d734c5305edb2746e9875c6a31283f963"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 4b62d9f..1fffada 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,9 +12,9 @@ dynamic = ["version"] requires-python = ">=3.14, <3.15" dependencies = [ - "pyside6>=6.10.1", + "pyside6>=6.10.2", "packaging>=26.0", - "porringer>=0.1.1.dev12", + "porringer>=0.1.1", "velopack>=0.0.1369.dev7516", ] @@ -24,7 +24,7 @@ repository = "https://github.com/synodic/synodic-client" [dependency-groups] build = ["pyinstaller>=6.18.0"] -lint = ["ruff>=0.14.14", "pyrefly>=0.50.1"] +lint = ["ruff>=0.15.0", "pyrefly>=0.51.0"] test = ["pytest>=9.0.2", "pytest-cov>=7.0.0", "pytest-mock>=3.15.1"] [project.gui-scripts] From 22414123da6b372ce2534d0ab0c6bd656b70a7b4 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 4 Feb 2026 15:40:36 -0800 Subject: [PATCH 04/40] Replace Model with Tray Notification --- synodic_client/application/qt.py | 2 +- synodic_client/application/screen/screen.py | 104 +++++++++++++++++++- synodic_client/application/screen/tray.py | 99 ++++++++++--------- 3 files changed, 155 insertions(+), 50 deletions(-) diff --git a/synodic_client/application/qt.py b/synodic_client/application/qt.py index 904cb1a..d34a239 100644 --- a/synodic_client/application/qt.py +++ b/synodic_client/application/qt.py @@ -46,7 +46,7 @@ def application() -> None: # Reduce CPU usage when idle - process events less aggressively app.setAttribute(Qt.ApplicationAttribute.AA_CompressHighFrequencyEvents) - _screen = Screen() + _screen = Screen(porringer) _tray = TrayScreen(app, client, Client.icon, _screen.window) # sys.exit ensures proper cleanup and exit code propagation diff --git a/synodic_client/application/screen/screen.py b/synodic_client/application/screen/screen.py index f2a7e9a..41f15dc 100644 --- a/synodic_client/application/screen/screen.py +++ b/synodic_client/application/screen/screen.py @@ -1,19 +1,105 @@ """Screen class for the Synodic Client application.""" -from PySide6.QtWidgets import QMainWindow +from __future__ import annotations + +from typing import TYPE_CHECKING + +from porringer.schema import ListPluginsParameters +from PySide6.QtCore import Qt +from PySide6.QtWidgets import ( + QHeaderView, + QMainWindow, + QTableWidget, + QTableWidgetItem, + QVBoxLayout, + QWidget, +) + +if TYPE_CHECKING: + from porringer.api import API + + +class ManifestView(QWidget): + """Widget displaying cached plugin manifests.""" + + def __init__(self, porringer: API, parent: QWidget | None = None) -> None: + """Initialize the manifest view. + + Args: + porringer: The porringer API instance. + parent: Optional parent widget. + """ + super().__init__(parent) + self._porringer = porringer + self._init_ui() + + def _init_ui(self) -> None: + """Initialize the UI components.""" + layout = QVBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + + self._table = QTableWidget() + self._table.setColumnCount(3) + self._table.setHorizontalHeaderLabels(['Name', 'Version', 'Status']) + self._table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers) + self._table.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) + self._table.setAlternatingRowColors(True) + + # Make columns stretch to fill available space + header = self._table.horizontalHeader() + header.setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch) + header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents) + header.setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents) + + layout.addWidget(self._table) + + def refresh(self) -> None: + """Refresh the manifest data from porringer.""" + self._table.setRowCount(0) + + params = ListPluginsParameters() + plugins = self._porringer.plugin.list(params) + + self._table.setRowCount(len(plugins)) + for row, plugin in enumerate(plugins): + name_item = QTableWidgetItem(plugin.name) + version_item = QTableWidgetItem(str(plugin.version)) + status_item = QTableWidgetItem('Installed' if plugin.installed else 'Not Installed') + + # Center align version and status + version_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) + status_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) + + self._table.setItem(row, 0, name_item) + self._table.setItem(row, 1, version_item) + self._table.setItem(row, 2, status_item) class MainWindow(QMainWindow): """Main window for the application.""" - def __init__(self) -> None: - """Initialize the main window.""" + _manifest_view: ManifestView | None = None + + def __init__(self, porringer: API | None = None) -> None: + """Initialize the main window. + + Args: + porringer: Optional porringer API instance for manifest display. + """ super().__init__() + self._porringer = porringer self.setWindowTitle('Synodic Client') + self.setMinimumSize(600, 400) def show(self) -> None: """Show the window, initializing UI lazily on first show.""" - # Future: Initialize heavy UI components here on first show + if self._manifest_view is None and self._porringer is not None: + self._manifest_view = ManifestView(self._porringer, self) + self.setCentralWidget(self._manifest_view) + self._manifest_view.refresh() + elif self._manifest_view is not None: + self._manifest_view.refresh() + super().show() @@ -22,6 +108,14 @@ class Screen: _window: MainWindow | None = None + def __init__(self, porringer: API | None = None) -> None: + """Initialize the screen. + + Args: + porringer: Optional porringer API instance. + """ + self._porringer = porringer + @property def window(self) -> MainWindow: """Lazily create the main window on first access. @@ -30,5 +124,5 @@ def window(self) -> MainWindow: The MainWindow instance. """ if self._window is None: - self._window = MainWindow() + self._window = MainWindow(self._porringer) return self._window diff --git a/synodic_client/application/screen/tray.py b/synodic_client/application/screen/tray.py index 2eddadd..90a392b 100644 --- a/synodic_client/application/screen/tray.py +++ b/synodic_client/application/screen/tray.py @@ -72,12 +72,14 @@ def __init__(self, app: QApplication, client: Client, icon_name: LiteralString, self._update_thread: QThread | None = None self._update_worker: UpdateCheckWorker | UpdateDownloadWorker | None = None self._progress_dialog: QProgressDialog | None = None + self._pending_update_info: UpdateInfo | None = None with client.resource(icon_name) as icon_path: self.tray_icon = QIcon(str(icon_path)) self.tray = QSystemTrayIcon() self.tray.setIcon(self.tray_icon) + self.tray.messageClicked.connect(self._on_notification_clicked) self.tray.setVisible(True) @@ -87,14 +89,13 @@ def __init__(self, app: QApplication, client: Client, icon_name: LiteralString, self.menu.addAction(self.open_action) self.open_action.triggered.connect(window.show) - self.settings_action = QAction('Settings', self.menu) - self.menu.addAction(self.settings_action) + # Settings submenu + self.settings_menu = QMenu('Settings', self.menu) + self.menu.addMenu(self.settings_menu) - self.menu.addSeparator() - - self.update_action = QAction('Check for Updates...', self.menu) + self.update_action = QAction('Check for Updates...', self.settings_menu) self.update_action.triggered.connect(self._on_check_updates) - self.menu.addAction(self.update_action) + self.settings_menu.addAction(self.update_action) self.menu.addSeparator() @@ -107,10 +108,10 @@ def __init__(self, app: QApplication, client: Client, icon_name: LiteralString, def _on_check_updates(self) -> None: """Handle check for updates action.""" if self._client.updater is None: - QMessageBox.warning( - self._window, + self.tray.showMessage( 'Update Error', 'Updater is not initialized.', + QSystemTrayIcon.MessageIcon.Warning, ) return @@ -127,67 +128,77 @@ def _on_check_updates(self) -> None: self._update_thread.started.connect(self._update_worker.run) self._update_worker.finished.connect(self._on_update_check_finished) self._update_worker.error.connect(self._on_update_check_error) - self._update_worker.finished.connect(self._update_thread.quit) - self._update_worker.error.connect(self._update_thread.quit) + + # Clean up thread and worker when thread finishes + self._update_thread.finished.connect(self._update_thread.deleteLater) + self._update_thread.finished.connect(self._update_worker.deleteLater) # Start the thread self._update_thread.start() def _on_update_check_finished(self, result: UpdateInfo | None) -> None: """Handle update check completion.""" + if self._update_thread is not None: + self._update_thread.quit() + self._update_thread.wait() + self.update_action.setEnabled(True) self.update_action.setText('Check for Updates...') if result is None: - QMessageBox.warning( - self._window, + self.tray.showMessage( 'Update Check Failed', 'Failed to check for updates. Please try again later.', + QSystemTrayIcon.MessageIcon.Warning, ) return if result.error: - QMessageBox.warning( - self._window, + self.tray.showMessage( 'Update Check Failed', - f'Failed to check for updates:\n{result.error}', + f'Failed to check for updates: {result.error}', + QSystemTrayIcon.MessageIcon.Warning, ) return if not result.available: - QMessageBox.information( - self._window, + self.tray.showMessage( 'No Updates Available', f'You are running the latest version ({result.current_version}).', + QSystemTrayIcon.MessageIcon.Information, ) return - # Update available - prompt user - reply = QMessageBox.question( - self._window, + # Update available - show notification, clicking it starts download + self._pending_update_info = result + self.tray.showMessage( 'Update Available', - f'A new version is available!\n\n' - f'Current version: {result.current_version}\n' - f'New version: {result.latest_version}\n\n' - f'Would you like to download and install it?', - QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No, - QMessageBox.StandardButton.Yes, + f'Version {result.latest_version} is available (current: {result.current_version}).\n' + 'Click to download.', + QSystemTrayIcon.MessageIcon.Information, ) - if reply == QMessageBox.StandardButton.Yes: - self._start_download() - def _on_update_check_error(self, error: str) -> None: """Handle update check error.""" + if self._update_thread is not None: + self._update_thread.quit() + self._update_thread.wait() + self.update_action.setEnabled(True) self.update_action.setText('Check for Updates...') - QMessageBox.critical( - self._window, + self.tray.showMessage( 'Update Check Error', - f'An error occurred while checking for updates:\n{error}', + f'An error occurred: {error}', + QSystemTrayIcon.MessageIcon.Critical, ) + def _on_notification_clicked(self) -> None: + """Handle notification click - starts download if update is pending.""" + if self._pending_update_info is not None and self._pending_update_info.available: + self._pending_update_info = None + self._start_download() + def _start_download(self) -> None: """Start downloading the update.""" # Create progress dialog @@ -232,16 +243,16 @@ def _on_download_finished(self, success: bool) -> None: self._progress_dialog = None if not success: - QMessageBox.warning( - self._window, + self.tray.showMessage( 'Download Failed', 'Failed to download the update. Please try again later.', + QSystemTrayIcon.MessageIcon.Warning, ) return - # Prompt to apply update + # Prompt to apply update - keep as dialog since it needs user choice reply = QMessageBox.question( - self._window, + self._window if self._window.isVisible() else None, 'Download Complete', 'The update has been downloaded.\n\n' 'Would you like to install it now?\n' @@ -259,10 +270,10 @@ def _on_download_error(self, error: str) -> None: self._progress_dialog.close() self._progress_dialog = None - QMessageBox.critical( - self._window, + self.tray.showMessage( 'Download Error', - f'An error occurred while downloading the update:\n{error}', + f'An error occurred while downloading: {error}', + QSystemTrayIcon.MessageIcon.Critical, ) def _apply_update(self) -> None: @@ -274,17 +285,17 @@ def _apply_update(self) -> None: # Schedule update to apply on exit, then quit the app self._client.apply_update_on_exit(restart=True) - QMessageBox.information( - self._window, + self.tray.showMessage( 'Update Ready', 'The update will be applied when the application closes.\n' - 'The application will restart automatically with the new version.', + 'The application will restart automatically.', + QSystemTrayIcon.MessageIcon.Information, ) self._app.quit() except Exception as e: - QMessageBox.warning( - self._window, + self.tray.showMessage( 'Update Failed', f'Failed to apply the update: {e}', + QSystemTrayIcon.MessageIcon.Warning, ) From 60967488df4326e76d4fe8f72000585a4cb69764 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 4 Feb 2026 15:55:08 -0800 Subject: [PATCH 05/40] Update Icon --- data/icon.png | Bin 40371 -> 1227084 bytes synodic_client/application/screen/tray.py | 6 ++---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/data/icon.png b/data/icon.png index fcee3eaaf154ac24adf2ffd4f2bc8d1f07c89062..0e08de8ea1f26f3f23eafec4b5fae7b751fda2ed 100644 GIT binary patch literal 1227084 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�!co2AXi|blXk58XnhM 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

+CDA6=v(mgmcf< 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 U|{mL;J;@f=v>2xZjl1aIjZv7=C5F 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經Z|NUyl9sC|5h=^~yZ_wk7akk`%Evdj+NUm# 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%0ATXHo*pLz_C-j)= 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

xWmBBE8dX5 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 z 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ℑTrIWL%!!r)MCVL7CRH`9XY{#bB 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

  • }(bLl!N+CI@}8Z_$#08QV`N16$Jf=a&gDWmp^jDuTuPaxs^L z(cR8$h^fl}sKWQ4WM!bpN2HxRdcB1^3Fw^l*A>iFR%B{{9wv_|cOcA4(5f7W6}zQ3 zIwV{fnKcOlKv&JZN3@#qXP^DSSlT}0-0FA|D!jw=@MVyuiDEC{KX^#b)wpl;67Cvo(2h*Op z{y+&CE_OXQ5e{>(eoCz=TbK1GqT0il{jR2HRlqhykG*5~T}_U6b-OU)-DF9~aNnLp zq{6@lyWGciQaMErSWpX~UnZW+@}5NIrOcGLh1xI)F&wLT(nfBkot0@vAYU#h)<*vG z^!&jZ;%z{?icjP@^`IRHHn~e*27%dWWeLE;$h9uX6O4P?`Q@1@QwQ31=_6N`W9lJh z$3IV~lGdp=Bhm%n!uT=`=rrW?_)UG)sR+YL=H32+**nAZRG!1+%UYoXsRDqh zVV7iEU~p~O%CIc#aZ{x+!g)pijw@l9`DEf^ch1$x2W4pQx3r5w(L-Y`5|&_?1B#jn zn_1%t2VyHBfv9wPE{UeHk)|F#U(f?1Si?x zB+hT6Bs5W*hO5FEKEb`;+DSe+wI*c1scg`AB0;fy!`${ z6vR0dK0=}v6AJKN3*1mv!}X;HU(+coo!JbqBBM8Jc+7*Rr!N#wz)|*Z7jYIiJE|hc z>d!rG@Ex8`ZHUUT2jh_9Oo|yhjT=;0r+PZv!m8pA9E%|1j<6I_aQdtLPnZ(?PRZ=C3P^1s?cH$_ybH>PPvP** z&R&LblJIj$l6zrr4jd1++~Y(3suK8cA}ct8U#UtzNsyU@>%63q z{J=v}>xh95ruQ0;Lq0t-fp{6Y~zF5~&t37C(e($(Gr;{p zl%~KD9y|=x>4UpKu#d!oHknT(ztSV7U^AjY3i6<##t7Hd#}MM8Eds8VP0eLN_9 znn)=cu$bc76YoRxmR5QZgDfVT3_Sut;kw%zw2+|`+peE`U~xSiviVn4S)cR)>c`k*CW>kEZ&WP_h`V`3zIaOY5|j^e?1Pu&JUX<)RwvZv6lXz8WBqw--dz#%{WDbEQpwLg zPY4|Hja0Ay2AaDz-)d2}e~(G!2TEQ!PG{?IV6(RL`$p&y!rc5uxcEQgg$~AM5~OV3 zd_E(d%(-}-9V4uwbT?ZBawv0_jj~0!lTa_RtQjlL;sF+L%Q}&J_?M zqH)|Vx)5#O^ye5<%kOQ-V@ES^EOMAhFcgE@7NF_jI&z?gS%2`<{pieZJ^}`gmETcc z7H$*5ChFM}lrrLhV+|b0+s65Bgj8RY?A;B&<*`0evWm9N|zTO{eS#Lb`D z`nwqwGZwRQj+jlt+}sDKy8kR0gnkR67lp_)ZDs~_okh}X7er6*fiz3c|9hm9;NboA zypSH~EOD@cG$hnBjf$dXK!*pUZj6hm^3idFoZEPa`<7{@^;(=N`G&$tMgX>@sM;D% zS~7_V*9c4p{=Bpfs&CGimRxYONyA@_<0<-`>-pX}qJMx2IG_o0)7o#&jPPMd8V-yA z+Kr1ow`KS-j2hen9fFdF+4N>#KX}W$>=aYnG3!n{)T{3mv(ONL!5`E8t{NgWjpy z?89Gd;A{hyv_&#OS%v9vG=uG3b3+u6<%WG2+_SKn2*& zZYyck?PDvS#a)T2LXdbf>XTDuW2q5FwStA@2(|FEDW99-F#5UmKmOE4z);?>Ka$YeotZ%q*GLP!aKbm_yBGqX6Z4zk-1V$l<60*JTl~I0z=IVIX$SK_pAnTk3 zD*}a#xlbr|U$#})rPYGO}JH2r4mpzs9fwGH2Z z#nZOY{D9S42E;@C(}|;jb#%GZY)AiAXM-X@W3WZTLeWTJA$#FMszC<?(Spl1UG?#Bqe6WpZxZh6hy3IJwm zSNS8a-9ZSA(`kw?BLA6JUc6`$CBM!i0hTu0)T(Wj8bW&ngQRDFX~ryM=Dtoe1XgG1 ziaeEK;BpQfdJ_!a)X5RO7LXWE%{MUOmx@n0F{jxV)8LB+U`2YH(}W-O9DVgHuiDfC zJkn>aRDOu7@B*5}kMEE&VNS&NnH9^_BvZF56(fu!rJI=g;C3M3MV3jeZGE3bW0r_8E7o$Y>AkR@8 zkaPm!3XKi*^hGj9A^e+vV@1Qf`NOI`8B(|vE0W(k-Lrk2u_rF1#gP<0&RyscJ0(Oq u+d0_5xe?2KZE%PjsVI5 None: self._pending_update_info = result self.tray.showMessage( 'Update Available', - f'Version {result.latest_version} is available (current: {result.current_version}).\n' - 'Click to download.', + f'Version {result.latest_version} is available (current: {result.current_version}).\nClick to download.', QSystemTrayIcon.MessageIcon.Information, ) @@ -287,8 +286,7 @@ def _apply_update(self) -> None: self.tray.showMessage( 'Update Ready', - 'The update will be applied when the application closes.\n' - 'The application will restart automatically.', + 'The update will be applied when the application closes.\nThe application will restart automatically.', QSystemTrayIcon.MessageIcon.Information, ) self._app.quit() From 1c9612a19c43278c86ec13516e5187fad6bd6960 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 4 Feb 2026 16:11:28 -0800 Subject: [PATCH 06/40] Add Hidden Imports --- synodic_client/application/screen/screen.py | 152 ++++++++++++++++++-- tool/pyinstaller/synodic.spec | 14 +- 2 files changed, 150 insertions(+), 16 deletions(-) diff --git a/synodic_client/application/screen/screen.py b/synodic_client/application/screen/screen.py index 41f15dc..d0b9e0c 100644 --- a/synodic_client/application/screen/screen.py +++ b/synodic_client/application/screen/screen.py @@ -2,15 +2,21 @@ from __future__ import annotations +from pathlib import Path from typing import TYPE_CHECKING from porringer.schema import ListPluginsParameters from PySide6.QtCore import Qt from PySide6.QtWidgets import ( + QFileDialog, + QHBoxLayout, QHeaderView, QMainWindow, + QMessageBox, + QPushButton, QTableWidget, QTableWidgetItem, + QTabWidget, QVBoxLayout, QWidget, ) @@ -19,11 +25,11 @@ from porringer.api import API -class ManifestView(QWidget): +class PluginsView(QWidget): """Widget displaying cached plugin manifests.""" def __init__(self, porringer: API, parent: QWidget | None = None) -> None: - """Initialize the manifest view. + """Initialize the plugins view. Args: porringer: The porringer API instance. @@ -36,7 +42,7 @@ def __init__(self, porringer: API, parent: QWidget | None = None) -> None: def _init_ui(self) -> None: """Initialize the UI components.""" layout = QVBoxLayout(self) - layout.setContentsMargins(0, 0, 0, 0) + layout.setContentsMargins(8, 8, 8, 8) self._table = QTableWidget() self._table.setColumnCount(3) @@ -45,7 +51,6 @@ def _init_ui(self) -> None: self._table.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) self._table.setAlternatingRowColors(True) - # Make columns stretch to fill available space header = self._table.horizontalHeader() header.setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch) header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents) @@ -54,7 +59,7 @@ def _init_ui(self) -> None: layout.addWidget(self._table) def refresh(self) -> None: - """Refresh the manifest data from porringer.""" + """Refresh the plugin data from porringer.""" self._table.setRowCount(0) params = ListPluginsParameters() @@ -66,7 +71,6 @@ def refresh(self) -> None: version_item = QTableWidgetItem(str(plugin.version)) status_item = QTableWidgetItem('Installed' if plugin.installed else 'Not Installed') - # Center align version and status version_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) status_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) @@ -75,10 +79,122 @@ def refresh(self) -> None: self._table.setItem(row, 2, status_item) +class DirectoriesView(QWidget): + """Widget for managing cached manifest directories.""" + + def __init__(self, porringer: API, parent: QWidget | None = None) -> None: + """Initialize the directories view. + + Args: + porringer: The porringer API instance. + parent: Optional parent widget. + """ + super().__init__(parent) + self._porringer = porringer + self._init_ui() + + def _init_ui(self) -> None: + """Initialize the UI components.""" + layout = QVBoxLayout(self) + layout.setContentsMargins(8, 8, 8, 8) + + # Toolbar with add/remove buttons + toolbar = QHBoxLayout() + toolbar.setContentsMargins(0, 0, 0, 8) + + self._add_btn = QPushButton('Add Directory') + self._add_btn.clicked.connect(self._on_add_directory) + toolbar.addWidget(self._add_btn) + + self._remove_btn = QPushButton('Remove') + self._remove_btn.clicked.connect(self._on_remove_directory) + self._remove_btn.setEnabled(False) + toolbar.addWidget(self._remove_btn) + + toolbar.addStretch() + layout.addLayout(toolbar) + + # Directories table + self._table = QTableWidget() + self._table.setColumnCount(2) + self._table.setHorizontalHeaderLabels(['Path', 'Name']) + self._table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers) + self._table.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) + self._table.setAlternatingRowColors(True) + self._table.itemSelectionChanged.connect(self._on_selection_changed) + + header = self._table.horizontalHeader() + header.setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch) + header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents) + + layout.addWidget(self._table) + + def refresh(self) -> None: + """Refresh the directories list from porringer cache.""" + self._table.setRowCount(0) + + directories = self._porringer.cache.list_directories() + + self._table.setRowCount(len(directories)) + for row, directory in enumerate(directories): + path_item = QTableWidgetItem(str(directory.path)) + name_item = QTableWidgetItem(directory.name or '') + + # Store the path in the item data for removal + path_item.setData(Qt.ItemDataRole.UserRole, directory.path) + + self._table.setItem(row, 0, path_item) + self._table.setItem(row, 1, name_item) + + self._on_selection_changed() + + def _on_selection_changed(self) -> None: + """Update button states based on selection.""" + self._remove_btn.setEnabled(len(self._table.selectedItems()) > 0) + + def _on_add_directory(self) -> None: + """Handle add directory button click.""" + directory = QFileDialog.getExistingDirectory( + self, + 'Select Manifest Directory', + '', + QFileDialog.Option.ShowDirsOnly, + ) + + if not directory: + return + + try: + path = Path(directory) + self._porringer.cache.add_directory(path) + self.refresh() + except ValueError as e: + QMessageBox.warning( + self, + 'Add Directory Failed', + str(e), + ) + + def _on_remove_directory(self) -> None: + """Handle remove directory button click.""" + selected_rows = set(item.row() for item in self._table.selectedItems()) + + for row in selected_rows: + path_item = self._table.item(row, 0) + if path_item: + path = path_item.data(Qt.ItemDataRole.UserRole) + if path: + self._porringer.cache.remove_directory(path) + + self.refresh() + + class MainWindow(QMainWindow): """Main window for the application.""" - _manifest_view: ManifestView | None = None + _tabs: QTabWidget | None = None + _plugins_view: PluginsView | None = None + _directories_view: DirectoriesView | None = None def __init__(self, porringer: API | None = None) -> None: """Initialize the main window. @@ -93,12 +209,22 @@ def __init__(self, porringer: API | None = None) -> None: def show(self) -> None: """Show the window, initializing UI lazily on first show.""" - if self._manifest_view is None and self._porringer is not None: - self._manifest_view = ManifestView(self._porringer, self) - self.setCentralWidget(self._manifest_view) - self._manifest_view.refresh() - elif self._manifest_view is not None: - self._manifest_view.refresh() + if self._tabs is None and self._porringer is not None: + self._tabs = QTabWidget(self) + + self._plugins_view = PluginsView(self._porringer, self) + self._tabs.addTab(self._plugins_view, 'Plugins') + + self._directories_view = DirectoriesView(self._porringer, self) + self._tabs.addTab(self._directories_view, 'Directories') + + self.setCentralWidget(self._tabs) + + # Refresh both views + if self._plugins_view is not None: + self._plugins_view.refresh() + if self._directories_view is not None: + self._directories_view.refresh() super().show() diff --git a/tool/pyinstaller/synodic.spec b/tool/pyinstaller/synodic.spec index 5d2fe72..e1e076b 100644 --- a/tool/pyinstaller/synodic.spec +++ b/tool/pyinstaller/synodic.spec @@ -9,9 +9,17 @@ hiddenimports = [] # Add porringer metadata so entry points work datas += copy_metadata('porringer') -# Add your plugin packages here as you add them to dependencies -# Example: datas += copy_metadata('porringer-plugin-name') -# Example: hiddenimports += ['porringer_plugin_name'] +# Porringer bundled plugins (discovered via entry points at runtime) +hiddenimports += [ + 'porringer.plugin.apt.plugin', + 'porringer.plugin.brew.plugin', + 'porringer.plugin.npm.plugin', + 'porringer.plugin.pim.plugin', + 'porringer.plugin.pip.plugin', + 'porringer.plugin.pipx.plugin', + 'porringer.plugin.uv.plugin', + 'porringer.plugin.winget.plugin', +] a = Analysis( ['../../synodic_client/application/qt.py'], From 5f461acb94c81de49b6aa22bce24ac17c547c92f Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Thu, 5 Feb 2026 08:29:18 -0800 Subject: [PATCH 07/40] Add AppIcon --- synodic_client/application/qt.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/synodic_client/application/qt.py b/synodic_client/application/qt.py index d34a239..eb3d67b 100644 --- a/synodic_client/application/qt.py +++ b/synodic_client/application/qt.py @@ -6,6 +6,7 @@ from porringer.api import API, APIParameters from porringer.schema import ListPluginsParameters, LocalConfiguration from PySide6.QtCore import Qt +from PySide6.QtGui import QIcon from PySide6.QtWidgets import QApplication from synodic_client.application.screen.screen import Screen @@ -43,6 +44,9 @@ def application() -> None: app = QApplication([]) app.setQuitOnLastWindowClosed(False) + with Client.resource(Client.icon) as icon_path: + app.setWindowIcon(QIcon(str(icon_path))) + # Reduce CPU usage when idle - process events less aggressively app.setAttribute(Qt.ApplicationAttribute.AA_CompressHighFrequencyEvents) From c6b850fd4166dffbbc18dda98bca8b605db5913a Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Thu, 5 Feb 2026 08:33:50 -0800 Subject: [PATCH 08/40] Use Empty Version Default --- synodic_client/application/screen/screen.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/synodic_client/application/screen/screen.py b/synodic_client/application/screen/screen.py index d0b9e0c..e89504d 100644 --- a/synodic_client/application/screen/screen.py +++ b/synodic_client/application/screen/screen.py @@ -68,7 +68,8 @@ def refresh(self) -> None: self._table.setRowCount(len(plugins)) for row, plugin in enumerate(plugins): name_item = QTableWidgetItem(plugin.name) - version_item = QTableWidgetItem(str(plugin.version)) + + version_item = QTableWidgetItem('-') status_item = QTableWidgetItem('Installed' if plugin.installed else 'Not Installed') version_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) From a335312bc68c17effb786c36bfbc547d9a6737ef Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Thu, 5 Feb 2026 12:32:41 -0800 Subject: [PATCH 09/40] Update Chore --- pdm.lock | 28 ++++++++++++++-------------- pyproject.toml | 4 ++-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/pdm.lock b/pdm.lock index 82269de..460d2d1 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "build", "lint", "test"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:c976f33c96439bf559fb8d5f46ecb565abe415cbfc4986f5f6c991b44c7adb98" +content_hash = "sha256:be6ee865e00ae0ac537ea4737406971c5ee4aa014dfa82c6106ed083254f919b" [[metadata.targets]] requires_python = ">=3.14,<3.15" @@ -317,7 +317,7 @@ files = [ [[package]] name = "porringer" -version = "0.1.1" +version = "0.1.2.dev6" requires_python = ">=3.14" summary = "" groups = ["default"] @@ -330,8 +330,8 @@ dependencies = [ "userpath>=1.9.2", ] files = [ - {file = "porringer-0.1.1-py3-none-any.whl", hash = "sha256:11f47e2ed5030fa72c669835a824c82b92a4982c4b7cc18591be059b7c9d2a7d"}, - {file = "porringer-0.1.1.tar.gz", hash = "sha256:b9dbe4ccf3a0f847c101c8cb18bce760fa186514bd1d3c9f52218e33e8c48c94"}, + {file = "porringer-0.1.2.dev6-py3-none-any.whl", hash = "sha256:615ca62fc5ca0dd94c6be0338e93d68b5f9588eb969be28c2a3d3b126f42367e"}, + {file = "porringer-0.1.2.dev6.tar.gz", hash = "sha256:48fa8283e7de0e0b90c8006d63863547a59a08e3451cb8a086cba3bf6449af82"}, ] [[package]] @@ -452,20 +452,20 @@ files = [ [[package]] name = "pyrefly" -version = "0.51.0" +version = "0.51.1" requires_python = ">=3.8" summary = "A fast type checker and language server for Python with powerful IDE features" groups = ["lint"] files = [ - {file = "pyrefly-0.51.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:4013f914d3b523a9b1afc25a620a011406f7745ad5cfc5781ec95235bc9cd583"}, - {file = "pyrefly-0.51.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:4a6eeffd5649d393bf457b7c1253f89b33295d475b1cae0f9a21377986708804"}, - {file = "pyrefly-0.51.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:beace17854735136134848e5a0e8678b6862ee1144eaeb27f1bb70ff1f8fd9ca"}, - {file = "pyrefly-0.51.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40055df65c184d825081e7177b99d277c8a1cb29c6e41a54ff40828d355aa467"}, - {file = "pyrefly-0.51.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65689401e35b7d01a1394cdb1bafd46e2f49369b0f9891a333bce3568f100ce2"}, - {file = "pyrefly-0.51.0-py3-none-win32.whl", hash = "sha256:525e654aa50bc32bdfdd505dbc233b0cfab8ed2917a62b178c3156e2f80062c0"}, - {file = "pyrefly-0.51.0-py3-none-win_amd64.whl", hash = "sha256:0aa2db0cbf9f1d8c77a98464d12bcae7bdcbdaad80098a0456abf51d6f2ee275"}, - {file = "pyrefly-0.51.0-py3-none-win_arm64.whl", hash = "sha256:bc14eb4f273a5ec2be7318c70a8e5a50e2e9f7a42de3a7f73fb0cfdc7f6996d2"}, - {file = "pyrefly-0.51.0.tar.gz", hash = "sha256:99467db60f148bb6965c45cdc3e769d94b704100e9d57b6455cc6796e5a9e7b1"}, + {file = "pyrefly-0.51.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7d4b9c13edf6a0c1ef1fb80c8429ed1ce023d6c1faa282032b32900bc4ae7fc1"}, + {file = "pyrefly-0.51.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:252d920b21a1ce0e00f077f560e48913370fbff3b6aab4426902eab9a57f5bee"}, + {file = "pyrefly-0.51.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48ec5c9f24361e903e1c60a0a32099ddd1d12b47c314414a980db2129ff040d"}, + {file = "pyrefly-0.51.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10e4ee82a90e493a07d4d8bc9683185005169f17454ad56d37c19f4794387581"}, + {file = "pyrefly-0.51.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cffebed312e85c4af91b9e398cf26c988ad4b442e815300e8478c1e0176f826a"}, + {file = "pyrefly-0.51.1-py3-none-win32.whl", hash = "sha256:8ce1693457a4d856faf35ec519f7866ee13dd79d7db085e95caec8eaa21f1450"}, + {file = "pyrefly-0.51.1-py3-none-win_amd64.whl", hash = "sha256:42c05e88da2f18aeab45e9b0384ef8e776630ed270c8bfcb33e0668757ea2d4f"}, + {file = "pyrefly-0.51.1-py3-none-win_arm64.whl", hash = "sha256:c0f30432cfaf13c7c2d4188c94146cdaab2ce52bbd292d48c7d18ad4a168ecfb"}, + {file = "pyrefly-0.51.1.tar.gz", hash = "sha256:5835c93e568a7507926095b67ef269ecf3842eba604c0ac49290943b2b3bb21b"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 1fffada..f891275 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ requires-python = ">=3.14, <3.15" dependencies = [ "pyside6>=6.10.2", "packaging>=26.0", - "porringer>=0.1.1", + "porringer>=0.1.2.dev6", "velopack>=0.0.1369.dev7516", ] @@ -24,7 +24,7 @@ repository = "https://github.com/synodic/synodic-client" [dependency-groups] build = ["pyinstaller>=6.18.0"] -lint = ["ruff>=0.15.0", "pyrefly>=0.51.0"] +lint = ["ruff>=0.15.0", "pyrefly>=0.51.1"] test = ["pytest>=9.0.2", "pytest-cov>=7.0.0", "pytest-mock>=3.15.1"] [project.gui-scripts] From 49c1191a88a166ea91f318381b9619652738c49f Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Thu, 5 Feb 2026 13:23:02 -0800 Subject: [PATCH 10/40] Update Chore --- pdm.lock | 8 ++++---- pyproject.toml | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pdm.lock b/pdm.lock index 460d2d1..5867ebe 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "build", "lint", "test"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:be6ee865e00ae0ac537ea4737406971c5ee4aa014dfa82c6106ed083254f919b" +content_hash = "sha256:d2d7726fa1d44e1de4a5b6ea7a362cc7f14d84988f3260293cd8080149d58ef4" [[metadata.targets]] requires_python = ">=3.14,<3.15" @@ -317,7 +317,7 @@ files = [ [[package]] name = "porringer" -version = "0.1.2.dev6" +version = "0.1.2.dev7" requires_python = ">=3.14" summary = "" groups = ["default"] @@ -330,8 +330,8 @@ dependencies = [ "userpath>=1.9.2", ] files = [ - {file = "porringer-0.1.2.dev6-py3-none-any.whl", hash = "sha256:615ca62fc5ca0dd94c6be0338e93d68b5f9588eb969be28c2a3d3b126f42367e"}, - {file = "porringer-0.1.2.dev6.tar.gz", hash = "sha256:48fa8283e7de0e0b90c8006d63863547a59a08e3451cb8a086cba3bf6449af82"}, + {file = "porringer-0.1.2.dev7-py3-none-any.whl", hash = "sha256:159c4c5d1505c3e0d861cda6d6f3261d051a1fbd9692cf2f73b75fab214bf7ab"}, + {file = "porringer-0.1.2.dev7.tar.gz", hash = "sha256:3a0ca76854d658a70c0822249dad64bf0938882992664eedb2ecf572417b4162"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index f891275..f450891 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ requires-python = ">=3.14, <3.15" dependencies = [ "pyside6>=6.10.2", "packaging>=26.0", - "porringer>=0.1.2.dev6", + "porringer>=0.1.2.dev7", "velopack>=0.0.1369.dev7516", ] @@ -71,6 +71,9 @@ source = "scm" write_to = "synodic_client/_version.py" write_template = "__version__ = '{}'\n" +[tool.pdm.resolution] +allow-prereleases = true + [tool.pdm.scripts] analyze = "ruff check synodic_client tests" format = "ruff format" From 14f78d71eaefb6d3ecf9cf3757e1635ecc234878 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 11:58:39 -0800 Subject: [PATCH 11/40] Local WebSocket + Singleton --- pyproject.toml | 2 +- synodic_client/application/instance.py | 99 ++++++++++ synodic_client/application/qt.py | 97 +++++++-- synodic_client/application/screen/tray.py | 113 ++++++++++- synodic_client/config.py | 147 ++++++++++++++ synodic_client/protocol.py | 83 ++++++++ synodic_client/resolution.py | 92 +++++++++ synodic_client/updater.py | 31 ++- tests/unit/test_config.py | 139 +++++++++++++ tests/unit/test_protocol.py | 97 +++++++++ tests/unit/test_resolution.py | 230 ++++++++++++++++++++++ tests/unit/test_uri.py | 36 ++++ tool/pyinstaller/synodic.spec | 15 +- tool/scripts/__init__.py | 0 tool/scripts/package.py | 170 ++++++++++++++++ 15 files changed, 1332 insertions(+), 19 deletions(-) create mode 100644 synodic_client/application/instance.py create mode 100644 synodic_client/config.py create mode 100644 synodic_client/protocol.py create mode 100644 synodic_client/resolution.py create mode 100644 tests/unit/test_config.py create mode 100644 tests/unit/test_protocol.py create mode 100644 tests/unit/test_resolution.py create mode 100644 tests/unit/test_uri.py create mode 100644 tool/scripts/__init__.py create mode 100644 tool/scripts/package.py diff --git a/pyproject.toml b/pyproject.toml index f450891..a70dfa6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,7 +78,7 @@ allow-prereleases = true analyze = "ruff check synodic_client tests" format = "ruff format" lint = { composite = ["analyze", "format", "type-check"] } -package = "pyinstaller --clean tool/pyinstaller/synodic.spec" +package = { call = "tool.scripts.package:main" } test = "pytest --cov=synodic_client --verbose tests" type-check = "pyrefly check" serve = "zensical serve" diff --git a/synodic_client/application/instance.py b/synodic_client/application/instance.py new file mode 100644 index 0000000..5fc38dc --- /dev/null +++ b/synodic_client/application/instance.py @@ -0,0 +1,99 @@ +"""Single-instance application management using Qt local sockets. + +Ensures only one instance of Synodic Client runs at a time. When a second +instance is launched (e.g. by clicking a ``synodic://`` URI), it sends the +URI to the already-running instance and exits. +""" + +import logging + +from PySide6.QtCore import QByteArray, QObject, Signal +from PySide6.QtNetwork import QLocalServer, QLocalSocket + +logger = logging.getLogger(__name__) + +_SERVER_NAME = 'synodic-client' + + +class SingleInstance(QObject): + """Manages single-instance enforcement via a local socket server. + + Signals: + uri_received: Emitted when another instance sends a URI string. + """ + + uri_received = Signal(str) + + def __init__(self, parent: QObject | None = None) -> None: + """Initialize the single instance manager. + + Args: + parent: Optional parent QObject. + """ + super().__init__(parent) + self._server: QLocalServer | None = None + + @staticmethod + def try_send_to_existing(message: str) -> bool: + """Attempt to send a message to an already-running instance. + + Args: + message: The message (typically a ``synodic://`` URI) to send. + + Returns: + True if the message was sent successfully (another instance is running). + False if no other instance was found. + """ + socket = QLocalSocket() + socket.connectToServer(_SERVER_NAME) + + if socket.waitForConnected(1000): + socket.write(QByteArray(message.encode('utf-8'))) + socket.waitForBytesWritten(1000) + socket.disconnectFromServer() + logger.info('Sent message to existing instance: %s', message) + return True + + return False + + def start_server(self) -> bool: + """Start the local socket server to listen for incoming messages. + + If a stale server exists (e.g. from a crash), it will be cleaned up + and a new server started. + + Returns: + True if the server started successfully. + """ + self._server = QLocalServer(self) + self._server.newConnection.connect(self._on_new_connection) + + if not self._server.listen(_SERVER_NAME): + # Clean up stale socket from a previous crash + QLocalServer.removeServer(_SERVER_NAME) + if not self._server.listen(_SERVER_NAME): + logger.error('Failed to start single-instance server: %s', self._server.errorString()) + return False + + logger.debug('Single-instance server listening as "%s"', _SERVER_NAME) + return True + + def _on_new_connection(self) -> None: + """Handle an incoming connection from another instance.""" + if self._server is None: + return + + socket = self._server.nextPendingConnection() + if socket is None: + return + + if socket.waitForReadyRead(1000): + raw = socket.readAll().data() + data = raw.decode('utf-8') if isinstance(raw, (bytes, bytearray)) else str(raw) + if data: + logger.info('Received message from another instance: %s', data) + self.uri_received.emit(data) + else: + logger.info('Another instance connected (no URI)') + + socket.disconnectFromServer() diff --git a/synodic_client/application/qt.py b/synodic_client/application/qt.py index eb3d67b..d44717c 100644 --- a/synodic_client/application/qt.py +++ b/synodic_client/application/qt.py @@ -1,7 +1,8 @@ -"""gui""" +"""GUI entry point for the Synodic Client application.""" import logging import sys +from urllib.parse import parse_qs, urlparse from porringer.api import API, APIParameters from porringer.schema import ListPluginsParameters, LocalConfiguration @@ -9,34 +10,84 @@ from PySide6.QtGui import QIcon from PySide6.QtWidgets import QApplication +from synodic_client.application.instance import SingleInstance from synodic_client.application.screen.screen import Screen from synodic_client.application.screen.tray import TrayScreen from synodic_client.client import Client -from synodic_client.updater import UpdateChannel, UpdateConfig, initialize_velopack +from synodic_client.resolution import resolve_config, resolve_update_config +from synodic_client.updater import initialize_velopack + +_PROTOCOL_SCHEME = 'synodic' + + +def find_uri(args: list[str]) -> str | None: + """Find a ``synodic://`` URI in the command-line arguments. + + Args: + args: Command-line arguments (typically ``sys.argv[1:]``). + + Returns: + The first ``synodic://`` URI found, or None. + """ + for arg in args: + if arg.lower().startswith(f'{_PROTOCOL_SCHEME}://'): + return arg + return None + + +def parse_uri(uri: str) -> dict[str, str | list[str]]: + """Parse a ``synodic://`` URI into its components. + + Example: + ``synodic://install?manifest=https://example.com/foo.toml`` + returns ``{'action': 'install', 'manifest': ['https://example.com/foo.toml']}``. + + Args: + uri: A ``synodic://`` URI string. + + Returns: + A dict with ``'action'`` (the host/path) and any query parameters. + """ + parsed = urlparse(uri) + result: dict[str, str | list[str]] = { + 'action': parsed.netloc or parsed.path.strip('/'), + } + result.update(parse_qs(parsed.query)) + return result def application() -> None: - """Entrypoint""" + """Application entry point.""" # Initialize Velopack early, before any UI initialize_velopack() - client = Client() - logger = logging.getLogger('synodic_client') logging.basicConfig(level=logging.INFO) + # Check for a synodic:// URI in arguments + uri = find_uri(sys.argv[1:]) + if uri: + logger.info('Received URI: %s', uri) + + # Load persistent configuration + config = resolve_config() + + client = Client() + local_config = LocalConfiguration() api_params = APIParameters(logger) porringer = API(local_config, api_params) - # Initialize the updater - # Use DEVELOPMENT channel if running from source (not frozen) - is_dev = not getattr(sys, 'frozen', False) - update_channel = UpdateChannel.DEVELOPMENT if is_dev else UpdateChannel.STABLE - update_config = UpdateConfig(channel=update_channel) + # Determine update channel and source from persistent config + update_config = resolve_update_config(config) client.initialize_updater(update_config) - logger.info('Synodic Client v%s started (channel: %s)', client.version, update_channel.name) + logger.info( + 'Synodic Client v%s started (channel: %s, source: %s)', + client.version, + update_config.channel.name, + update_config.repo_url, + ) list_params = ListPluginsParameters() porringer.plugin.list(list_params) @@ -44,6 +95,16 @@ def application() -> None: app = QApplication([]) app.setQuitOnLastWindowClosed(False) + # Single-instance management + instance = SingleInstance(app) + + if instance.try_send_to_existing(uri or ''): + # Another instance is running — forward the URI (if any) and exit + logger.info('Another instance is already running, exiting') + sys.exit(0) + + instance.start_server() + with Client.resource(Client.icon) as icon_path: app.setWindowIcon(QIcon(str(icon_path))) @@ -53,6 +114,20 @@ def application() -> None: _screen = Screen(porringer) _tray = TrayScreen(app, client, Client.icon, _screen.window) + # When another instance sends us a URI, log it + # TODO: Hook this up to the install preview GUI + def _on_uri_received(received_uri: str) -> None: + parsed = urlparse(received_uri) + logger.info('Received URI from another instance: %s (action: %s)', received_uri, parsed.netloc) + + instance.uri_received.connect(_on_uri_received) + + # If we were launched with a URI, process it now + if uri: + parsed = urlparse(uri) + logger.info('Processing launch URI: %s (action: %s)', uri, parsed.netloc) + # TODO: Show install preview GUI for the parsed URI + # sys.exit ensures proper cleanup and exit code propagation # Leading underscore indicates references kept alive intentionally until exec() returns sys.exit(app.exec()) diff --git a/synodic_client/application/screen/tray.py b/synodic_client/application/screen/tray.py index c8d1142..426bae2 100644 --- a/synodic_client/application/screen/tray.py +++ b/synodic_client/application/screen/tray.py @@ -5,11 +5,25 @@ from PySide6.QtCore import QObject, QThread, Signal from PySide6.QtGui import QAction, QIcon -from PySide6.QtWidgets import QApplication, QMenu, QMessageBox, QProgressDialog, QSystemTrayIcon +from PySide6.QtWidgets import ( + QApplication, + QDialog, + QFileDialog, + QHBoxLayout, + QLabel, + QLineEdit, + QMenu, + QMessageBox, + QProgressDialog, + QPushButton, + QSystemTrayIcon, + QVBoxLayout, +) from synodic_client.application.screen.screen import MainWindow from synodic_client.client import Client -from synodic_client.updater import UpdateInfo +from synodic_client.resolution import resolve_config, update_and_resolve +from synodic_client.updater import GITHUB_REPO_URL, UpdateChannel, UpdateInfo logger = logging.getLogger(__name__) @@ -97,6 +111,30 @@ def __init__(self, app: QApplication, client: Client, icon_name: LiteralString, self.update_action.triggered.connect(self._on_check_updates) self.settings_menu.addAction(self.update_action) + self.settings_menu.addSeparator() + + # Update Source action + self.update_source_action = QAction('Update Source...', self.settings_menu) + self.update_source_action.triggered.connect(self._on_update_source) + self.settings_menu.addAction(self.update_source_action) + + # Update Channel submenu + self.channel_menu = QMenu('Update Channel', self.settings_menu) + self.settings_menu.addMenu(self.channel_menu) + + self._channel_stable_action = QAction('Stable', self.channel_menu) + self._channel_stable_action.setCheckable(True) + self._channel_stable_action.triggered.connect(lambda: self._on_channel_changed(UpdateChannel.STABLE)) + self.channel_menu.addAction(self._channel_stable_action) + + self._channel_dev_action = QAction('Development', self.channel_menu) + self._channel_dev_action.setCheckable(True) + self._channel_dev_action.triggered.connect(lambda: self._on_channel_changed(UpdateChannel.DEVELOPMENT)) + self.channel_menu.addAction(self._channel_dev_action) + + # Set initial channel check state from config + self._sync_channel_checks() + self.menu.addSeparator() self.quit_action = QAction('Quit', self.menu) @@ -105,6 +143,77 @@ def __init__(self, app: QApplication, client: Client, icon_name: LiteralString, self.tray.setContextMenu(self.menu) + def _sync_channel_checks(self) -> None: + """Synchronize channel checkmarks with the current config.""" + config = resolve_config() + is_dev = config.update_channel == 'dev' + self._channel_stable_action.setChecked(not is_dev) + self._channel_dev_action.setChecked(is_dev) + + def _on_update_source(self) -> None: + """Open a dialog to edit the update source URL or local path.""" + config = resolve_config() + + dialog = QDialog(self._window if self._window.isVisible() else None) + dialog.setWindowTitle('Update Source') + dialog.setMinimumWidth(450) + + layout = QVBoxLayout(dialog) + + label = QLabel( + 'Enter a URL or local path for Velopack releases.\nLeave blank to use the default GitHub source.', + ) + layout.addWidget(label) + + source_edit = QLineEdit(config.update_source or '') + source_edit.setPlaceholderText(GITHUB_REPO_URL) + + browse_button = QPushButton('Browse...') + + row = QHBoxLayout() + row.addWidget(source_edit) + row.addWidget(browse_button) + layout.addLayout(row) + + button_row = QHBoxLayout() + ok_button = QPushButton('OK') + cancel_button = QPushButton('Cancel') + button_row.addStretch() + button_row.addWidget(ok_button) + button_row.addWidget(cancel_button) + layout.addLayout(button_row) + + def _browse() -> None: + path = QFileDialog.getExistingDirectory(dialog, 'Select Releases Directory') + if path: + source_edit.setText(path) + + browse_button.clicked.connect(_browse) + ok_button.clicked.connect(dialog.accept) + cancel_button.clicked.connect(dialog.reject) + + if dialog.exec() == QDialog.DialogCode.Accepted: + new_source = source_edit.text().strip() or None + config.update_source = new_source + logger.info('Update source changed to: %s', new_source or '(default)') + + update_cfg = update_and_resolve(config) + self._client.initialize_updater(update_cfg) + logger.info( + 'Updater re-initialized (channel: %s, source: %s)', update_cfg.channel.name, update_cfg.repo_url + ) + + def _on_channel_changed(self, channel: UpdateChannel) -> None: + """Handle channel selection change.""" + config = resolve_config() + config.update_channel = 'dev' if channel == UpdateChannel.DEVELOPMENT else 'stable' + logger.info('Update channel changed to: %s', config.update_channel) + + update_cfg = update_and_resolve(config) + self._sync_channel_checks() + self._client.initialize_updater(update_cfg) + logger.info('Updater re-initialized (channel: %s, source: %s)', update_cfg.channel.name, update_cfg.repo_url) + def _on_check_updates(self) -> None: """Handle check for updates action.""" if self._client.updater is None: diff --git a/synodic_client/config.py b/synodic_client/config.py new file mode 100644 index 0000000..76d3aa9 --- /dev/null +++ b/synodic_client/config.py @@ -0,0 +1,147 @@ +"""Persistent configuration for the Synodic Client. + +Two configuration layers are supported: + +- **LocalConfiguration** — a portable ``config.json`` next to the executable + (frozen builds only). Written by the packaging script for dev builds. + Fields set here override the global configuration. + +- **GlobalConfiguration** — a user-scoped ``config.json`` in the OS application + data directory. On Windows this is ``%LOCALAPPDATA%/Synodic/config.json``. + Persisted by the Settings UI. + +Merging and resolution of these layers is handled by +:mod:`synodic_client.resolution`. +""" + +import json +import logging +import os +import sys +from pathlib import Path + +from pydantic import BaseModel + +logger = logging.getLogger(__name__) + +_APP_NAME = 'Synodic' +_CONFIG_FILENAME = 'config.json' + + +class _ConfigBase(BaseModel): + """Shared fields for both configuration layers.""" + + # URL or local file path for Velopack releases. + # None means use the default GitHub release source. + update_source: str | None = None + + # Update channel: "stable" or "dev". + # None means auto-detect from sys.frozen. + update_channel: str | None = None + + +class LocalConfiguration(_ConfigBase): + """Portable configuration embedded next to the executable. + + Written by the packaging script (e.g. ``pdm run package -- --local-source``). + Fields set here override the corresponding ``GlobalConfiguration`` values. + """ + + +class GlobalConfiguration(_ConfigBase): + """User-scoped configuration persisted in the OS application data directory. + + On Windows: ``%LOCALAPPDATA%/Synodic/config.json``. + """ + + +def _portable_config_path() -> Path | None: + """Return the path to a portable config file next to the executable, if it exists. + + Only checked when running as a frozen (PyInstaller) build. + + Returns: + Path to the portable config file, or None if not applicable. + """ + if not getattr(sys, 'frozen', False): + return None + + exe_dir = Path(sys.executable).resolve().parent + candidate = exe_dir / _CONFIG_FILENAME + if candidate.exists(): + return candidate + return None + + +def _load_local_config() -> LocalConfiguration | None: + """Load the portable local configuration, if present. + + Returns: + The loaded local config, or None. + """ + portable = _portable_config_path() + if portable is None: + return None + + try: + data = json.loads(portable.read_text(encoding='utf-8')) + config = LocalConfiguration.model_validate(data) + logger.debug('Loaded local config from %s', portable) + return config + except Exception: + logger.exception('Failed to load local config from %s', portable) + return None + + +def config_dir() -> Path: + """Return the platform-appropriate global configuration directory. + + Returns: + Path to the configuration directory. + """ + if sys.platform == 'win32': + base = os.environ.get('LOCALAPPDATA', '') + if not base: + base = str(Path.home() / 'AppData' / 'Local') + return Path(base) / _APP_NAME + # Stub for non-Windows platforms + logger.warning('Config directory is not fully supported on %s', sys.platform) + return Path.home() / f'.{_APP_NAME.lower()}' + + +def _load_global_config() -> GlobalConfiguration: + """Load the global configuration from the OS data directory. + + Returns: + The loaded or default global configuration. + """ + path = config_dir() / _CONFIG_FILENAME + if not path.exists(): + logger.debug('No global config at %s, using defaults', path) + return GlobalConfiguration() + + try: + data = json.loads(path.read_text(encoding='utf-8')) + config = GlobalConfiguration.model_validate(data) + logger.debug('Loaded global config from %s', path) + return config + except Exception: + logger.exception('Failed to load global config from %s, using defaults', path) + return GlobalConfiguration() + + +def save_config(config: GlobalConfiguration) -> None: + """Save configuration to the global (system) config directory. + + Args: + config: The configuration to persist. + """ + directory = config_dir() + directory.mkdir(parents=True, exist_ok=True) + path = directory / _CONFIG_FILENAME + + try: + path.write_text(config.model_dump_json(indent=2), encoding='utf-8') + logger.info('Saved config to %s', path) + except Exception: + logger.exception('Failed to save config to %s', path) diff --git a/synodic_client/protocol.py b/synodic_client/protocol.py new file mode 100644 index 0000000..8bfb60a --- /dev/null +++ b/synodic_client/protocol.py @@ -0,0 +1,83 @@ +r"""URI protocol handler registration for the ``synodic://`` scheme. + +On Windows this writes registry keys under ``HKCU\Software\Classes\synodic`` +so that clicking a ``synodic://`` link in a browser or file manager launches the +Synodic Client with the URI as an argument. + +Other platforms are stubbed with no-op implementations. +""" + +import logging +import sys + +if sys.platform == 'win32': + import winreg + +logger = logging.getLogger(__name__) + +PROTOCOL_NAME = 'synodic' +_PROTOCOL_DESCRIPTION = 'Synodic Client Protocol' + + +def register_protocol(exe_path: str) -> None: + """Register the ``synodic://`` URI protocol handler. + + Args: + exe_path: Absolute path to the application executable. + """ + if sys.platform != 'win32': + logger.warning('Protocol registration is only supported on Windows (current: %s)', sys.platform) + return + + key_path = f'Software\\Classes\\{PROTOCOL_NAME}' + + try: + # Create the protocol key + with winreg.CreateKey(winreg.HKEY_CURRENT_USER, key_path) as key: + winreg.SetValueEx(key, '', 0, winreg.REG_SZ, _PROTOCOL_DESCRIPTION) + winreg.SetValueEx(key, 'URL Protocol', 0, winreg.REG_SZ, '') + + # Create the shell\open\command key with the exe path + command_path = f'{key_path}\\shell\\open\\command' + with winreg.CreateKey(winreg.HKEY_CURRENT_USER, command_path) as key: + winreg.SetValueEx(key, '', 0, winreg.REG_SZ, f'"{exe_path}" "%1"') + + logger.info('Registered synodic:// protocol handler -> %s', exe_path) + except OSError: + logger.exception('Failed to register synodic:// protocol handler') + + +def remove_protocol() -> None: + """Remove the ``synodic://`` URI protocol handler registration.""" + if sys.platform != 'win32': + logger.warning('Protocol removal is only supported on Windows (current: %s)', sys.platform) + return + + key_path = f'Software\\Classes\\{PROTOCOL_NAME}' + + try: + _delete_key_recursive(winreg.HKEY_CURRENT_USER, key_path) + logger.info('Removed synodic:// protocol handler registration') + except FileNotFoundError: + logger.debug('Protocol handler registration not found, nothing to remove') + except OSError: + logger.exception('Failed to remove synodic:// protocol handler') + + +def _delete_key_recursive(root: int, key_path: str) -> None: + """Recursively delete a registry key and all its subkeys. + + Args: + root: Registry root (e.g. ``winreg.HKEY_CURRENT_USER``). + key_path: Path to the key to delete. + """ + with winreg.OpenKey(root, key_path, 0, winreg.KEY_ALL_ACCESS) as key: + # Enumerate and delete all subkeys first + while True: + try: + subkey_name = winreg.EnumKey(key, 0) + _delete_key_recursive(root, f'{key_path}\\{subkey_name}') + except OSError: + break + + winreg.DeleteKey(root, key_path) diff --git a/synodic_client/resolution.py b/synodic_client/resolution.py new file mode 100644 index 0000000..1e5388c --- /dev/null +++ b/synodic_client/resolution.py @@ -0,0 +1,92 @@ +"""Configuration resolution for the Synodic Client. + +Merges ``LocalConfiguration`` (portable, next to exe) and ``GlobalConfiguration`` +(user-scoped, ``%LOCALAPPDATA%``) into a single resolved configuration, then +derives runtime objects like ``UpdateConfig``. +""" + +import logging +import sys + +from synodic_client.config import ( + GlobalConfiguration, + LocalConfiguration, + _load_global_config, + _load_local_config, + save_config, +) +from synodic_client.updater import GITHUB_REPO_URL, UpdateChannel, UpdateConfig + +logger = logging.getLogger(__name__) + + +def merge_config( + global_config: GlobalConfiguration, + local_config: LocalConfiguration | None, +) -> GlobalConfiguration: + """Merge local overrides into a global configuration. + + Fields explicitly set (not None) in the local config override the + corresponding global values. + + Args: + global_config: The user-scoped global configuration. + local_config: The portable local configuration, or None. + + Returns: + A ``GlobalConfiguration`` with merged values. + """ + if local_config is None: + return global_config + + merged = global_config.model_dump() + for field_name, value in local_config.model_dump().items(): + if value is not None: + merged[field_name] = value + + return GlobalConfiguration.model_validate(merged) + + +def resolve_config() -> GlobalConfiguration: + """Load and merge both configuration layers. + + Returns: + A fully resolved ``GlobalConfiguration``. + """ + return merge_config(_load_global_config(), _load_local_config()) + + +def resolve_update_config(config: GlobalConfiguration) -> UpdateConfig: + """Derive an ``UpdateConfig`` from resolved configuration values. + + Args: + config: A resolved global configuration. + + Returns: + An ``UpdateConfig`` ready to initialise the updater. + """ + is_dev = not getattr(sys, 'frozen', False) + + if config.update_channel is not None: + channel = UpdateChannel.DEVELOPMENT if config.update_channel == 'dev' else UpdateChannel.STABLE + else: + channel = UpdateChannel.DEVELOPMENT if is_dev else UpdateChannel.STABLE + + repo_url = config.update_source or GITHUB_REPO_URL + return UpdateConfig(channel=channel, repo_url=repo_url) + + +def update_and_resolve(config: GlobalConfiguration) -> UpdateConfig: + """Save a modified global config and resolve it into an UpdateConfig. + + Convenience function for the Settings UI: persists the change, then + returns the derived ``UpdateConfig``. + + Args: + config: The modified global configuration to save. + + Returns: + An ``UpdateConfig`` derived from the saved configuration. + """ + save_config(config) + return resolve_update_config(config) diff --git a/synodic_client/updater.py b/synodic_client/updater.py index f0f37a7..109e33c 100644 --- a/synodic_client/updater.py +++ b/synodic_client/updater.py @@ -17,6 +17,8 @@ import velopack from packaging.version import Version +from synodic_client.protocol import register_protocol, remove_protocol + logger = logging.getLogger(__name__) # GitHub repository for Velopack updates @@ -293,15 +295,42 @@ def _get_velopack_manager(self) -> Any: return None +def _on_after_install(version: str) -> None: # noqa: ARG001 + """Velopack hook: called after the app is installed. + + Registers the ``synodic://`` URI protocol handler. + + Args: + version: The installed version string (provided by Velopack). + """ + register_protocol(sys.executable) + + +def _on_before_uninstall(version: str) -> None: # noqa: ARG001 + """Velopack hook: called before the app is uninstalled. + + Removes the ``synodic://`` URI protocol handler registration. + + Args: + version: The current version string (provided by Velopack). + """ + remove_protocol() + + def initialize_velopack() -> None: """Initialize Velopack at application startup. This should be called as early as possible in the application lifecycle, before any UI is shown. Velopack may need to perform cleanup or apply pending updates. + + On Windows, install/uninstall hooks register the ``synodic://`` URI protocol. """ try: - velopack.App().run() # type: ignore[attr-defined] + app = velopack.App() # type: ignore[attr-defined] + app.on_after_install_fast_callback(_on_after_install) + app.on_before_uninstall_fast_callback(_on_before_uninstall) + app.run() logger.debug('Velopack initialized') except Exception as e: logger.debug('Velopack initialization skipped: %s', e) diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py new file mode 100644 index 0000000..ee50d70 --- /dev/null +++ b/tests/unit/test_config.py @@ -0,0 +1,139 @@ +"""Tests for the persistent configuration module.""" + +import json +from pathlib import Path +from unittest.mock import patch + +import pytest + +from synodic_client.config import ( + GlobalConfiguration, + LocalConfiguration, + config_dir, + save_config, +) + + +class TestLocalConfiguration: + """Tests for the LocalConfiguration model.""" + + @staticmethod + def test_defaults() -> None: + """Verify default values for a fresh config.""" + config = LocalConfiguration() + assert config.update_source is None + assert config.update_channel is None + + @staticmethod + def test_with_values() -> None: + """Verify config accepts explicit values.""" + config = LocalConfiguration(update_source='/path/to/releases', update_channel='dev') + assert config.update_source == '/path/to/releases' + assert config.update_channel == 'dev' + + +class TestGlobalConfiguration: + """Tests for the GlobalConfiguration model.""" + + @staticmethod + def test_defaults() -> None: + """Verify default values for a fresh config.""" + config = GlobalConfiguration() + assert config.update_source is None + assert config.update_channel is None + + @staticmethod + def test_with_values() -> None: + """Verify config accepts explicit values.""" + config = GlobalConfiguration(update_source='/path/to/releases', update_channel='dev') + assert config.update_source == '/path/to/releases' + assert config.update_channel == 'dev' + + @staticmethod + def test_json_round_trip() -> None: + """Verify config can round-trip through JSON.""" + original = GlobalConfiguration(update_source='https://example.com', update_channel='stable') + data = json.loads(original.model_dump_json()) + restored = GlobalConfiguration.model_validate(data) + assert restored == original + + @staticmethod + def test_json_round_trip_defaults() -> None: + """Verify default config round-trips cleanly.""" + original = GlobalConfiguration() + data = json.loads(original.model_dump_json()) + restored = GlobalConfiguration.model_validate(data) + assert restored.update_source is None + assert restored.update_channel is None + + @staticmethod + def test_extra_fields_ignored() -> None: + """Verify unrecognized fields do not cause errors.""" + data = {'update_source': None, 'update_channel': None, 'unknown_field': 42} + config = GlobalConfiguration.model_validate(data) + assert config.update_source is None + + +class TestConfigDir: + """Tests for the config_dir helper.""" + + @staticmethod + @pytest.mark.skipif(__import__('sys').platform != 'win32', reason='Windows only') + def test_windows_uses_localappdata() -> None: + """Verify config dir uses LOCALAPPDATA on Windows.""" + with patch.dict('os.environ', {'LOCALAPPDATA': 'C:\\Users\\Test\\AppData\\Local'}): + result = config_dir() + assert result == Path('C:\\Users\\Test\\AppData\\Local\\Synodic') + + @staticmethod + @pytest.mark.skipif(__import__('sys').platform != 'win32', reason='Windows only') + def test_windows_fallback_without_env() -> None: + """Verify fallback when LOCALAPPDATA is not set.""" + with patch.dict('os.environ', {'LOCALAPPDATA': ''}): + result = config_dir() + # Should still produce a path ending in Synodic + assert result.name == 'Synodic' + + +class TestSaveConfig: + """Tests for save_config.""" + + @staticmethod + def test_creates_file(tmp_path: Path) -> None: + """Verify config is saved to disk.""" + config = GlobalConfiguration(update_source='/my/releases', update_channel='stable') + + with patch('synodic_client.config.config_dir', return_value=tmp_path): + save_config(config) + + saved_path = tmp_path / 'config.json' + assert saved_path.exists() + + data = json.loads(saved_path.read_text(encoding='utf-8')) + assert data['update_source'] == '/my/releases' + assert data['update_channel'] == 'stable' + + @staticmethod + def test_creates_directory(tmp_path: Path) -> None: + """Verify save_config creates the directory if missing.""" + nested = tmp_path / 'nested' / 'dir' + config = GlobalConfiguration() + + with patch('synodic_client.config.config_dir', return_value=nested): + save_config(config) + + assert (nested / 'config.json').exists() + + @staticmethod + def test_overwrites_existing(tmp_path: Path) -> None: + """Verify save_config overwrites an existing file.""" + config_path = tmp_path / 'config.json' + config_path.write_text('{}', encoding='utf-8') + + config = GlobalConfiguration(update_source='http://new-source') + + with patch('synodic_client.config.config_dir', return_value=tmp_path): + save_config(config) + + data = json.loads(config_path.read_text(encoding='utf-8')) + assert data['update_source'] == 'http://new-source' diff --git a/tests/unit/test_protocol.py b/tests/unit/test_protocol.py new file mode 100644 index 0000000..5dc0ad8 --- /dev/null +++ b/tests/unit/test_protocol.py @@ -0,0 +1,97 @@ +"""Tests for URI protocol handler registration.""" + +import sys +import winreg +from unittest.mock import MagicMock, patch + +import pytest + +from synodic_client.protocol import PROTOCOL_NAME, register_protocol, remove_protocol + +_EXPECTED_REGISTRY_KEY_COUNT = 2 + + +class TestRegisterProtocol: + """Tests for register_protocol.""" + + @staticmethod + @pytest.mark.skipif(sys.platform != 'win32', reason='Windows only') + def test_writes_registry_keys() -> None: + """Verify correct registry keys are written on Windows.""" + mock_key = MagicMock() + mock_key.__enter__ = MagicMock(return_value=mock_key) + mock_key.__exit__ = MagicMock(return_value=False) + + with ( + patch.object(winreg, 'CreateKey', return_value=mock_key) as mock_create, + patch.object(winreg, 'SetValueEx'), + ): + register_protocol(r'C:\Program Files\Synodic\synodic.exe') + + # Should create the protocol key and command key + assert mock_create.call_count == _EXPECTED_REGISTRY_KEY_COUNT + + # Verify protocol key path + first_call_args = mock_create.call_args_list[0][0] + assert first_call_args[1] == f'Software\\Classes\\{PROTOCOL_NAME}' + + # Verify command key path + second_call_args = mock_create.call_args_list[1][0] + assert second_call_args[1].endswith('shell\\open\\command') + + @staticmethod + @pytest.mark.skipif(sys.platform != 'win32', reason='Windows only') + def test_sets_url_protocol_value() -> None: + """Verify the 'URL Protocol' value is set.""" + mock_key = MagicMock() + mock_key.__enter__ = MagicMock(return_value=mock_key) + mock_key.__exit__ = MagicMock(return_value=False) + + with patch.object(winreg, 'CreateKey', return_value=mock_key), patch.object(winreg, 'SetValueEx') as mock_set: + register_protocol(r'C:\Program Files\Synodic\synodic.exe') + + # Check that SetValueEx was called with 'URL Protocol' + url_protocol_calls = [c for c in mock_set.call_args_list if c[0][1] == 'URL Protocol'] + assert len(url_protocol_calls) == 1 + + @staticmethod + def test_noop_on_non_windows() -> None: + """Verify register_protocol is a no-op on non-Windows platforms.""" + with patch('synodic_client.protocol.sys') as mock_sys: + mock_sys.platform = 'linux' + # Should not raise and should not attempt winreg import + register_protocol('/usr/bin/synodic') + + +class TestRemoveProtocol: + """Tests for remove_protocol.""" + + @staticmethod + @pytest.mark.skipif(sys.platform != 'win32', reason='Windows only') + def test_deletes_registry_key() -> None: + """Verify the protocol key is deleted.""" + with patch('synodic_client.protocol._delete_key_recursive') as mock_delete: + remove_protocol() + + mock_delete.assert_called_once_with( + winreg.HKEY_CURRENT_USER, + f'Software\\Classes\\{PROTOCOL_NAME}', + ) + + @staticmethod + @pytest.mark.skipif(sys.platform != 'win32', reason='Windows only') + def test_handles_missing_key_gracefully() -> None: + """Verify no error when protocol key doesn't exist.""" + with patch( + 'synodic_client.protocol._delete_key_recursive', + side_effect=FileNotFoundError, + ): + # Should not raise + remove_protocol() + + @staticmethod + def test_noop_on_non_windows() -> None: + """Verify remove_protocol is a no-op on non-Windows platforms.""" + with patch('synodic_client.protocol.sys') as mock_sys: + mock_sys.platform = 'linux' + remove_protocol() diff --git a/tests/unit/test_resolution.py b/tests/unit/test_resolution.py new file mode 100644 index 0000000..f630441 --- /dev/null +++ b/tests/unit/test_resolution.py @@ -0,0 +1,230 @@ +"""Tests for the configuration resolution module.""" + +import json +from pathlib import Path +from unittest.mock import patch + +from synodic_client.config import GlobalConfiguration, LocalConfiguration +from synodic_client.resolution import merge_config, resolve_config, resolve_update_config, update_and_resolve +from synodic_client.updater import GITHUB_REPO_URL, UpdateChannel + + +class TestMergeConfig: + """Tests for merge_config.""" + + @staticmethod + def test_returns_global_when_no_local() -> None: + """Verify global config is returned unchanged when local is None.""" + global_cfg = GlobalConfiguration(update_source='/system', update_channel='stable') + result = merge_config(global_cfg, None) + assert result.update_source == '/system' + assert result.update_channel == 'stable' + + @staticmethod + def test_local_overrides_global() -> None: + """Verify local fields override global values.""" + global_cfg = GlobalConfiguration(update_source='/system', update_channel='stable') + local_cfg = LocalConfiguration(update_source='/local') + result = merge_config(global_cfg, local_cfg) + assert result.update_source == '/local' + assert result.update_channel == 'stable' + + @staticmethod + def test_local_none_fields_do_not_override() -> None: + """Verify local None fields preserve global values.""" + global_cfg = GlobalConfiguration(update_source='/system', update_channel='stable') + local_cfg = LocalConfiguration() + result = merge_config(global_cfg, local_cfg) + assert result.update_source == '/system' + assert result.update_channel == 'stable' + + @staticmethod + def test_full_override() -> None: + """Verify all local fields override when set.""" + global_cfg = GlobalConfiguration(update_source='/system', update_channel='stable') + local_cfg = LocalConfiguration(update_source='/local', update_channel='dev') + result = merge_config(global_cfg, local_cfg) + assert result.update_source == '/local' + assert result.update_channel == 'dev' + + +class TestResolveConfig: + """Tests for resolve_config (loads and merges both layers).""" + + @staticmethod + def test_returns_defaults_when_no_files(tmp_path: Path) -> None: + """Verify defaults when no config files exist.""" + with ( + patch('synodic_client.config._portable_config_path', return_value=None), + patch('synodic_client.config.config_dir', return_value=tmp_path), + ): + config = resolve_config() + assert config.update_source is None + assert config.update_channel is None + + @staticmethod + def test_loads_global_file(tmp_path: Path) -> None: + """Verify loading a valid global config file.""" + data = {'update_source': 'https://example.com/releases', 'update_channel': 'dev'} + (tmp_path / 'config.json').write_text(json.dumps(data), encoding='utf-8') + + with ( + patch('synodic_client.config._portable_config_path', return_value=None), + patch('synodic_client.config.config_dir', return_value=tmp_path), + ): + config = resolve_config() + + assert config.update_source == 'https://example.com/releases' + assert config.update_channel == 'dev' + + @staticmethod + def test_returns_defaults_on_corrupt_json(tmp_path: Path) -> None: + """Verify defaults when config file contains invalid JSON.""" + (tmp_path / 'config.json').write_text('not json', encoding='utf-8') + + with ( + patch('synodic_client.config._portable_config_path', return_value=None), + patch('synodic_client.config.config_dir', return_value=tmp_path), + ): + config = resolve_config() + + assert config == GlobalConfiguration() + + @staticmethod + def test_local_overrides_global_per_field(tmp_path: Path) -> None: + """Verify local config overrides global on a per-field basis.""" + local_data = {'update_source': '/local/releases'} + local_path = tmp_path / 'local' / 'config.json' + local_path.parent.mkdir() + local_path.write_text(json.dumps(local_data), encoding='utf-8') + + system_dir = tmp_path / 'system' + system_dir.mkdir() + system_data = {'update_source': '/system/releases', 'update_channel': 'stable'} + (system_dir / 'config.json').write_text(json.dumps(system_data), encoding='utf-8') + + with ( + patch('synodic_client.config._portable_config_path', return_value=local_path), + patch('synodic_client.config.config_dir', return_value=system_dir), + ): + config = resolve_config() + + assert config.update_source == '/local/releases' + assert config.update_channel == 'stable' + + @staticmethod + def test_falls_back_to_global_when_no_portable(tmp_path: Path) -> None: + """Verify global config is used when no portable config exists.""" + system_data = {'update_source': '/system/releases', 'update_channel': 'stable'} + (tmp_path / 'config.json').write_text(json.dumps(system_data), encoding='utf-8') + + with ( + patch('synodic_client.config._portable_config_path', return_value=None), + patch('synodic_client.config.config_dir', return_value=tmp_path), + ): + config = resolve_config() + + assert config.update_source == '/system/releases' + assert config.update_channel == 'stable' + + @staticmethod + def test_falls_back_to_global_on_corrupt_portable(tmp_path: Path) -> None: + """Verify global config is used when portable config is corrupt.""" + portable_path = tmp_path / 'portable' / 'config.json' + portable_path.parent.mkdir() + portable_path.write_text('not valid json', encoding='utf-8') + + system_dir = tmp_path / 'system' + system_dir.mkdir() + system_data = {'update_source': '/system/releases'} + (system_dir / 'config.json').write_text(json.dumps(system_data), encoding='utf-8') + + with ( + patch('synodic_client.config._portable_config_path', return_value=portable_path), + patch('synodic_client.config.config_dir', return_value=system_dir), + ): + config = resolve_config() + + assert config.update_source == '/system/releases' + + @staticmethod + def test_portable_takes_precedence(tmp_path: Path) -> None: + """Verify portable config values override system config.""" + portable_data = {'update_source': '/portable/releases', 'update_channel': 'dev'} + portable_path = tmp_path / 'config.json' + portable_path.write_text(json.dumps(portable_data), encoding='utf-8') + + system_dir = tmp_path / 'system' + system_dir.mkdir() + system_data = {'update_source': '/system/releases', 'update_channel': 'stable'} + (system_dir / 'config.json').write_text(json.dumps(system_data), encoding='utf-8') + + with ( + patch('synodic_client.config._portable_config_path', return_value=portable_path), + patch('synodic_client.config.config_dir', return_value=system_dir), + ): + config = resolve_config() + + assert config.update_source == '/portable/releases' + assert config.update_channel == 'dev' + + +class TestResolveUpdateConfig: + """Tests for resolve_update_config.""" + + @staticmethod + def test_dev_channel_from_config() -> None: + """Verify dev channel is set from config.""" + config = GlobalConfiguration(update_channel='dev') + result = resolve_update_config(config) + assert result.channel == UpdateChannel.DEVELOPMENT + + @staticmethod + def test_stable_channel_from_config() -> None: + """Verify stable channel is set from config.""" + config = GlobalConfiguration(update_channel='stable') + result = resolve_update_config(config) + assert result.channel == UpdateChannel.STABLE + + @staticmethod + def test_default_channel_unfrozen() -> None: + """Verify default channel is DEVELOPMENT when not frozen.""" + config = GlobalConfiguration() + with patch('synodic_client.resolution.sys') as mock_sys: + del mock_sys.frozen # Ensure frozen is not set + result = resolve_update_config(config) + assert result.channel == UpdateChannel.DEVELOPMENT + + @staticmethod + def test_custom_source() -> None: + """Verify custom update source is used.""" + config = GlobalConfiguration(update_source='https://custom.example.com') + result = resolve_update_config(config) + assert result.repo_url == 'https://custom.example.com' + + @staticmethod + def test_default_source() -> None: + """Verify default GITHUB_REPO_URL is used when source is None.""" + config = GlobalConfiguration() + result = resolve_update_config(config) + assert result.repo_url == GITHUB_REPO_URL + + +class TestUpdateAndResolve: + """Tests for update_and_resolve.""" + + @staticmethod + def test_saves_and_resolves(tmp_path: Path) -> None: + """Verify config is saved and an UpdateConfig is returned.""" + config = GlobalConfiguration(update_source='/my/source', update_channel='dev') + + with patch('synodic_client.config.config_dir', return_value=tmp_path): + result = update_and_resolve(config) + + assert result.channel == UpdateChannel.DEVELOPMENT + assert result.repo_url == '/my/source' + + # Verify file was saved + saved = json.loads((tmp_path / 'config.json').read_text(encoding='utf-8')) + assert saved['update_source'] == '/my/source' + assert saved['update_channel'] == 'dev' diff --git a/tests/unit/test_uri.py b/tests/unit/test_uri.py new file mode 100644 index 0000000..6c22bf6 --- /dev/null +++ b/tests/unit/test_uri.py @@ -0,0 +1,36 @@ +"""Tests for URI finding in the qt application module.""" + +from synodic_client.application.qt import find_uri + + +class TestFindUri: + """Tests for find_uri.""" + + @staticmethod + def test_finds_synodic_uri() -> None: + """Verify a synodic:// URI is found in args.""" + args = ['--flag', 'synodic://install?manifest=https://example.com'] + assert find_uri(args) == 'synodic://install?manifest=https://example.com' + + @staticmethod + def test_returns_none_when_absent() -> None: + """Verify None is returned when no URI is present.""" + args = ['--verbose', 'some-file.txt'] + assert find_uri(args) is None + + @staticmethod + def test_empty_args() -> None: + """Verify None for empty args list.""" + assert find_uri([]) is None + + @staticmethod + def test_case_insensitive() -> None: + """Verify scheme matching is case-insensitive.""" + args = ['SYNODIC://Install'] + assert find_uri(args) == 'SYNODIC://Install' + + @staticmethod + def test_returns_first_uri() -> None: + """Verify only the first URI is returned when multiple are present.""" + args = ['synodic://first', 'synodic://second'] + assert find_uri(args) == 'synodic://first' diff --git a/tool/pyinstaller/synodic.spec b/tool/pyinstaller/synodic.spec index e1e076b..152d8b0 100644 --- a/tool/pyinstaller/synodic.spec +++ b/tool/pyinstaller/synodic.spec @@ -38,16 +38,13 @@ pyz = PYZ(a.pure) exe = EXE( pyz, a.scripts, - a.binaries, - a.datas, [], + exclude_binaries=True, name='synodic', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, - upx_exclude=[], - runtime_tmpdir=None, console=False, disable_windowed_traceback=False, argv_emulation=False, @@ -55,3 +52,13 @@ exe = EXE( codesign_identity=None, entitlements_file=None, ) + +coll = COLLECT( + exe, + a.binaries, + a.datas, + strip=False, + upx=True, + upx_exclude=[], + name='synodic', +) diff --git a/tool/scripts/__init__.py b/tool/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tool/scripts/package.py b/tool/scripts/package.py new file mode 100644 index 0000000..c7b07a0 --- /dev/null +++ b/tool/scripts/package.py @@ -0,0 +1,170 @@ +"""Packaging script for Synodic Client. + +Orchestrates PyInstaller + Velopack ``vpk pack`` to produce a complete +release from source. Invoked via ``pdm run package``. + +Usage examples: + pdm run package + pdm run package -- --channel stable + pdm run package -- --local-source D:/releases +""" + +import argparse +import json +import shutil +import subprocess +import sys +from pathlib import Path + +from synodic_client import __version__ + +# Paths relative to the repository root +_REPO_ROOT = Path(__file__).resolve().parents[2] +_SPEC_FILE = _REPO_ROOT / 'tool' / 'pyinstaller' / 'synodic.spec' +_PACK_DIR = _REPO_ROOT / 'dist' / 'synodic' +_OUTPUT_DIR = _REPO_ROOT / 'Releases' +_MAIN_EXE = 'synodic.exe' +_PACK_ID = 'Synodic.SynodicClient' + + +def _run(cmd: list[str], *, description: str) -> None: + """Run a subprocess command, raising on failure. + + Args: + cmd: Command and arguments to run. + description: Human-readable description for error messages. + """ + print(f'\n{"=" * 60}') + print(f' {description}') + print(f' > {" ".join(cmd)}') + print(f'{"=" * 60}\n') + + result = subprocess.run(cmd, cwd=str(_REPO_ROOT), check=False) + if result.returncode != 0: + print(f'\nERROR: {description} failed with exit code {result.returncode}', file=sys.stderr) + sys.exit(result.returncode) + + +def _kill_running_instances() -> None: + """Terminate any running synodic.exe processes to release locked files.""" + if sys.platform != 'win32': + return + + result = subprocess.run( + ['taskkill', '/F', '/IM', _MAIN_EXE], + capture_output=True, + text=True, + check=False, + ) + if result.returncode == 0: + print(f'Terminated running {_MAIN_EXE} process(es)') + elif 'not found' not in result.stderr.lower(): + print(f'Note: taskkill returned {result.returncode}: {result.stderr.strip()}') + + +def main() -> None: + """Entry point for the packaging script.""" + parser = argparse.ArgumentParser(description='Package Synodic Client with PyInstaller and Velopack.') + parser.add_argument( + '--channel', + default='dev', + choices=['dev', 'stable'], + help='Velopack release channel (default: dev)', + ) + parser.add_argument( + '--local-source', + type=str, + default=None, + help='Path to copy releases to (for local dev update testing)', + ) + parser.add_argument( + '--skip-pyinstaller', + action='store_true', + help='Skip the PyInstaller step (use existing dist/synodic)', + ) + + args = parser.parse_args() + print(f'Packaging Synodic Client v{__version__} (channel: {args.channel})') + + # Step 0: Kill any running instances to release locked files + _kill_running_instances() + + # Step 1: PyInstaller + if not args.skip_pyinstaller: + _run( + [sys.executable, '-m', 'PyInstaller', '--noconfirm', '--clean', str(_SPEC_FILE)], + description='Building with PyInstaller', + ) + else: + print('Skipping PyInstaller (--skip-pyinstaller)') + + if not _PACK_DIR.exists(): + print(f'ERROR: Pack directory not found: {_PACK_DIR}', file=sys.stderr) + print('Run without --skip-pyinstaller first.', file=sys.stderr) + sys.exit(1) + + # Step 1b: Write portable config for dev builds + if args.local_source: + portable_config = { + 'update_source': str(Path(args.local_source).resolve()), + 'update_channel': args.channel, + } + config_path = _PACK_DIR / 'config.json' + config_path.write_text(json.dumps(portable_config, indent=2), encoding='utf-8') + print(f'Wrote portable config to {config_path}') + + # Step 2: vpk pack + vpk_cmd = shutil.which('vpk') + if vpk_cmd is None: + print('ERROR: vpk not found. Install with: dotnet tool install -g vpk', file=sys.stderr) + sys.exit(1) + + _OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + + _run( + [ + vpk_cmd, + 'pack', + '--packId', + _PACK_ID, + '--packVersion', + __version__, + '--packDir', + str(_PACK_DIR), + '--mainExe', + _MAIN_EXE, + '--channel', + args.channel, + '-o', + str(_OUTPUT_DIR), + ], + description='Packing with Velopack', + ) + + # Step 3: Optionally copy to a local source directory + if args.local_source: + local_path = Path(args.local_source) + local_path.mkdir(parents=True, exist_ok=True) + + _run( + [ + vpk_cmd, + 'upload', + 'local', + '--path', + str(local_path), + '-o', + str(_OUTPUT_DIR), + '--channel', + args.channel, + ], + description=f'Uploading to local source: {local_path}', + ) + + print(f'\nDone! Releases written to: {_OUTPUT_DIR}') + if args.local_source: + print(f'Local update source: {args.local_source}') + + +if __name__ == '__main__': + main() From a35ffba1032edcf30285d052577889ffa215c147 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 13:51:03 -0800 Subject: [PATCH 12/40] URI Preview + Logs --- examples/python-dev/README.md | 81 ++++ examples/python-dev/porringer.json | 40 ++ examples/uri-install/README.md | 33 ++ examples/uri-install/pyproject.toml | 2 + pdm.lock | 2 +- pyproject.toml | 3 + synodic_client/application/qt.py | 80 ++-- synodic_client/application/screen/install.py | 451 +++++++++++++++++++ synodic_client/application/screen/tray.py | 7 + synodic_client/logging.py | 77 ++++ tests/conftest.py | 21 + tests/unit/test_examples.py | 57 +++ tests/unit/test_install_preview.py | 249 ++++++++++ tests/unit/test_logging.py | 126 ++++++ tests/unit/test_protocol.py | 107 +++++ tool/scripts/common.py | 65 +++ tool/scripts/dev.py | 29 ++ tool/scripts/package.py | 83 +--- tool/scripts/setup_dev.py | 67 +++ 19 files changed, 1482 insertions(+), 98 deletions(-) create mode 100644 examples/python-dev/README.md create mode 100644 examples/python-dev/porringer.json create mode 100644 examples/uri-install/README.md create mode 100644 examples/uri-install/pyproject.toml create mode 100644 synodic_client/application/screen/install.py create mode 100644 synodic_client/logging.py create mode 100644 tests/conftest.py create mode 100644 tests/unit/test_examples.py create mode 100644 tests/unit/test_install_preview.py create mode 100644 tests/unit/test_logging.py create mode 100644 tool/scripts/common.py create mode 100644 tool/scripts/dev.py create mode 100644 tool/scripts/setup_dev.py diff --git a/examples/python-dev/README.md b/examples/python-dev/README.md new file mode 100644 index 0000000..d1a08d2 --- /dev/null +++ b/examples/python-dev/README.md @@ -0,0 +1,81 @@ +# Python Development Environment Example + +This example demonstrates using Porringer to set up a Python development environment with common linting, formatting, and testing tools. + +## Manifest Overview + +The `porringer.json` manifest defines: + +- **Prerequisites**: Ensures essential plugins are available + - `pip` and `pipx` - Always required for Python package management + - `winget` - Required on Windows to support native tool discovery + - `apt` - Required on Linux for native package management + - `brew` - Required on macOS for native package management +- **pip packages**: Development tools installed in the current environment + - `ruff` - Fast Python linter and formatter + - `pyrefly` - Static type checker + - `pytest` - Testing framework + - `pytest-cov` - Coverage plugin for pytest +- **pipx packages**: CLI tools installed in isolated environments + - `pdm` - Python project manager + +## Usage + +### Preview what will happen + +```shell +porringer install --path examples/python-dev --dry-run +``` + +### Execute with confirmation + +```shell +porringer install --path examples/python-dev +``` + +### Execute without confirmation (non-interactive) + +```shell +porringer install --path examples/python-dev --yes +``` + +## Platform-Specific Prerequisites + +The manifest automatically filters prerequisites based on your platform: + +| Platform | Checked Prerequisites | +|------------|----------------------| +| Windows | pip, pipx, winget | +| Linux | pip, pipx, apt | +| macOS | pip, pipx, brew | + +## Alternative: pyproject.toml + +You can also embed this manifest in a `pyproject.toml` file: + +```toml +[tool.porringer] +version = "1" + +[[tool.porringer.prerequisites]] +plugin = "pip" + +[[tool.porringer.prerequisites]] +plugin = "pipx" + +[[tool.porringer.prerequisites]] +plugin = "winget" +platforms = ["win32"] + +[[tool.porringer.prerequisites]] +plugin = "apt" +platforms = ["linux"] + +[[tool.porringer.prerequisites]] +plugin = "brew" +platforms = ["darwin"] + +[tool.porringer.packages] +pip = ["ruff", "pyrefly", "pytest", "pytest-cov"] +pipx = ["pdm"] +``` diff --git a/examples/python-dev/porringer.json b/examples/python-dev/porringer.json new file mode 100644 index 0000000..1e4904d --- /dev/null +++ b/examples/python-dev/porringer.json @@ -0,0 +1,40 @@ +{ + "version": "1", + "prerequisites": [ + { + "plugin": "pip" + }, + { + "plugin": "pipx" + }, + { + "plugin": "winget", + "platforms": [ + "win32" + ] + }, + { + "plugin": "apt", + "platforms": [ + "linux" + ] + }, + { + "plugin": "brew", + "platforms": [ + "darwin" + ] + } + ], + "packages": { + "pip": [ + "ruff", + "pyrefly", + "pytest", + "pytest-cov" + ], + "pipx": [ + "pdm" + ] + } +} \ No newline at end of file diff --git a/examples/uri-install/README.md b/examples/uri-install/README.md new file mode 100644 index 0000000..ecba495 --- /dev/null +++ b/examples/uri-install/README.md @@ -0,0 +1,33 @@ +# URI Install Example + +This example demonstrates the `synodic://` URI protocol for triggering a Porringer manifest install from a link. + +[![Install with Synodic](https://img.shields.io/badge/Install_with-Synodic_Client-5865F2?style=for-the-badge&logo=windowsterminal&logoColor=white)](synodic://install?manifest=https://raw.githubusercontent.com/synodic/porringer/development/examples/python-dev/porringer.json) + +> **Note:** The badge link uses the `synodic://` protocol. It will only work on +> systems with the Synodic Client installed and the protocol handler registered. +> GitHub strips custom protocol links — copy the URI below to test manually. + +## URI + +``` +synodic://install?manifest=https://raw.githubusercontent.com/synodic/porringer/development/examples/python-dev/porringer.json +``` + +Clicking or invoking the URI above launches the Synodic Client and opens the install preview for the [python-dev](../python-dev/) manifest. + +## How it works + +The `synodic://` protocol is registered as a URI handler on the system. When the +OS resolves the link it launches: + +``` +synodic.exe "synodic://install?manifest=https://raw.githubusercontent.com/synodic/porringer/development/examples/python-dev/porringer.json" +``` + +The client parses the URI into: + +| Component | Value | +|--------------|-------| +| **action** | `install` | +| **manifest** | `https://raw.githubusercontent.com/synodic/porringer/development/examples/python-dev/porringer.json` | diff --git a/examples/uri-install/pyproject.toml b/examples/uri-install/pyproject.toml new file mode 100644 index 0000000..69a05fb --- /dev/null +++ b/examples/uri-install/pyproject.toml @@ -0,0 +1,2 @@ +[tool.synodic] +uri = "synodic://install?manifest=https://raw.githubusercontent.com/synodic/porringer/development/examples/python-dev/porringer.json" diff --git a/pdm.lock b/pdm.lock index 5867ebe..2fb83e0 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "build", "lint", "test"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:d2d7726fa1d44e1de4a5b6ea7a362cc7f14d84988f3260293cd8080149d58ef4" +content_hash = "sha256:94e420daa6986184f50da1e0436e0a50f9b2eaec42f481a6b8ab1ba23896af2a" [[metadata.targets]] requires_python = ">=3.14,<3.15" diff --git a/pyproject.toml b/pyproject.toml index a70dfa6..01945c5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,6 +24,7 @@ repository = "https://github.com/synodic/synodic-client" [dependency-groups] build = ["pyinstaller>=6.18.0"] +dev = ["rich>=14.0.0"] lint = ["ruff>=0.15.0", "pyrefly>=0.51.1"] test = ["pytest>=9.0.2", "pytest-cov>=7.0.0", "pytest-mock>=3.15.1"] @@ -76,9 +77,11 @@ allow-prereleases = true [tool.pdm.scripts] analyze = "ruff check synodic_client tests" +dev = { call = "tool.scripts.dev:main" } format = "ruff format" lint = { composite = ["analyze", "format", "type-check"] } package = { call = "tool.scripts.package:main" } +post_install = { call = "tool.scripts.setup_dev:main" } test = "pytest --cov=synodic_client --verbose tests" type-check = "pyrefly check" serve = "zensical serve" diff --git a/synodic_client/application/qt.py b/synodic_client/application/qt.py index d44717c..312657d 100644 --- a/synodic_client/application/qt.py +++ b/synodic_client/application/qt.py @@ -2,6 +2,7 @@ import logging import sys +from collections.abc import Callable from urllib.parse import parse_qs, urlparse from porringer.api import API, APIParameters @@ -11,9 +12,12 @@ from PySide6.QtWidgets import QApplication from synodic_client.application.instance import SingleInstance +from synodic_client.application.screen.install import InstallPreviewWindow from synodic_client.application.screen.screen import Screen from synodic_client.application.screen.tray import TrayScreen from synodic_client.client import Client +from synodic_client.logging import configure_logging +from synodic_client.protocol import register_protocol from synodic_client.resolution import resolve_config, resolve_update_config from synodic_client.updater import initialize_velopack @@ -56,29 +60,19 @@ def parse_uri(uri: str) -> dict[str, str | list[str]]: return result -def application() -> None: - """Application entry point.""" - # Initialize Velopack early, before any UI - initialize_velopack() +def _init_services(logger: logging.Logger) -> tuple[Client, API]: + """Create and configure core services. - logger = logging.getLogger('synodic_client') - logging.basicConfig(level=logging.INFO) - - # Check for a synodic:// URI in arguments - uri = find_uri(sys.argv[1:]) - if uri: - logger.info('Received URI: %s', uri) - - # Load persistent configuration + Returns: + A (Client, porringer API) tuple. + """ config = resolve_config() - client = Client() local_config = LocalConfiguration() api_params = APIParameters(logger) porringer = API(local_config, api_params) - # Determine update channel and source from persistent config update_config = resolve_update_config(config) client.initialize_updater(update_config) @@ -92,41 +86,65 @@ def application() -> None: list_params = ListPluginsParameters() porringer.plugin.list(list_params) + return client, porringer + + +def _process_uri(uri: str, handler: Callable[[str], None]) -> None: + """Parse a ``synodic://`` URI and dispatch install actions.""" + parsed_data = parse_uri(uri) + action = parsed_data.get('action') + if action == 'install': + manifests = parsed_data.get('manifest') + if isinstance(manifests, list) and manifests: + handler(manifests[0]) + + +def application() -> None: + """Application entry point.""" + # Initialize Velopack early, before any UI + initialize_velopack() + register_protocol(sys.executable) + + configure_logging() + logger = logging.getLogger('synodic_client') + + uri = find_uri(sys.argv[1:]) + if uri: + logger.info('Received URI: %s', uri) + + client, porringer = _init_services(logger) + app = QApplication([]) app.setQuitOnLastWindowClosed(False) - # Single-instance management instance = SingleInstance(app) - if instance.try_send_to_existing(uri or ''): - # Another instance is running — forward the URI (if any) and exit logger.info('Another instance is already running, exiting') sys.exit(0) - instance.start_server() with Client.resource(Client.icon) as icon_path: app.setWindowIcon(QIcon(str(icon_path))) - - # Reduce CPU usage when idle - process events less aggressively app.setAttribute(Qt.ApplicationAttribute.AA_CompressHighFrequencyEvents) _screen = Screen(porringer) _tray = TrayScreen(app, client, Client.icon, _screen.window) - # When another instance sends us a URI, log it - # TODO: Hook this up to the install preview GUI - def _on_uri_received(received_uri: str) -> None: - parsed = urlparse(received_uri) - logger.info('Received URI from another instance: %s (action: %s)', received_uri, parsed.netloc) + # Keep install preview windows alive until the app exits + _install_windows: list[InstallPreviewWindow] = [] + + def _handle_install_uri(manifest_url: str) -> None: + window = InstallPreviewWindow(porringer, manifest_url) + _install_windows.append(window) + window.show() + window.raise_() + window.activateWindow() + window.start() - instance.uri_received.connect(_on_uri_received) + instance.uri_received.connect(lambda received_uri: _process_uri(received_uri, _handle_install_uri)) - # If we were launched with a URI, process it now if uri: - parsed = urlparse(uri) - logger.info('Processing launch URI: %s (action: %s)', uri, parsed.netloc) - # TODO: Show install preview GUI for the parsed URI + _process_uri(uri, _handle_install_uri) # sys.exit ensures proper cleanup and exit code propagation # Leading underscore indicates references kept alive intentionally until exec() returns diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py new file mode 100644 index 0000000..9cf22aa --- /dev/null +++ b/synodic_client/application/screen/install.py @@ -0,0 +1,451 @@ +"""Install preview window for URI-based manifest installs. + +Displays a dry-run preview of porringer setup actions and lets the user +confirm execution. Execution runs on a background ``QThread`` with a +cancellable ``QProgressDialog``. + +.. note:: QThread worker pattern + + Workers moved to a ``QThread`` via ``moveToThread()`` **must** be stored + as instance attributes (``self._worker``), never as local variables. + A local reference will be garbage-collected before the thread starts, + silently preventing execution. +""" + +from __future__ import annotations + +import asyncio +import logging +import shutil +import tempfile +from pathlib import Path +from typing import TYPE_CHECKING +from urllib.parse import urlparse +from urllib.request import url2pathname + +from porringer.schema import ( + CancellationToken, + DownloadParameters, + SetupAction, + SetupActionType, + SetupParameters, + SetupResults, + ThreadSafeProgressAdapter, +) +from PySide6.QtCore import QObject, QThread, QTimer, Signal +from PySide6.QtWidgets import ( + QHBoxLayout, + QHeaderView, + QLabel, + QMainWindow, + QMessageBox, + QProgressDialog, + QPushButton, + QTableWidget, + QTableWidgetItem, + QVBoxLayout, + QWidget, +) + +if TYPE_CHECKING: + from porringer.api import API + +logger = logging.getLogger(__name__) + +ACTION_TYPE_LABELS = { + SetupActionType.CHECK_PLUGIN: 'Check Plugin', + SetupActionType.INSTALL_PACKAGE: 'Install Package', + SetupActionType.RUN_COMMAND: 'Run Command', +} + + +class InstallWorker(QObject): + """Background worker that executes setup actions via porringer.""" + + finished = Signal(object) # SetupResults + error = Signal(str) + + def __init__( + self, + porringer: API, + actions: list[SetupAction], + manifest_path: Path, + adapter: ThreadSafeProgressAdapter, + cancellation_token: CancellationToken, + ) -> None: + """Initialize the worker. + + Args: + porringer: The porringer API instance. + actions: Previewed actions to execute. + manifest_path: Path to the downloaded manifest. + adapter: Thread-safe progress adapter for GUI updates. + cancellation_token: Token for cooperative cancellation. + """ + super().__init__() + self._porringer = porringer + self._actions = actions + self._manifest_path = manifest_path + self._adapter = adapter + self._cancellation_token = cancellation_token + + def run(self) -> None: + """Execute the setup actions on this thread's event loop.""" + try: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + results = loop.run_until_complete( + self._porringer.update.execute_single_async( + self._actions, + self._manifest_path, + SetupParameters(), + progress_callback=self._adapter.callback, + cancellation_token=self._cancellation_token, + ) + ) + self.finished.emit(results) + finally: + loop.close() + except asyncio.CancelledError: + # Cancellation is expected — emit an empty result + self.finished.emit(SetupResults(actions=self._actions)) + except Exception as exc: + logger.exception('Install execution failed') + self.error.emit(str(exc)) + + +class InstallPreviewWindow(QMainWindow): + """Standalone window that previews and executes a URI-based manifest install.""" + + def __init__(self, porringer: API, manifest_url: str, parent: QWidget | None = None) -> None: + """Initialize the install preview window. + + Args: + porringer: The porringer API instance. + manifest_url: The URL of the manifest to install. + parent: Optional parent widget. + """ + super().__init__(parent) + self._porringer = porringer + self._manifest_url = manifest_url + self._preview: SetupResults | None = None + self._manifest_path: Path | None = None + self._temp_dir: tempfile.TemporaryDirectory[str] | None = None + self._thread: QThread | None = None + self._worker: InstallWorker | None = None + self._progress_dialog: QProgressDialog | None = None + self._cancellation_token: CancellationToken | None = None + self._progress_timer: QTimer | None = None + self._completed_count = 0 + + self.setWindowTitle('Install Preview') + self.setMinimumSize(650, 400) + + self._init_ui() + + def _init_ui(self) -> None: + """Build the UI layout.""" + central = QWidget() + self.setCentralWidget(central) + layout = QVBoxLayout(central) + layout.setContentsMargins(12, 12, 12, 12) + + # Header + self._url_label = QLabel() + self._url_label.setWordWrap(True) + layout.addWidget(self._url_label) + + # Status label (shown during download/preview) + self._status_label = QLabel() + layout.addWidget(self._status_label) + + # Actions table + self._table = QTableWidget() + self._table.setColumnCount(4) + self._table.setHorizontalHeaderLabels(['Type', 'Plugin', 'Package', 'Description']) + self._table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers) + self._table.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) + self._table.setAlternatingRowColors(True) + header = self._table.horizontalHeader() + header.setSectionResizeMode(0, QHeaderView.ResizeMode.ResizeToContents) + header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents) + header.setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents) + header.setSectionResizeMode(3, QHeaderView.ResizeMode.Stretch) + layout.addWidget(self._table) + + # Button bar + button_bar = QHBoxLayout() + button_bar.addStretch() + + self._install_btn = QPushButton('Install') + self._install_btn.setEnabled(False) + self._install_btn.clicked.connect(self._on_install) + button_bar.addWidget(self._install_btn) + + self._close_btn = QPushButton('Close') + self._close_btn.clicked.connect(self.close) + button_bar.addWidget(self._close_btn) + + layout.addLayout(button_bar) + + # --- Public API --- + + def start(self) -> None: + """Download the manifest and populate the preview. + + Call this after ``show()`` to begin the download → preview flow. + """ + self._url_label.setText(f'Manifest: {self._manifest_url}') + self._status_label.setText('Loading manifest…') + self._install_btn.setEnabled(False) + + # Run download + preview on a background thread to keep UI responsive + self._thread = QThread() + self._preview_worker = PreviewWorker(self._porringer, self._manifest_url) + self._preview_worker.moveToThread(self._thread) + + self._thread.started.connect(self._preview_worker.run) + self._preview_worker.finished.connect(self._on_preview_ready) + self._preview_worker.error.connect(self._on_preview_error) + self._preview_worker.finished.connect(self._thread.quit) + self._preview_worker.error.connect(self._thread.quit) + self._thread.finished.connect(self._thread.deleteLater) + self._thread.finished.connect(self._preview_worker.deleteLater) + + self._thread.start() + + # --- Preview callbacks --- + + def _on_preview_ready(self, preview: SetupResults, manifest_path: str, temp_dir_path: str) -> None: + """Handle a successful preview. + + Args: + preview: The setup preview results. + manifest_path: Path to the downloaded manifest file. + temp_dir_path: Path to the temp directory (kept alive for execution). + """ + self._preview = preview + self._manifest_path = Path(manifest_path) + # Keep the temp directory alive until the window closes + self._temp_dir_path = temp_dir_path + + if not preview.actions: + self._status_label.setText('No actions to perform — the manifest is empty.') + return + + self._status_label.setText(f'{len(preview.actions)} action(s) will be performed:') + self._populate_table(preview.actions) + self._install_btn.setEnabled(True) + + def _on_preview_error(self, message: str) -> None: + """Handle a preview error.""" + self._status_label.setText('') + QMessageBox.critical(self, 'Preview Failed', message) + self.close() + + # --- Table --- + + def _populate_table(self, actions: list[SetupAction]) -> None: + """Fill the actions table from a list of SetupAction objects.""" + self._table.setRowCount(len(actions)) + for row, action in enumerate(actions): + self._table.setItem(row, 0, QTableWidgetItem(ACTION_TYPE_LABELS.get(action.action_type, '?'))) + self._table.setItem(row, 1, QTableWidgetItem(action.plugin or '')) + self._table.setItem(row, 2, QTableWidgetItem(action.package or '')) + self._table.setItem(row, 3, QTableWidgetItem(action.description)) + + # --- Install execution --- + + def _on_install(self) -> None: + """Handle the Install button click.""" + if self._preview is None or self._manifest_path is None: + return + + self._install_btn.setEnabled(False) + self._completed_count = 0 + + total = len(self._preview.actions) + self._cancellation_token = CancellationToken() + adapter = ThreadSafeProgressAdapter() + + # Progress dialog + self._progress_dialog = QProgressDialog( + 'Starting install…', + 'Cancel', + 0, + total, + self, + ) + self._progress_dialog.setWindowTitle('Installing') + self._progress_dialog.setAutoClose(False) + self._progress_dialog.setAutoReset(False) + self._progress_dialog.canceled.connect(self._on_cancel) + self._progress_dialog.show() + + # Poll the adapter periodically from the GUI thread + self._progress_timer = QTimer(self) + self._progress_timer.setInterval(100) + self._progress_timer.timeout.connect(lambda: self._drain_progress(adapter)) + self._progress_timer.start() + + # Worker thread + self._thread = QThread() + self._worker = InstallWorker( + self._porringer, + self._preview.actions, + self._manifest_path, + adapter, + self._cancellation_token, + ) + self._worker.moveToThread(self._thread) + + self._thread.started.connect(self._worker.run) + self._worker.finished.connect(self._on_install_finished) + self._worker.error.connect(self._on_install_error) + self._worker.finished.connect(self._thread.quit) + self._worker.error.connect(self._thread.quit) + self._thread.finished.connect(self._thread.deleteLater) + self._thread.finished.connect(self._worker.deleteLater) + + self._thread.start() + + def _drain_progress(self, adapter: ThreadSafeProgressAdapter) -> None: + """Process queued progress updates from the adapter.""" + for action, result in adapter.drain(): + self._completed_count += 1 + label = action.description + if result and result.skipped: + label += f' (skipped: {result.skip_reason})' + elif result and not result.success: + label += f' (FAILED: {result.message})' + + if self._progress_dialog: + self._progress_dialog.setValue(self._completed_count) + self._progress_dialog.setLabelText(label) + + def _on_cancel(self) -> None: + """Handle cancel button on the progress dialog.""" + if self._cancellation_token: + self._cancellation_token.cancel() + + def _on_install_finished(self, results: SetupResults) -> None: + """Handle install completion.""" + self._cleanup_progress() + + succeeded = sum(1 for r in results.results if r.success and not r.skipped) + skipped = sum(1 for r in results.results if r.skipped) + failed = sum(1 for r in results.results if not r.success) + + parts = [] + if succeeded: + parts.append(f'{succeeded} succeeded') + if skipped: + parts.append(f'{skipped} skipped') + if failed: + parts.append(f'{failed} failed') + + summary = ', '.join(parts) if parts else 'No actions executed.' + if failed: + QMessageBox.warning(self, 'Install Complete', summary) + else: + QMessageBox.information(self, 'Install Complete', summary) + + self._status_label.setText(f'Done — {summary}') + self._install_btn.setEnabled(False) + + def _on_install_error(self, message: str) -> None: + """Handle install error.""" + self._cleanup_progress() + QMessageBox.critical(self, 'Install Failed', message) + self._install_btn.setEnabled(True) + + def _cleanup_progress(self) -> None: + """Stop the progress timer and close the dialog.""" + if self._progress_timer: + self._progress_timer.stop() + self._progress_timer = None + if self._progress_dialog: + self._progress_dialog.close() + self._progress_dialog = None + + +class PreviewWorker(QObject): + """Background worker that downloads a manifest and runs a preview.""" + + finished = Signal(object, str, str) # (SetupResults, manifest_path, temp_dir_path) + error = Signal(str) + + def __init__(self, porringer: API, url: str) -> None: + """Initialize the preview worker.""" + super().__init__() + self._porringer = porringer + self._url = url + + def run(self) -> None: + """Download the manifest (if remote) and preview setup actions.""" + temp_dir = None + try: + local_path = resolve_local_path(self._url) + + if local_path is not None: + # Local file — skip the download entirely + if not local_path.exists(): + self.error.emit(f'Manifest not found:\n{local_path}') + return + preview = self._porringer.update.preview_single(local_path) + self.finished.emit(preview, str(local_path), '') + else: + # Remote URL — download to a temp directory + temp_dir = tempfile.mkdtemp(prefix='synodic_install_') + dest = Path(temp_dir) / 'porringer.json' + + params = DownloadParameters(url=self._url, destination=dest, timeout=3) + result = self._porringer.update.download(params) + + if not result.success: + _safe_rmtree(temp_dir) + self.error.emit(f'Failed to download manifest:\n{result.message}') + return + + preview = self._porringer.update.preview_single(dest) + self.finished.emit(preview, str(dest), temp_dir) + + except Exception as exc: + if temp_dir: + _safe_rmtree(temp_dir) + logger.exception('Preview failed') + self.error.emit(str(exc)) + + +def resolve_local_path(manifest_ref: str) -> Path | None: + r"""Return a ``Path`` if *manifest_ref* points to a local file, else ``None``. + + Recognised forms: + * ``file:///C:/path/to/porringer.json`` + * An absolute OS path (``C:\...`` or ``/...``) + * A relative path that exists on disk + """ + parsed = urlparse(manifest_ref) + + if parsed.scheme == 'file': + # file:///C:/Users/... → C:/Users/... + return Path(url2pathname(parsed.path)) + + if parsed.scheme in {'http', 'https'}: + return None + + # No scheme — treat as a filesystem path + candidate = Path(manifest_ref) + if candidate.is_absolute() or candidate.exists(): + return candidate + + return None + + +def _safe_rmtree(path: str) -> None: + """Remove a directory tree, ignoring errors.""" + try: + shutil.rmtree(path) + except OSError: + logger.debug('Failed to clean up temp dir: %s', path) diff --git a/synodic_client/application/screen/tray.py b/synodic_client/application/screen/tray.py index 426bae2..0556fa5 100644 --- a/synodic_client/application/screen/tray.py +++ b/synodic_client/application/screen/tray.py @@ -22,6 +22,7 @@ from synodic_client.application.screen.screen import MainWindow from synodic_client.client import Client +from synodic_client.logging import open_log from synodic_client.resolution import resolve_config, update_and_resolve from synodic_client.updater import GITHUB_REPO_URL, UpdateChannel, UpdateInfo @@ -135,6 +136,12 @@ def __init__(self, app: QApplication, client: Client, icon_name: LiteralString, # Set initial channel check state from config self._sync_channel_checks() + self.settings_menu.addSeparator() + + self.open_log_action = QAction('Open Log...', self.settings_menu) + self.open_log_action.triggered.connect(open_log) + self.settings_menu.addAction(self.open_log_action) + self.menu.addSeparator() self.quit_action = QAction('Quit', self.menu) diff --git a/synodic_client/logging.py b/synodic_client/logging.py new file mode 100644 index 0000000..5922e0f --- /dev/null +++ b/synodic_client/logging.py @@ -0,0 +1,77 @@ +"""Centralised logging configuration for the Synodic Client. + +Provides a rotating file handler with eager flushing and a helper to open +the current log file in the system's default editor. +""" + +import logging +import tempfile +from logging.handlers import RotatingFileHandler +from pathlib import Path + +from PySide6.QtCore import QUrl +from PySide6.QtGui import QDesktopServices + +_LOG_FILENAME = 'synodic.log' +_MAX_BYTES = 5_242_880 # 5 MB +_BACKUP_COUNT = 3 +_FORMAT = '%(asctime)s [%(levelname)s] %(name)s: %(message)s' + + +def log_path() -> Path: + """Return the path to the application log file. + + The file lives in the system temp directory so it is cleaned up + automatically by the OS and avoids permission issues. + + Returns: + Path to the log file. + """ + return Path(tempfile.gettempdir()) / _LOG_FILENAME + + +class EagerRotatingFileHandler(RotatingFileHandler): + """RotatingFileHandler that flushes after every record. + + This ensures log entries are visible immediately when the file is + opened in an external editor. + """ + + def emit(self, record: logging.LogRecord) -> None: + """Emit a record and flush the stream.""" + super().emit(record) + self.flush() + + +def configure_logging() -> None: + """Set up application-wide logging. + + Attaches a :class:`EagerRotatingFileHandler` to the ``synodic_client`` + logger and configures :func:`logging.basicConfig` for ``INFO`` level + output on *stderr*. + """ + logging.basicConfig(level=logging.INFO) + + handler = EagerRotatingFileHandler( + str(log_path()), + maxBytes=_MAX_BYTES, + backupCount=_BACKUP_COUNT, + encoding='utf-8', + ) + handler.setFormatter(logging.Formatter(_FORMAT)) + + app_logger = logging.getLogger('synodic_client') + app_logger.addHandler(handler) + + +def open_log() -> None: + """Open the log file in the system's default editor. + + Creates an empty file if one does not yet exist so that the OS always + has something to open. + """ + path = log_path() + if not path.exists(): + path.touch() + + QDesktopServices.openUrl(QUrl.fromLocalFile(str(path))) diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..8772b22 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,21 @@ +"""Shared pytest fixtures for the Synodic Client test suite.""" + +from pathlib import Path + +import pytest + +_REPO_ROOT = Path(__file__).resolve().parents[1] +_EXAMPLES_DIR = _REPO_ROOT / 'examples' + + +def _discover_example_dirs() -> list[Path]: + """Return all subdirectories under ``examples/``.""" + if not _EXAMPLES_DIR.is_dir(): + return [] + return sorted(child for child in _EXAMPLES_DIR.iterdir() if child.is_dir()) + + +@pytest.fixture(params=_discover_example_dirs(), ids=lambda p: p.name) +def example_dir(request: pytest.FixtureRequest) -> Path: + """Parametrised fixture yielding each example directory in turn.""" + return request.param diff --git a/tests/unit/test_examples.py b/tests/unit/test_examples.py new file mode 100644 index 0000000..44428d0 --- /dev/null +++ b/tests/unit/test_examples.py @@ -0,0 +1,57 @@ +"""Tests that run across all example directories. + +These validate client-level invariants — not porringer manifest semantics. +""" + +import re +from pathlib import Path + +from synodic_client.application.qt import find_uri, parse_uri + +_URI_PATTERN = re.compile(r'synodic://\S+') + + +def _extract_uris_from_file(path: Path) -> list[str]: + """Extract all ``synodic://`` URIs from a text file.""" + text = path.read_text(encoding='utf-8') + return _URI_PATTERN.findall(text) + + +def _collect_uris(directory: Path) -> list[str]: + """Collect every ``synodic://`` URI found in any text file in *directory*.""" + uris: list[str] = [] + for child in directory.iterdir(): + if child.is_file() and child.suffix in {'.md', '.toml', '.json', '.txt'}: + uris.extend(_extract_uris_from_file(child)) + return uris + + +class TestExampleStructure: + """Validate the structure of each example directory.""" + + @staticmethod + def test_has_readme(example_dir: Path) -> None: + """Every example must include a README.""" + assert (example_dir / 'README.md').exists(), f'{example_dir.name}/ is missing a README.md' + + +class TestExampleUris: + """Validate any ``synodic://`` URIs embedded in example files.""" + + @staticmethod + def test_embedded_uris_are_parseable(example_dir: Path) -> None: + """Every embedded synodic:// URI must be parseable by the client.""" + uris = _collect_uris(example_dir) + + for uri in uris: + parsed = parse_uri(uri) + assert 'action' in parsed, f'URI missing action: {uri}' + assert parsed['action'], f'URI has empty action: {uri}' + + @staticmethod + def test_find_uri_detects_embedded(example_dir: Path) -> None: + """Embedded URIs should be discoverable by find_uri.""" + uris = _collect_uris(example_dir) + + for uri in uris: + assert find_uri([uri]) == uri, f'find_uri failed to detect: {uri}' diff --git a/tests/unit/test_install_preview.py b/tests/unit/test_install_preview.py new file mode 100644 index 0000000..1ef167f --- /dev/null +++ b/tests/unit/test_install_preview.py @@ -0,0 +1,249 @@ +"""Tests for the install preview window and URI-based install flow.""" + +from __future__ import annotations + +from pathlib import Path +from unittest.mock import MagicMock + +from porringer.schema import ( + CancellationToken, + DownloadResult, + SetupActionType, + SetupResults, + ThreadSafeProgressAdapter, +) + +from synodic_client.application.qt import parse_uri +from synodic_client.application.screen.install import ( + ACTION_TYPE_LABELS, + InstallWorker, + PreviewWorker, + resolve_local_path, +) + + +class TestParseUriInstall: + """Tests for parsing install URIs.""" + + @staticmethod + def test_install_action_parsed() -> None: + """Verify the action is 'install' for an install URI.""" + result = parse_uri('synodic://install?manifest=https://example.com/porringer.json') + assert result['action'] == 'install' + + @staticmethod + def test_manifest_key_present() -> None: + """Verify the manifest query parameter is extracted.""" + result = parse_uri('synodic://install?manifest=https://example.com/porringer.json') + assert 'manifest' in result + assert isinstance(result['manifest'], list) + assert result['manifest'][0] == 'https://example.com/porringer.json' + + @staticmethod + def test_multiple_manifests() -> None: + """Verify multiple manifest values are captured.""" + result = parse_uri('synodic://install?manifest=https://a.com/a.json&manifest=https://b.com/b.json') + manifests = result['manifest'] + assert isinstance(manifests, list) + assert len(manifests) == 2 # noqa: PLR2004 + + @staticmethod + def test_unknown_action() -> None: + """Verify unknown actions are still parsed without error.""" + result = parse_uri('synodic://unknown?foo=bar') + assert result['action'] == 'unknown' + + +class TestInstallPreviewWindow: + """Tests for InstallPreviewWindow table population logic.""" + + @staticmethod + def _make_action( + action_type: str = 'INSTALL_PACKAGE', + description: str = 'Install test', + plugin: str = 'pip', + package: str = 'requests', + ) -> MagicMock: + """Create a mock SetupAction.""" + action = MagicMock() + action.action_type = getattr(SetupActionType, action_type) + action.description = description + action.plugin = plugin + action.package = package + action.command = None + action.cli_command = None + return action + + @staticmethod + def test_action_type_labels() -> None: + """Verify action type label mapping covers all types.""" + for action_type in SetupActionType: + assert action_type in ACTION_TYPE_LABELS + + +class TestInstallWorker: + """Tests for InstallWorker signal emission.""" + + @staticmethod + def test_worker_emits_finished_on_success() -> None: + """Verify worker emits finished signal with results.""" + porringer = MagicMock() + expected = SetupResults(actions=[]) + + # Make execute_single_async an awaitable that returns expected + async def mock_execute(*args, **kwargs): # noqa: ANN002, ANN003 + return expected + + porringer.update.execute_single_async = mock_execute + + adapter = MagicMock(spec=ThreadSafeProgressAdapter) + token = CancellationToken() + + worker = InstallWorker(porringer, [], Path('/tmp/test'), adapter, token) + + received: list[SetupResults] = [] + worker.finished.connect(received.append) + worker.run() + + assert len(received) == 1 + assert received[0] is expected + + @staticmethod + def test_worker_emits_error_on_failure() -> None: + """Verify worker emits error signal on exception.""" + porringer = MagicMock() + + async def mock_execute(*args, **kwargs): # noqa: ANN002, ANN003 + msg = 'boom' + raise RuntimeError(msg) + + porringer.update.execute_single_async = mock_execute + + adapter = MagicMock(spec=ThreadSafeProgressAdapter) + token = CancellationToken() + + worker = InstallWorker(porringer, [], Path('/tmp/test'), adapter, token) + + errors: list[str] = [] + worker.error.connect(errors.append) + worker.run() + + assert len(errors) == 1 + assert 'boom' in errors[0] + + +class TestResolveLocalPath: + """Tests for _resolve_local_path helper.""" + + @staticmethod + def test_http_url_returns_none() -> None: + """HTTP URLs should not resolve to a local path.""" + assert resolve_local_path('https://example.com/porringer.json') is None + + @staticmethod + def test_absolute_path_returns_path() -> None: + """Absolute OS paths should resolve.""" + result = resolve_local_path('C:\\Users\\test\\porringer.json') + assert result is not None + assert result == Path('C:\\Users\\test\\porringer.json') + + @staticmethod + def test_file_uri_returns_path() -> None: + """file:// URIs should resolve to a local path.""" + result = resolve_local_path('file:///C:/Users/test/porringer.json') + assert result is not None + assert 'porringer.json' in str(result) + + @staticmethod + def test_existing_relative_path(tmp_path: Path) -> None: + """Relative paths that exist on disk should resolve.""" + manifest = tmp_path / 'porringer.json' + manifest.write_text('{}') + result = resolve_local_path(str(manifest)) + assert result is not None + + +class TestPreviewWorkerLocal: + """Tests for PreviewWorker with local manifest files.""" + + @staticmethod + def test_local_manifest_skips_download(tmp_path: Path) -> None: + """Verify PreviewWorker skips download for local files.""" + manifest = tmp_path / 'porringer.json' + manifest.write_text('{}') + + porringer = MagicMock() + expected = SetupResults(actions=[]) + porringer.update.preview_single.return_value = expected + + worker = PreviewWorker(porringer, str(manifest)) + + results: list[tuple[object, str, str]] = [] + worker.finished.connect(lambda r, p, t: results.append((r, p, t))) + worker.run() + + assert len(results) == 1 + assert results[0][0] is expected + # download should NOT have been called + porringer.update.download.assert_not_called() + + @staticmethod + def test_local_manifest_not_found() -> None: + """Verify PreviewWorker emits error for missing local file.""" + porringer = MagicMock() + worker = PreviewWorker(porringer, 'C:\\nonexistent\\porringer.json') + + errors: list[str] = [] + worker.error.connect(errors.append) + worker.run() + + assert len(errors) == 1 + assert 'not found' in errors[0].lower() + + +class TestPreviewWorker: + """Tests for PreviewWorker download and preview flow.""" + + @staticmethod + def test_emits_error_on_download_failure() -> None: + """Verify PreviewWorker emits error when download fails.""" + porringer = MagicMock() + porringer.update.download.return_value = DownloadResult( + success=False, + path=None, + verified=False, + size=0, + message='Network error', + ) + + worker = PreviewWorker(porringer, 'https://example.com/bad.json') + + errors: list[str] = [] + worker.error.connect(errors.append) + worker.run() + + assert len(errors) == 1 + assert 'Network error' in errors[0] + + @staticmethod + def test_emits_finished_on_success() -> None: + """Verify PreviewWorker emits finished with SetupResults.""" + porringer = MagicMock() + porringer.update.download.return_value = DownloadResult( + success=True, + path=Path('/tmp/test/porringer.json'), + verified=True, + size=100, + message='OK', + ) + expected = SetupResults(actions=[]) + porringer.update.preview_single.return_value = expected + + worker = PreviewWorker(porringer, 'https://example.com/good.json') + + results: list[tuple[object, str, str]] = [] + worker.finished.connect(lambda r, p, t: results.append((r, p, t))) + worker.run() + + assert len(results) == 1 + assert results[0][0] is expected diff --git a/tests/unit/test_logging.py b/tests/unit/test_logging.py new file mode 100644 index 0000000..d7c1e29 --- /dev/null +++ b/tests/unit/test_logging.py @@ -0,0 +1,126 @@ +"""Tests for the centralised logging module.""" + +import logging +import tempfile +from pathlib import Path +from unittest.mock import patch + +from synodic_client.logging import ( + EagerRotatingFileHandler, + configure_logging, + log_path, + open_log, +) + + +class TestLogPath: + """Tests for log_path().""" + + @staticmethod + def test_returns_path_in_temp_dir() -> None: + """log_path() should resolve inside the system temp directory.""" + path = log_path() + assert path.parent == Path(tempfile.gettempdir()) + + @staticmethod + def test_filename() -> None: + """log_path() should use the expected filename.""" + assert log_path().name == 'synodic.log' + + +class TestEagerRotatingFileHandler: + """Tests for the eager-flush handler subclass.""" + + @staticmethod + def test_flush_called_on_emit(tmp_path: Path) -> None: + """Handler should flush the stream after every emit.""" + handler = EagerRotatingFileHandler(str(tmp_path / 'test.log')) + try: + record = logging.LogRecord( + name='test', + level=logging.INFO, + pathname='', + lineno=0, + msg='hello', + args=(), + exc_info=None, + ) + handler.emit(record) + + # The record should be visible on disk immediately + content = (tmp_path / 'test.log').read_text(encoding='utf-8') + assert 'hello' in content + finally: + handler.close() + + +class TestConfigureLogging: + """Tests for configure_logging().""" + + @staticmethod + def test_attaches_file_handler(tmp_path: Path) -> None: + """configure_logging() should attach a file handler to the synodic_client logger.""" + with patch('synodic_client.logging.log_path', return_value=tmp_path / 'synodic.log'): + app_logger = logging.getLogger('synodic_client') + initial_count = len(app_logger.handlers) + + configure_logging() + + assert len(app_logger.handlers) > initial_count + + # Clean up the handler we added so it doesn't leak into other tests + for handler in list(app_logger.handlers): + if isinstance(handler, EagerRotatingFileHandler): + app_logger.removeHandler(handler) + handler.close() + + @staticmethod + def test_writes_to_file(tmp_path: Path) -> None: + """Log records should be written eagerly to the log file.""" + log_file = tmp_path / 'synodic.log' + app_logger = logging.getLogger('synodic_client') + + handler = EagerRotatingFileHandler(str(log_file), encoding='utf-8') + handler.setFormatter(logging.Formatter('%(message)s')) + app_logger.addHandler(handler) + try: + test_logger = logging.getLogger('synodic_client.test_writes') + test_logger.setLevel(logging.INFO) + test_logger.info('eager-flush-test') + + content = log_file.read_text(encoding='utf-8') + assert 'eager-flush-test' in content + finally: + app_logger.removeHandler(handler) + handler.close() + + +class TestOpenLog: + """Tests for open_log().""" + + @staticmethod + def test_creates_file_if_missing(tmp_path: Path) -> None: + """open_log() should create the log file when it does not exist.""" + log_file = tmp_path / 'synodic.log' + assert not log_file.exists() + + with ( + patch('synodic_client.logging.log_path', return_value=log_file), + patch('synodic_client.logging.QDesktopServices') as mock_ds, + ): + open_log() + assert log_file.exists() + mock_ds.openUrl.assert_called_once() + + @staticmethod + def test_opens_existing_file(tmp_path: Path) -> None: + """open_log() should open an existing log file without error.""" + log_file = tmp_path / 'synodic.log' + log_file.write_text('existing content', encoding='utf-8') + + with ( + patch('synodic_client.logging.log_path', return_value=log_file), + patch('synodic_client.logging.QDesktopServices') as mock_ds, + ): + open_log() + mock_ds.openUrl.assert_called_once() diff --git a/tests/unit/test_protocol.py b/tests/unit/test_protocol.py index 5dc0ad8..d598d21 100644 --- a/tests/unit/test_protocol.py +++ b/tests/unit/test_protocol.py @@ -10,6 +10,9 @@ _EXPECTED_REGISTRY_KEY_COUNT = 2 +_TEST_PROTOCOL = f'{PROTOCOL_NAME}_test' +"""Temporary protocol name used by integration tests to avoid clobbering the real registration.""" + class TestRegisterProtocol: """Tests for register_protocol.""" @@ -95,3 +98,107 @@ def test_noop_on_non_windows() -> None: with patch('synodic_client.protocol.sys') as mock_sys: mock_sys.platform = 'linux' remove_protocol() + + +class TestProtocolIntegration: + """Integration tests that read/write real registry keys under a test protocol name.""" + + @staticmethod + @pytest.mark.skipif(sys.platform != 'win32', reason='Windows only') + def test_register_creates_valid_registry_entries() -> None: + """Register under a test key, verify values, then clean up.""" + test_exe = r'C:\test\synodic_test.exe' + key_path = f'Software\\Classes\\{_TEST_PROTOCOL}' + + try: + # Register using the test protocol name + with patch('synodic_client.protocol.PROTOCOL_NAME', _TEST_PROTOCOL): + register_protocol(test_exe) + + # Verify the protocol key + with winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path) as key: + description, _ = winreg.QueryValueEx(key, '') + assert description == 'Synodic Client Protocol' + + url_protocol, _ = winreg.QueryValueEx(key, 'URL Protocol') + assert url_protocol == '' + + # Verify the command key + command_path = f'{key_path}\\shell\\open\\command' + with winreg.OpenKey(winreg.HKEY_CURRENT_USER, command_path) as key: + command, _ = winreg.QueryValueEx(key, '') + assert test_exe in command + assert '"%1"' in command + + finally: + # Clean up the test key + with patch('synodic_client.protocol.PROTOCOL_NAME', _TEST_PROTOCOL): + remove_protocol() + + @staticmethod + @pytest.mark.skipif(sys.platform != 'win32', reason='Windows only') + def test_remove_deletes_registry_entries() -> None: + """Register then remove under a test key, verify the key is gone.""" + key_path = f'Software\\Classes\\{_TEST_PROTOCOL}' + + with patch('synodic_client.protocol.PROTOCOL_NAME', _TEST_PROTOCOL): + register_protocol(r'C:\test\synodic_test.exe') + remove_protocol() + + with pytest.raises(FileNotFoundError): + winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path) + + @staticmethod + @pytest.mark.skipif(sys.platform != 'win32', reason='Windows only') + def test_register_is_idempotent() -> None: + """Calling register twice with a different exe updates the command.""" + key_path = f'Software\\Classes\\{_TEST_PROTOCOL}\\shell\\open\\command' + exe_v1 = r'C:\test\v1\synodic.exe' + exe_v2 = r'C:\test\v2\synodic.exe' + + try: + with patch('synodic_client.protocol.PROTOCOL_NAME', _TEST_PROTOCOL): + register_protocol(exe_v1) + register_protocol(exe_v2) + + with winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path) as key: + command, _ = winreg.QueryValueEx(key, '') + assert exe_v2 in command + assert exe_v1 not in command + + finally: + with patch('synodic_client.protocol.PROTOCOL_NAME', _TEST_PROTOCOL): + remove_protocol() + + +class TestProtocolLive: + """Verify the live protocol registration on this machine.""" + + @staticmethod + @pytest.mark.skipif(sys.platform != 'win32', reason='Windows only') + def test_protocol_is_registered() -> None: + """Verify that the synodic:// protocol handler is currently registered.""" + key_path = f'Software\\Classes\\{PROTOCOL_NAME}' + try: + with winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path) as key: + _, reg_type = winreg.QueryValueEx(key, 'URL Protocol') + assert reg_type == winreg.REG_SZ + except FileNotFoundError: + pytest.fail(f'Protocol handler not registered. Run the application once to register HKCU\\{key_path}') + + @staticmethod + @pytest.mark.skipif(sys.platform != 'win32', reason='Windows only') + def test_command_points_to_existing_exe() -> None: + """Verify the registered command points to an exe path (may not exist in CI).""" + from pathlib import Path + + key_path = f'Software\\Classes\\{PROTOCOL_NAME}\\shell\\open\\command' + try: + with winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path) as key: + command, _ = winreg.QueryValueEx(key, '') + # Command format: "C:\...\synodic.exe" "%1" + exe_path = command.split('"')[1] + assert exe_path.endswith('.exe'), f'Expected .exe path, got: {exe_path}' + assert Path(exe_path).name in {'synodic.exe', 'python.exe'}, f'Unexpected exe: {exe_path}' + except FileNotFoundError: + pytest.skip('Protocol handler not registered on this machine') diff --git a/tool/scripts/common.py b/tool/scripts/common.py new file mode 100644 index 0000000..eeb01f4 --- /dev/null +++ b/tool/scripts/common.py @@ -0,0 +1,65 @@ +"""Shared utilities for tool scripts.""" + +import subprocess +import sys +from pathlib import Path + +# Paths relative to the repository root +REPO_ROOT = Path(__file__).resolve().parents[2] +SPEC_FILE = REPO_ROOT / 'tool' / 'pyinstaller' / 'synodic.spec' +PACK_DIR = REPO_ROOT / 'dist' / 'synodic' +OUTPUT_DIR = REPO_ROOT / 'Releases' +MAIN_EXE = 'synodic.exe' +PACK_ID = 'Synodic.SynodicClient' + + +def run(cmd: list[str], *, description: str) -> None: + """Run a subprocess command, raising on failure. + + Args: + cmd: Command and arguments to run. + description: Human-readable description for error messages. + """ + print(f'\n{"=" * 60}') + print(f' {description}') + print(f' > {" ".join(cmd)}') + print(f'{"=" * 60}\n') + + result = subprocess.run(cmd, cwd=str(REPO_ROOT), check=False) + if result.returncode != 0: + print(f'\nERROR: {description} failed with exit code {result.returncode}', file=sys.stderr) + sys.exit(result.returncode) + + +def kill_running_instances() -> None: + """Terminate any running synodic.exe processes to release locked files.""" + if sys.platform != 'win32': + return + + result = subprocess.run( + ['taskkill', '/F', '/IM', MAIN_EXE], + capture_output=True, + text=True, + check=False, + ) + if result.returncode == 0: + print(f'Terminated running {MAIN_EXE} process(es)') + elif 'not found' not in result.stderr.lower(): + print(f'Note: taskkill returned {result.returncode}: {result.stderr.strip()}') + + +def build() -> None: + """Run PyInstaller to produce dist/synodic/. + + Kills any running instances first, then invokes PyInstaller with the + project spec file. + """ + kill_running_instances() + run( + [sys.executable, '-m', 'PyInstaller', '--noconfirm', '--clean', str(SPEC_FILE)], + description='Building with PyInstaller', + ) + + if not PACK_DIR.exists(): + print(f'ERROR: Pack directory not found: {PACK_DIR}', file=sys.stderr) + sys.exit(1) diff --git a/tool/scripts/dev.py b/tool/scripts/dev.py new file mode 100644 index 0000000..2a0dfaf --- /dev/null +++ b/tool/scripts/dev.py @@ -0,0 +1,29 @@ +"""Dev build-and-run script for Synodic Client. + +Builds the application with PyInstaller and launches the resulting EXE. +Skips Velopack packaging entirely for fast iteration. + +Invoked via ``pdm run dev``. +""" + +import subprocess +import sys + +from tool.scripts.common import MAIN_EXE, PACK_DIR, REPO_ROOT, build + + +def main() -> None: + """Build with PyInstaller and launch the EXE.""" + build() + + exe_path = PACK_DIR / MAIN_EXE + if not exe_path.exists(): + print(f'ERROR: EXE not found: {exe_path}', file=sys.stderr) + sys.exit(1) + + print(f'\nLaunching {exe_path} ...\n') + subprocess.Popen([str(exe_path)], cwd=str(REPO_ROOT)) + + +if __name__ == '__main__': + main() diff --git a/tool/scripts/package.py b/tool/scripts/package.py index c7b07a0..64c4bcc 100644 --- a/tool/scripts/package.py +++ b/tool/scripts/package.py @@ -12,54 +12,11 @@ import argparse import json import shutil -import subprocess import sys from pathlib import Path from synodic_client import __version__ - -# Paths relative to the repository root -_REPO_ROOT = Path(__file__).resolve().parents[2] -_SPEC_FILE = _REPO_ROOT / 'tool' / 'pyinstaller' / 'synodic.spec' -_PACK_DIR = _REPO_ROOT / 'dist' / 'synodic' -_OUTPUT_DIR = _REPO_ROOT / 'Releases' -_MAIN_EXE = 'synodic.exe' -_PACK_ID = 'Synodic.SynodicClient' - - -def _run(cmd: list[str], *, description: str) -> None: - """Run a subprocess command, raising on failure. - - Args: - cmd: Command and arguments to run. - description: Human-readable description for error messages. - """ - print(f'\n{"=" * 60}') - print(f' {description}') - print(f' > {" ".join(cmd)}') - print(f'{"=" * 60}\n') - - result = subprocess.run(cmd, cwd=str(_REPO_ROOT), check=False) - if result.returncode != 0: - print(f'\nERROR: {description} failed with exit code {result.returncode}', file=sys.stderr) - sys.exit(result.returncode) - - -def _kill_running_instances() -> None: - """Terminate any running synodic.exe processes to release locked files.""" - if sys.platform != 'win32': - return - - result = subprocess.run( - ['taskkill', '/F', '/IM', _MAIN_EXE], - capture_output=True, - text=True, - check=False, - ) - if result.returncode == 0: - print(f'Terminated running {_MAIN_EXE} process(es)') - elif 'not found' not in result.stderr.lower(): - print(f'Note: taskkill returned {result.returncode}: {result.stderr.strip()}') +from tool.scripts.common import MAIN_EXE, OUTPUT_DIR, PACK_DIR, PACK_ID, build, kill_running_instances, run def main() -> None: @@ -86,22 +43,16 @@ def main() -> None: args = parser.parse_args() print(f'Packaging Synodic Client v{__version__} (channel: {args.channel})') - # Step 0: Kill any running instances to release locked files - _kill_running_instances() - # Step 1: PyInstaller if not args.skip_pyinstaller: - _run( - [sys.executable, '-m', 'PyInstaller', '--noconfirm', '--clean', str(_SPEC_FILE)], - description='Building with PyInstaller', - ) + build() else: + kill_running_instances() print('Skipping PyInstaller (--skip-pyinstaller)') - - if not _PACK_DIR.exists(): - print(f'ERROR: Pack directory not found: {_PACK_DIR}', file=sys.stderr) - print('Run without --skip-pyinstaller first.', file=sys.stderr) - sys.exit(1) + if not PACK_DIR.exists(): + print(f'ERROR: Pack directory not found: {PACK_DIR}', file=sys.stderr) + print('Run without --skip-pyinstaller first.', file=sys.stderr) + sys.exit(1) # Step 1b: Write portable config for dev builds if args.local_source: @@ -109,7 +60,7 @@ def main() -> None: 'update_source': str(Path(args.local_source).resolve()), 'update_channel': args.channel, } - config_path = _PACK_DIR / 'config.json' + config_path = PACK_DIR / 'config.json' config_path.write_text(json.dumps(portable_config, indent=2), encoding='utf-8') print(f'Wrote portable config to {config_path}') @@ -119,24 +70,24 @@ def main() -> None: print('ERROR: vpk not found. Install with: dotnet tool install -g vpk', file=sys.stderr) sys.exit(1) - _OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + OUTPUT_DIR.mkdir(parents=True, exist_ok=True) - _run( + run( [ vpk_cmd, 'pack', '--packId', - _PACK_ID, + PACK_ID, '--packVersion', __version__, '--packDir', - str(_PACK_DIR), + str(PACK_DIR), '--mainExe', - _MAIN_EXE, + MAIN_EXE, '--channel', args.channel, '-o', - str(_OUTPUT_DIR), + str(OUTPUT_DIR), ], description='Packing with Velopack', ) @@ -146,7 +97,7 @@ def main() -> None: local_path = Path(args.local_source) local_path.mkdir(parents=True, exist_ok=True) - _run( + run( [ vpk_cmd, 'upload', @@ -154,14 +105,14 @@ def main() -> None: '--path', str(local_path), '-o', - str(_OUTPUT_DIR), + str(OUTPUT_DIR), '--channel', args.channel, ], description=f'Uploading to local source: {local_path}', ) - print(f'\nDone! Releases written to: {_OUTPUT_DIR}') + print(f'\nDone! Releases written to: {OUTPUT_DIR}') if args.local_source: print(f'Local update source: {args.local_source}') diff --git a/tool/scripts/setup_dev.py b/tool/scripts/setup_dev.py new file mode 100644 index 0000000..08836f9 --- /dev/null +++ b/tool/scripts/setup_dev.py @@ -0,0 +1,67 @@ +"""Register example manifest directories with porringer. + +A one-time dev setup helper that discovers all subdirectories under the +repository ``examples/`` folder and registers them with porringer's +directory cache. Already-registered directories are silently skipped. + +Runs automatically as a ``post_install`` hook via PDM. +""" + +import logging +import sys +from pathlib import Path + +from porringer.api import API, APIParameters +from porringer.schema import LocalConfiguration +from rich.console import Console + +_REPO_ROOT = Path(__file__).resolve().parents[2] +_EXAMPLES_DIR = _REPO_ROOT / 'examples' + +console = Console(highlight=False) + + +def main() -> None: + """Register every example subdirectory with porringer's directory cache.""" + # Silence porringer's internal logging so our output stays clean + logger = logging.getLogger('synodic_client.setup_dev') + logging.basicConfig(level=logging.WARNING) + + if not _EXAMPLES_DIR.is_dir(): + console.print(f' [red]✗[/red] examples/ directory not found at {_EXAMPLES_DIR}') + sys.exit(1) + + local_config = LocalConfiguration() + api_params = APIParameters(logger) + porringer = API(local_config, api_params) + + registered = {d.path.resolve() for d in porringer.cache.list_directories()} + added = 0 + skipped = 0 + + for child in sorted(_EXAMPLES_DIR.iterdir()): + if not child.is_dir(): + continue + + resolved = child.resolve() + if resolved in registered: + skipped += 1 + continue + + try: + porringer.cache.add_directory(resolved, name=child.name) + console.print(f' [green]✓[/green] [bold]{child.name}[/bold] [dim]({resolved})[/dim]') + added += 1 + except ValueError: + skipped += 1 + + if added: + noun = 'directory' if added == 1 else 'directories' + console.print(f' [green]{added} example {noun} registered[/green]') + elif skipped: + noun = 'directory' if skipped == 1 else 'directories' + console.print(f' [dim]{skipped} example {noun} already registered[/dim]') + + +if __name__ == '__main__': + main() From a9fd301b6cb0dd0e8469a7def8305a3257926ad8 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 14:09:11 -0800 Subject: [PATCH 13/40] Add Tray Open Shortcut --- synodic_client/application/screen/tray.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/synodic_client/application/screen/tray.py b/synodic_client/application/screen/tray.py index 0556fa5..e15ed4d 100644 --- a/synodic_client/application/screen/tray.py +++ b/synodic_client/application/screen/tray.py @@ -95,6 +95,7 @@ def __init__(self, app: QApplication, client: Client, icon_name: LiteralString, self.tray = QSystemTrayIcon() self.tray.setIcon(self.tray_icon) self.tray.messageClicked.connect(self._on_notification_clicked) + self.tray.activated.connect(self._on_tray_activated) self.tray.setVisible(True) @@ -157,6 +158,13 @@ def _sync_channel_checks(self) -> None: self._channel_stable_action.setChecked(not is_dev) self._channel_dev_action.setChecked(is_dev) + def _on_tray_activated(self, reason: QSystemTrayIcon.ActivationReason) -> None: + """Handle tray icon activation (e.g. double-click).""" + if reason == QSystemTrayIcon.ActivationReason.DoubleClick: + self._window.show() + self._window.raise_() + self._window.activateWindow() + def _on_update_source(self) -> None: """Open a dialog to edit the update source URL or local path.""" config = resolve_config() From 476257a7ef50a2449b3add229eb497a2ce837722 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 14:12:29 -0800 Subject: [PATCH 14/40] Update Readme Dev Data --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 08d0ed6..2b050bd 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,11 @@ An application frontend for [porringer](https://www.github.com/synodic/porringer ## Documentation See the [full documentation](https://synodic.github.io/synodic-client) for installation, usage, and development guides. + +## Development + +We use [pdm](https://pdm-project.org/en/latest/) as our build system and package manager. Scripts for development tasks are defined in `pyproject.toml` under the `[tool.pdm.scripts]` section. + +See [Development](https://synodic.github.io/porringer/development) for additional build, test, and installation instructions. + +For contribution guidelines, see [CONTRIBUTING.md](https://github.com/synodic/.github/blob/stable/CONTRIBUTING.md). From a462c85d0c301e9671b13ef526e4faa744b7de74 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 14:44:29 -0800 Subject: [PATCH 15/40] Fix temp directory leak in InstallPreviewWindow Add closeEvent override that cleans up the temporary download directory when the install preview window is closed. Previously the temp dir created by PreviewWorker via tempfile.mkdtemp() was never removed. Also replaced the unused tempfile.TemporaryDirectory field with the str path that was actually being used. --- synodic_client/application/screen/install.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index 9cf22aa..aa260b8 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -19,7 +19,7 @@ import shutil import tempfile from pathlib import Path -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any from urllib.parse import urlparse from urllib.request import url2pathname @@ -131,7 +131,7 @@ def __init__(self, porringer: API, manifest_url: str, parent: QWidget | None = N self._manifest_url = manifest_url self._preview: SetupResults | None = None self._manifest_path: Path | None = None - self._temp_dir: tempfile.TemporaryDirectory[str] | None = None + self._temp_dir_path: str | None = None self._thread: QThread | None = None self._worker: InstallWorker | None = None self._progress_dialog: QProgressDialog | None = None @@ -189,6 +189,19 @@ def _init_ui(self) -> None: layout.addLayout(button_bar) + # --- Lifecycle --- + + def closeEvent(self, event: Any) -> None: + """Clean up the temp directory when the window is closed.""" + self._cleanup_temp_dir() + super().closeEvent(event) + + def _cleanup_temp_dir(self) -> None: + """Remove the temporary download directory if it exists.""" + if self._temp_dir_path: + _safe_rmtree(self._temp_dir_path) + self._temp_dir_path = None + # --- Public API --- def start(self) -> None: From 2b539d29bf20ba93655e556715e19cf6ce9ece97 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 14:44:58 -0800 Subject: [PATCH 16/40] Connect cancel button on update download progress dialog The download progress dialog had a Cancel button but the canceled signal was never connected. Clicking Cancel now closes the dialog and ignores the download result when it completes. --- synodic_client/application/screen/tray.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/synodic_client/application/screen/tray.py b/synodic_client/application/screen/tray.py index e15ed4d..af955c7 100644 --- a/synodic_client/application/screen/tray.py +++ b/synodic_client/application/screen/tray.py @@ -88,6 +88,7 @@ def __init__(self, app: QApplication, client: Client, icon_name: LiteralString, self._update_worker: UpdateCheckWorker | UpdateDownloadWorker | None = None self._progress_dialog: QProgressDialog | None = None self._pending_update_info: UpdateInfo | None = None + self._download_cancelled = False with client.resource(icon_name) as icon_path: self.tray_icon = QIcon(str(icon_path)) @@ -335,6 +336,8 @@ def _start_download(self) -> None: self._progress_dialog.setWindowTitle('Downloading Update') self._progress_dialog.setAutoClose(False) self._progress_dialog.setAutoReset(False) + self._progress_dialog.canceled.connect(self._on_download_cancelled) + self._download_cancelled = False self._progress_dialog.show() # Create worker and thread @@ -353,9 +356,17 @@ def _start_download(self) -> None: # Start the thread self._update_thread.start() + def _on_download_cancelled(self) -> None: + """Handle cancel button on the download progress dialog.""" + self._download_cancelled = True + if self._progress_dialog: + self._progress_dialog.close() + self._progress_dialog = None + logger.info('Update download cancelled by user') + def _on_download_progress(self, percentage: int) -> None: """Handle download progress update.""" - if self._progress_dialog: + if self._progress_dialog and not self._download_cancelled: self._progress_dialog.setValue(percentage) self._progress_dialog.setLabelText(f'Downloading update... {percentage}%') @@ -365,6 +376,9 @@ def _on_download_finished(self, success: bool) -> None: self._progress_dialog.close() self._progress_dialog = None + if self._download_cancelled: + return + if not success: self.tray.showMessage( 'Download Failed', From 9e17f60ba588867a7c9fa3831f6fc85e30b288c3 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 14:46:32 -0800 Subject: [PATCH 17/40] Add periodic auto-update checking Add auto_update_interval_hours config field (default: 24 hours, 0 to disable). TrayScreen starts a QTimer that triggers the existing _on_check_updates handler at the configured interval. The timer is restarted when update source or channel settings change. Also extract menu building into _build_menu to keep __init__ under the statement limit. --- synodic_client/application/screen/tray.py | 34 +++++++++++++++++++++-- synodic_client/config.py | 4 +++ synodic_client/resolution.py | 9 ++++-- synodic_client/updater.py | 7 +++++ 4 files changed, 49 insertions(+), 5 deletions(-) diff --git a/synodic_client/application/screen/tray.py b/synodic_client/application/screen/tray.py index af955c7..4aa28c6 100644 --- a/synodic_client/application/screen/tray.py +++ b/synodic_client/application/screen/tray.py @@ -3,7 +3,7 @@ import logging from typing import LiteralString -from PySide6.QtCore import QObject, QThread, Signal +from PySide6.QtCore import QObject, QThread, QTimer, Signal from PySide6.QtGui import QAction, QIcon from PySide6.QtWidgets import ( QApplication, @@ -23,7 +23,7 @@ from synodic_client.application.screen.screen import MainWindow from synodic_client.client import Client from synodic_client.logging import open_log -from synodic_client.resolution import resolve_config, update_and_resolve +from synodic_client.resolution import resolve_config, resolve_update_config, update_and_resolve from synodic_client.updater import GITHUB_REPO_URL, UpdateChannel, UpdateInfo logger = logging.getLogger(__name__) @@ -97,9 +97,16 @@ def __init__(self, app: QApplication, client: Client, icon_name: LiteralString, self.tray.setIcon(self.tray_icon) self.tray.messageClicked.connect(self._on_notification_clicked) self.tray.activated.connect(self._on_tray_activated) - self.tray.setVisible(True) + self._build_menu(app, window) + + # Periodic auto-update checking + self._auto_update_timer: QTimer | None = None + self._start_auto_update_timer() + + def _build_menu(self, app: QApplication, window: MainWindow) -> None: + """Build the tray context menu.""" self.menu = QMenu() self.open_action = QAction('Open', self.menu) @@ -152,6 +159,25 @@ def __init__(self, app: QApplication, client: Client, icon_name: LiteralString, self.tray.setContextMenu(self.menu) + def _start_auto_update_timer(self) -> None: + """Start (or restart) the periodic auto-update timer from config.""" + if self._auto_update_timer is not None: + self._auto_update_timer.stop() + self._auto_update_timer = None + + config = resolve_update_config(resolve_config()) + interval_hours = config.auto_update_interval_hours + if interval_hours <= 0: + logger.info('Automatic update checking is disabled') + return + + interval_ms = interval_hours * 60 * 60 * 1000 + self._auto_update_timer = QTimer() + self._auto_update_timer.setInterval(interval_ms) + self._auto_update_timer.timeout.connect(self._on_check_updates) + self._auto_update_timer.start() + logger.info('Automatic update checking enabled (every %d hour(s))', interval_hours) + def _sync_channel_checks(self) -> None: """Synchronize channel checkmarks with the current config.""" config = resolve_config() @@ -215,6 +241,7 @@ def _browse() -> None: update_cfg = update_and_resolve(config) self._client.initialize_updater(update_cfg) + self._start_auto_update_timer() logger.info( 'Updater re-initialized (channel: %s, source: %s)', update_cfg.channel.name, update_cfg.repo_url ) @@ -228,6 +255,7 @@ def _on_channel_changed(self, channel: UpdateChannel) -> None: update_cfg = update_and_resolve(config) self._sync_channel_checks() self._client.initialize_updater(update_cfg) + self._start_auto_update_timer() logger.info('Updater re-initialized (channel: %s, source: %s)', update_cfg.channel.name, update_cfg.repo_url) def _on_check_updates(self) -> None: diff --git a/synodic_client/config.py b/synodic_client/config.py index 76d3aa9..fa3fe75 100644 --- a/synodic_client/config.py +++ b/synodic_client/config.py @@ -39,6 +39,10 @@ class _ConfigBase(BaseModel): # None means auto-detect from sys.frozen. update_channel: str | None = None + # Interval in hours between automatic update checks. + # 0 disables automatic checking. None uses the default (24 hours). + auto_update_interval_hours: int | None = None + class LocalConfiguration(_ConfigBase): """Portable configuration embedded next to the executable. diff --git a/synodic_client/resolution.py b/synodic_client/resolution.py index 1e5388c..dafe1b6 100644 --- a/synodic_client/resolution.py +++ b/synodic_client/resolution.py @@ -15,7 +15,7 @@ _load_local_config, save_config, ) -from synodic_client.updater import GITHUB_REPO_URL, UpdateChannel, UpdateConfig +from synodic_client.updater import DEFAULT_AUTO_UPDATE_INTERVAL_HOURS, GITHUB_REPO_URL, UpdateChannel, UpdateConfig logger = logging.getLogger(__name__) @@ -73,7 +73,12 @@ def resolve_update_config(config: GlobalConfiguration) -> UpdateConfig: channel = UpdateChannel.DEVELOPMENT if is_dev else UpdateChannel.STABLE repo_url = config.update_source or GITHUB_REPO_URL - return UpdateConfig(channel=channel, repo_url=repo_url) + + interval = config.auto_update_interval_hours + if interval is None: + interval = DEFAULT_AUTO_UPDATE_INTERVAL_HOURS + + return UpdateConfig(channel=channel, repo_url=repo_url, auto_update_interval_hours=interval) def update_and_resolve(config: GlobalConfiguration) -> UpdateConfig: diff --git a/synodic_client/updater.py b/synodic_client/updater.py index 109e33c..a09edec 100644 --- a/synodic_client/updater.py +++ b/synodic_client/updater.py @@ -58,6 +58,10 @@ class UpdateInfo: _velopack_info: Any = field(default=None, repr=False) +# Default interval for automatic update checks (hours) +DEFAULT_AUTO_UPDATE_INTERVAL_HOURS = 24 + + @dataclass class UpdateConfig: """Configuration for the updater.""" @@ -68,6 +72,9 @@ class UpdateConfig: # Channel determines whether to use dev or stable releases channel: UpdateChannel = UpdateChannel.STABLE + # Interval in hours between automatic update checks (0 = disabled) + auto_update_interval_hours: int = DEFAULT_AUTO_UPDATE_INTERVAL_HOURS + @property def channel_name(self) -> str: """Get the channel name for Velopack.""" From e3d0e916bc8029f039a2bda249fcde6a0b420c86 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 14:48:19 -0800 Subject: [PATCH 18/40] Remove duplicate schema types, consolidate UpdateChannel Delete synodic_client/schema.py which contained VersionInformation, UpdateChannel (StrEnum), UpdateStatus, UpdateCheckResult, and UpdateProgress none were used outside of __init__.py re-exports. The canonical UpdateChannel in updater.py is now a StrEnum (was Enum/auto), replacing the duplicate definition. UpdateState remains as the single status enum. Cleans up __init__.py exports to only re-export types from updater.py. --- synodic_client/__init__.py | 12 +--------- synodic_client/schema.py | 49 -------------------------------------- synodic_client/updater.py | 8 +++---- 3 files changed, 5 insertions(+), 64 deletions(-) delete mode 100644 synodic_client/schema.py diff --git a/synodic_client/__init__.py b/synodic_client/__init__.py index f080961..1a0a256 100644 --- a/synodic_client/__init__.py +++ b/synodic_client/__init__.py @@ -3,14 +3,8 @@ import importlib.metadata from synodic_client.client import Client -from synodic_client.schema import ( - UpdateChannel, - UpdateCheckResult, - UpdateProgress, - UpdateStatus, - VersionInformation, -) from synodic_client.updater import ( + UpdateChannel, UpdateConfig, UpdateInfo, Updater, @@ -26,12 +20,8 @@ '__version__', 'Client', 'UpdateChannel', - 'UpdateCheckResult', 'UpdateConfig', 'UpdateInfo', - 'UpdateProgress', 'UpdateState', - 'UpdateStatus', 'Updater', - 'VersionInformation', ] diff --git a/synodic_client/schema.py b/synodic_client/schema.py deleted file mode 100644 index 08d93e1..0000000 --- a/synodic_client/schema.py +++ /dev/null @@ -1,49 +0,0 @@ -"""Schema for the client""" - -from enum import StrEnum - -from pydantic import BaseModel - - -class VersionInformation(BaseModel): - """Comparable information that can be extracted from a Python package""" - - version: str - - -class UpdateChannel(StrEnum): - """Update channel for selecting release types.""" - - STABLE = 'stable' - DEVELOPMENT = 'development' - - -class UpdateStatus(StrEnum): - """Status of an update check or operation.""" - - NO_UPDATE = 'no_update' - UPDATE_AVAILABLE = 'update_available' - DOWNLOADING = 'downloading' - DOWNLOADED = 'downloaded' - APPLYING = 'applying' - APPLIED = 'applied' - FAILED = 'failed' - ROLLBACK_REQUIRED = 'rollback_required' - - -class UpdateCheckResult(BaseModel): - """Result of an update check operation.""" - - status: UpdateStatus - current_version: str - latest_version: str | None = None - download_url: str | None = None - error_message: str | None = None - - -class UpdateProgress(BaseModel): - """Progress information for an update download.""" - - bytes_downloaded: int - total_bytes: int | None = None - percentage: float | None = None diff --git a/synodic_client/updater.py b/synodic_client/updater.py index a09edec..430e8f3 100644 --- a/synodic_client/updater.py +++ b/synodic_client/updater.py @@ -11,7 +11,7 @@ import sys from collections.abc import Callable from dataclasses import dataclass, field -from enum import Enum, auto +from enum import Enum, StrEnum, auto from typing import Any import velopack @@ -26,11 +26,11 @@ GITHUB_REPO_URL = 'https://github.com/synodic/synodic-client' -class UpdateChannel(Enum): +class UpdateChannel(StrEnum): """Update channel selection.""" - STABLE = auto() - DEVELOPMENT = auto() + STABLE = 'stable' + DEVELOPMENT = 'development' class UpdateState(Enum): From c3a77ef9f9cd095d0d860303ed301e395afeaa2a Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 18:43:16 -0800 Subject: [PATCH 19/40] Update Chore --- examples/python-dev/README.md | 23 ++- examples/python-dev/porringer.json | 29 +++- pdm.lock | 8 +- pyproject.toml | 2 +- synodic_client/application/qt.py | 5 +- synodic_client/application/screen/install.py | 141 ++++++++++++------- tests/unit/test_install_preview.py | 40 +++--- tests/unit/test_protocol.py | 5 +- tool/scripts/setup_dev.py | 5 +- 9 files changed, 167 insertions(+), 91 deletions(-) diff --git a/examples/python-dev/README.md b/examples/python-dev/README.md index d1a08d2..df355da 100644 --- a/examples/python-dev/README.md +++ b/examples/python-dev/README.md @@ -6,19 +6,26 @@ This example demonstrates using Porringer to set up a Python development environ The `porringer.json` manifest defines: +- **Metadata**: Display information for GUI consumers (install preview) + - `name` - Human-readable project name + - `description` - Short description shown in the install preview header + - `author` - Author or organization name + - `url` - Project URL for reference - **Prerequisites**: Ensures essential plugins are available - `pip` and `pipx` - Always required for Python package management - `winget` - Required on Windows to support native tool discovery - `apt` - Required on Linux for native package management - `brew` - Required on macOS for native package management - **pip packages**: Development tools installed in the current environment - - `ruff` - Fast Python linter and formatter + - `ruff>=0.8.0` - Fast Python linter and formatter (with version constraint) - `pyrefly` - Static type checker - - `pytest` - Testing framework + - `pytest>=9.0` - Testing framework (with version constraint) - `pytest-cov` - Coverage plugin for pytest - **pipx packages**: CLI tools installed in isolated environments - `pdm` - Python project manager +Packages can be specified as plain strings (`"ruff"`) or as objects with optional `description` and `platforms` fields. Version constraints use PEP 440 syntax (e.g., `"ruff>=0.8.0"`, `"pydantic>=2,<3"`). + ## Usage ### Preview what will happen @@ -39,6 +46,12 @@ porringer install --path examples/python-dev porringer install --path examples/python-dev --yes ``` +### Upgrade existing packages + +```shell +porringer install --path examples/python-dev --mode upgrade +``` + ## Platform-Specific Prerequisites The manifest automatically filters prerequisites based on your platform: @@ -56,6 +69,10 @@ You can also embed this manifest in a `pyproject.toml` file: ```toml [tool.porringer] version = "1" +name = "Python Dev Environment" +description = "Common linting, formatting, and testing tools" +author = "Synodic Software" +url = "https://github.com/synodic/porringer" [[tool.porringer.prerequisites]] plugin = "pip" @@ -76,6 +93,6 @@ plugin = "brew" platforms = ["darwin"] [tool.porringer.packages] -pip = ["ruff", "pyrefly", "pytest", "pytest-cov"] +pip = ["ruff>=0.8.0", "pyrefly", "pytest>=9.0", "pytest-cov"] pipx = ["pdm"] ``` diff --git a/examples/python-dev/porringer.json b/examples/python-dev/porringer.json index 1e4904d..164e328 100644 --- a/examples/python-dev/porringer.json +++ b/examples/python-dev/porringer.json @@ -1,5 +1,9 @@ { "version": "1", + "name": "Python Dev Environment", + "description": "Common linting, formatting, and testing tools for Python development", + "author": "Synodic Software", + "url": "https://github.com/synodic/porringer", "prerequisites": [ { "plugin": "pip" @@ -28,13 +32,28 @@ ], "packages": { "pip": [ - "ruff", - "pyrefly", - "pytest", - "pytest-cov" + { + "name": "ruff>=0.8.0", + "description": "Fast Python linter and formatter" + }, + { + "name": "pyrefly", + "description": "Static type checker" + }, + { + "name": "pytest>=9.0", + "description": "Testing framework" + }, + { + "name": "pytest-cov", + "description": "Coverage plugin for pytest" + } ], "pipx": [ - "pdm" + { + "name": "pdm", + "description": "Python project manager" + } ] } } \ No newline at end of file diff --git a/pdm.lock b/pdm.lock index 2fb83e0..8a96c4e 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "build", "lint", "test"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:94e420daa6986184f50da1e0436e0a50f9b2eaec42f481a6b8ab1ba23896af2a" +content_hash = "sha256:cadcde3a5fdd76d7986d573eab66df44398e7d3ffb5a1b0107aed279db31d2f7" [[metadata.targets]] requires_python = ">=3.14,<3.15" @@ -317,7 +317,7 @@ files = [ [[package]] name = "porringer" -version = "0.1.2.dev7" +version = "0.2.0" requires_python = ">=3.14" summary = "" groups = ["default"] @@ -330,8 +330,8 @@ dependencies = [ "userpath>=1.9.2", ] files = [ - {file = "porringer-0.1.2.dev7-py3-none-any.whl", hash = "sha256:159c4c5d1505c3e0d861cda6d6f3261d051a1fbd9692cf2f73b75fab214bf7ab"}, - {file = "porringer-0.1.2.dev7.tar.gz", hash = "sha256:3a0ca76854d658a70c0822249dad64bf0938882992664eedb2ecf572417b4162"}, + {file = "porringer-0.2.0-py3-none-any.whl", hash = "sha256:b55225b899a90cd9c2ad933630c6ad635652f0fffd2bf06aafa30bd8827a8d69"}, + {file = "porringer-0.2.0.tar.gz", hash = "sha256:deb42e20d2f6936a3e9ed383425967246864b556a7b15751ef67a8a9ebf5d28e"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 01945c5..626f217 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ requires-python = ">=3.14, <3.15" dependencies = [ "pyside6>=6.10.2", "packaging>=26.0", - "porringer>=0.1.2.dev7", + "porringer>=0.2.0", "velopack>=0.0.1369.dev7516", ] diff --git a/synodic_client/application/qt.py b/synodic_client/application/qt.py index 312657d..4a63125 100644 --- a/synodic_client/application/qt.py +++ b/synodic_client/application/qt.py @@ -5,7 +5,7 @@ from collections.abc import Callable from urllib.parse import parse_qs, urlparse -from porringer.api import API, APIParameters +from porringer.api import API from porringer.schema import ListPluginsParameters, LocalConfiguration from PySide6.QtCore import Qt from PySide6.QtGui import QIcon @@ -70,8 +70,7 @@ def _init_services(logger: logging.Logger) -> tuple[Client, API]: client = Client() local_config = LocalConfiguration() - api_params = APIParameters(logger) - porringer = API(local_config, api_params) + porringer = API(local_config) update_config = resolve_update_config(config) client.initialize_updater(update_config) diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index aa260b8..fd10d4e 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -24,15 +24,17 @@ from urllib.request import url2pathname from porringer.schema import ( + BatchSetupResults, CancellationToken, DownloadParameters, + ProgressEventKind, SetupAction, + SetupActionResult, SetupActionType, SetupParameters, SetupResults, - ThreadSafeProgressAdapter, ) -from PySide6.QtCore import QObject, QThread, QTimer, Signal +from PySide6.QtCore import QObject, QThread, Signal from PySide6.QtWidgets import ( QHBoxLayout, QHeaderView, @@ -54,39 +56,38 @@ ACTION_TYPE_LABELS = { SetupActionType.CHECK_PLUGIN: 'Check Plugin', - SetupActionType.INSTALL_PACKAGE: 'Install Package', + SetupActionType.PACKAGE: 'Package', SetupActionType.RUN_COMMAND: 'Run Command', } class InstallWorker(QObject): - """Background worker that executes setup actions via porringer.""" + """Background worker that executes setup actions via porringer. + + Uses the ``execute_stream`` async generator to consume progress events + and emits per-action progress signals for GUI updates. + """ finished = Signal(object) # SetupResults + progress = Signal(object, object) # (SetupAction, SetupActionResult | None) error = Signal(str) def __init__( self, porringer: API, - actions: list[SetupAction], - manifest_path: Path, - adapter: ThreadSafeProgressAdapter, + preview: SetupResults, cancellation_token: CancellationToken, ) -> None: """Initialize the worker. Args: porringer: The porringer API instance. - actions: Previewed actions to execute. - manifest_path: Path to the downloaded manifest. - adapter: Thread-safe progress adapter for GUI updates. + preview: The preview results containing actions and manifest_path. cancellation_token: Token for cooperative cancellation. """ super().__init__() self._porringer = porringer - self._actions = actions - self._manifest_path = manifest_path - self._adapter = adapter + self._preview = preview self._cancellation_token = cancellation_token def run(self) -> None: @@ -95,25 +96,37 @@ def run(self) -> None: loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) try: - results = loop.run_until_complete( - self._porringer.update.execute_single_async( - self._actions, - self._manifest_path, - SetupParameters(), - progress_callback=self._adapter.callback, - cancellation_token=self._cancellation_token, - ) - ) + results = loop.run_until_complete(self._execute()) self.finished.emit(results) finally: loop.close() except asyncio.CancelledError: - # Cancellation is expected — emit an empty result - self.finished.emit(SetupResults(actions=self._actions)) + self.finished.emit(SetupResults(actions=self._preview.actions)) except Exception as exc: logger.exception('Install execution failed') self.error.emit(str(exc)) + async def _execute(self) -> SetupResults: + """Stream execution events and collect results.""" + previews = BatchSetupResults(manifest_results=[self._preview], failed_paths=[]) + params = SetupParameters() + collected: list[SetupActionResult] = [] + + async for event in self._porringer.update.execute_stream(previews, params): + if self._cancellation_token.is_cancelled: + raise asyncio.CancelledError + + if event.kind == ProgressEventKind.ACTION_COMPLETED and event.result: + collected.append(event.result) + self.progress.emit(event.action, event.result) + + return SetupResults( + actions=self._preview.actions, + results=collected, + manifest_path=self._preview.manifest_path, + metadata=self._preview.metadata, + ) + class InstallPreviewWindow(QMainWindow): """Standalone window that previews and executes a URI-based manifest install.""" @@ -136,7 +149,6 @@ def __init__(self, porringer: API, manifest_url: str, parent: QWidget | None = N self._worker: InstallWorker | None = None self._progress_dialog: QProgressDialog | None = None self._cancellation_token: CancellationToken | None = None - self._progress_timer: QTimer | None = None self._completed_count = 0 self.setWindowTitle('Install Preview') @@ -156,6 +168,22 @@ def _init_ui(self) -> None: self._url_label.setWordWrap(True) layout.addWidget(self._url_label) + # Metadata labels (populated after preview completes) + self._name_label = QLabel() + self._name_label.setStyleSheet('font-size: 14px; font-weight: bold;') + self._name_label.hide() + layout.addWidget(self._name_label) + + self._description_label = QLabel() + self._description_label.setWordWrap(True) + self._description_label.hide() + layout.addWidget(self._description_label) + + self._meta_label = QLabel() + self._meta_label.setStyleSheet('color: grey;') + self._meta_label.hide() + layout.addWidget(self._meta_label) + # Status label (shown during download/preview) self._status_label = QLabel() layout.addWidget(self._status_label) @@ -243,6 +271,25 @@ def _on_preview_ready(self, preview: SetupResults, manifest_path: str, temp_dir_ # Keep the temp directory alive until the window closes self._temp_dir_path = temp_dir_path + # Display manifest metadata if available + metadata = preview.metadata + if metadata: + if metadata.name: + self._name_label.setText(metadata.name) + self._name_label.show() + self.setWindowTitle(f'Install Preview — {metadata.name}') + if metadata.description: + self._description_label.setText(metadata.description) + self._description_label.show() + meta_parts: list[str] = [] + if metadata.author: + meta_parts.append(f'Author: {metadata.author}') + if metadata.url: + meta_parts.append(f'URL: {metadata.url}') + if meta_parts: + self._meta_label.setText(' | '.join(meta_parts)) + self._meta_label.show() + if not preview.actions: self._status_label.setText('No actions to perform — the manifest is empty.') return @@ -265,8 +312,8 @@ def _populate_table(self, actions: list[SetupAction]) -> None: for row, action in enumerate(actions): self._table.setItem(row, 0, QTableWidgetItem(ACTION_TYPE_LABELS.get(action.action_type, '?'))) self._table.setItem(row, 1, QTableWidgetItem(action.plugin or '')) - self._table.setItem(row, 2, QTableWidgetItem(action.package or '')) - self._table.setItem(row, 3, QTableWidgetItem(action.description)) + self._table.setItem(row, 2, QTableWidgetItem(str(action.package) if action.package else '')) + self._table.setItem(row, 3, QTableWidgetItem(action.package_description or action.description)) # --- Install execution --- @@ -280,7 +327,6 @@ def _on_install(self) -> None: total = len(self._preview.actions) self._cancellation_token = CancellationToken() - adapter = ThreadSafeProgressAdapter() # Progress dialog self._progress_dialog = QProgressDialog( @@ -296,24 +342,17 @@ def _on_install(self) -> None: self._progress_dialog.canceled.connect(self._on_cancel) self._progress_dialog.show() - # Poll the adapter periodically from the GUI thread - self._progress_timer = QTimer(self) - self._progress_timer.setInterval(100) - self._progress_timer.timeout.connect(lambda: self._drain_progress(adapter)) - self._progress_timer.start() - # Worker thread self._thread = QThread() self._worker = InstallWorker( self._porringer, - self._preview.actions, - self._manifest_path, - adapter, + self._preview, self._cancellation_token, ) self._worker.moveToThread(self._thread) self._thread.started.connect(self._worker.run) + self._worker.progress.connect(self._on_action_progress) self._worker.finished.connect(self._on_install_finished) self._worker.error.connect(self._on_install_error) self._worker.finished.connect(self._thread.quit) @@ -323,19 +362,18 @@ def _on_install(self) -> None: self._thread.start() - def _drain_progress(self, adapter: ThreadSafeProgressAdapter) -> None: - """Process queued progress updates from the adapter.""" - for action, result in adapter.drain(): - self._completed_count += 1 - label = action.description - if result and result.skipped: - label += f' (skipped: {result.skip_reason})' - elif result and not result.success: - label += f' (FAILED: {result.message})' + def _on_action_progress(self, action: SetupAction, result: SetupActionResult) -> None: + """Handle a single action completion from the worker.""" + self._completed_count += 1 + label = action.description + if result.skipped: + label += f' (skipped: {result.skip_reason})' + elif not result.success: + label += f' (FAILED: {result.message})' - if self._progress_dialog: - self._progress_dialog.setValue(self._completed_count) - self._progress_dialog.setLabelText(label) + if self._progress_dialog: + self._progress_dialog.setValue(self._completed_count) + self._progress_dialog.setLabelText(label) def _on_cancel(self) -> None: """Handle cancel button on the progress dialog.""" @@ -374,10 +412,7 @@ def _on_install_error(self, message: str) -> None: self._install_btn.setEnabled(True) def _cleanup_progress(self) -> None: - """Stop the progress timer and close the dialog.""" - if self._progress_timer: - self._progress_timer.stop() - self._progress_timer = None + """Close the progress dialog.""" if self._progress_dialog: self._progress_dialog.close() self._progress_dialog = None diff --git a/tests/unit/test_install_preview.py b/tests/unit/test_install_preview.py index 1ef167f..c998bb9 100644 --- a/tests/unit/test_install_preview.py +++ b/tests/unit/test_install_preview.py @@ -8,9 +8,11 @@ from porringer.schema import ( CancellationToken, DownloadResult, + ProgressEvent, + ProgressEventKind, + SetupActionResult, SetupActionType, SetupResults, - ThreadSafeProgressAdapter, ) from synodic_client.application.qt import parse_uri @@ -59,7 +61,7 @@ class TestInstallPreviewWindow: @staticmethod def _make_action( - action_type: str = 'INSTALL_PACKAGE', + action_type: str = 'PACKAGE', description: str = 'Install test', plugin: str = 'pip', package: str = 'requests', @@ -88,41 +90,47 @@ class TestInstallWorker: def test_worker_emits_finished_on_success() -> None: """Verify worker emits finished signal with results.""" porringer = MagicMock() - expected = SetupResults(actions=[]) + preview = SetupResults(actions=[]) + + action = MagicMock() + result = MagicMock(spec=SetupActionResult) + completed_event = ProgressEvent( + kind=ProgressEventKind.ACTION_COMPLETED, + action=action, + result=result, + ) - # Make execute_single_async an awaitable that returns expected - async def mock_execute(*args, **kwargs): # noqa: ANN002, ANN003 - return expected + async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 + yield completed_event - porringer.update.execute_single_async = mock_execute + porringer.update.execute_stream = mock_stream - adapter = MagicMock(spec=ThreadSafeProgressAdapter) token = CancellationToken() - - worker = InstallWorker(porringer, [], Path('/tmp/test'), adapter, token) + worker = InstallWorker(porringer, preview, token) received: list[SetupResults] = [] worker.finished.connect(received.append) worker.run() assert len(received) == 1 - assert received[0] is expected + assert received[0].actions == preview.actions @staticmethod def test_worker_emits_error_on_failure() -> None: """Verify worker emits error signal on exception.""" porringer = MagicMock() + preview = SetupResults(actions=[]) - async def mock_execute(*args, **kwargs): # noqa: ANN002, ANN003 + async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 + if False: + yield # pragma: no cover — establishes async generator protocol msg = 'boom' raise RuntimeError(msg) - porringer.update.execute_single_async = mock_execute + porringer.update.execute_stream = mock_stream - adapter = MagicMock(spec=ThreadSafeProgressAdapter) token = CancellationToken() - - worker = InstallWorker(porringer, [], Path('/tmp/test'), adapter, token) + worker = InstallWorker(porringer, preview, token) errors: list[str] = [] worker.error.connect(errors.append) diff --git a/tests/unit/test_protocol.py b/tests/unit/test_protocol.py index d598d21..6349185 100644 --- a/tests/unit/test_protocol.py +++ b/tests/unit/test_protocol.py @@ -2,6 +2,7 @@ import sys import winreg +from pathlib import Path from unittest.mock import MagicMock, patch import pytest @@ -121,7 +122,7 @@ def test_register_creates_valid_registry_entries() -> None: assert description == 'Synodic Client Protocol' url_protocol, _ = winreg.QueryValueEx(key, 'URL Protocol') - assert url_protocol == '' + assert not url_protocol # Verify the command key command_path = f'{key_path}\\shell\\open\\command' @@ -190,8 +191,6 @@ def test_protocol_is_registered() -> None: @pytest.mark.skipif(sys.platform != 'win32', reason='Windows only') def test_command_points_to_existing_exe() -> None: """Verify the registered command points to an exe path (may not exist in CI).""" - from pathlib import Path - key_path = f'Software\\Classes\\{PROTOCOL_NAME}\\shell\\open\\command' try: with winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path) as key: diff --git a/tool/scripts/setup_dev.py b/tool/scripts/setup_dev.py index 08836f9..026bcef 100644 --- a/tool/scripts/setup_dev.py +++ b/tool/scripts/setup_dev.py @@ -11,7 +11,7 @@ import sys from pathlib import Path -from porringer.api import API, APIParameters +from porringer.api import API from porringer.schema import LocalConfiguration from rich.console import Console @@ -32,8 +32,7 @@ def main() -> None: sys.exit(1) local_config = LocalConfiguration() - api_params = APIParameters(logger) - porringer = API(local_config, api_params) + porringer = API(local_config) registered = {d.path.resolve() for d in porringer.cache.list_directories()} added = 0 From ff3a1868945679396cf2896dfba6ecc1abeb1967 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 19:33:10 -0800 Subject: [PATCH 20/40] Async Install Simplification --- pyproject.toml | 1 + synodic_client/application/screen/install.py | 151 ++++++++++++++----- tests/unit/test_install_preview.py | 149 +++++++++++++++++- tool/scripts/dev.py | 30 +++- 4 files changed, 288 insertions(+), 43 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 626f217..984c3a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,6 +78,7 @@ allow-prereleases = true [tool.pdm.scripts] analyze = "ruff check synodic_client tests" dev = { call = "tool.scripts.dev:main" } +dev-uri = { call = "tool.scripts.dev:main_uri" } format = "ruff format" lint = { composite = ["analyze", "format", "type-check"] } package = { call = "tool.scripts.package:main" } diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index fd10d4e..3993c30 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -93,13 +93,8 @@ def __init__( def run(self) -> None: """Execute the setup actions on this thread's event loop.""" try: - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - try: - results = loop.run_until_complete(self._execute()) - self.finished.emit(results) - finally: - loop.close() + results = asyncio.run(self._execute()) + self.finished.emit(results) except asyncio.CancelledError: self.finished.emit(SetupResults(actions=self._preview.actions)) except Exception as exc: @@ -190,8 +185,8 @@ def _init_ui(self) -> None: # Actions table self._table = QTableWidget() - self._table.setColumnCount(4) - self._table.setHorizontalHeaderLabels(['Type', 'Plugin', 'Package', 'Description']) + self._table.setColumnCount(5) + self._table.setHorizontalHeaderLabels(['Type', 'Plugin', 'Package', 'Description', 'Status']) self._table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers) self._table.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) self._table.setAlternatingRowColors(True) @@ -200,6 +195,7 @@ def _init_ui(self) -> None: header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents) header.setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents) header.setSectionResizeMode(3, QHeaderView.ResizeMode.Stretch) + header.setSectionResizeMode(4, QHeaderView.ResizeMode.ResizeToContents) layout.addWidget(self._table) # Button bar @@ -247,7 +243,9 @@ def start(self) -> None: self._preview_worker.moveToThread(self._thread) self._thread.started.connect(self._preview_worker.run) - self._preview_worker.finished.connect(self._on_preview_ready) + self._preview_worker.preview_ready.connect(self._on_preview_ready) + self._preview_worker.action_checked.connect(self._on_action_checked) + self._preview_worker.finished.connect(self._on_preview_complete) self._preview_worker.error.connect(self._on_preview_error) self._preview_worker.finished.connect(self._thread.quit) self._preview_worker.error.connect(self._thread.quit) @@ -271,30 +269,13 @@ def _on_preview_ready(self, preview: SetupResults, manifest_path: str, temp_dir_ # Keep the temp directory alive until the window closes self._temp_dir_path = temp_dir_path - # Display manifest metadata if available - metadata = preview.metadata - if metadata: - if metadata.name: - self._name_label.setText(metadata.name) - self._name_label.show() - self.setWindowTitle(f'Install Preview — {metadata.name}') - if metadata.description: - self._description_label.setText(metadata.description) - self._description_label.show() - meta_parts: list[str] = [] - if metadata.author: - meta_parts.append(f'Author: {metadata.author}') - if metadata.url: - meta_parts.append(f'URL: {metadata.url}') - if meta_parts: - self._meta_label.setText(' | '.join(meta_parts)) - self._meta_label.show() + self._show_metadata(preview) if not preview.actions: self._status_label.setText('No actions to perform — the manifest is empty.') return - self._status_label.setText(f'{len(preview.actions)} action(s) will be performed:') + self._status_label.setText(f'{len(preview.actions)} action(s) — checking status…') self._populate_table(preview.actions) self._install_btn.setEnabled(True) @@ -304,6 +285,70 @@ def _on_preview_error(self, message: str) -> None: QMessageBox.critical(self, 'Preview Failed', message) self.close() + def _show_metadata(self, preview: SetupResults) -> None: + """Display manifest metadata labels if available.""" + metadata = preview.metadata + if not metadata: + return + + if metadata.name: + self._name_label.setText(metadata.name) + self._name_label.show() + self.setWindowTitle(f'Install Preview — {metadata.name}') + if metadata.description: + self._description_label.setText(metadata.description) + self._description_label.show() + + meta_parts: list[str] = [] + if metadata.author: + meta_parts.append(f'Author: {metadata.author}') + if metadata.url: + meta_parts.append(f'URL: {metadata.url}') + if meta_parts: + self._meta_label.setText(' | '.join(meta_parts)) + self._meta_label.show() + + # --- Dry-run callbacks --- + + def _on_action_checked(self, row: int, result: SetupActionResult) -> None: + """Update a single table row with the dry-run result.""" + item = self._table.item(row, 4) + if item is None: + return + + if result.skipped: + label = result.skip_reason or 'Satisfied' + item.setText(label) + item.setForeground(self.palette().mid()) + else: + item.setText('Needed') + item.setForeground(self.palette().text()) + + def _on_preview_complete(self) -> None: + """Finalize the preview after the dry-run check completes.""" + if self._preview is None or not self._preview.actions: + return + + total = self._table.rowCount() + satisfied = 0 + for row in range(total): + item = self._table.item(row, 4) + if item is None: + continue + # Rows still showing "Checking…" were not reported — assume needed + if item.text() == 'Checking…': + item.setText('Needed') + item.setForeground(self.palette().text()) + if item.text() != 'Needed': + satisfied += 1 + needed = total - satisfied + + if needed == 0: + self._status_label.setText(f'{total} action(s) — all already satisfied.') + self._install_btn.setEnabled(False) + else: + self._status_label.setText(f'{total} action(s): {needed} needed, {satisfied} already satisfied.') + # --- Table --- def _populate_table(self, actions: list[SetupAction]) -> None: @@ -315,6 +360,10 @@ def _populate_table(self, actions: list[SetupAction]) -> None: self._table.setItem(row, 2, QTableWidgetItem(str(action.package) if action.package else '')) self._table.setItem(row, 3, QTableWidgetItem(action.package_description or action.description)) + status_item = QTableWidgetItem('Checking…') + status_item.setForeground(self.palette().placeholderText()) + self._table.setItem(row, 4, status_item) + # --- Install execution --- def _on_install(self) -> None: @@ -419,9 +468,18 @@ def _cleanup_progress(self) -> None: class PreviewWorker(QObject): - """Background worker that downloads a manifest and runs a preview.""" + """Background worker that downloads a manifest, previews actions, and checks status. + + Combines three stages into a single background pipeline: + + 1. Download the manifest (if remote). + 2. Run ``preview_single`` to list intended actions. + 3. Perform a ``dry_run`` to determine which actions are already satisfied. + """ - finished = Signal(object, str, str) # (SetupResults, manifest_path, temp_dir_path) + preview_ready = Signal(object, str, str) # (SetupResults, manifest_path, temp_dir_path) + action_checked = Signal(int, object) # (row_index, SetupActionResult) + finished = Signal() error = Signal(str) def __init__(self, porringer: API, url: str) -> None: @@ -431,7 +489,7 @@ def __init__(self, porringer: API, url: str) -> None: self._url = url def run(self) -> None: - """Download the manifest (if remote) and preview setup actions.""" + """Download the manifest, preview actions, and check status via dry-run.""" temp_dir = None try: local_path = resolve_local_path(self._url) @@ -442,7 +500,7 @@ def run(self) -> None: self.error.emit(f'Manifest not found:\n{local_path}') return preview = self._porringer.update.preview_single(local_path) - self.finished.emit(preview, str(local_path), '') + self.preview_ready.emit(preview, str(local_path), '') else: # Remote URL — download to a temp directory temp_dir = tempfile.mkdtemp(prefix='synodic_install_') @@ -457,7 +515,13 @@ def run(self) -> None: return preview = self._porringer.update.preview_single(dest) - self.finished.emit(preview, str(dest), temp_dir) + self.preview_ready.emit(preview, str(dest), temp_dir) + + # Dry-run to check which actions are already satisfied + if preview.actions: + self._run_dry_check(preview) + + self.finished.emit() except Exception as exc: if temp_dir: @@ -465,6 +529,25 @@ def run(self) -> None: logger.exception('Preview failed') self.error.emit(str(exc)) + def _run_dry_check(self, preview: SetupResults) -> None: + """Perform a dry-run and emit per-action status signals.""" + try: + asyncio.run(self._check(preview)) + except Exception as exc: + logger.warning('Dry-run check failed: %s', exc) + + async def _check(self, preview: SetupResults) -> None: + """Stream dry-run events and emit per-action results.""" + previews = BatchSetupResults(manifest_results=[preview], failed_paths=[]) + params = SetupParameters(dry_run=True) + action_indices: dict[int, int] = {id(a): i for i, a in enumerate(preview.actions)} + + async for event in self._porringer.update.execute_stream(previews, params): + if event.kind == ProgressEventKind.ACTION_COMPLETED and event.result and event.action: + row = action_indices.get(id(event.action)) + if row is not None: + self.action_checked.emit(row, event.result) + def resolve_local_path(manifest_ref: str) -> Path | None: r"""Return a ``Path`` if *manifest_ref* points to a local file, else ``None``. diff --git a/tests/unit/test_install_preview.py b/tests/unit/test_install_preview.py index c998bb9..69d9d67 100644 --- a/tests/unit/test_install_preview.py +++ b/tests/unit/test_install_preview.py @@ -12,6 +12,7 @@ ProgressEventKind, SetupActionResult, SetupActionType, + SetupParameters, SetupResults, ) @@ -187,7 +188,7 @@ def test_local_manifest_skips_download(tmp_path: Path) -> None: worker = PreviewWorker(porringer, str(manifest)) results: list[tuple[object, str, str]] = [] - worker.finished.connect(lambda r, p, t: results.append((r, p, t))) + worker.preview_ready.connect(lambda r, p, t: results.append((r, p, t))) worker.run() assert len(results) == 1 @@ -234,8 +235,8 @@ def test_emits_error_on_download_failure() -> None: assert 'Network error' in errors[0] @staticmethod - def test_emits_finished_on_success() -> None: - """Verify PreviewWorker emits finished with SetupResults.""" + def test_emits_preview_ready_on_success() -> None: + """Verify PreviewWorker emits preview_ready with SetupResults.""" porringer = MagicMock() porringer.update.download.return_value = DownloadResult( success=True, @@ -250,8 +251,148 @@ def test_emits_finished_on_success() -> None: worker = PreviewWorker(porringer, 'https://example.com/good.json') results: list[tuple[object, str, str]] = [] - worker.finished.connect(lambda r, p, t: results.append((r, p, t))) + worker.preview_ready.connect(lambda r, p, t: results.append((r, p, t))) worker.run() assert len(results) == 1 assert results[0][0] is expected + + +class TestPreviewWorkerDryRun: + """Tests for PreviewWorker dry-run status check.""" + + @staticmethod + def _make_action( + action_type: str = 'PACKAGE', + description: str = 'Install test', + plugin: str = 'pip', + package: str = 'requests', + ) -> MagicMock: + """Create a mock SetupAction.""" + action = MagicMock() + action.action_type = getattr(SetupActionType, action_type) + action.description = description + action.plugin = plugin + action.package = package + return action + + def test_emits_action_checked_for_each_result(self, tmp_path: Path) -> None: + """Verify worker emits action_checked for each dry-run result.""" + manifest = tmp_path / 'porringer.json' + manifest.write_text('{}') + + porringer = MagicMock() + action1 = self._make_action(package='ruff') + action2 = self._make_action(package='pytest') + preview = SetupResults(actions=[action1, action2]) + porringer.update.preview_single.return_value = preview + + result1 = SetupActionResult( + action=action1, + success=True, + message=None, + skipped=True, + skip_reason='Already installed', + ) + result2 = SetupActionResult( + action=action2, + success=True, + message=None, + skipped=False, + skip_reason=None, + ) + + event1 = ProgressEvent(kind=ProgressEventKind.ACTION_COMPLETED, action=action1, result=result1) + event2 = ProgressEvent(kind=ProgressEventKind.ACTION_COMPLETED, action=action2, result=result2) + + async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 + yield event1 + yield event2 + + porringer.update.execute_stream = mock_stream + + worker = PreviewWorker(porringer, str(manifest)) + + checked: list[tuple[int, SetupActionResult]] = [] + worker.action_checked.connect(lambda row, r: checked.append((row, r))) + worker.run() + + assert len(checked) == 2 # noqa: PLR2004 + assert checked[0] == (0, result1) + assert checked[1] == (1, result2) + assert checked[0][1].skipped is True + assert checked[1][1].skipped is False + + @staticmethod + def test_emits_finished_after_completion(tmp_path: Path) -> None: + """Verify worker emits finished signal after dry-run.""" + manifest = tmp_path / 'porringer.json' + manifest.write_text('{}') + + porringer = MagicMock() + preview = SetupResults(actions=[]) + porringer.update.preview_single.return_value = preview + + worker = PreviewWorker(porringer, str(manifest)) + + finished_count: list[int] = [] + worker.finished.connect(lambda: finished_count.append(1)) + worker.run() + + assert len(finished_count) == 1 + + @staticmethod + def test_finishes_even_when_dry_run_fails(tmp_path: Path) -> None: + """Verify worker emits finished (not error) when dry-run raises.""" + manifest = tmp_path / 'porringer.json' + manifest.write_text('{}') + + porringer = MagicMock() + action = MagicMock() + action.action_type = SetupActionType.PACKAGE + preview = SetupResults(actions=[action]) + porringer.update.preview_single.return_value = preview + + async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 + if False: + yield # pragma: no cover — establishes async generator protocol + msg = 'dry-run boom' + raise RuntimeError(msg) + + porringer.update.execute_stream = mock_stream + + worker = PreviewWorker(porringer, str(manifest)) + + errors: list[str] = [] + finished_count: list[int] = [] + worker.error.connect(errors.append) + worker.finished.connect(lambda: finished_count.append(1)) + worker.run() + + assert len(errors) == 0 + assert len(finished_count) == 1 + + def test_uses_dry_run_parameter(self, tmp_path: Path) -> None: + """Verify the worker passes dry_run=True via SetupParameters.""" + manifest = tmp_path / 'porringer.json' + manifest.write_text('{}') + + porringer = MagicMock() + action = self._make_action() + preview = SetupResults(actions=[action]) + porringer.update.preview_single.return_value = preview + + captured_params: list[SetupParameters] = [] + + async def mock_stream(previews, params, **kwargs): # noqa: ANN001, ANN002, ANN003 + captured_params.append(params) + if False: + yield # pragma: no cover — establishes async generator protocol + + porringer.update.execute_stream = mock_stream + + worker = PreviewWorker(porringer, str(manifest)) + worker.run() + + assert len(captured_params) == 1 + assert captured_params[0].dry_run is True diff --git a/tool/scripts/dev.py b/tool/scripts/dev.py index 2a0dfaf..10ec703 100644 --- a/tool/scripts/dev.py +++ b/tool/scripts/dev.py @@ -3,7 +3,7 @@ Builds the application with PyInstaller and launches the resulting EXE. Skips Velopack packaging entirely for fast iteration. -Invoked via ``pdm run dev``. +Invoked via ``pdm run dev`` or ``pdm run dev-uri``. """ import subprocess @@ -11,9 +11,18 @@ from tool.scripts.common import MAIN_EXE, PACK_DIR, REPO_ROOT, build +_DEFAULT_URI = ( + 'synodic://install?manifest=https://raw.githubusercontent.com/synodic' + '/porringer/development/examples/python-dev/porringer.json' +) -def main() -> None: - """Build with PyInstaller and launch the EXE.""" + +def main(*, uri: str | None = None) -> None: + """Build with PyInstaller and launch the EXE. + + Args: + uri: Optional ``synodic://`` URI to pass as a command-line argument. + """ build() exe_path = PACK_DIR / MAIN_EXE @@ -21,8 +30,19 @@ def main() -> None: print(f'ERROR: EXE not found: {exe_path}', file=sys.stderr) sys.exit(1) - print(f'\nLaunching {exe_path} ...\n') - subprocess.Popen([str(exe_path)], cwd=str(REPO_ROOT)) + cmd = [str(exe_path)] + if uri: + cmd.append(uri) + print(f'\nLaunching {exe_path} with URI:\n {uri}\n') + else: + print(f'\nLaunching {exe_path} ...\n') + + subprocess.Popen(cmd, cwd=str(REPO_ROOT)) + + +def main_uri() -> None: + """Build and launch with the default install URI.""" + main(uri=_DEFAULT_URI) if __name__ == '__main__': From c395d7586a670ea78430b56df657772db6ecd354 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 23:08:13 -0800 Subject: [PATCH 21/40] Update Chore --- examples/python-dev/README.md | 77 +++++-------------- examples/python-dev/porringer.json | 48 ++---------- pdm.lock | 80 +++----------------- pyproject.toml | 2 +- synodic_client/application/screen/install.py | 13 ++-- tests/unit/test_install_preview.py | 36 ++++----- 6 files changed, 64 insertions(+), 192 deletions(-) diff --git a/examples/python-dev/README.md b/examples/python-dev/README.md index df355da..7204aaa 100644 --- a/examples/python-dev/README.md +++ b/examples/python-dev/README.md @@ -4,64 +4,44 @@ This example demonstrates using Porringer to set up a Python development environ ## Manifest Overview -The `porringer.json` manifest defines: - -- **Metadata**: Display information for GUI consumers (install preview) - - `name` - Human-readable project name - - `description` - Short description shown in the install preview header - - `author` - Author or organization name - - `url` - Project URL for reference -- **Prerequisites**: Ensures essential plugins are available - - `pip` and `pipx` - Always required for Python package management - - `winget` - Required on Windows to support native tool discovery - - `apt` - Required on Linux for native package management - - `brew` - Required on macOS for native package management -- **pip packages**: Development tools installed in the current environment - - `ruff>=0.8.0` - Fast Python linter and formatter (with version constraint) - - `pyrefly` - Static type checker - - `pytest>=9.0` - Testing framework (with version constraint) +The `porringer.json` manifest declares the desired **state** using backend identifiers. Porringer resolves each backend to the best available installer at runtime. + +- **`python` backend** (resolved to `uv` or `pip`): Development tools installed in the current environment + - `ruff` - Fast Python linter and formatter + - `pyrefly` - Python type checker + - `pytest` - Testing framework - `pytest-cov` - Coverage plugin for pytest -- **pipx packages**: CLI tools installed in isolated environments - - `pdm` - Python project manager +- **`python-tool` backend** (resolved to `pipx`): CLI tools installed in isolated environments + - `pdm` - Python package and dependency manager -Packages can be specified as plain strings (`"ruff"`) or as objects with optional `description` and `platforms` fields. Version constraints use PEP 440 syntax (e.g., `"ruff>=0.8.0"`, `"pydantic>=2,<3"`). +Packages can be specified as plain strings (`"pytest"`) or as objects with optional `description` and `platforms` fields. Version constraints use PEP 440 syntax (e.g., `"ruff>=0.8.0"`, `"pydantic>=2,<3"`). ## Usage ### Preview what will happen ```shell -porringer install --path examples/python-dev --dry-run +porringer sync --path examples/python-dev --dry-run ``` ### Execute with confirmation ```shell -porringer install --path examples/python-dev +porringer sync --path examples/python-dev ``` ### Execute without confirmation (non-interactive) ```shell -porringer install --path examples/python-dev --yes +porringer sync --path examples/python-dev --yes ``` -### Upgrade existing packages +### Upgrade all packages to latest ```shell -porringer install --path examples/python-dev --mode upgrade +porringer sync --path examples/python-dev --strategy latest ``` -## Platform-Specific Prerequisites - -The manifest automatically filters prerequisites based on your platform: - -| Platform | Checked Prerequisites | -|------------|----------------------| -| Windows | pip, pipx, winget | -| Linux | pip, pipx, apt | -| macOS | pip, pipx, brew | - ## Alternative: pyproject.toml You can also embed this manifest in a `pyproject.toml` file: @@ -69,30 +49,11 @@ You can also embed this manifest in a `pyproject.toml` file: ```toml [tool.porringer] version = "1" -name = "Python Dev Environment" -description = "Common linting, formatting, and testing tools" -author = "Synodic Software" -url = "https://github.com/synodic/porringer" - -[[tool.porringer.prerequisites]] -plugin = "pip" - -[[tool.porringer.prerequisites]] -plugin = "pipx" - -[[tool.porringer.prerequisites]] -plugin = "winget" -platforms = ["win32"] - -[[tool.porringer.prerequisites]] -plugin = "apt" -platforms = ["linux"] -[[tool.porringer.prerequisites]] -plugin = "brew" -platforms = ["darwin"] +[tool.porringer.state] +python = ["ruff", "pyrefly", "pytest", "pytest-cov"] +python-tool = ["pdm"] -[tool.porringer.packages] -pip = ["ruff>=0.8.0", "pyrefly", "pytest>=9.0", "pytest-cov"] -pipx = ["pdm"] +[tool.porringer.preferences] +python = "uv" # optional: prefer uv over pip ``` diff --git a/examples/python-dev/porringer.json b/examples/python-dev/porringer.json index 164e328..2197cff 100644 --- a/examples/python-dev/porringer.json +++ b/examples/python-dev/porringer.json @@ -4,55 +4,23 @@ "description": "Common linting, formatting, and testing tools for Python development", "author": "Synodic Software", "url": "https://github.com/synodic/porringer", - "prerequisites": [ - { - "plugin": "pip" - }, - { - "plugin": "pipx" - }, - { - "plugin": "winget", - "platforms": [ - "win32" - ] - }, - { - "plugin": "apt", - "platforms": [ - "linux" - ] - }, - { - "plugin": "brew", - "platforms": [ - "darwin" - ] - } - ], - "packages": { - "pip": [ + "state": { + "python": [ { - "name": "ruff>=0.8.0", + "name": "ruff", "description": "Fast Python linter and formatter" }, { "name": "pyrefly", - "description": "Static type checker" + "description": "Python type checker" }, - { - "name": "pytest>=9.0", - "description": "Testing framework" - }, - { - "name": "pytest-cov", - "description": "Coverage plugin for pytest" - } + "pytest", + "pytest-cov" ], - "pipx": [ + "python-tool": [ { "name": "pdm", - "description": "Python project manager" + "description": "Python package and dependency manager" } ] } diff --git a/pdm.lock b/pdm.lock index 8a96c4e..4443616 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "build", "lint", "test"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:cadcde3a5fdd76d7986d573eab66df44398e7d3ffb5a1b0107aed279db31d2f7" +content_hash = "sha256:f68812efd67eb605d82fc099cc597df990dcfb0cd023260ca851c2225839b722" [[metadata.targets]] requires_python = ">=3.14,<3.15" @@ -34,22 +34,6 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] -[[package]] -name = "anyio" -version = "4.12.1" -requires_python = ">=3.9" -summary = "High-level concurrency and networking framework on top of asyncio or Trio" -groups = ["default"] -dependencies = [ - "exceptiongroup>=1.0.2; python_version < \"3.11\"", - "idna>=2.8", - "typing-extensions>=4.5; python_version < \"3.13\"", -] -files = [ - {file = "anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c"}, - {file = "anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703"}, -] - [[package]] name = "certifi" version = "2026.1.4" @@ -166,58 +150,18 @@ files = [ {file = "coverage-7.13.2.tar.gz", hash = "sha256:044c6951ec37146b72a50cc81ef02217d27d4c3640efd2640311393cbbf143d3"}, ] -[[package]] -name = "h11" -version = "0.16.0" -requires_python = ">=3.8" -summary = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -groups = ["default"] -files = [ - {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, - {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, -] - -[[package]] -name = "httpcore" -version = "1.0.9" -requires_python = ">=3.8" -summary = "A minimal low-level HTTP client." -groups = ["default"] -dependencies = [ - "certifi", - "h11>=0.16", -] -files = [ - {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, - {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, -] - [[package]] name = "httpx" -version = "0.28.1" -requires_python = ">=3.8" -summary = "The next generation HTTP client." +version = "1.0.dev3" +requires_python = ">=3.10" +summary = "HTTP, for Python." groups = ["default"] dependencies = [ - "anyio", "certifi", - "httpcore==1.*", - "idna", -] -files = [ - {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, - {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] - -[[package]] -name = "idna" -version = "3.11" -requires_python = ">=3.8" -summary = "Internationalized Domain Names in Applications (IDNA)" -groups = ["default"] files = [ - {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, - {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, + {file = "httpx-1.0.dev3-py3-none-any.whl", hash = "sha256:80b33db1bc8e1fac2a15f419839e324d472d528822608ea6b7a93fed2011722d"}, + {file = "httpx-1.0.dev3.tar.gz", hash = "sha256:e95700e4f9cf6430295f4c195f9cb0ca0549bab4294927f8002bf196851d40db"}, ] [[package]] @@ -317,7 +261,7 @@ files = [ [[package]] name = "porringer" -version = "0.2.0" +version = "0.2.1.dev0" requires_python = ">=3.14" summary = "" groups = ["default"] @@ -330,8 +274,8 @@ dependencies = [ "userpath>=1.9.2", ] files = [ - {file = "porringer-0.2.0-py3-none-any.whl", hash = "sha256:b55225b899a90cd9c2ad933630c6ad635652f0fffd2bf06aafa30bd8827a8d69"}, - {file = "porringer-0.2.0.tar.gz", hash = "sha256:deb42e20d2f6936a3e9ed383425967246864b556a7b15751ef67a8a9ebf5d28e"}, + {file = "porringer-0.2.1.dev0-py3-none-any.whl", hash = "sha256:5f048388dccf3abf382880f1fc9db9d057e31cb28e20edde9ec55e1a6d2d9835"}, + {file = "porringer-0.2.1.dev0.tar.gz", hash = "sha256:4879b437f146c04c2a3fc12e91ff70937de660f7dff9f29af1a0942e40f252c0"}, ] [[package]] @@ -586,7 +530,7 @@ files = [ [[package]] name = "rich" -version = "14.3.1" +version = "14.3.2" requires_python = ">=3.8.0" summary = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" groups = ["default"] @@ -595,8 +539,8 @@ dependencies = [ "pygments<3.0.0,>=2.13.0", ] files = [ - {file = "rich-14.3.1-py3-none-any.whl", hash = "sha256:da750b1aebbff0b372557426fb3f35ba56de8ef954b3190315eb64076d6fb54e"}, - {file = "rich-14.3.1.tar.gz", hash = "sha256:b8c5f568a3a749f9290ec6bddedf835cec33696bfc1e48bcfecb276c7386e4b8"}, + {file = "rich-14.3.2-py3-none-any.whl", hash = "sha256:08e67c3e90884651da3239ea668222d19bea7b589149d8014a21c633420dbb69"}, + {file = "rich-14.3.2.tar.gz", hash = "sha256:e712f11c1a562a11843306f5ed999475f09ac31ffb64281f73ab29ffdda8b3b8"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 984c3a1..a366221 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ requires-python = ">=3.14, <3.15" dependencies = [ "pyside6>=6.10.2", "packaging>=26.0", - "porringer>=0.2.0", + "porringer>=0.2.1.dev0", "velopack>=0.0.1369.dev7516", ] diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index 3993c30..5969670 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -55,7 +55,6 @@ logger = logging.getLogger(__name__) ACTION_TYPE_LABELS = { - SetupActionType.CHECK_PLUGIN: 'Check Plugin', SetupActionType.PACKAGE: 'Package', SetupActionType.RUN_COMMAND: 'Run Command', } @@ -107,7 +106,7 @@ async def _execute(self) -> SetupResults: params = SetupParameters() collected: list[SetupActionResult] = [] - async for event in self._porringer.update.execute_stream(previews, params): + async for event in self._porringer.sync.execute_stream(previews, params): if self._cancellation_token.is_cancelled: raise asyncio.CancelledError @@ -356,7 +355,7 @@ def _populate_table(self, actions: list[SetupAction]) -> None: self._table.setRowCount(len(actions)) for row, action in enumerate(actions): self._table.setItem(row, 0, QTableWidgetItem(ACTION_TYPE_LABELS.get(action.action_type, '?'))) - self._table.setItem(row, 1, QTableWidgetItem(action.plugin or '')) + self._table.setItem(row, 1, QTableWidgetItem(action.installer or '')) self._table.setItem(row, 2, QTableWidgetItem(str(action.package) if action.package else '')) self._table.setItem(row, 3, QTableWidgetItem(action.package_description or action.description)) @@ -499,7 +498,7 @@ def run(self) -> None: if not local_path.exists(): self.error.emit(f'Manifest not found:\n{local_path}') return - preview = self._porringer.update.preview_single(local_path) + preview = self._porringer.sync.preview_single(local_path) self.preview_ready.emit(preview, str(local_path), '') else: # Remote URL — download to a temp directory @@ -507,14 +506,14 @@ def run(self) -> None: dest = Path(temp_dir) / 'porringer.json' params = DownloadParameters(url=self._url, destination=dest, timeout=3) - result = self._porringer.update.download(params) + result = self._porringer.sync.download(params) if not result.success: _safe_rmtree(temp_dir) self.error.emit(f'Failed to download manifest:\n{result.message}') return - preview = self._porringer.update.preview_single(dest) + preview = self._porringer.sync.preview_single(dest) self.preview_ready.emit(preview, str(dest), temp_dir) # Dry-run to check which actions are already satisfied @@ -542,7 +541,7 @@ async def _check(self, preview: SetupResults) -> None: params = SetupParameters(dry_run=True) action_indices: dict[int, int] = {id(a): i for i, a in enumerate(preview.actions)} - async for event in self._porringer.update.execute_stream(previews, params): + async for event in self._porringer.sync.execute_stream(previews, params): if event.kind == ProgressEventKind.ACTION_COMPLETED and event.result and event.action: row = action_indices.get(id(event.action)) if row is not None: diff --git a/tests/unit/test_install_preview.py b/tests/unit/test_install_preview.py index 69d9d67..aebe314 100644 --- a/tests/unit/test_install_preview.py +++ b/tests/unit/test_install_preview.py @@ -64,14 +64,14 @@ class TestInstallPreviewWindow: def _make_action( action_type: str = 'PACKAGE', description: str = 'Install test', - plugin: str = 'pip', + installer: str = 'pip', package: str = 'requests', ) -> MagicMock: """Create a mock SetupAction.""" action = MagicMock() action.action_type = getattr(SetupActionType, action_type) action.description = description - action.plugin = plugin + action.installer = installer action.package = package action.command = None action.cli_command = None @@ -104,7 +104,7 @@ def test_worker_emits_finished_on_success() -> None: async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 yield completed_event - porringer.update.execute_stream = mock_stream + porringer.sync.execute_stream = mock_stream token = CancellationToken() worker = InstallWorker(porringer, preview, token) @@ -128,7 +128,7 @@ async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 msg = 'boom' raise RuntimeError(msg) - porringer.update.execute_stream = mock_stream + porringer.sync.execute_stream = mock_stream token = CancellationToken() worker = InstallWorker(porringer, preview, token) @@ -183,7 +183,7 @@ def test_local_manifest_skips_download(tmp_path: Path) -> None: porringer = MagicMock() expected = SetupResults(actions=[]) - porringer.update.preview_single.return_value = expected + porringer.sync.preview_single.return_value = expected worker = PreviewWorker(porringer, str(manifest)) @@ -194,7 +194,7 @@ def test_local_manifest_skips_download(tmp_path: Path) -> None: assert len(results) == 1 assert results[0][0] is expected # download should NOT have been called - porringer.update.download.assert_not_called() + porringer.sync.download.assert_not_called() @staticmethod def test_local_manifest_not_found() -> None: @@ -217,7 +217,7 @@ class TestPreviewWorker: def test_emits_error_on_download_failure() -> None: """Verify PreviewWorker emits error when download fails.""" porringer = MagicMock() - porringer.update.download.return_value = DownloadResult( + porringer.sync.download.return_value = DownloadResult( success=False, path=None, verified=False, @@ -238,7 +238,7 @@ def test_emits_error_on_download_failure() -> None: def test_emits_preview_ready_on_success() -> None: """Verify PreviewWorker emits preview_ready with SetupResults.""" porringer = MagicMock() - porringer.update.download.return_value = DownloadResult( + porringer.sync.download.return_value = DownloadResult( success=True, path=Path('/tmp/test/porringer.json'), verified=True, @@ -246,7 +246,7 @@ def test_emits_preview_ready_on_success() -> None: message='OK', ) expected = SetupResults(actions=[]) - porringer.update.preview_single.return_value = expected + porringer.sync.preview_single.return_value = expected worker = PreviewWorker(porringer, 'https://example.com/good.json') @@ -265,14 +265,14 @@ class TestPreviewWorkerDryRun: def _make_action( action_type: str = 'PACKAGE', description: str = 'Install test', - plugin: str = 'pip', + installer: str = 'pip', package: str = 'requests', ) -> MagicMock: """Create a mock SetupAction.""" action = MagicMock() action.action_type = getattr(SetupActionType, action_type) action.description = description - action.plugin = plugin + action.installer = installer action.package = package return action @@ -285,7 +285,7 @@ def test_emits_action_checked_for_each_result(self, tmp_path: Path) -> None: action1 = self._make_action(package='ruff') action2 = self._make_action(package='pytest') preview = SetupResults(actions=[action1, action2]) - porringer.update.preview_single.return_value = preview + porringer.sync.preview_single.return_value = preview result1 = SetupActionResult( action=action1, @@ -309,7 +309,7 @@ async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 yield event1 yield event2 - porringer.update.execute_stream = mock_stream + porringer.sync.execute_stream = mock_stream worker = PreviewWorker(porringer, str(manifest)) @@ -331,7 +331,7 @@ def test_emits_finished_after_completion(tmp_path: Path) -> None: porringer = MagicMock() preview = SetupResults(actions=[]) - porringer.update.preview_single.return_value = preview + porringer.sync.preview_single.return_value = preview worker = PreviewWorker(porringer, str(manifest)) @@ -351,7 +351,7 @@ def test_finishes_even_when_dry_run_fails(tmp_path: Path) -> None: action = MagicMock() action.action_type = SetupActionType.PACKAGE preview = SetupResults(actions=[action]) - porringer.update.preview_single.return_value = preview + porringer.sync.preview_single.return_value = preview async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 if False: @@ -359,7 +359,7 @@ async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 msg = 'dry-run boom' raise RuntimeError(msg) - porringer.update.execute_stream = mock_stream + porringer.sync.execute_stream = mock_stream worker = PreviewWorker(porringer, str(manifest)) @@ -380,7 +380,7 @@ def test_uses_dry_run_parameter(self, tmp_path: Path) -> None: porringer = MagicMock() action = self._make_action() preview = SetupResults(actions=[action]) - porringer.update.preview_single.return_value = preview + porringer.sync.preview_single.return_value = preview captured_params: list[SetupParameters] = [] @@ -389,7 +389,7 @@ async def mock_stream(previews, params, **kwargs): # noqa: ANN001, ANN002, ANN0 if False: yield # pragma: no cover — establishes async generator protocol - porringer.update.execute_stream = mock_stream + porringer.sync.execute_stream = mock_stream worker = PreviewWorker(porringer, str(manifest)) worker.run() From 585750fbe165d1864f90aa5f78e83386f5aff982 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Fri, 6 Feb 2026 23:45:27 -0800 Subject: [PATCH 22/40] Suppress Console Windows --- synodic_client/application/qt.py | 43 ++++++++++++++++++++ synodic_client/application/screen/install.py | 19 +++++++++ synodic_client/logging.py | 8 +++- 3 files changed, 68 insertions(+), 2 deletions(-) diff --git a/synodic_client/application/qt.py b/synodic_client/application/qt.py index 4a63125..59c902d 100644 --- a/synodic_client/application/qt.py +++ b/synodic_client/application/qt.py @@ -1,7 +1,9 @@ """GUI entry point for the Synodic Client application.""" import logging +import subprocess import sys +import types from collections.abc import Callable from urllib.parse import parse_qs, urlparse @@ -98,8 +100,34 @@ def _process_uri(uri: str, handler: Callable[[str], None]) -> None: handler(manifests[0]) +def _suppress_subprocess_consoles() -> None: + """Monkey-patch ``subprocess.Popen`` to hide console windows on Windows. + + When the application is built as a windowed executable (``console=False`` + in PyInstaller), every ``subprocess.Popen`` call that launches a console + program (pip, pipx, uv, winget, etc.) would briefly flash a visible + console window. This patch adds ``CREATE_NO_WINDOW`` to *creationflags* + for all calls that don't already set it, suppressing those flashes. + """ + if sys.platform != 'win32': + return + + _original_init = subprocess.Popen.__init__ + + def _patched_init(self: subprocess.Popen, *args: object, **kwargs: object) -> None: # type: ignore[override] + if 'creationflags' not in kwargs: + kwargs['creationflags'] = subprocess.CREATE_NO_WINDOW + _original_init(self, *args, **kwargs) # type: ignore[arg-type] + + subprocess.Popen.__init__ = _patched_init # type: ignore[assignment] + + def application() -> None: """Application entry point.""" + # Suppress console window flashes from subprocess calls (e.g. porringer + # running pip, pipx, uv) before any subprocesses are spawned. + _suppress_subprocess_consoles() + # Initialize Velopack early, before any UI initialize_velopack() register_protocol(sys.executable) @@ -107,6 +135,20 @@ def application() -> None: configure_logging() logger = logging.getLogger('synodic_client') + # Redirect unhandled exceptions to the log file so they are visible + # even in windowed (console=False) PyInstaller builds. + _original_excepthook = sys.excepthook + + def _exception_hook( + exc_type: type[BaseException], + exc_value: BaseException, + exc_tb: types.TracebackType | None, + ) -> None: + logger.critical('Unhandled exception', exc_info=(exc_type, exc_value, exc_tb)) + _original_excepthook(exc_type, exc_value, exc_tb) + + sys.excepthook = _exception_hook + uri = find_uri(sys.argv[1:]) if uri: logger.info('Received URI: %s', uri) @@ -133,6 +175,7 @@ def application() -> None: _install_windows: list[InstallPreviewWindow] = [] def _handle_install_uri(manifest_url: str) -> None: + logger.info('Opening install preview for: %s', manifest_url) window = InstallPreviewWindow(porringer, manifest_url) _install_windows.append(window) window.show() diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index 5969670..ee4faf7 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -214,8 +214,14 @@ def _init_ui(self) -> None: # --- Lifecycle --- + def showEvent(self, event: Any) -> None: + """Log when the window becomes visible.""" + super().showEvent(event) + logger.info('Install preview window shown (visible=%s)', self.isVisible()) + def closeEvent(self, event: Any) -> None: """Clean up the temp directory when the window is closed.""" + logger.info('Install preview window closing') self._cleanup_temp_dir() super().closeEvent(event) @@ -232,6 +238,7 @@ def start(self) -> None: Call this after ``show()`` to begin the download → preview flow. """ + logger.info('Starting install preview for: %s', self._manifest_url) self._url_label.setText(f'Manifest: {self._manifest_url}') self._status_label.setText('Loading manifest…') self._install_btn.setEnabled(False) @@ -263,6 +270,7 @@ def _on_preview_ready(self, preview: SetupResults, manifest_path: str, temp_dir_ manifest_path: Path to the downloaded manifest file. temp_dir_path: Path to the temp directory (kept alive for execution). """ + logger.info('Preview ready: %d action(s) from %s', len(preview.actions), manifest_path) self._preview = preview self._manifest_path = Path(manifest_path) # Keep the temp directory alive until the window closes @@ -280,8 +288,10 @@ def _on_preview_ready(self, preview: SetupResults, manifest_path: str, temp_dir_ def _on_preview_error(self, message: str) -> None: """Handle a preview error.""" + logger.error('Preview failed: %s', message) self._status_label.setText('') QMessageBox.critical(self, 'Preview Failed', message) + logger.info('Closing window due to preview error') self.close() def _show_metadata(self, preview: SetupResults) -> None: @@ -348,6 +358,14 @@ def _on_preview_complete(self) -> None: else: self._status_label.setText(f'{total} action(s): {needed} needed, {satisfied} already satisfied.') + logger.info( + 'Preview complete: %d total, %d needed, %d satisfied (window visible=%s)', + total, + needed, + satisfied, + self.isVisible(), + ) + # --- Table --- def _populate_table(self, actions: list[SetupAction]) -> None: @@ -489,6 +507,7 @@ def __init__(self, porringer: API, url: str) -> None: def run(self) -> None: """Download the manifest, preview actions, and check status via dry-run.""" + logger.info('PreviewWorker starting for: %s', self._url) temp_dir = None try: local_path = resolve_local_path(self._url) diff --git a/synodic_client/logging.py b/synodic_client/logging.py index 5922e0f..c428a13 100644 --- a/synodic_client/logging.py +++ b/synodic_client/logging.py @@ -47,8 +47,8 @@ def configure_logging() -> None: """Set up application-wide logging. Attaches a :class:`EagerRotatingFileHandler` to the ``synodic_client`` - logger and configures :func:`logging.basicConfig` for ``INFO`` level - output on *stderr*. + and ``porringer`` loggers and configures :func:`logging.basicConfig` + for ``INFO`` level output on *stderr*. """ logging.basicConfig(level=logging.INFO) @@ -63,6 +63,10 @@ def configure_logging() -> None: app_logger = logging.getLogger('synodic_client') app_logger.addHandler(handler) + porringer_logger = logging.getLogger('porringer') + porringer_logger.addHandler(handler) + porringer_logger.setLevel(logging.INFO) + def open_log() -> None: """Open the log file in the system's default editor. From a798ba50d651b35b4cdd41d9c0f4d654de3b912a Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Sat, 7 Feb 2026 20:03:35 -0800 Subject: [PATCH 23/40] Add copyable command list view to install preview --- synodic_client/application/screen/install.py | 119 ++++++++++++++++++- tests/unit/test_install_preview.py | 56 +++++++++ 2 files changed, 171 insertions(+), 4 deletions(-) diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index ee4faf7..ba2f983 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -34,17 +34,23 @@ SetupParameters, SetupResults, ) -from PySide6.QtCore import QObject, QThread, Signal +from PySide6.QtCore import QObject, Qt, QThread, QTimer, Signal +from PySide6.QtGui import QFont from PySide6.QtWidgets import ( + QApplication, QHBoxLayout, QHeaderView, QLabel, + QLineEdit, QMainWindow, QMessageBox, QProgressDialog, QPushButton, + QScrollArea, + QStackedWidget, QTableWidget, QTableWidgetItem, + QToolButton, QVBoxLayout, QWidget, ) @@ -59,6 +65,21 @@ SetupActionType.RUN_COMMAND: 'Run Command', } +_COPY_ICON = '\U0001f4cb' +_COPY_BTN_STYLE = ( + 'QToolButton { border: none; padding: 2px 4px; }' + 'QToolButton:hover { background: palette(midlight); border-radius: 3px; }' +) + + +def format_cli_command(action: SetupAction) -> str: + """Return a copyable CLI command string for *action*.""" + if parts := (action.cli_command or action.command): + return ' '.join(parts) + if action.action_type == SetupActionType.PACKAGE and action.package: + return f'{action.installer or "pip"} install {action.package}' + return action.description + class InstallWorker(QObject): """Background worker that executes setup actions via porringer. @@ -182,7 +203,10 @@ def _init_ui(self) -> None: self._status_label = QLabel() layout.addWidget(self._status_label) - # Actions table + # --- View stack (table / command list) --- + self._view_stack = QStackedWidget() + + # Page 0: Actions table self._table = QTableWidget() self._table.setColumnCount(5) self._table.setHorizontalHeaderLabels(['Type', 'Plugin', 'Package', 'Description', 'Status']) @@ -195,10 +219,23 @@ def _init_ui(self) -> None: header.setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents) header.setSectionResizeMode(3, QHeaderView.ResizeMode.Stretch) header.setSectionResizeMode(4, QHeaderView.ResizeMode.ResizeToContents) - layout.addWidget(self._table) + self._view_stack.addWidget(self._table) + + # Page 1: Scrollable command cards + self._command_scroll = QScrollArea() + self._command_scroll.setWidgetResizable(True) + self._view_stack.addWidget(self._command_scroll) + + layout.addWidget(self._view_stack) + + # Toggle between views + self._toggle_btn = QPushButton('Show Commands') + self._toggle_btn.setEnabled(False) + self._toggle_btn.clicked.connect(self._toggle_view) # Button bar button_bar = QHBoxLayout() + button_bar.addWidget(self._toggle_btn) button_bar.addStretch() self._install_btn = QPushButton('Install') @@ -366,7 +403,18 @@ def _on_preview_complete(self) -> None: self.isVisible(), ) - # --- Table --- + # --- View toggle --- + + def _toggle_view(self) -> None: + """Switch between overview table and command list.""" + if self._view_stack.currentIndex() == 0: + self._view_stack.setCurrentIndex(1) + self._toggle_btn.setText('Show Overview') + else: + self._view_stack.setCurrentIndex(0) + self._toggle_btn.setText('Show Commands') + + # --- Table / command list --- def _populate_table(self, actions: list[SetupAction]) -> None: """Fill the actions table from a list of SetupAction objects.""" @@ -381,6 +429,69 @@ def _populate_table(self, actions: list[SetupAction]) -> None: status_item.setForeground(self.palette().placeholderText()) self._table.setItem(row, 4, status_item) + self._populate_command_list(actions) + + def _populate_command_list(self, actions: list[SetupAction]) -> None: + """Build per-action command fields with descriptive labels above each.""" + container = QWidget() + layout = QVBoxLayout(container) + layout.setContentsMargins(0, 0, 0, 0) + + mono = QFont('Consolas', 10) + for i, action in enumerate(actions, 1): + label_text = ACTION_TYPE_LABELS.get(action.action_type, 'Action') + desc = action.package_description or action.description + header = QLabel(f'{i}. [{label_text}] {desc}') + header.setStyleSheet('color: grey; margin-top: 6px;') + layout.addWidget(header) + + field = QLineEdit(format_cli_command(action)) + field.setReadOnly(True) + field.setFont(mono) + + row_layout = QHBoxLayout() + row_layout.setContentsMargins(0, 0, 0, 0) + row_layout.setSpacing(4) + row_layout.addWidget(field) + row_layout.addWidget(self._make_copy_button(field)) + + row_widget = QWidget() + row_widget.setLayout(row_layout) + layout.addWidget(row_widget) + + layout.addStretch() + self._command_scroll.setWidget(container) + self._toggle_btn.setEnabled(True) + + def _make_copy_button(self, field: QLineEdit) -> QToolButton: + """Create a copy-to-clipboard button bound to *field*.""" + btn = QToolButton() + btn.setText(_COPY_ICON) + btn.setToolTip('Copy to clipboard') + btn.setFixedSize(28, 28) + btn.setStyleSheet(_COPY_BTN_STYLE) + btn.setCursor(Qt.CursorShape.PointingHandCursor) + btn.clicked.connect(lambda: self._copy_command(field, btn)) + return btn + + @staticmethod + def _copy_command(field: QLineEdit, button: QToolButton) -> None: + """Copy the field text to the clipboard and briefly show a check mark.""" + clipboard = QApplication.clipboard() + if clipboard: + clipboard.setText(field.text()) + button.setText('\u2713') + button.setToolTip('Copied!') + + def _restore() -> None: + try: + button.setText(_COPY_ICON) + button.setToolTip('Copy to clipboard') + except RuntimeError: + pass + + QTimer.singleShot(1200, _restore) + # --- Install execution --- def _on_install(self) -> None: diff --git a/tests/unit/test_install_preview.py b/tests/unit/test_install_preview.py index aebe314..f0771e1 100644 --- a/tests/unit/test_install_preview.py +++ b/tests/unit/test_install_preview.py @@ -21,6 +21,7 @@ ACTION_TYPE_LABELS, InstallWorker, PreviewWorker, + format_cli_command, resolve_local_path, ) @@ -84,6 +85,61 @@ def test_action_type_labels() -> None: assert action_type in ACTION_TYPE_LABELS +class TestFormatCliCommand: + """Tests for format_cli_command helper.""" + + @staticmethod + def _make_action( + action_type: str = 'PACKAGE', + description: str = 'Install test', + installer: str = 'pip', + package: str = 'requests', + cli_command: list[str] | None = None, + command: list[str] | None = None, + ) -> MagicMock: + """Create a mock SetupAction.""" + action = MagicMock() + action.action_type = getattr(SetupActionType, action_type) + action.description = description + action.installer = installer + action.package = package + action.command = command + action.cli_command = cli_command + return action + + def test_prefers_cli_command(self) -> None: + """Verify cli_command takes precedence over command and fallback.""" + action = self._make_action(cli_command=['uv', 'pip', 'install', 'requests']) + assert format_cli_command(action) == 'uv pip install requests' + + def test_falls_back_to_command(self) -> None: + """Verify command is used when cli_command is absent.""" + action = self._make_action( + action_type='RUN_COMMAND', + command=['echo', 'hello'], + ) + assert format_cli_command(action) == 'echo hello' + + def test_synthesises_package_command(self) -> None: + """Verify package actions synthesise installer + package.""" + action = self._make_action(installer='pip', package='ruff') + assert format_cli_command(action) == 'pip install ruff' + + def test_synthesises_default_installer(self) -> None: + """Verify pip is used as default installer for package actions.""" + action = self._make_action(installer=None, package='ruff') + assert format_cli_command(action) == 'pip install ruff' + + def test_description_fallback(self) -> None: + """Verify description is returned when nothing else is available.""" + action = self._make_action( + action_type='RUN_COMMAND', + description='Custom step', + package=None, + ) + assert format_cli_command(action) == 'Custom step' + + class TestInstallWorker: """Tests for InstallWorker signal emission.""" From 7de1f8d22df01a05083e798cbda3ee5a98313f10 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Sat, 7 Feb 2026 20:32:02 -0800 Subject: [PATCH 24/40] Ctrl-C Table Values --- pdm.lock | 26 ++++++++++---------- synodic_client/application/screen/install.py | 14 ++++++++++- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/pdm.lock b/pdm.lock index 4443616..dc6c421 100644 --- a/pdm.lock +++ b/pdm.lock @@ -261,7 +261,7 @@ files = [ [[package]] name = "porringer" -version = "0.2.1.dev0" +version = "0.2.1.dev1" requires_python = ">=3.14" summary = "" groups = ["default"] @@ -274,8 +274,8 @@ dependencies = [ "userpath>=1.9.2", ] files = [ - {file = "porringer-0.2.1.dev0-py3-none-any.whl", hash = "sha256:5f048388dccf3abf382880f1fc9db9d057e31cb28e20edde9ec55e1a6d2d9835"}, - {file = "porringer-0.2.1.dev0.tar.gz", hash = "sha256:4879b437f146c04c2a3fc12e91ff70937de660f7dff9f29af1a0942e40f252c0"}, + {file = "porringer-0.2.1.dev1-py3-none-any.whl", hash = "sha256:b3c5181c1ee5d04661ebc463bc836cfa50a41867828fff9b2dd831537a139cc2"}, + {file = "porringer-0.2.1.dev1.tar.gz", hash = "sha256:7d2647ed312e161b0ba35f195c00ff876a99bd58565dfdd30a89df5966c4c519"}, ] [[package]] @@ -396,20 +396,20 @@ files = [ [[package]] name = "pyrefly" -version = "0.51.1" +version = "0.51.2" requires_python = ">=3.8" summary = "A fast type checker and language server for Python with powerful IDE features" groups = ["lint"] files = [ - {file = "pyrefly-0.51.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7d4b9c13edf6a0c1ef1fb80c8429ed1ce023d6c1faa282032b32900bc4ae7fc1"}, - {file = "pyrefly-0.51.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:252d920b21a1ce0e00f077f560e48913370fbff3b6aab4426902eab9a57f5bee"}, - {file = "pyrefly-0.51.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48ec5c9f24361e903e1c60a0a32099ddd1d12b47c314414a980db2129ff040d"}, - {file = "pyrefly-0.51.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10e4ee82a90e493a07d4d8bc9683185005169f17454ad56d37c19f4794387581"}, - {file = "pyrefly-0.51.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cffebed312e85c4af91b9e398cf26c988ad4b442e815300e8478c1e0176f826a"}, - {file = "pyrefly-0.51.1-py3-none-win32.whl", hash = "sha256:8ce1693457a4d856faf35ec519f7866ee13dd79d7db085e95caec8eaa21f1450"}, - {file = "pyrefly-0.51.1-py3-none-win_amd64.whl", hash = "sha256:42c05e88da2f18aeab45e9b0384ef8e776630ed270c8bfcb33e0668757ea2d4f"}, - {file = "pyrefly-0.51.1-py3-none-win_arm64.whl", hash = "sha256:c0f30432cfaf13c7c2d4188c94146cdaab2ce52bbd292d48c7d18ad4a168ecfb"}, - {file = "pyrefly-0.51.1.tar.gz", hash = "sha256:5835c93e568a7507926095b67ef269ecf3842eba604c0ac49290943b2b3bb21b"}, + {file = "pyrefly-0.51.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:573cd017082737822cd43ac276772ab75708d423d2947ac8cf92e66d919dc86c"}, + {file = "pyrefly-0.51.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7f0d60ed594204c46562a3ef94fe1f1678cd280469db8778ba0427781e7313b4"}, + {file = "pyrefly-0.51.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e5aaf395339279525932e4cc35a91e3b58def35a684bba1beeaaacfb857ff67"}, + {file = "pyrefly-0.51.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d5359d68bfda3ac01f866fe149cee5274a409c3f8c5b647b986b1d34249dee2"}, + {file = "pyrefly-0.51.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16f893f08430cf1336c4fd7ed885039cff1b0afccd81f35c5f1d5a149f7d9dcf"}, + {file = "pyrefly-0.51.2-py3-none-win32.whl", hash = "sha256:a582a799816f8d3ace3339dcc557e02de53ba6ee09d122464124c0fb68ff6922"}, + {file = "pyrefly-0.51.2-py3-none-win_amd64.whl", hash = "sha256:4bff9ff0bba6e2e072c6ffb489723eadb6d91a745e3b62704b1aac92651eae00"}, + {file = "pyrefly-0.51.2-py3-none-win_arm64.whl", hash = "sha256:24d02f15adc05c4b90fdb261b77ff1d5632924fd3717890a5e870bbe18ce0b6f"}, + {file = "pyrefly-0.51.2.tar.gz", hash = "sha256:b931a2d168b8aebc425da0dacea91b94684092ffd2c739fa1a48fac70f9218fb"}, ] [[package]] diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index ba2f983..5762dd1 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -35,7 +35,7 @@ SetupResults, ) from PySide6.QtCore import QObject, Qt, QThread, QTimer, Signal -from PySide6.QtGui import QFont +from PySide6.QtGui import QFont, QKeySequence, QShortcut from PySide6.QtWidgets import ( QApplication, QHBoxLayout, @@ -219,6 +219,7 @@ def _init_ui(self) -> None: header.setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents) header.setSectionResizeMode(3, QHeaderView.ResizeMode.Stretch) header.setSectionResizeMode(4, QHeaderView.ResizeMode.ResizeToContents) + QShortcut(QKeySequence.StandardKey.Copy, self._table, self._copy_table_selection) self._view_stack.addWidget(self._table) # Page 1: Scrollable command cards @@ -416,6 +417,17 @@ def _toggle_view(self) -> None: # --- Table / command list --- + def _copy_table_selection(self) -> None: + """Copy selected table rows to the clipboard as tab-separated text.""" + rows = sorted({idx.row() for idx in self._table.selectedIndexes()}) + if not rows: + return + cols = self._table.columnCount() + lines = ['\t'.join((self._table.item(r, c).text() if self._table.item(r, c) else '') for c in range(cols)) for r in rows] + clipboard = QApplication.clipboard() + if clipboard: + clipboard.setText('\n'.join(lines)) + def _populate_table(self, actions: list[SetupAction]) -> None: """Fill the actions table from a list of SetupAction objects.""" self._table.setRowCount(len(actions)) From 71ce6d1de7ea3efc72c3ca3f6cc054491c77967d Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Sat, 7 Feb 2026 20:45:34 -0800 Subject: [PATCH 25/40] Fix Lints --- synodic_client/application/screen/install.py | 44 ++++++++++++-------- tests/unit/test_install_preview.py | 34 ++++++++------- 2 files changed, 46 insertions(+), 32 deletions(-) diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index 5762dd1..144bf93 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -207,19 +207,7 @@ def _init_ui(self) -> None: self._view_stack = QStackedWidget() # Page 0: Actions table - self._table = QTableWidget() - self._table.setColumnCount(5) - self._table.setHorizontalHeaderLabels(['Type', 'Plugin', 'Package', 'Description', 'Status']) - self._table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers) - self._table.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) - self._table.setAlternatingRowColors(True) - header = self._table.horizontalHeader() - header.setSectionResizeMode(0, QHeaderView.ResizeMode.ResizeToContents) - header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents) - header.setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents) - header.setSectionResizeMode(3, QHeaderView.ResizeMode.Stretch) - header.setSectionResizeMode(4, QHeaderView.ResizeMode.ResizeToContents) - QShortcut(QKeySequence.StandardKey.Copy, self._table, self._copy_table_selection) + self._table = self._init_actions_table() self._view_stack.addWidget(self._table) # Page 1: Scrollable command cards @@ -229,12 +217,32 @@ def _init_ui(self) -> None: layout.addWidget(self._view_stack) - # Toggle between views + # Button bar + layout.addLayout(self._init_button_bar()) + + def _init_actions_table(self) -> QTableWidget: + """Create and configure the actions table widget.""" + table = QTableWidget() + table.setColumnCount(5) + table.setHorizontalHeaderLabels(['Type', 'Plugin', 'Package', 'Description', 'Status']) + table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers) + table.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) + table.setAlternatingRowColors(True) + header = table.horizontalHeader() + header.setSectionResizeMode(0, QHeaderView.ResizeMode.ResizeToContents) + header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents) + header.setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents) + header.setSectionResizeMode(3, QHeaderView.ResizeMode.Stretch) + header.setSectionResizeMode(4, QHeaderView.ResizeMode.ResizeToContents) + QShortcut(QKeySequence.StandardKey.Copy, table, self._copy_table_selection) + return table + + def _init_button_bar(self) -> QHBoxLayout: + """Create the bottom button bar.""" self._toggle_btn = QPushButton('Show Commands') self._toggle_btn.setEnabled(False) self._toggle_btn.clicked.connect(self._toggle_view) - # Button bar button_bar = QHBoxLayout() button_bar.addWidget(self._toggle_btn) button_bar.addStretch() @@ -248,7 +256,7 @@ def _init_ui(self) -> None: self._close_btn.clicked.connect(self.close) button_bar.addWidget(self._close_btn) - layout.addLayout(button_bar) + return button_bar # --- Lifecycle --- @@ -423,7 +431,9 @@ def _copy_table_selection(self) -> None: if not rows: return cols = self._table.columnCount() - lines = ['\t'.join((self._table.item(r, c).text() if self._table.item(r, c) else '') for c in range(cols)) for r in rows] + lines = [ + '\t'.join((item.text() if (item := self._table.item(r, c)) else '') for c in range(cols)) for r in rows + ] clipboard = QApplication.clipboard() if clipboard: clipboard.setText('\n'.join(lines)) diff --git a/tests/unit/test_install_preview.py b/tests/unit/test_install_preview.py index f0771e1..37d5abe 100644 --- a/tests/unit/test_install_preview.py +++ b/tests/unit/test_install_preview.py @@ -3,6 +3,7 @@ from __future__ import annotations from pathlib import Path +from typing import Any from unittest.mock import MagicMock from porringer.schema import ( @@ -89,22 +90,25 @@ class TestFormatCliCommand: """Tests for format_cli_command helper.""" @staticmethod - def _make_action( - action_type: str = 'PACKAGE', - description: str = 'Install test', - installer: str = 'pip', - package: str = 'requests', - cli_command: list[str] | None = None, - command: list[str] | None = None, - ) -> MagicMock: - """Create a mock SetupAction.""" + def _make_action(**overrides: Any) -> MagicMock: + """Create a mock SetupAction with optional attribute overrides.""" + defaults: dict[str, Any] = { + 'action_type': 'PACKAGE', + 'description': 'Install test', + 'installer': 'pip', + 'package': 'requests', + 'cli_command': None, + 'command': None, + } + defaults.update(overrides) action = MagicMock() - action.action_type = getattr(SetupActionType, action_type) - action.description = description - action.installer = installer - action.package = package - action.command = command - action.cli_command = cli_command + action_type = defaults['action_type'] + action.action_type = getattr(SetupActionType, action_type) if isinstance(action_type, str) else action_type + action.description = defaults['description'] + action.installer = defaults['installer'] + action.package = defaults['package'] + action.command = defaults['command'] + action.cli_command = defaults['cli_command'] return action def test_prefers_cli_command(self) -> None: From eb6d9768166352e13e2cda2f1e6b0e8cf5a35e49 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Sat, 7 Feb 2026 21:16:17 -0800 Subject: [PATCH 26/40] Implementation Simplification --- synodic_client/application/instance.py | 8 +- synodic_client/application/qt.py | 62 +++-- synodic_client/application/screen/install.py | 266 ++++++++++--------- synodic_client/application/screen/screen.py | 8 +- synodic_client/application/screen/tray.py | 234 ++++++++-------- synodic_client/application/theme.py | 53 ++++ synodic_client/application/threading.py | 82 ++++++ 7 files changed, 445 insertions(+), 268 deletions(-) create mode 100644 synodic_client/application/theme.py create mode 100644 synodic_client/application/threading.py diff --git a/synodic_client/application/instance.py b/synodic_client/application/instance.py index 5fc38dc..6389054 100644 --- a/synodic_client/application/instance.py +++ b/synodic_client/application/instance.py @@ -10,6 +10,8 @@ from PySide6.QtCore import QByteArray, QObject, Signal from PySide6.QtNetwork import QLocalServer, QLocalSocket +from synodic_client.application.theme import SOCKET_TIMEOUT_MS + logger = logging.getLogger(__name__) _SERVER_NAME = 'synodic-client' @@ -47,9 +49,9 @@ def try_send_to_existing(message: str) -> bool: socket = QLocalSocket() socket.connectToServer(_SERVER_NAME) - if socket.waitForConnected(1000): + if socket.waitForConnected(SOCKET_TIMEOUT_MS): socket.write(QByteArray(message.encode('utf-8'))) - socket.waitForBytesWritten(1000) + socket.waitForBytesWritten(SOCKET_TIMEOUT_MS) socket.disconnectFromServer() logger.info('Sent message to existing instance: %s', message) return True @@ -87,7 +89,7 @@ def _on_new_connection(self) -> None: if socket is None: return - if socket.waitForReadyRead(1000): + if socket.waitForReadyRead(SOCKET_TIMEOUT_MS): raw = socket.readAll().data() data = raw.decode('utf-8') if isinstance(raw, (bytes, bytearray)) else str(raw) if data: diff --git a/synodic_client/application/qt.py b/synodic_client/application/qt.py index 59c902d..5bea9c8 100644 --- a/synodic_client/application/qt.py +++ b/synodic_client/application/qt.py @@ -18,6 +18,7 @@ from synodic_client.application.screen.screen import Screen from synodic_client.application.screen.tray import TrayScreen from synodic_client.client import Client +from synodic_client.config import GlobalConfiguration from synodic_client.logging import configure_logging from synodic_client.protocol import register_protocol from synodic_client.resolution import resolve_config, resolve_update_config @@ -62,11 +63,11 @@ def parse_uri(uri: str) -> dict[str, str | list[str]]: return result -def _init_services(logger: logging.Logger) -> tuple[Client, API]: +def _init_services(logger: logging.Logger) -> tuple[Client, API, GlobalConfiguration]: """Create and configure core services. Returns: - A (Client, porringer API) tuple. + A (Client, porringer API, resolved config) tuple. """ config = resolve_config() client = Client() @@ -87,7 +88,7 @@ def _init_services(logger: logging.Logger) -> tuple[Client, API]: list_params = ListPluginsParameters() porringer.plugin.list(list_params) - return client, porringer + return client, porringer, config def _process_uri(uri: str, handler: Callable[[str], None]) -> None: @@ -122,21 +123,12 @@ def _patched_init(self: subprocess.Popen, *args: object, **kwargs: object) -> No subprocess.Popen.__init__ = _patched_init # type: ignore[assignment] -def application() -> None: - """Application entry point.""" - # Suppress console window flashes from subprocess calls (e.g. porringer - # running pip, pipx, uv) before any subprocesses are spawned. - _suppress_subprocess_consoles() - - # Initialize Velopack early, before any UI - initialize_velopack() - register_protocol(sys.executable) - - configure_logging() - logger = logging.getLogger('synodic_client') +def _install_exception_hook(logger: logging.Logger) -> None: + """Redirect unhandled exceptions to the log file. - # Redirect unhandled exceptions to the log file so they are visible - # even in windowed (console=False) PyInstaller builds. + Ensures tracebacks are visible even in windowed (``console=False``) + PyInstaller builds. + """ _original_excepthook = sys.excepthook def _exception_hook( @@ -149,14 +141,38 @@ def _exception_hook( sys.excepthook = _exception_hook + +def _init_app() -> QApplication: + """Create and configure the ``QApplication``.""" + app = QApplication([]) + app.setQuitOnLastWindowClosed(False) + with Client.resource(Client.icon) as icon_path: + app.setWindowIcon(QIcon(str(icon_path))) + app.setAttribute(Qt.ApplicationAttribute.AA_CompressHighFrequencyEvents) + return app + + +def application() -> None: + """Application entry point.""" + # Suppress console window flashes from subprocess calls (e.g. porringer + # running pip, pipx, uv) before any subprocesses are spawned. + _suppress_subprocess_consoles() + + # Initialize Velopack early, before any UI + initialize_velopack() + register_protocol(sys.executable) + + configure_logging() + logger = logging.getLogger('synodic_client') + _install_exception_hook(logger) + uri = find_uri(sys.argv[1:]) if uri: logger.info('Received URI: %s', uri) - client, porringer = _init_services(logger) + client, porringer, config = _init_services(logger) - app = QApplication([]) - app.setQuitOnLastWindowClosed(False) + app = _init_app() instance = SingleInstance(app) if instance.try_send_to_existing(uri or ''): @@ -164,12 +180,8 @@ def _exception_hook( sys.exit(0) instance.start_server() - with Client.resource(Client.icon) as icon_path: - app.setWindowIcon(QIcon(str(icon_path))) - app.setAttribute(Qt.ApplicationAttribute.AA_CompressHighFrequencyEvents) - _screen = Screen(porringer) - _tray = TrayScreen(app, client, Client.icon, _screen.window) + _tray = TrayScreen(app, client, Client.icon, _screen.window, config=config) # Keep install preview windows alive until the app exits _install_windows: list[InstallPreviewWindow] = [] diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index 144bf93..774c261 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -3,13 +3,6 @@ Displays a dry-run preview of porringer setup actions and lets the user confirm execution. Execution runs on a background ``QThread`` with a cancellable ``QProgressDialog``. - -.. note:: QThread worker pattern - - Workers moved to a ``QThread`` via ``moveToThread()`` **must** be stored - as instance attributes (``self._worker``), never as local variables. - A local reference will be garbage-collected before the thread starts, - silently preventing execution. """ from __future__ import annotations @@ -34,7 +27,7 @@ SetupParameters, SetupResults, ) -from PySide6.QtCore import QObject, Qt, QThread, QTimer, Signal +from PySide6.QtCore import QObject, Qt, QTimer, Signal from PySide6.QtGui import QFont, QKeySequence, QShortcut from PySide6.QtWidgets import ( QApplication, @@ -55,6 +48,22 @@ QWidget, ) +from synodic_client.application.theme import ( + COMMAND_HEADER_STYLE, + CONTENT_MARGINS, + COPY_BTN_SIZE, + COPY_BTN_STYLE, + COPY_FEEDBACK_MS, + COPY_ICON, + HEADER_STYLE, + INSTALL_PREVIEW_MIN_SIZE, + MONOSPACE_FAMILY, + MONOSPACE_SIZE, + MUTED_STYLE, + NO_MARGINS, +) +from synodic_client.application.threading import ThreadRunner + if TYPE_CHECKING: from porringer.api import API @@ -65,12 +74,6 @@ SetupActionType.RUN_COMMAND: 'Run Command', } -_COPY_ICON = '\U0001f4cb' -_COPY_BTN_STYLE = ( - 'QToolButton { border: none; padding: 2px 4px; }' - 'QToolButton:hover { background: palette(midlight); border-radius: 3px; }' -) - def format_cli_command(action: SetupAction) -> str: """Return a copyable CLI command string for *action*.""" @@ -143,6 +146,76 @@ async def _execute(self) -> SetupResults: ) +class CommandListWidget(QScrollArea): + """Scrollable list of per-action CLI commands with copy buttons.""" + + def __init__(self, parent: QWidget | None = None) -> None: + """Initialise the command list widget.""" + super().__init__(parent) + self.setWidgetResizable(True) + + def populate(self, actions: list[SetupAction]) -> None: + """Build per-action command fields with descriptive labels above each.""" + container = QWidget() + layout = QVBoxLayout(container) + layout.setContentsMargins(*NO_MARGINS) + + mono = QFont(MONOSPACE_FAMILY, MONOSPACE_SIZE) + for i, action in enumerate(actions, 1): + label_text = ACTION_TYPE_LABELS.get(action.action_type, 'Action') + desc = action.package_description or action.description + header = QLabel(f'{i}. [{label_text}] {desc}') + header.setStyleSheet(COMMAND_HEADER_STYLE) + layout.addWidget(header) + + field = QLineEdit(format_cli_command(action)) + field.setReadOnly(True) + field.setFont(mono) + + row_layout = QHBoxLayout() + row_layout.setContentsMargins(*NO_MARGINS) + row_layout.setSpacing(4) + row_layout.addWidget(field) + row_layout.addWidget(_make_copy_button(field)) + + row_widget = QWidget() + row_widget.setLayout(row_layout) + layout.addWidget(row_widget) + + layout.addStretch() + self.setWidget(container) + + +def _make_copy_button(field: QLineEdit) -> QToolButton: + """Create a copy-to-clipboard button bound to *field*.""" + btn = QToolButton() + btn.setText(COPY_ICON) + btn.setToolTip('Copy to clipboard') + btn.setFixedSize(*COPY_BTN_SIZE) + btn.setStyleSheet(COPY_BTN_STYLE) + btn.setCursor(Qt.CursorShape.PointingHandCursor) + btn.clicked.connect(lambda: _copy_command(field, btn)) + return btn + + +def _copy_command(field: QLineEdit, button: QToolButton) -> None: + """Copy the field text to the clipboard and briefly show a check mark.""" + clipboard = QApplication.clipboard() + if clipboard: + clipboard.setText(field.text()) + button.setText('\u2713') + button.setToolTip('Copied!') + + def _restore() -> None: + try: + button.setText(COPY_ICON) + button.setToolTip('Copy to clipboard') + except RuntimeError: + pass + + QTimer.singleShot(COPY_FEEDBACK_MS, _restore) + + class InstallPreviewWindow(QMainWindow): """Standalone window that previews and executes a URI-based manifest install.""" @@ -160,14 +233,16 @@ def __init__(self, porringer: API, manifest_url: str, parent: QWidget | None = N self._preview: SetupResults | None = None self._manifest_path: Path | None = None self._temp_dir_path: str | None = None - self._thread: QThread | None = None - self._worker: InstallWorker | None = None + self._runner: ThreadRunner | None = None self._progress_dialog: QProgressDialog | None = None self._cancellation_token: CancellationToken | None = None self._completed_count = 0 + # Data model: per-action status separate from widget state + self._action_statuses: list[str] = [] + self.setWindowTitle('Install Preview') - self.setMinimumSize(650, 400) + self.setMinimumSize(*INSTALL_PREVIEW_MIN_SIZE) self._init_ui() @@ -176,7 +251,7 @@ def _init_ui(self) -> None: central = QWidget() self.setCentralWidget(central) layout = QVBoxLayout(central) - layout.setContentsMargins(12, 12, 12, 12) + layout.setContentsMargins(*CONTENT_MARGINS) # Header self._url_label = QLabel() @@ -185,7 +260,7 @@ def _init_ui(self) -> None: # Metadata labels (populated after preview completes) self._name_label = QLabel() - self._name_label.setStyleSheet('font-size: 14px; font-weight: bold;') + self._name_label.setStyleSheet(HEADER_STYLE) self._name_label.hide() layout.addWidget(self._name_label) @@ -195,7 +270,7 @@ def _init_ui(self) -> None: layout.addWidget(self._description_label) self._meta_label = QLabel() - self._meta_label.setStyleSheet('color: grey;') + self._meta_label.setStyleSheet(MUTED_STYLE) self._meta_label.hide() layout.addWidget(self._meta_label) @@ -211,9 +286,8 @@ def _init_ui(self) -> None: self._view_stack.addWidget(self._table) # Page 1: Scrollable command cards - self._command_scroll = QScrollArea() - self._command_scroll.setWidgetResizable(True) - self._view_stack.addWidget(self._command_scroll) + self._command_list = CommandListWidget() + self._view_stack.addWidget(self._command_list) layout.addWidget(self._view_stack) @@ -290,21 +364,15 @@ def start(self) -> None: self._install_btn.setEnabled(False) # Run download + preview on a background thread to keep UI responsive - self._thread = QThread() - self._preview_worker = PreviewWorker(self._porringer, self._manifest_url) - self._preview_worker.moveToThread(self._thread) - - self._thread.started.connect(self._preview_worker.run) - self._preview_worker.preview_ready.connect(self._on_preview_ready) - self._preview_worker.action_checked.connect(self._on_action_checked) - self._preview_worker.finished.connect(self._on_preview_complete) - self._preview_worker.error.connect(self._on_preview_error) - self._preview_worker.finished.connect(self._thread.quit) - self._preview_worker.error.connect(self._thread.quit) - self._thread.finished.connect(self._thread.deleteLater) - self._thread.finished.connect(self._preview_worker.deleteLater) - - self._thread.start() + preview_worker = PreviewWorker(self._porringer, self._manifest_url) + + preview_worker.preview_ready.connect(self._on_preview_ready) + preview_worker.action_checked.connect(self._on_action_checked) + preview_worker.finished.connect(self._on_preview_complete) + preview_worker.error.connect(self._on_preview_error) + + self._runner = ThreadRunner(preview_worker) + self._runner.start() # --- Preview callbacks --- @@ -328,6 +396,7 @@ def _on_preview_ready(self, preview: SetupResults, manifest_path: str, temp_dir_ self._status_label.setText('No actions to perform — the manifest is empty.') return + self._action_statuses = ['Checking…'] * len(preview.actions) self._status_label.setText(f'{len(preview.actions)} action(s) — checking status…') self._populate_table(preview.actions) self._install_btn.setEnabled(True) @@ -366,17 +435,22 @@ def _show_metadata(self, preview: SetupResults) -> None: # --- Dry-run callbacks --- def _on_action_checked(self, row: int, result: SetupActionResult) -> None: - """Update a single table row with the dry-run result.""" + """Update the data model and table row with the dry-run result.""" + label = (result.skip_reason or 'Satisfied') if result.skipped else 'Needed' + + # Update the data model + if 0 <= row < len(self._action_statuses): + self._action_statuses[row] = label + + # Update the table display item = self._table.item(row, 4) if item is None: return + item.setText(label) if result.skipped: - label = result.skip_reason or 'Satisfied' - item.setText(label) item.setForeground(self.palette().mid()) else: - item.setText('Needed') item.setForeground(self.palette().text()) def _on_preview_complete(self) -> None: @@ -384,19 +458,18 @@ def _on_preview_complete(self) -> None: if self._preview is None or not self._preview.actions: return - total = self._table.rowCount() - satisfied = 0 - for row in range(total): - item = self._table.item(row, 4) - if item is None: - continue - # Rows still showing "Checking…" were not reported — assume needed - if item.text() == 'Checking…': - item.setText('Needed') - item.setForeground(self.palette().text()) - if item.text() != 'Needed': - satisfied += 1 - needed = total - satisfied + # Resolve any still-pending statuses as 'Needed' + for i, status in enumerate(self._action_statuses): + if status == 'Checking…': + self._action_statuses[i] = 'Needed' + item = self._table.item(i, 4) + if item is not None: + item.setText('Needed') + item.setForeground(self.palette().text()) + + total = len(self._action_statuses) + needed = sum(1 for s in self._action_statuses if s == 'Needed') + satisfied = total - needed if needed == 0: self._status_label.setText(f'{total} action(s) — all already satisfied.') @@ -451,69 +524,9 @@ def _populate_table(self, actions: list[SetupAction]) -> None: status_item.setForeground(self.palette().placeholderText()) self._table.setItem(row, 4, status_item) - self._populate_command_list(actions) - - def _populate_command_list(self, actions: list[SetupAction]) -> None: - """Build per-action command fields with descriptive labels above each.""" - container = QWidget() - layout = QVBoxLayout(container) - layout.setContentsMargins(0, 0, 0, 0) - - mono = QFont('Consolas', 10) - for i, action in enumerate(actions, 1): - label_text = ACTION_TYPE_LABELS.get(action.action_type, 'Action') - desc = action.package_description or action.description - header = QLabel(f'{i}. [{label_text}] {desc}') - header.setStyleSheet('color: grey; margin-top: 6px;') - layout.addWidget(header) - - field = QLineEdit(format_cli_command(action)) - field.setReadOnly(True) - field.setFont(mono) - - row_layout = QHBoxLayout() - row_layout.setContentsMargins(0, 0, 0, 0) - row_layout.setSpacing(4) - row_layout.addWidget(field) - row_layout.addWidget(self._make_copy_button(field)) - - row_widget = QWidget() - row_widget.setLayout(row_layout) - layout.addWidget(row_widget) - - layout.addStretch() - self._command_scroll.setWidget(container) + self._command_list.populate(actions) self._toggle_btn.setEnabled(True) - def _make_copy_button(self, field: QLineEdit) -> QToolButton: - """Create a copy-to-clipboard button bound to *field*.""" - btn = QToolButton() - btn.setText(_COPY_ICON) - btn.setToolTip('Copy to clipboard') - btn.setFixedSize(28, 28) - btn.setStyleSheet(_COPY_BTN_STYLE) - btn.setCursor(Qt.CursorShape.PointingHandCursor) - btn.clicked.connect(lambda: self._copy_command(field, btn)) - return btn - - @staticmethod - def _copy_command(field: QLineEdit, button: QToolButton) -> None: - """Copy the field text to the clipboard and briefly show a check mark.""" - clipboard = QApplication.clipboard() - if clipboard: - clipboard.setText(field.text()) - button.setText('\u2713') - button.setToolTip('Copied!') - - def _restore() -> None: - try: - button.setText(_COPY_ICON) - button.setToolTip('Copy to clipboard') - except RuntimeError: - pass - - QTimer.singleShot(1200, _restore) - # --- Install execution --- def _on_install(self) -> None: @@ -542,24 +555,17 @@ def _on_install(self) -> None: self._progress_dialog.show() # Worker thread - self._thread = QThread() - self._worker = InstallWorker( + worker = InstallWorker( self._porringer, self._preview, self._cancellation_token, ) - self._worker.moveToThread(self._thread) - - self._thread.started.connect(self._worker.run) - self._worker.progress.connect(self._on_action_progress) - self._worker.finished.connect(self._on_install_finished) - self._worker.error.connect(self._on_install_error) - self._worker.finished.connect(self._thread.quit) - self._worker.error.connect(self._thread.quit) - self._thread.finished.connect(self._thread.deleteLater) - self._thread.finished.connect(self._worker.deleteLater) - - self._thread.start() + worker.progress.connect(self._on_action_progress) + worker.finished.connect(self._on_install_finished) + worker.error.connect(self._on_install_error) + + self._runner = ThreadRunner(worker) + self._runner.start() def _on_action_progress(self, action: SetupAction, result: SetupActionResult) -> None: """Handle a single action completion from the worker.""" diff --git a/synodic_client/application/screen/screen.py b/synodic_client/application/screen/screen.py index e89504d..f2115a0 100644 --- a/synodic_client/application/screen/screen.py +++ b/synodic_client/application/screen/screen.py @@ -21,6 +21,8 @@ QWidget, ) +from synodic_client.application.theme import COMPACT_MARGINS, MAIN_WINDOW_MIN_SIZE + if TYPE_CHECKING: from porringer.api import API @@ -42,7 +44,7 @@ def __init__(self, porringer: API, parent: QWidget | None = None) -> None: def _init_ui(self) -> None: """Initialize the UI components.""" layout = QVBoxLayout(self) - layout.setContentsMargins(8, 8, 8, 8) + layout.setContentsMargins(*COMPACT_MARGINS) self._table = QTableWidget() self._table.setColumnCount(3) @@ -97,7 +99,7 @@ def __init__(self, porringer: API, parent: QWidget | None = None) -> None: def _init_ui(self) -> None: """Initialize the UI components.""" layout = QVBoxLayout(self) - layout.setContentsMargins(8, 8, 8, 8) + layout.setContentsMargins(*COMPACT_MARGINS) # Toolbar with add/remove buttons toolbar = QHBoxLayout() @@ -206,7 +208,7 @@ def __init__(self, porringer: API | None = None) -> None: super().__init__() self._porringer = porringer self.setWindowTitle('Synodic Client') - self.setMinimumSize(600, 400) + self.setMinimumSize(*MAIN_WINDOW_MIN_SIZE) def show(self) -> None: """Show the window, initializing UI lazily on first show.""" diff --git a/synodic_client/application/screen/tray.py b/synodic_client/application/screen/tray.py index 4aa28c6..1bef027 100644 --- a/synodic_client/application/screen/tray.py +++ b/synodic_client/application/screen/tray.py @@ -3,7 +3,7 @@ import logging from typing import LiteralString -from PySide6.QtCore import QObject, QThread, QTimer, Signal +from PySide6.QtCore import QObject, QTimer, Signal from PySide6.QtGui import QAction, QIcon from PySide6.QtWidgets import ( QApplication, @@ -18,10 +18,14 @@ QPushButton, QSystemTrayIcon, QVBoxLayout, + QWidget, ) from synodic_client.application.screen.screen import MainWindow +from synodic_client.application.theme import UPDATE_SOURCE_DIALOG_MIN_WIDTH +from synodic_client.application.threading import ThreadRunner from synodic_client.client import Client +from synodic_client.config import GlobalConfiguration from synodic_client.logging import open_log from synodic_client.resolution import resolve_config, resolve_update_config, update_and_resolve from synodic_client.updater import GITHUB_REPO_URL, UpdateChannel, UpdateInfo @@ -76,16 +80,86 @@ def progress_callback(percentage: int) -> None: self.error.emit(str(e)) +class UpdateSourceDialog(QDialog): + """Dialog for editing the Velopack update source URL or local path.""" + + def __init__(self, current_source: str | None, parent: QWidget | None = None) -> None: + """Initialise the dialog. + + Args: + current_source: The current update source value (may be ``None``). + parent: Optional parent widget. + """ + super().__init__(parent) + self.setWindowTitle('Update Source') + self.setMinimumWidth(UPDATE_SOURCE_DIALOG_MIN_WIDTH) + + layout = QVBoxLayout(self) + + label = QLabel( + 'Enter a URL or local path for Velopack releases.\nLeave blank to use the default GitHub source.', + ) + layout.addWidget(label) + + self._source_edit = QLineEdit(current_source or '') + self._source_edit.setPlaceholderText(GITHUB_REPO_URL) + + browse_button = QPushButton('Browse...') + browse_button.clicked.connect(self._browse) + + row = QHBoxLayout() + row.addWidget(self._source_edit) + row.addWidget(browse_button) + layout.addLayout(row) + + button_row = QHBoxLayout() + ok_button = QPushButton('OK') + cancel_button = QPushButton('Cancel') + button_row.addStretch() + button_row.addWidget(ok_button) + button_row.addWidget(cancel_button) + layout.addLayout(button_row) + + ok_button.clicked.connect(self.accept) + cancel_button.clicked.connect(self.reject) + + def _browse(self) -> None: + path = QFileDialog.getExistingDirectory(self, 'Select Releases Directory') + if path: + self._source_edit.setText(path) + + @property + def source(self) -> str | None: + """Return the trimmed source text, or ``None`` if blank.""" + return self._source_edit.text().strip() or None + + class TrayScreen: """Tray screen for the application.""" - def __init__(self, app: QApplication, client: Client, icon_name: LiteralString, window: MainWindow) -> None: - """Initialize the tray icon.""" + def __init__( + self, + app: QApplication, + client: Client, + icon_name: LiteralString, + window: MainWindow, + config: GlobalConfiguration | None = None, + ) -> None: + """Initialize the tray icon. + + Args: + app: The running ``QApplication``. + client: The Synodic Client service. + icon_name: Resource name for the tray icon. + window: The main application window. + config: Optional pre-resolved configuration. When ``None``, + the configuration is resolved from disk on demand. + """ self._app = app self._client = client self._window = window - self._update_thread: QThread | None = None - self._update_worker: UpdateCheckWorker | UpdateDownloadWorker | None = None + self._config = config + self._runner: ThreadRunner | None = None self._progress_dialog: QProgressDialog | None = None self._pending_update_info: UpdateInfo | None = None self._download_cancelled = False @@ -159,13 +233,21 @@ def _build_menu(self, app: QApplication, window: MainWindow) -> None: self.tray.setContextMenu(self.menu) + # -- Config helpers -- + + def _resolve_config(self) -> GlobalConfiguration: + """Return the injected config or resolve from disk.""" + if self._config is not None: + return self._config + return resolve_config() + def _start_auto_update_timer(self) -> None: """Start (or restart) the periodic auto-update timer from config.""" if self._auto_update_timer is not None: self._auto_update_timer.stop() self._auto_update_timer = None - config = resolve_update_config(resolve_config()) + config = resolve_update_config(self._resolve_config()) interval_hours = config.auto_update_interval_hours if interval_hours <= 0: logger.info('Automatic update checking is disabled') @@ -180,7 +262,7 @@ def _start_auto_update_timer(self) -> None: def _sync_channel_checks(self) -> None: """Synchronize channel checkmarks with the current config.""" - config = resolve_config() + config = self._resolve_config() is_dev = config.update_channel == 'dev' self._channel_stable_action.setChecked(not is_dev) self._channel_dev_action.setChecked(is_dev) @@ -194,70 +276,42 @@ def _on_tray_activated(self, reason: QSystemTrayIcon.ActivationReason) -> None: def _on_update_source(self) -> None: """Open a dialog to edit the update source URL or local path.""" - config = resolve_config() - - dialog = QDialog(self._window if self._window.isVisible() else None) - dialog.setWindowTitle('Update Source') - dialog.setMinimumWidth(450) + config = self._resolve_config() - layout = QVBoxLayout(dialog) - - label = QLabel( - 'Enter a URL or local path for Velopack releases.\nLeave blank to use the default GitHub source.', - ) - layout.addWidget(label) - - source_edit = QLineEdit(config.update_source or '') - source_edit.setPlaceholderText(GITHUB_REPO_URL) - - browse_button = QPushButton('Browse...') - - row = QHBoxLayout() - row.addWidget(source_edit) - row.addWidget(browse_button) - layout.addLayout(row) - - button_row = QHBoxLayout() - ok_button = QPushButton('OK') - cancel_button = QPushButton('Cancel') - button_row.addStretch() - button_row.addWidget(ok_button) - button_row.addWidget(cancel_button) - layout.addLayout(button_row) - - def _browse() -> None: - path = QFileDialog.getExistingDirectory(dialog, 'Select Releases Directory') - if path: - source_edit.setText(path) - - browse_button.clicked.connect(_browse) - ok_button.clicked.connect(dialog.accept) - cancel_button.clicked.connect(dialog.reject) + parent = self._window if self._window.isVisible() else None + dialog = UpdateSourceDialog(config.update_source, parent) if dialog.exec() == QDialog.DialogCode.Accepted: - new_source = source_edit.text().strip() or None - config.update_source = new_source - logger.info('Update source changed to: %s', new_source or '(default)') - - update_cfg = update_and_resolve(config) - self._client.initialize_updater(update_cfg) - self._start_auto_update_timer() - logger.info( - 'Updater re-initialized (channel: %s, source: %s)', update_cfg.channel.name, update_cfg.repo_url - ) + config.update_source = dialog.source + logger.info('Update source changed to: %s', dialog.source or '(default)') + self._reinitialize_updater(config) def _on_channel_changed(self, channel: UpdateChannel) -> None: """Handle channel selection change.""" - config = resolve_config() + config = self._resolve_config() config.update_channel = 'dev' if channel == UpdateChannel.DEVELOPMENT else 'stable' logger.info('Update channel changed to: %s', config.update_channel) + self._sync_channel_checks() + self._reinitialize_updater(config) + def _reinitialize_updater(self, config: GlobalConfiguration) -> None: + """Re-derive update settings and restart the updater and auto-update timer.""" update_cfg = update_and_resolve(config) - self._sync_channel_checks() self._client.initialize_updater(update_cfg) self._start_auto_update_timer() logger.info('Updater re-initialized (channel: %s, source: %s)', update_cfg.channel.name, update_cfg.repo_url) + def _reset_update_action(self) -> None: + """Restore the 'Check for Updates' action to its idle state.""" + self.update_action.setEnabled(True) + self.update_action.setText('Check for Updates...') + + def _close_progress(self) -> None: + """Close and discard the download progress dialog, if open.""" + if self._progress_dialog: + self._progress_dialog.close() + self._progress_dialog = None + def _on_check_updates(self) -> None: """Handle check for updates action.""" if self._client.updater is None: @@ -272,31 +326,16 @@ def _on_check_updates(self) -> None: self.update_action.setEnabled(False) self.update_action.setText('Checking for Updates...') - # Create worker and thread - self._update_thread = QThread() - self._update_worker = UpdateCheckWorker(self._client) - self._update_worker.moveToThread(self._update_thread) - - # Connect signals - self._update_thread.started.connect(self._update_worker.run) - self._update_worker.finished.connect(self._on_update_check_finished) - self._update_worker.error.connect(self._on_update_check_error) + worker = UpdateCheckWorker(self._client) + worker.finished.connect(self._on_update_check_finished) + worker.error.connect(self._on_update_check_error) - # Clean up thread and worker when thread finishes - self._update_thread.finished.connect(self._update_thread.deleteLater) - self._update_thread.finished.connect(self._update_worker.deleteLater) - - # Start the thread - self._update_thread.start() + self._runner = ThreadRunner(worker) + self._runner.start() def _on_update_check_finished(self, result: UpdateInfo | None) -> None: """Handle update check completion.""" - if self._update_thread is not None: - self._update_thread.quit() - self._update_thread.wait() - - self.update_action.setEnabled(True) - self.update_action.setText('Check for Updates...') + self._reset_update_action() if result is None: self.tray.showMessage( @@ -332,12 +371,7 @@ def _on_update_check_finished(self, result: UpdateInfo | None) -> None: def _on_update_check_error(self, error: str) -> None: """Handle update check error.""" - if self._update_thread is not None: - self._update_thread.quit() - self._update_thread.wait() - - self.update_action.setEnabled(True) - self.update_action.setText('Check for Updates...') + self._reset_update_action() self.tray.showMessage( 'Update Check Error', @@ -368,28 +402,18 @@ def _start_download(self) -> None: self._download_cancelled = False self._progress_dialog.show() - # Create worker and thread - self._update_thread = QThread() - self._update_worker = UpdateDownloadWorker(self._client) - self._update_worker.moveToThread(self._update_thread) + worker = UpdateDownloadWorker(self._client) + worker.finished.connect(self._on_download_finished) + worker.progress.connect(self._on_download_progress) + worker.error.connect(self._on_download_error) - # Connect signals - self._update_thread.started.connect(self._update_worker.run) - self._update_worker.finished.connect(self._on_download_finished) - self._update_worker.progress.connect(self._on_download_progress) - self._update_worker.error.connect(self._on_download_error) - self._update_worker.finished.connect(self._update_thread.quit) - self._update_worker.error.connect(self._update_thread.quit) - - # Start the thread - self._update_thread.start() + self._runner = ThreadRunner(worker) + self._runner.start() def _on_download_cancelled(self) -> None: """Handle cancel button on the download progress dialog.""" self._download_cancelled = True - if self._progress_dialog: - self._progress_dialog.close() - self._progress_dialog = None + self._close_progress() logger.info('Update download cancelled by user') def _on_download_progress(self, percentage: int) -> None: @@ -400,9 +424,7 @@ def _on_download_progress(self, percentage: int) -> None: def _on_download_finished(self, success: bool) -> None: """Handle download completion.""" - if self._progress_dialog: - self._progress_dialog.close() - self._progress_dialog = None + self._close_progress() if self._download_cancelled: return @@ -431,9 +453,7 @@ def _on_download_finished(self, success: bool) -> None: def _on_download_error(self, error: str) -> None: """Handle download error.""" - if self._progress_dialog: - self._progress_dialog.close() - self._progress_dialog = None + self._close_progress() self.tray.showMessage( 'Download Error', diff --git a/synodic_client/application/theme.py b/synodic_client/application/theme.py new file mode 100644 index 0000000..1945e5e --- /dev/null +++ b/synodic_client/application/theme.py @@ -0,0 +1,53 @@ +"""Centralised UI constants, sizes, and style fragments. + +Collecting magic numbers and inline stylesheets here keeps the widget +code focused on layout and behaviour rather than pixel tweaking. +""" + +from __future__ import annotations + +# --------------------------------------------------------------------------- +# Window sizes (width, height) +# --------------------------------------------------------------------------- +INSTALL_PREVIEW_MIN_SIZE = (650, 400) +MAIN_WINDOW_MIN_SIZE = (600, 400) +UPDATE_SOURCE_DIALOG_MIN_WIDTH = 450 + +# --------------------------------------------------------------------------- +# Layout margins (left, top, right, bottom) +# --------------------------------------------------------------------------- +CONTENT_MARGINS = (12, 12, 12, 12) +COMPACT_MARGINS = (8, 8, 8, 8) +NO_MARGINS = (0, 0, 0, 0) + +# --------------------------------------------------------------------------- +# Timers / durations (milliseconds) +# --------------------------------------------------------------------------- +COPY_FEEDBACK_MS = 1200 +"""How long the copy-button shows a ✓ before reverting.""" + +SOCKET_TIMEOUT_MS = 1000 +"""Timeout used by :class:`SingleInstance` socket operations.""" + +# --------------------------------------------------------------------------- +# Fonts +# --------------------------------------------------------------------------- +MONOSPACE_FAMILY = 'Consolas' +MONOSPACE_SIZE = 10 + +# --------------------------------------------------------------------------- +# Copy button +# --------------------------------------------------------------------------- +COPY_ICON = '\U0001f4cb' +COPY_BTN_SIZE = (28, 28) +COPY_BTN_STYLE = ( + 'QToolButton { border: none; padding: 2px 4px; }' + 'QToolButton:hover { background: palette(midlight); border-radius: 3px; }' +) + +# --------------------------------------------------------------------------- +# Stylesheet fragments +# --------------------------------------------------------------------------- +HEADER_STYLE = 'font-size: 14px; font-weight: bold;' +MUTED_STYLE = 'color: grey;' +COMMAND_HEADER_STYLE = 'color: grey; margin-top: 6px;' diff --git a/synodic_client/application/threading.py b/synodic_client/application/threading.py new file mode 100644 index 0000000..474c9da --- /dev/null +++ b/synodic_client/application/threading.py @@ -0,0 +1,82 @@ +"""Reusable QThread worker runner. + +Encapsulates the boilerplate for moving a ``QObject`` worker onto a +``QThread``, wiring lifecycle signals, and starting execution. + +.. note:: + + The caller **must** store the returned ``ThreadRunner`` as an instance + attribute to prevent premature garbage collection. +""" + +from __future__ import annotations + +from PySide6.QtCore import QObject, QThread, Signal + + +class ThreadRunner(QObject): + """Manages a worker ``QObject`` on a dedicated ``QThread``. + + Usage:: + + runner = ThreadRunner(my_worker) + runner.start() + + The runner connects ``thread.started`` → ``worker.run()`` and ensures + both the thread and worker are cleaned up via ``deleteLater`` when the + thread finishes. + + Callers should connect domain signals (``finished``, ``error``, etc.) + on the *worker* before calling :meth:`start`. + """ + + #: Emitted when the managed thread finishes (for external cleanup). + thread_finished = Signal() + + def __init__(self, worker: QObject, parent: QObject | None = None) -> None: + """Initialise the runner. + + Args: + worker: A ``QObject`` with a ``run()`` slot. Must **not** + already be parented — ``moveToThread`` requires this. + parent: Optional parent for preventing GC. + """ + super().__init__(parent) + self._thread = QThread() + self._worker = worker + worker.moveToThread(self._thread) + + # Start the worker when the thread begins + self._thread.started.connect(worker.run) # type: ignore[attr-defined] + + # Quit-and-cleanup wiring: connect any ``finished`` / ``error`` + # signals on the worker so the thread stops automatically. + for signal_name in ('finished', 'error'): + signal = getattr(worker, signal_name, None) + if signal is not None: + signal.connect(self._thread.quit) + + self._thread.finished.connect(self._thread.deleteLater) + self._thread.finished.connect(worker.deleteLater) + self._thread.finished.connect(self.thread_finished) + + # -- public helpers -- + + def start(self) -> None: + """Start the background thread.""" + self._thread.start() + + def quit_and_wait(self) -> None: + """Ask the thread to quit and block until it finishes.""" + self._thread.quit() + self._thread.wait() + + @property + def managed_thread(self) -> QThread: + """Return the underlying ``QThread``.""" + return self._thread + + @property + def worker(self) -> QObject: + """Return the managed worker.""" + return self._worker From c99cff9774461e6ab9dfae88e48daa7619464de3 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Mon, 9 Feb 2026 11:49:24 -0800 Subject: [PATCH 27/40] Update Chore --- examples/python-dev/README.md | 12 +++-- examples/python-dev/porringer.json | 8 +-- pdm.lock | 26 ++++----- synodic_client/application/screen/install.py | 57 ++++++++++++++++++-- synodic_client/application/screen/screen.py | 12 ++--- tool/pyinstaller/synodic.spec | 11 ++++ 6 files changed, 92 insertions(+), 34 deletions(-) diff --git a/examples/python-dev/README.md b/examples/python-dev/README.md index 7204aaa..6e777cd 100644 --- a/examples/python-dev/README.md +++ b/examples/python-dev/README.md @@ -4,14 +4,14 @@ This example demonstrates using Porringer to set up a Python development environ ## Manifest Overview -The `porringer.json` manifest declares the desired **state** using backend identifiers. Porringer resolves each backend to the best available installer at runtime. +The `porringer.json` manifest declares the desired environment using section types. Porringer resolves each section to the best available installer at runtime. -- **`python` backend** (resolved to `uv` or `pip`): Development tools installed in the current environment +- **`projects` / `python`** (resolved to `uv` or `pip`): Development dependencies synced as project-level deps - `ruff` - Fast Python linter and formatter - `pyrefly` - Python type checker - `pytest` - Testing framework - `pytest-cov` - Coverage plugin for pytest -- **`python-tool` backend** (resolved to `pipx`): CLI tools installed in isolated environments +- **`tools` / `python`** (resolved to `pipx`): CLI tools installed in isolated environments - `pdm` - Python package and dependency manager Packages can be specified as plain strings (`"pytest"`) or as objects with optional `description` and `platforms` fields. Version constraints use PEP 440 syntax (e.g., `"ruff>=0.8.0"`, `"pydantic>=2,<3"`). @@ -50,9 +50,11 @@ You can also embed this manifest in a `pyproject.toml` file: [tool.porringer] version = "1" -[tool.porringer.state] +[tool.porringer.projects] python = ["ruff", "pyrefly", "pytest", "pytest-cov"] -python-tool = ["pdm"] + +[tool.porringer.tools] +python = ["pdm"] [tool.porringer.preferences] python = "uv" # optional: prefer uv over pip diff --git a/examples/python-dev/porringer.json b/examples/python-dev/porringer.json index 2197cff..6405a1f 100644 --- a/examples/python-dev/porringer.json +++ b/examples/python-dev/porringer.json @@ -4,7 +4,7 @@ "description": "Common linting, formatting, and testing tools for Python development", "author": "Synodic Software", "url": "https://github.com/synodic/porringer", - "state": { + "projects": { "python": [ { "name": "ruff", @@ -16,8 +16,10 @@ }, "pytest", "pytest-cov" - ], - "python-tool": [ + ] + }, + "tools": { + "python": [ { "name": "pdm", "description": "Python package and dependency manager" diff --git a/pdm.lock b/pdm.lock index dc6c421..b4fb08f 100644 --- a/pdm.lock +++ b/pdm.lock @@ -261,7 +261,7 @@ files = [ [[package]] name = "porringer" -version = "0.2.1.dev1" +version = "0.2.1.dev7" requires_python = ">=3.14" summary = "" groups = ["default"] @@ -274,8 +274,8 @@ dependencies = [ "userpath>=1.9.2", ] files = [ - {file = "porringer-0.2.1.dev1-py3-none-any.whl", hash = "sha256:b3c5181c1ee5d04661ebc463bc836cfa50a41867828fff9b2dd831537a139cc2"}, - {file = "porringer-0.2.1.dev1.tar.gz", hash = "sha256:7d2647ed312e161b0ba35f195c00ff876a99bd58565dfdd30a89df5966c4c519"}, + {file = "porringer-0.2.1.dev7-py3-none-any.whl", hash = "sha256:7606fdfd1d039be9be80040cbec51429c911f4cc77e89cc88de0c79599a7da92"}, + {file = "porringer-0.2.1.dev7.tar.gz", hash = "sha256:48779426305620cb08c2748404755357b911e9a4b783a08257e2e44d98540a11"}, ] [[package]] @@ -396,20 +396,20 @@ files = [ [[package]] name = "pyrefly" -version = "0.51.2" +version = "0.52.0" requires_python = ">=3.8" summary = "A fast type checker and language server for Python with powerful IDE features" groups = ["lint"] files = [ - {file = "pyrefly-0.51.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:573cd017082737822cd43ac276772ab75708d423d2947ac8cf92e66d919dc86c"}, - {file = "pyrefly-0.51.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7f0d60ed594204c46562a3ef94fe1f1678cd280469db8778ba0427781e7313b4"}, - {file = "pyrefly-0.51.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e5aaf395339279525932e4cc35a91e3b58def35a684bba1beeaaacfb857ff67"}, - {file = "pyrefly-0.51.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d5359d68bfda3ac01f866fe149cee5274a409c3f8c5b647b986b1d34249dee2"}, - {file = "pyrefly-0.51.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16f893f08430cf1336c4fd7ed885039cff1b0afccd81f35c5f1d5a149f7d9dcf"}, - {file = "pyrefly-0.51.2-py3-none-win32.whl", hash = "sha256:a582a799816f8d3ace3339dcc557e02de53ba6ee09d122464124c0fb68ff6922"}, - {file = "pyrefly-0.51.2-py3-none-win_amd64.whl", hash = "sha256:4bff9ff0bba6e2e072c6ffb489723eadb6d91a745e3b62704b1aac92651eae00"}, - {file = "pyrefly-0.51.2-py3-none-win_arm64.whl", hash = "sha256:24d02f15adc05c4b90fdb261b77ff1d5632924fd3717890a5e870bbe18ce0b6f"}, - {file = "pyrefly-0.51.2.tar.gz", hash = "sha256:b931a2d168b8aebc425da0dacea91b94684092ffd2c739fa1a48fac70f9218fb"}, + {file = "pyrefly-0.52.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:90d7bf2fb812ee3a920a962da2aa2387e2f4109c62604e5be1a736046a3260c7"}, + {file = "pyrefly-0.52.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:848764fdbc474fd36412d7ccf230d13a12ab3b2c28968124d9e9d51df79b7b8e"}, + {file = "pyrefly-0.52.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43b712830df1247798fb79f478a236b0ffbe5983bdde5eb2f5b99a9411e09f35"}, + {file = "pyrefly-0.52.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:baa4130c460ad7c8d7efcff9017b7bc74c71736c5959ebfc2b7e405c2ce07d5d"}, + {file = "pyrefly-0.52.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3297751b1b13ecb582af48c8798e0b652c41c33a7e4ed72676164b29561655f6"}, + {file = "pyrefly-0.52.0-py3-none-win32.whl", hash = "sha256:d24ed11ef5eab93625df0bb4e67f7f946208b2b0ed4359b78f69cabbc6f78e3d"}, + {file = "pyrefly-0.52.0-py3-none-win_amd64.whl", hash = "sha256:0e5bee368fbdce6430b7672304bc4e36f11bc3b72ad067cbfde934d380701a3b"}, + {file = "pyrefly-0.52.0-py3-none-win_arm64.whl", hash = "sha256:8cabc07740e90c0baea12a1e7c48d6422130a19331033e8d9a16dd63e7e90db0"}, + {file = "pyrefly-0.52.0.tar.gz", hash = "sha256:abe022b68e67a2fd9adad4f8fe2deced2a786df32601b0eecbb00b40ea1f3b93"}, ] [[package]] diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index 774c261..71234de 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -31,6 +31,7 @@ from PySide6.QtGui import QFont, QKeySequence, QShortcut from PySide6.QtWidgets import ( QApplication, + QFileDialog, QHBoxLayout, QHeaderView, QLabel, @@ -50,6 +51,7 @@ from synodic_client.application.theme import ( COMMAND_HEADER_STYLE, + COMPACT_MARGINS, CONTENT_MARGINS, COPY_BTN_SIZE, COPY_BTN_STYLE, @@ -71,6 +73,7 @@ ACTION_TYPE_LABELS = { SetupActionType.PACKAGE: 'Package', + SetupActionType.PROJECT_SYNC: 'Project Sync', SetupActionType.RUN_COMMAND: 'Run Command', } @@ -100,6 +103,8 @@ def __init__( porringer: API, preview: SetupResults, cancellation_token: CancellationToken, + *, + project_directory: Path | None = None, ) -> None: """Initialize the worker. @@ -107,11 +112,13 @@ def __init__( porringer: The porringer API instance. preview: The preview results containing actions and manifest_path. cancellation_token: Token for cooperative cancellation. + project_directory: Working directory for project sync actions. """ super().__init__() self._porringer = porringer self._preview = preview self._cancellation_token = cancellation_token + self._project_directory = project_directory def run(self) -> None: """Execute the setup actions on this thread's event loop.""" @@ -127,7 +134,7 @@ def run(self) -> None: async def _execute(self) -> SetupResults: """Stream execution events and collect results.""" previews = BatchSetupResults(manifest_results=[self._preview], failed_paths=[]) - params = SetupParameters() + params = SetupParameters(project_directory=self._project_directory) collected: list[SetupActionResult] = [] async for event in self._porringer.sync.execute_stream(previews, params): @@ -241,6 +248,9 @@ def __init__(self, porringer: API, manifest_url: str, parent: QWidget | None = N # Data model: per-action status separate from widget state self._action_statuses: list[str] = [] + # Default project directory to the current working directory + self._project_directory: Path = Path.cwd() + self.setWindowTitle('Install Preview') self.setMinimumSize(*INSTALL_PREVIEW_MIN_SIZE) @@ -274,6 +284,9 @@ def _init_ui(self) -> None: self._meta_label.hide() layout.addWidget(self._meta_label) + # Project directory input + layout.addLayout(self._init_project_dir_row()) + # Status label (shown during download/preview) self._status_label = QLabel() layout.addWidget(self._status_label) @@ -311,6 +324,40 @@ def _init_actions_table(self) -> QTableWidget: QShortcut(QKeySequence.StandardKey.Copy, table, self._copy_table_selection) return table + def _init_project_dir_row(self) -> QHBoxLayout: + """Create the project directory input row.""" + row = QHBoxLayout() + row.setContentsMargins(*COMPACT_MARGINS) + + label = QLabel('Project path:') + row.addWidget(label) + + self._project_dir_field = QLineEdit(str(self._project_directory)) + self._project_dir_field.setToolTip('Working directory for project sync and post-sync commands') + self._project_dir_field.textChanged.connect(self._on_project_dir_changed) + row.addWidget(self._project_dir_field) + + browse_btn = QPushButton('Browse…') + browse_btn.clicked.connect(self._on_browse_project_dir) + row.addWidget(browse_btn) + + return row + + def _on_project_dir_changed(self, text: str) -> None: + """Update the project directory from the text field.""" + self._project_directory = Path(text) + + def _on_browse_project_dir(self) -> None: + """Open a directory picker for the project path.""" + chosen = QFileDialog.getExistingDirectory( + self, + 'Select Project Directory', + str(self._project_directory), + ) + if chosen: + self._project_directory = Path(chosen) + self._project_dir_field.setText(chosen) + def _init_button_bar(self) -> QHBoxLayout: """Create the bottom button bar.""" self._toggle_btn = QPushButton('Show Commands') @@ -364,7 +411,7 @@ def start(self) -> None: self._install_btn.setEnabled(False) # Run download + preview on a background thread to keep UI responsive - preview_worker = PreviewWorker(self._porringer, self._manifest_url) + preview_worker = PreviewWorker(self._porringer, self._manifest_url, project_directory=self._project_directory) preview_worker.preview_ready.connect(self._on_preview_ready) preview_worker.action_checked.connect(self._on_action_checked) @@ -559,6 +606,7 @@ def _on_install(self) -> None: self._porringer, self._preview, self._cancellation_token, + project_directory=self._project_directory, ) worker.progress.connect(self._on_action_progress) worker.finished.connect(self._on_install_finished) @@ -638,11 +686,12 @@ class PreviewWorker(QObject): finished = Signal() error = Signal(str) - def __init__(self, porringer: API, url: str) -> None: + def __init__(self, porringer: API, url: str, *, project_directory: Path | None = None) -> None: """Initialize the preview worker.""" super().__init__() self._porringer = porringer self._url = url + self._project_directory = project_directory def run(self) -> None: """Download the manifest, preview actions, and check status via dry-run.""" @@ -696,7 +745,7 @@ def _run_dry_check(self, preview: SetupResults) -> None: async def _check(self, preview: SetupResults) -> None: """Stream dry-run events and emit per-action results.""" previews = BatchSetupResults(manifest_results=[preview], failed_paths=[]) - params = SetupParameters(dry_run=True) + params = SetupParameters(dry_run=True, project_directory=self._project_directory) action_indices: dict[int, int] = {id(a): i for i, a in enumerate(preview.actions)} async for event in self._porringer.sync.execute_stream(previews, params): diff --git a/synodic_client/application/screen/screen.py b/synodic_client/application/screen/screen.py index f2115a0..cd14c1a 100644 --- a/synodic_client/application/screen/screen.py +++ b/synodic_client/application/screen/screen.py @@ -47,8 +47,8 @@ def _init_ui(self) -> None: layout.setContentsMargins(*COMPACT_MARGINS) self._table = QTableWidget() - self._table.setColumnCount(3) - self._table.setHorizontalHeaderLabels(['Name', 'Version', 'Status']) + self._table.setColumnCount(2) + self._table.setHorizontalHeaderLabels(['Name', 'Version']) self._table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers) self._table.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) self._table.setAlternatingRowColors(True) @@ -56,7 +56,6 @@ def _init_ui(self) -> None: header = self._table.horizontalHeader() header.setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch) header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents) - header.setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents) layout.addWidget(self._table) @@ -70,16 +69,11 @@ def refresh(self) -> None: self._table.setRowCount(len(plugins)) for row, plugin in enumerate(plugins): name_item = QTableWidgetItem(plugin.name) - - version_item = QTableWidgetItem('-') - status_item = QTableWidgetItem('Installed' if plugin.installed else 'Not Installed') - + version_item = QTableWidgetItem(str(plugin.tool_version) if plugin.tool_version else 'Not found') version_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) - status_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) self._table.setItem(row, 0, name_item) self._table.setItem(row, 1, version_item) - self._table.setItem(row, 2, status_item) class DirectoriesView(QWidget): diff --git a/tool/pyinstaller/synodic.spec b/tool/pyinstaller/synodic.spec index 152d8b0..39fe5ba 100644 --- a/tool/pyinstaller/synodic.spec +++ b/tool/pyinstaller/synodic.spec @@ -13,12 +13,23 @@ datas += copy_metadata('porringer') hiddenimports += [ 'porringer.plugin.apt.plugin', 'porringer.plugin.brew.plugin', + 'porringer.plugin.bun.plugin', + 'porringer.plugin.bun_project.plugin', + 'porringer.plugin.deno.plugin', + 'porringer.plugin.deno_project.plugin', 'porringer.plugin.npm.plugin', + 'porringer.plugin.npm_project.plugin', + 'porringer.plugin.pdm.plugin', 'porringer.plugin.pim.plugin', 'porringer.plugin.pip.plugin', 'porringer.plugin.pipx.plugin', + 'porringer.plugin.pnpm_project.plugin', + 'porringer.plugin.poetry.plugin', + 'porringer.plugin.pyenv.plugin', 'porringer.plugin.uv.plugin', + 'porringer.plugin.uv_project.plugin', 'porringer.plugin.winget.plugin', + 'porringer.plugin.yarn_project.plugin', ] a = Analysis( From 6fa213f16ea2ada66fe5b2000ccf390189a29efe Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Tue, 10 Feb 2026 00:13:01 -0800 Subject: [PATCH 28/40] Update Chore --- examples/python-bootstrap/README.md | 71 ++++++ examples/python-bootstrap/porringer.json | 36 +++ examples/python-dev/README.md | 61 ----- examples/python-dev/porringer.json | 29 --- examples/uri-install/README.md | 33 --- examples/uri-install/pyproject.toml | 2 - pdm.lock | 6 +- synodic_client/application/screen/install.py | 231 +++++++++++-------- tests/unit/test_install_preview.py | 221 ++++++++++-------- tool/scripts/dev.py | 2 +- 10 files changed, 362 insertions(+), 330 deletions(-) create mode 100644 examples/python-bootstrap/README.md create mode 100644 examples/python-bootstrap/porringer.json delete mode 100644 examples/python-dev/README.md delete mode 100644 examples/python-dev/porringer.json delete mode 100644 examples/uri-install/README.md delete mode 100644 examples/uri-install/pyproject.toml diff --git a/examples/python-bootstrap/README.md b/examples/python-bootstrap/README.md new file mode 100644 index 0000000..52bb1be --- /dev/null +++ b/examples/python-bootstrap/README.md @@ -0,0 +1,71 @@ +# Python Bootstrap Example + +This example demonstrates using Porringer to bootstrap a complete Python +development environment from scratch — the same chain a developer would +follow manually. + +## Bootstrap Chain + +The manifest executes in **phased order**: + +1. **`runtimes.python`** → installs Python 3.14 via `pim` (Windows) or + `pyenv` (macOS / Linux). The resolved interpreter path is propagated + to all downstream phases. +2. **`packages.python`** → installs `pipx` into the current Python + environment via `pip` or `uv`. +3. **`tools.python`** → installs `pdm` as an isolated CLI tool via + `pipx`. The pipx backend is **deferred** at preview time — it becomes + available only after Phase 2 installs it. +4. **`post_sync`** → runs `pdm install` in the manifest directory, + creating the project virtualenv and installing all dependencies from + `pyproject.toml`. + +## Manifest Overview + +```text +runtimes.python ─► pim / pyenv ─► Python 3.14 +packages.python ─► pip / uv ─► pipx +tools.python ─► pipx ─► pdm (deferred resolution) +post_sync ─► pdm install (project sync) +``` + +## Usage + +### Preview what will happen + +```shell +porringer sync --path examples/python-bootstrap --dry-run +``` + +### Execute with confirmation + +```shell +porringer sync --path examples/python-bootstrap +``` + +### Execute without confirmation (non-interactive) + +```shell +porringer sync --path examples/python-bootstrap --yes +``` + +## How It Works + +Porringer's execution engine splits `PACKAGE`-type actions into sub-phases: + +- **Phase 1 (Runtime):** Runtime providers (pim / pyenv) run first. The + resolved interpreter is forwarded to all `RuntimeConsumer` plugins so + that subsequent pip / uv commands target the correct Python. +- **Phase 2a (Package):** Regular package installs (pip / uv). This is + where pipx gets installed. +- **Phase 2b (Tool):** After Phase 2a the engine **re-discovers** + available plugins. Pipx is now on PATH, so the `tools.python` section + resolves to the pipx backend and pdm is installed. +- **Phase 3 (Project Sync):** Project-environment plugins (pdm, uv, + poetry) run their native sync / install command. +- **Phase 4 (Post-sync):** Arbitrary shell commands execute in the + manifest directory. + +If a tool backend is not available at preview time (e.g. pipx is not yet +installed), the action is created with a *deferred* installer. Resolution +happens just before Phase 2b, after packages have been installed. diff --git a/examples/python-bootstrap/porringer.json b/examples/python-bootstrap/porringer.json new file mode 100644 index 0000000..5c05abe --- /dev/null +++ b/examples/python-bootstrap/porringer.json @@ -0,0 +1,36 @@ +{ + "version": "1", + "name": "Python Bootstrap", + "description": "Bootstrap a complete Python development environment from scratch", + "author": "Synodic Software", + "url": "https://github.com/synodic/porringer", + "runtimes": { + "python": [ + "3.14" + ] + }, + "packages": { + "python": [ + { + "name": "pipx", + "description": "Install and run Python applications in isolated environments" + } + ] + }, + "tools": { + "python": [ + { + "name": "pdm", + "description": "Python package and dependency manager" + } + ] + }, + "scm": { + "git": [ + "https://github.com/synodic/porringer" + ] + }, + "post_sync": [ + "pdm install" + ] +} \ No newline at end of file diff --git a/examples/python-dev/README.md b/examples/python-dev/README.md deleted file mode 100644 index 6e777cd..0000000 --- a/examples/python-dev/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# Python Development Environment Example - -This example demonstrates using Porringer to set up a Python development environment with common linting, formatting, and testing tools. - -## Manifest Overview - -The `porringer.json` manifest declares the desired environment using section types. Porringer resolves each section to the best available installer at runtime. - -- **`projects` / `python`** (resolved to `uv` or `pip`): Development dependencies synced as project-level deps - - `ruff` - Fast Python linter and formatter - - `pyrefly` - Python type checker - - `pytest` - Testing framework - - `pytest-cov` - Coverage plugin for pytest -- **`tools` / `python`** (resolved to `pipx`): CLI tools installed in isolated environments - - `pdm` - Python package and dependency manager - -Packages can be specified as plain strings (`"pytest"`) or as objects with optional `description` and `platforms` fields. Version constraints use PEP 440 syntax (e.g., `"ruff>=0.8.0"`, `"pydantic>=2,<3"`). - -## Usage - -### Preview what will happen - -```shell -porringer sync --path examples/python-dev --dry-run -``` - -### Execute with confirmation - -```shell -porringer sync --path examples/python-dev -``` - -### Execute without confirmation (non-interactive) - -```shell -porringer sync --path examples/python-dev --yes -``` - -### Upgrade all packages to latest - -```shell -porringer sync --path examples/python-dev --strategy latest -``` - -## Alternative: pyproject.toml - -You can also embed this manifest in a `pyproject.toml` file: - -```toml -[tool.porringer] -version = "1" - -[tool.porringer.projects] -python = ["ruff", "pyrefly", "pytest", "pytest-cov"] - -[tool.porringer.tools] -python = ["pdm"] - -[tool.porringer.preferences] -python = "uv" # optional: prefer uv over pip -``` diff --git a/examples/python-dev/porringer.json b/examples/python-dev/porringer.json deleted file mode 100644 index 6405a1f..0000000 --- a/examples/python-dev/porringer.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "version": "1", - "name": "Python Dev Environment", - "description": "Common linting, formatting, and testing tools for Python development", - "author": "Synodic Software", - "url": "https://github.com/synodic/porringer", - "projects": { - "python": [ - { - "name": "ruff", - "description": "Fast Python linter and formatter" - }, - { - "name": "pyrefly", - "description": "Python type checker" - }, - "pytest", - "pytest-cov" - ] - }, - "tools": { - "python": [ - { - "name": "pdm", - "description": "Python package and dependency manager" - } - ] - } -} \ No newline at end of file diff --git a/examples/uri-install/README.md b/examples/uri-install/README.md deleted file mode 100644 index ecba495..0000000 --- a/examples/uri-install/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# URI Install Example - -This example demonstrates the `synodic://` URI protocol for triggering a Porringer manifest install from a link. - -[![Install with Synodic](https://img.shields.io/badge/Install_with-Synodic_Client-5865F2?style=for-the-badge&logo=windowsterminal&logoColor=white)](synodic://install?manifest=https://raw.githubusercontent.com/synodic/porringer/development/examples/python-dev/porringer.json) - -> **Note:** The badge link uses the `synodic://` protocol. It will only work on -> systems with the Synodic Client installed and the protocol handler registered. -> GitHub strips custom protocol links — copy the URI below to test manually. - -## URI - -``` -synodic://install?manifest=https://raw.githubusercontent.com/synodic/porringer/development/examples/python-dev/porringer.json -``` - -Clicking or invoking the URI above launches the Synodic Client and opens the install preview for the [python-dev](../python-dev/) manifest. - -## How it works - -The `synodic://` protocol is registered as a URI handler on the system. When the -OS resolves the link it launches: - -``` -synodic.exe "synodic://install?manifest=https://raw.githubusercontent.com/synodic/porringer/development/examples/python-dev/porringer.json" -``` - -The client parses the URI into: - -| Component | Value | -|--------------|-------| -| **action** | `install` | -| **manifest** | `https://raw.githubusercontent.com/synodic/porringer/development/examples/python-dev/porringer.json` | diff --git a/examples/uri-install/pyproject.toml b/examples/uri-install/pyproject.toml deleted file mode 100644 index 69a05fb..0000000 --- a/examples/uri-install/pyproject.toml +++ /dev/null @@ -1,2 +0,0 @@ -[tool.synodic] -uri = "synodic://install?manifest=https://raw.githubusercontent.com/synodic/porringer/development/examples/python-dev/porringer.json" diff --git a/pdm.lock b/pdm.lock index b4fb08f..76b3110 100644 --- a/pdm.lock +++ b/pdm.lock @@ -261,7 +261,7 @@ files = [ [[package]] name = "porringer" -version = "0.2.1.dev7" +version = "0.2.1.dev10" requires_python = ">=3.14" summary = "" groups = ["default"] @@ -274,8 +274,8 @@ dependencies = [ "userpath>=1.9.2", ] files = [ - {file = "porringer-0.2.1.dev7-py3-none-any.whl", hash = "sha256:7606fdfd1d039be9be80040cbec51429c911f4cc77e89cc88de0c79599a7da92"}, - {file = "porringer-0.2.1.dev7.tar.gz", hash = "sha256:48779426305620cb08c2748404755357b911e9a4b783a08257e2e44d98540a11"}, + {file = "porringer-0.2.1.dev10-py3-none-any.whl", hash = "sha256:3d039714219132dcf0e8e05b828406055ec0a6925b4d91046a347235b20deb32"}, + {file = "porringer-0.2.1.dev10.tar.gz", hash = "sha256:66f0053d3154b9549c38ae100d40c0f2866ba21c730a17566de04011208db828"}, ] [[package]] diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index 71234de..37497a4 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -17,15 +17,15 @@ from urllib.request import url2pathname from porringer.schema import ( - BatchSetupResults, CancellationToken, DownloadParameters, + PluginKind, ProgressEventKind, SetupAction, SetupActionResult, - SetupActionType, SetupParameters, SetupResults, + SkipReason, ) from PySide6.QtCore import QObject, Qt, QTimer, Signal from PySide6.QtGui import QFont, QKeySequence, QShortcut @@ -71,18 +71,33 @@ logger = logging.getLogger(__name__) -ACTION_TYPE_LABELS = { - SetupActionType.PACKAGE: 'Package', - SetupActionType.PROJECT_SYNC: 'Project Sync', - SetupActionType.RUN_COMMAND: 'Run Command', +ACTION_KIND_LABELS: dict[PluginKind | None, str] = { + PluginKind.PACKAGE: 'Package', + PluginKind.TOOL: 'Tool', + PluginKind.PROJECT: 'Project', + PluginKind.RUNTIME: 'Runtime', + PluginKind.SCM: 'SCM', + None: 'Command', } +SKIP_REASON_LABELS: dict[SkipReason, str] = { + SkipReason.ALREADY_INSTALLED: 'Already installed', + SkipReason.NO_PROJECT_DIRECTORY: 'No project directory', +} + + +def skip_reason_label(reason: SkipReason | None) -> str: + """Return a human-readable label for a skip reason.""" + if reason is None: + return 'Skipped' + return SKIP_REASON_LABELS.get(reason, reason.name.replace('_', ' ').capitalize()) + def format_cli_command(action: SetupAction) -> str: """Return a copyable CLI command string for *action*.""" if parts := (action.cli_command or action.command): return ' '.join(parts) - if action.action_type == SetupActionType.PACKAGE and action.package: + if action.kind == PluginKind.PACKAGE and action.package: return f'{action.installer or "pip"} install {action.package}' return action.description @@ -95,13 +110,13 @@ class InstallWorker(QObject): """ finished = Signal(object) # SetupResults - progress = Signal(object, object) # (SetupAction, SetupActionResult | None) + progress = Signal(object, object) # (SetupAction, SetupActionResult) error = Signal(str) def __init__( self, porringer: API, - preview: SetupResults, + manifest_path: Path, cancellation_token: CancellationToken, *, project_directory: Path | None = None, @@ -110,13 +125,13 @@ def __init__( Args: porringer: The porringer API instance. - preview: The preview results containing actions and manifest_path. + manifest_path: Path to the manifest file to execute. cancellation_token: Token for cooperative cancellation. project_directory: Working directory for project sync actions. """ super().__init__() self._porringer = porringer - self._preview = preview + self._manifest_path = manifest_path self._cancellation_token = cancellation_token self._project_directory = project_directory @@ -126,30 +141,38 @@ def run(self) -> None: results = asyncio.run(self._execute()) self.finished.emit(results) except asyncio.CancelledError: - self.finished.emit(SetupResults(actions=self._preview.actions)) + self.finished.emit(SetupResults(actions=[])) except Exception as exc: logger.exception('Install execution failed') self.error.emit(str(exc)) async def _execute(self) -> SetupResults: """Stream execution events and collect results.""" - previews = BatchSetupResults(manifest_results=[self._preview], failed_paths=[]) - params = SetupParameters(project_directory=self._project_directory) + params = SetupParameters( + paths=[self._manifest_path], + project_directory=self._project_directory, + ) + actions: list[SetupAction] = [] collected: list[SetupActionResult] = [] + manifest_result: SetupResults | None = None - async for event in self._porringer.sync.execute_stream(previews, params): + async for event in self._porringer.sync.execute_stream(params): if self._cancellation_token.is_cancelled: raise asyncio.CancelledError + if event.kind == ProgressEventKind.MANIFEST_LOADED and event.manifest: + manifest_result = event.manifest + actions = list(event.manifest.actions) + if event.kind == ProgressEventKind.ACTION_COMPLETED and event.result: collected.append(event.result) self.progress.emit(event.action, event.result) return SetupResults( - actions=self._preview.actions, + actions=actions, results=collected, - manifest_path=self._preview.manifest_path, - metadata=self._preview.metadata, + manifest_path=manifest_result.manifest_path if manifest_result else None, + metadata=manifest_result.metadata if manifest_result else None, ) @@ -169,7 +192,7 @@ def populate(self, actions: list[SetupAction]) -> None: mono = QFont(MONOSPACE_FAMILY, MONOSPACE_SIZE) for i, action in enumerate(actions, 1): - label_text = ACTION_TYPE_LABELS.get(action.action_type, 'Action') + label_text = ACTION_KIND_LABELS.get(action.kind, 'Action') desc = action.package_description or action.description header = QLabel(f'{i}. [{label_text}] {desc}') header.setStyleSheet(COMMAND_HEADER_STYLE) @@ -245,12 +268,12 @@ def __init__(self, porringer: API, manifest_url: str, parent: QWidget | None = N self._cancellation_token: CancellationToken | None = None self._completed_count = 0 - # Data model: per-action status separate from widget state - self._action_statuses: list[str] = [] - # Default project directory to the current working directory self._project_directory: Path = Path.cwd() + # Per-action status labels (updated by dry-run and install callbacks) + self._action_statuses: list[str] = [] + self.setWindowTitle('Install Preview') self.setMinimumSize(*INSTALL_PREVIEW_MIN_SIZE) @@ -415,7 +438,7 @@ def start(self) -> None: preview_worker.preview_ready.connect(self._on_preview_ready) preview_worker.action_checked.connect(self._on_action_checked) - preview_worker.finished.connect(self._on_preview_complete) + preview_worker.finished.connect(self._on_preview_finished) preview_worker.error.connect(self._on_preview_error) self._runner = ThreadRunner(preview_worker) @@ -448,61 +471,26 @@ def _on_preview_ready(self, preview: SetupResults, manifest_path: str, temp_dir_ self._populate_table(preview.actions) self._install_btn.setEnabled(True) - def _on_preview_error(self, message: str) -> None: - """Handle a preview error.""" - logger.error('Preview failed: %s', message) - self._status_label.setText('') - QMessageBox.critical(self, 'Preview Failed', message) - logger.info('Closing window due to preview error') - self.close() - - def _show_metadata(self, preview: SetupResults) -> None: - """Display manifest metadata labels if available.""" - metadata = preview.metadata - if not metadata: - return - - if metadata.name: - self._name_label.setText(metadata.name) - self._name_label.show() - self.setWindowTitle(f'Install Preview — {metadata.name}') - if metadata.description: - self._description_label.setText(metadata.description) - self._description_label.show() - - meta_parts: list[str] = [] - if metadata.author: - meta_parts.append(f'Author: {metadata.author}') - if metadata.url: - meta_parts.append(f'URL: {metadata.url}') - if meta_parts: - self._meta_label.setText(' | '.join(meta_parts)) - self._meta_label.show() - - # --- Dry-run callbacks --- - def _on_action_checked(self, row: int, result: SetupActionResult) -> None: """Update the data model and table row with the dry-run result.""" - label = (result.skip_reason or 'Satisfied') if result.skipped else 'Needed' + label = skip_reason_label(result.skip_reason) if result.skipped else 'Needed' - # Update the data model if 0 <= row < len(self._action_statuses): self._action_statuses[row] = label - # Update the table display item = self._table.item(row, 4) if item is None: return item.setText(label) if result.skipped: - item.setForeground(self.palette().mid()) + item.setForeground(self.palette().placeholderText()) else: item.setForeground(self.palette().text()) - def _on_preview_complete(self) -> None: + def _on_preview_finished(self) -> None: """Finalize the preview after the dry-run check completes.""" - if self._preview is None or not self._preview.actions: + if not self._action_statuses: return # Resolve any still-pending statuses as 'Needed' @@ -524,13 +512,38 @@ def _on_preview_complete(self) -> None: else: self._status_label.setText(f'{total} action(s): {needed} needed, {satisfied} already satisfied.') - logger.info( - 'Preview complete: %d total, %d needed, %d satisfied (window visible=%s)', - total, - needed, - satisfied, - self.isVisible(), - ) + logger.info('Preview complete: %d total, %d needed, %d satisfied', total, needed, satisfied) + + def _on_preview_error(self, message: str) -> None: + """Handle a preview error.""" + logger.error('Preview failed: %s', message) + self._status_label.setText('') + QMessageBox.critical(self, 'Preview Failed', message) + logger.info('Closing window due to preview error') + self.close() + + def _show_metadata(self, preview: SetupResults) -> None: + """Display manifest metadata labels if available.""" + metadata = preview.metadata + if not metadata: + return + + if metadata.name: + self._name_label.setText(metadata.name) + self._name_label.show() + self.setWindowTitle(f'Install Preview — {metadata.name}') + if metadata.description: + self._description_label.setText(metadata.description) + self._description_label.show() + + meta_parts: list[str] = [] + if metadata.author: + meta_parts.append(f'Author: {metadata.author}') + if metadata.url: + meta_parts.append(f'URL: {metadata.url}') + if meta_parts: + self._meta_label.setText(' | '.join(meta_parts)) + self._meta_label.show() # --- View toggle --- @@ -562,7 +575,7 @@ def _populate_table(self, actions: list[SetupAction]) -> None: """Fill the actions table from a list of SetupAction objects.""" self._table.setRowCount(len(actions)) for row, action in enumerate(actions): - self._table.setItem(row, 0, QTableWidgetItem(ACTION_TYPE_LABELS.get(action.action_type, '?'))) + self._table.setItem(row, 0, QTableWidgetItem(ACTION_KIND_LABELS.get(action.kind, 'Action'))) self._table.setItem(row, 1, QTableWidgetItem(action.installer or '')) self._table.setItem(row, 2, QTableWidgetItem(str(action.package) if action.package else '')) self._table.setItem(row, 3, QTableWidgetItem(action.package_description or action.description)) @@ -578,13 +591,13 @@ def _populate_table(self, actions: list[SetupAction]) -> None: def _on_install(self) -> None: """Handle the Install button click.""" - if self._preview is None or self._manifest_path is None: + if self._manifest_path is None: return self._install_btn.setEnabled(False) self._completed_count = 0 - total = len(self._preview.actions) + total = len(self._preview.actions) if self._preview else 0 self._cancellation_token = CancellationToken() # Progress dialog @@ -604,7 +617,7 @@ def _on_install(self) -> None: # Worker thread worker = InstallWorker( self._porringer, - self._preview, + self._manifest_path, self._cancellation_token, project_directory=self._project_directory, ) @@ -617,10 +630,11 @@ def _on_install(self) -> None: def _on_action_progress(self, action: SetupAction, result: SetupActionResult) -> None: """Handle a single action completion from the worker.""" + row = self._completed_count self._completed_count += 1 label = action.description if result.skipped: - label += f' (skipped: {result.skip_reason})' + label += f' (skipped: {skip_reason_label(result.skip_reason)})' elif not result.success: label += f' (FAILED: {result.message})' @@ -628,6 +642,25 @@ def _on_action_progress(self, action: SetupAction, result: SetupActionResult) -> self._progress_dialog.setValue(self._completed_count) self._progress_dialog.setLabelText(label) + # Update the table status column + self._update_table_status(row, result) + + def _update_table_status(self, row: int, result: SetupActionResult) -> None: + """Update the status cell for a table row from an action result.""" + item = self._table.item(row, 4) + if item is None: + return + + if result.skipped: + item.setText(skip_reason_label(result.skip_reason)) + item.setForeground(self.palette().placeholderText()) + elif result.success: + item.setText('Done') + item.setForeground(self.palette().text()) + else: + item.setText(f'Failed: {result.message}' if result.message else 'Failed') + item.setForeground(self.palette().text()) + def _on_cancel(self) -> None: """Handle cancel button on the progress dialog.""" if self._cancellation_token: @@ -672,13 +705,12 @@ def _cleanup_progress(self) -> None: class PreviewWorker(QObject): - """Background worker that downloads a manifest, previews actions, and checks status. + """Background worker that downloads a manifest and performs a dry-run. - Combines three stages into a single background pipeline: + Combines two stages into a single background pipeline: 1. Download the manifest (if remote). - 2. Run ``preview_single`` to list intended actions. - 3. Perform a ``dry_run`` to determine which actions are already satisfied. + 2. Run ``execute_stream`` with ``dry_run=True`` to list actions and check status. """ preview_ready = Signal(object, str, str) # (SetupResults, manifest_path, temp_dir_path) @@ -694,21 +726,18 @@ def __init__(self, porringer: API, url: str, *, project_directory: Path | None = self._project_directory = project_directory def run(self) -> None: - """Download the manifest, preview actions, and check status via dry-run.""" + """Download the manifest and perform a dry-run to check status.""" logger.info('PreviewWorker starting for: %s', self._url) temp_dir = None try: local_path = resolve_local_path(self._url) if local_path is not None: - # Local file — skip the download entirely if not local_path.exists(): self.error.emit(f'Manifest not found:\n{local_path}') return - preview = self._porringer.sync.preview_single(local_path) - self.preview_ready.emit(preview, str(local_path), '') + manifest_path = local_path else: - # Remote URL — download to a temp directory temp_dir = tempfile.mkdtemp(prefix='synodic_install_') dest = Path(temp_dir) / 'porringer.json' @@ -720,12 +749,10 @@ def run(self) -> None: self.error.emit(f'Failed to download manifest:\n{result.message}') return - preview = self._porringer.sync.preview_single(dest) - self.preview_ready.emit(preview, str(dest), temp_dir) + manifest_path = dest - # Dry-run to check which actions are already satisfied - if preview.actions: - self._run_dry_check(preview) + # Dry-run: parses manifest, resolves actions, and checks status + asyncio.run(self._dry_run(manifest_path, temp_dir or '')) self.finished.emit() @@ -735,22 +762,22 @@ def run(self) -> None: logger.exception('Preview failed') self.error.emit(str(exc)) - def _run_dry_check(self, preview: SetupResults) -> None: - """Perform a dry-run and emit per-action status signals.""" - try: - asyncio.run(self._check(preview)) - except Exception as exc: - logger.warning('Dry-run check failed: %s', exc) + async def _dry_run(self, manifest_path: Path, temp_dir: str) -> None: + """Stream dry-run events, emitting preview_ready and action_checked signals.""" + params = SetupParameters( + paths=[manifest_path], + dry_run=True, + project_directory=self._project_directory, + ) + action_index: dict[int, int] = {} - async def _check(self, preview: SetupResults) -> None: - """Stream dry-run events and emit per-action results.""" - previews = BatchSetupResults(manifest_results=[preview], failed_paths=[]) - params = SetupParameters(dry_run=True, project_directory=self._project_directory) - action_indices: dict[int, int] = {id(a): i for i, a in enumerate(preview.actions)} + async for event in self._porringer.sync.execute_stream(params): + if event.kind == ProgressEventKind.MANIFEST_LOADED and event.manifest: + action_index = {id(a): i for i, a in enumerate(event.manifest.actions)} + self.preview_ready.emit(event.manifest, str(manifest_path), temp_dir) - async for event in self._porringer.sync.execute_stream(previews, params): - if event.kind == ProgressEventKind.ACTION_COMPLETED and event.result and event.action: - row = action_indices.get(id(event.action)) + elif event.kind == ProgressEventKind.ACTION_COMPLETED and event.result and event.action: + row = action_index.get(id(event.action)) if row is not None: self.action_checked.emit(row, event.result) diff --git a/tests/unit/test_install_preview.py b/tests/unit/test_install_preview.py index 37d5abe..aeb3307 100644 --- a/tests/unit/test_install_preview.py +++ b/tests/unit/test_install_preview.py @@ -9,21 +9,23 @@ from porringer.schema import ( CancellationToken, DownloadResult, + PluginKind, ProgressEvent, ProgressEventKind, SetupActionResult, - SetupActionType, - SetupParameters, SetupResults, + SkipReason, ) from synodic_client.application.qt import parse_uri from synodic_client.application.screen.install import ( - ACTION_TYPE_LABELS, + ACTION_KIND_LABELS, + SKIP_REASON_LABELS, InstallWorker, PreviewWorker, format_cli_command, resolve_local_path, + skip_reason_label, ) @@ -64,14 +66,14 @@ class TestInstallPreviewWindow: @staticmethod def _make_action( - action_type: str = 'PACKAGE', + kind: str = 'PACKAGE', description: str = 'Install test', installer: str = 'pip', package: str = 'requests', ) -> MagicMock: """Create a mock SetupAction.""" action = MagicMock() - action.action_type = getattr(SetupActionType, action_type) + action.kind = getattr(PluginKind, kind) action.description = description action.installer = installer action.package = package @@ -80,10 +82,23 @@ def _make_action( return action @staticmethod - def test_action_type_labels() -> None: - """Verify action type label mapping covers all types.""" - for action_type in SetupActionType: - assert action_type in ACTION_TYPE_LABELS + def test_action_kind_labels() -> None: + """Verify action kind label mapping covers all kinds plus None.""" + for plugin_kind in PluginKind: + assert plugin_kind in ACTION_KIND_LABELS + assert None in ACTION_KIND_LABELS + + @staticmethod + def test_skip_reason_labels() -> None: + """Verify skip reason label mapping covers all reasons.""" + for reason in SkipReason: + assert reason in SKIP_REASON_LABELS + + @staticmethod + def test_skip_reason_label_human_readable() -> None: + """Verify skip reason labels are human-readable, not raw enum names.""" + assert skip_reason_label(SkipReason.ALREADY_INSTALLED) == 'Already installed' + assert skip_reason_label(None) == 'Skipped' class TestFormatCliCommand: @@ -93,7 +108,7 @@ class TestFormatCliCommand: def _make_action(**overrides: Any) -> MagicMock: """Create a mock SetupAction with optional attribute overrides.""" defaults: dict[str, Any] = { - 'action_type': 'PACKAGE', + 'kind': 'PACKAGE', 'description': 'Install test', 'installer': 'pip', 'package': 'requests', @@ -102,8 +117,8 @@ def _make_action(**overrides: Any) -> MagicMock: } defaults.update(overrides) action = MagicMock() - action_type = defaults['action_type'] - action.action_type = getattr(SetupActionType, action_type) if isinstance(action_type, str) else action_type + kind = defaults['kind'] + action.kind = getattr(PluginKind, kind) if isinstance(kind, str) else kind action.description = defaults['description'] action.installer = defaults['installer'] action.package = defaults['package'] @@ -119,7 +134,7 @@ def test_prefers_cli_command(self) -> None: def test_falls_back_to_command(self) -> None: """Verify command is used when cli_command is absent.""" action = self._make_action( - action_type='RUN_COMMAND', + kind='TOOL', command=['echo', 'hello'], ) assert format_cli_command(action) == 'echo hello' @@ -137,7 +152,7 @@ def test_synthesises_default_installer(self) -> None: def test_description_fallback(self) -> None: """Verify description is returned when nothing else is available.""" action = self._make_action( - action_type='RUN_COMMAND', + kind='TOOL', description='Custom step', package=None, ) @@ -151,9 +166,12 @@ class TestInstallWorker: def test_worker_emits_finished_on_success() -> None: """Verify worker emits finished signal with results.""" porringer = MagicMock() - preview = SetupResults(actions=[]) + manifest_path = Path('/tmp/test/porringer.json') action = MagicMock() + manifest = SetupResults(actions=[action]) + manifest_event = ProgressEvent(kind=ProgressEventKind.MANIFEST_LOADED, manifest=manifest) + result = MagicMock(spec=SetupActionResult) completed_event = ProgressEvent( kind=ProgressEventKind.ACTION_COMPLETED, @@ -162,25 +180,26 @@ def test_worker_emits_finished_on_success() -> None: ) async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 + yield manifest_event yield completed_event porringer.sync.execute_stream = mock_stream token = CancellationToken() - worker = InstallWorker(porringer, preview, token) + worker = InstallWorker(porringer, manifest_path, token) received: list[SetupResults] = [] worker.finished.connect(received.append) worker.run() assert len(received) == 1 - assert received[0].actions == preview.actions + assert received[0].actions == manifest.actions @staticmethod def test_worker_emits_error_on_failure() -> None: """Verify worker emits error signal on exception.""" porringer = MagicMock() - preview = SetupResults(actions=[]) + manifest_path = Path('/tmp/test/porringer.json') async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 if False: @@ -191,7 +210,7 @@ async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 porringer.sync.execute_stream = mock_stream token = CancellationToken() - worker = InstallWorker(porringer, preview, token) + worker = InstallWorker(porringer, manifest_path, token) errors: list[str] = [] worker.error.connect(errors.append) @@ -243,7 +262,12 @@ def test_local_manifest_skips_download(tmp_path: Path) -> None: porringer = MagicMock() expected = SetupResults(actions=[]) - porringer.sync.preview_single.return_value = expected + manifest_event = ProgressEvent(kind=ProgressEventKind.MANIFEST_LOADED, manifest=expected) + + async def mock_stream(*args: Any, **kwargs: Any) -> Any: + yield manifest_event + + porringer.sync.execute_stream = mock_stream worker = PreviewWorker(porringer, str(manifest)) @@ -306,7 +330,12 @@ def test_emits_preview_ready_on_success() -> None: message='OK', ) expected = SetupResults(actions=[]) - porringer.sync.preview_single.return_value = expected + manifest_event = ProgressEvent(kind=ProgressEventKind.MANIFEST_LOADED, manifest=expected) + + async def mock_stream(*args: Any, **kwargs: Any) -> Any: + yield manifest_event + + porringer.sync.execute_stream = mock_stream worker = PreviewWorker(porringer, 'https://example.com/good.json') @@ -318,80 +347,61 @@ def test_emits_preview_ready_on_success() -> None: assert results[0][0] is expected -class TestPreviewWorkerDryRun: - """Tests for PreviewWorker dry-run status check.""" +class TestPreviewWorkerSignals: + """Tests for PreviewWorker signal emission and dry-run status check.""" @staticmethod - def _make_action( - action_type: str = 'PACKAGE', - description: str = 'Install test', - installer: str = 'pip', - package: str = 'requests', - ) -> MagicMock: - """Create a mock SetupAction.""" - action = MagicMock() - action.action_type = getattr(SetupActionType, action_type) - action.description = description - action.installer = installer - action.package = package - return action - - def test_emits_action_checked_for_each_result(self, tmp_path: Path) -> None: - """Verify worker emits action_checked for each dry-run result.""" + def test_emits_preview_ready_and_finished(tmp_path: Path) -> None: + """Verify worker emits preview_ready then finished for a local manifest.""" manifest = tmp_path / 'porringer.json' manifest.write_text('{}') porringer = MagicMock() - action1 = self._make_action(package='ruff') - action2 = self._make_action(package='pytest') - preview = SetupResults(actions=[action1, action2]) - porringer.sync.preview_single.return_value = preview - - result1 = SetupActionResult( - action=action1, - success=True, - message=None, - skipped=True, - skip_reason='Already installed', - ) - result2 = SetupActionResult( - action=action2, - success=True, - message=None, - skipped=False, - skip_reason=None, - ) + action = MagicMock() + action.kind = PluginKind.PACKAGE + preview = SetupResults(actions=[action]) - event1 = ProgressEvent(kind=ProgressEventKind.ACTION_COMPLETED, action=action1, result=result1) - event2 = ProgressEvent(kind=ProgressEventKind.ACTION_COMPLETED, action=action2, result=result2) + # Dry-run stream yields manifest loaded then one completed event + manifest_event = ProgressEvent(kind=ProgressEventKind.MANIFEST_LOADED, manifest=preview) + result = SetupActionResult(action=action, success=True, skipped=False, skip_reason=None) + completed_event = ProgressEvent(kind=ProgressEventKind.ACTION_COMPLETED, action=action, result=result) - async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 - yield event1 - yield event2 + async def mock_stream(*args: Any, **kwargs: Any) -> Any: + yield manifest_event + yield completed_event porringer.sync.execute_stream = mock_stream worker = PreviewWorker(porringer, str(manifest)) + ready_calls: list[tuple[object, str, str]] = [] checked: list[tuple[int, SetupActionResult]] = [] + finished_count: list[int] = [] + worker.preview_ready.connect(lambda p, m, t: ready_calls.append((p, m, t))) worker.action_checked.connect(lambda row, r: checked.append((row, r))) + worker.finished.connect(lambda: finished_count.append(1)) worker.run() - assert len(checked) == 2 # noqa: PLR2004 - assert checked[0] == (0, result1) - assert checked[1] == (1, result2) - assert checked[0][1].skipped is True - assert checked[1][1].skipped is False + assert len(ready_calls) == 1 + assert ready_calls[0][0] is preview + assert len(checked) == 1 + assert checked[0] == (0, result) + assert len(finished_count) == 1 @staticmethod - def test_emits_finished_after_completion(tmp_path: Path) -> None: - """Verify worker emits finished signal after dry-run.""" + def test_emits_finished_for_empty_actions(tmp_path: Path) -> None: + """Verify worker emits finished signal even with no actions.""" manifest = tmp_path / 'porringer.json' manifest.write_text('{}') porringer = MagicMock() preview = SetupResults(actions=[]) - porringer.sync.preview_single.return_value = preview + manifest_event = ProgressEvent(kind=ProgressEventKind.MANIFEST_LOADED, manifest=preview) + + async def mock_stream(*args: Any, **kwargs: Any) -> Any: + yield manifest_event + + porringer.sync.execute_stream = mock_stream worker = PreviewWorker(porringer, str(manifest)) @@ -402,57 +412,70 @@ def test_emits_finished_after_completion(tmp_path: Path) -> None: assert len(finished_count) == 1 @staticmethod - def test_finishes_even_when_dry_run_fails(tmp_path: Path) -> None: - """Verify worker emits finished (not error) when dry-run raises.""" + def test_action_checked_maps_correct_rows(tmp_path: Path) -> None: + """Verify action_checked emits correct row indices via identity matching.""" manifest = tmp_path / 'porringer.json' manifest.write_text('{}') porringer = MagicMock() - action = MagicMock() - action.action_type = SetupActionType.PACKAGE - preview = SetupResults(actions=[action]) - porringer.sync.preview_single.return_value = preview + action_a = MagicMock() + action_a.kind = PluginKind.RUNTIME + action_b = MagicMock() + action_b.kind = PluginKind.PACKAGE + preview = SetupResults(actions=[action_a, action_b]) + + manifest_event = ProgressEvent(kind=ProgressEventKind.MANIFEST_LOADED, manifest=preview) + result_b = SetupActionResult( + action=action_b, success=True, skipped=True, skip_reason=SkipReason.ALREADY_INSTALLED + ) + result_a = SetupActionResult(action=action_a, success=True, skipped=False, skip_reason=None) - async def mock_stream(*args, **kwargs): # noqa: ANN002, ANN003 - if False: - yield # pragma: no cover — establishes async generator protocol - msg = 'dry-run boom' - raise RuntimeError(msg) + # Stream returns in execution order (b before a), not preview order + event_b = ProgressEvent(kind=ProgressEventKind.ACTION_COMPLETED, action=action_b, result=result_b) + event_a = ProgressEvent(kind=ProgressEventKind.ACTION_COMPLETED, action=action_a, result=result_a) + + async def mock_stream(*args: Any, **kwargs: Any) -> Any: + yield manifest_event + yield event_b + yield event_a porringer.sync.execute_stream = mock_stream worker = PreviewWorker(porringer, str(manifest)) - errors: list[str] = [] - finished_count: list[int] = [] - worker.error.connect(errors.append) - worker.finished.connect(lambda: finished_count.append(1)) + checked: list[tuple[int, SetupActionResult]] = [] + worker.action_checked.connect(lambda row, r: checked.append((row, r))) worker.run() - assert len(errors) == 0 - assert len(finished_count) == 1 + assert len(checked) == 2 # noqa: PLR2004 + # action_b is at index 1 in preview, action_a at index 0 + assert checked[0] == (1, result_b) + assert checked[1] == (0, result_a) - def test_uses_dry_run_parameter(self, tmp_path: Path) -> None: - """Verify the worker passes dry_run=True via SetupParameters.""" + @staticmethod + def test_emits_error_when_dry_run_fails(tmp_path: Path) -> None: + """Verify worker emits error when dry-run raises.""" manifest = tmp_path / 'porringer.json' manifest.write_text('{}') porringer = MagicMock() - action = self._make_action() - preview = SetupResults(actions=[action]) - porringer.sync.preview_single.return_value = preview - - captured_params: list[SetupParameters] = [] - async def mock_stream(previews, params, **kwargs): # noqa: ANN001, ANN002, ANN003 - captured_params.append(params) + async def mock_stream(*args: Any, **kwargs: Any) -> Any: if False: yield # pragma: no cover — establishes async generator protocol + msg = 'dry-run boom' + raise RuntimeError(msg) porringer.sync.execute_stream = mock_stream worker = PreviewWorker(porringer, str(manifest)) + + errors: list[str] = [] + finished_count: list[int] = [] + worker.error.connect(errors.append) + worker.finished.connect(lambda: finished_count.append(1)) worker.run() - assert len(captured_params) == 1 - assert captured_params[0].dry_run is True + assert len(errors) == 1 + assert 'dry-run boom' in errors[0] + assert len(finished_count) == 0 diff --git a/tool/scripts/dev.py b/tool/scripts/dev.py index 10ec703..7fd9fab 100644 --- a/tool/scripts/dev.py +++ b/tool/scripts/dev.py @@ -13,7 +13,7 @@ _DEFAULT_URI = ( 'synodic://install?manifest=https://raw.githubusercontent.com/synodic' - '/porringer/development/examples/python-dev/porringer.json' + '/porringer/development/examples/python-bootstrap/porringer.json' ) From 103cc098e0c7ee5382d45cb999a9554c678f8c85 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 11 Feb 2026 11:04:15 -0800 Subject: [PATCH 29/40] Add Type CLI --- docs/index.md | 14 ++++++- pdm.lock | 29 +++++++++----- pyproject.toml | 10 +++-- synodic_client/application/qt.py | 26 +++--------- synodic_client/cli.py | 37 +++++++++++++++++ tests/unit/test_cli.py | 44 +++++++++++++++++++++ tests/unit/test_examples.py | 10 +---- tests/unit/test_uri.py | 48 +++++++++++----------- tool/scripts/dev.py | 23 +++++++---- tool/scripts/package.py | 68 ++++++++++++++++---------------- 10 files changed, 202 insertions(+), 107 deletions(-) create mode 100644 synodic_client/cli.py create mode 100644 tests/unit/test_cli.py diff --git a/docs/index.md b/docs/index.md index be92fbe..3ade33c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -26,7 +26,19 @@ pdm add synodic-client Launch the application: ```bash -synodic-client +synodic-c +``` + +Or with a `synodic://` URI: + +```bash +synodic-c "synodic://install?manifest=https://example.com/porringer.json" +``` + +Show the version: + +```bash +synodic-c --version ``` The application runs in the system tray. Right-click the tray icon to access: diff --git a/pdm.lock b/pdm.lock index 76b3110..ee13d3d 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "build", "lint", "test"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:f68812efd67eb605d82fc099cc597df990dcfb0cd023260ca851c2225839b722" +content_hash = "sha256:f6af68110df7ee9fd0c1d4ac8ee45a8508c86aecbfa33d9f022ed5c7be3ac66b" [[metadata.targets]] requires_python = ">=3.14,<3.15" @@ -20,6 +20,17 @@ files = [ {file = "altgraph-0.17.5.tar.gz", hash = "sha256:c87b395dd12fabde9c99573a9749d67da8d29ef9de0125c7f536699b4a9bc9e7"}, ] +[[package]] +name = "annotated-doc" +version = "0.0.4" +requires_python = ">=3.8" +summary = "Document parameters, class attributes, return types, and variables inline, with Annotated." +groups = ["default"] +files = [ + {file = "annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320"}, + {file = "annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4"}, +] + [[package]] name = "annotated-types" version = "0.7.0" @@ -608,34 +619,34 @@ files = [ [[package]] name = "typer" -version = "0.21.1" +version = "0.23.0" requires_python = ">=3.9" summary = "Typer, build great CLIs. Easy to code. Based on Python type hints." groups = ["default"] dependencies = [ + "annotated-doc>=0.0.2", "click>=8.0.0", "rich>=10.11.0", "shellingham>=1.3.0", - "typing-extensions>=3.7.4.3", ] files = [ - {file = "typer-0.21.1-py3-none-any.whl", hash = "sha256:7985e89081c636b88d172c2ee0cfe33c253160994d47bdfdc302defd7d1f1d01"}, - {file = "typer-0.21.1.tar.gz", hash = "sha256:ea835607cd752343b6b2b7ce676893e5a0324082268b48f27aa058bdb7d2145d"}, + {file = "typer-0.23.0-py3-none-any.whl", hash = "sha256:79f4bc262b6c37872091072a3cb7cb6d7d79ee98c0c658b4364bdcde3c42c913"}, + {file = "typer-0.23.0.tar.gz", hash = "sha256:d8378833e47ada5d3d093fa20c4c63427cc4e27127f6b349a6c359463087d8cc"}, ] [[package]] name = "typer" -version = "0.21.1" +version = "0.23.0" extras = ["all"] requires_python = ">=3.9" summary = "Typer, build great CLIs. Easy to code. Based on Python type hints." groups = ["default"] dependencies = [ - "typer==0.21.1", + "typer==0.23.0", ] files = [ - {file = "typer-0.21.1-py3-none-any.whl", hash = "sha256:7985e89081c636b88d172c2ee0cfe33c253160994d47bdfdc302defd7d1f1d01"}, - {file = "typer-0.21.1.tar.gz", hash = "sha256:ea835607cd752343b6b2b7ce676893e5a0324082268b48f27aa058bdb7d2145d"}, + {file = "typer-0.23.0-py3-none-any.whl", hash = "sha256:79f4bc262b6c37872091072a3cb7cb6d7d79ee98c0c658b4364bdcde3c42c913"}, + {file = "typer-0.23.0.tar.gz", hash = "sha256:d8378833e47ada5d3d093fa20c4c63427cc4e27127f6b349a6c359463087d8cc"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index a366221..45ce58c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,8 +14,9 @@ requires-python = ">=3.14, <3.15" dependencies = [ "pyside6>=6.10.2", "packaging>=26.0", - "porringer>=0.2.1.dev0", + "porringer>=0.2.1.dev10", "velopack>=0.0.1369.dev7516", + "typer>=0.23.0", ] [project.urls] @@ -24,10 +25,12 @@ repository = "https://github.com/synodic/synodic-client" [dependency-groups] build = ["pyinstaller>=6.18.0"] -dev = ["rich>=14.0.0"] -lint = ["ruff>=0.15.0", "pyrefly>=0.51.1"] +lint = ["ruff>=0.15.0", "pyrefly>=0.52.0"] test = ["pytest>=9.0.2", "pytest-cov>=7.0.0", "pytest-mock>=3.15.1"] +[project.scripts] +synodic-c = "synodic_client.cli:app" + [project.gui-scripts] synodic-client = "synodic_client.application.qt:application" @@ -78,7 +81,6 @@ allow-prereleases = true [tool.pdm.scripts] analyze = "ruff check synodic_client tests" dev = { call = "tool.scripts.dev:main" } -dev-uri = { call = "tool.scripts.dev:main_uri" } format = "ruff format" lint = { composite = ["analyze", "format", "type-check"] } package = { call = "tool.scripts.package:main" } diff --git a/synodic_client/application/qt.py b/synodic_client/application/qt.py index 5bea9c8..6966a91 100644 --- a/synodic_client/application/qt.py +++ b/synodic_client/application/qt.py @@ -24,23 +24,6 @@ from synodic_client.resolution import resolve_config, resolve_update_config from synodic_client.updater import initialize_velopack -_PROTOCOL_SCHEME = 'synodic' - - -def find_uri(args: list[str]) -> str | None: - """Find a ``synodic://`` URI in the command-line arguments. - - Args: - args: Command-line arguments (typically ``sys.argv[1:]``). - - Returns: - The first ``synodic://`` URI found, or None. - """ - for arg in args: - if arg.lower().startswith(f'{_PROTOCOL_SCHEME}://'): - return arg - return None - def parse_uri(uri: str) -> dict[str, str | list[str]]: """Parse a ``synodic://`` URI into its components. @@ -152,8 +135,12 @@ def _init_app() -> QApplication: return app -def application() -> None: - """Application entry point.""" +def application(*, uri: str | None = None) -> None: + """Application entry point. + + Args: + uri: Optional ``synodic://`` URI to process on launch. + """ # Suppress console window flashes from subprocess calls (e.g. porringer # running pip, pipx, uv) before any subprocesses are spawned. _suppress_subprocess_consoles() @@ -166,7 +153,6 @@ def application() -> None: logger = logging.getLogger('synodic_client') _install_exception_hook(logger) - uri = find_uri(sys.argv[1:]) if uri: logger.info('Received URI: %s', uri) diff --git a/synodic_client/cli.py b/synodic_client/cli.py new file mode 100644 index 0000000..f812135 --- /dev/null +++ b/synodic_client/cli.py @@ -0,0 +1,37 @@ +"""CLI entry point for the Synodic Client application.""" + +from typing import Annotated + +import typer + +from synodic_client import __version__ +from synodic_client.application.qt import application + +app = typer.Typer( + name='synodic-c', + help='Synodic Client — a system tray frontend for porringer.', + add_completion=False, +) + + +def _version_callback(value: bool) -> None: + """Print the version and exit.""" + if value: + typer.echo(f'synodic-client {__version__}') + raise typer.Exit + + +@app.command() +def main( + uri: Annotated[ + str | None, + typer.Argument(help='A synodic:// URI to process on launch.'), + ] = None, + *, + version: Annotated[ + bool | None, + typer.Option('--version', callback=_version_callback, is_eager=True, help='Show version and exit.'), + ] = None, +) -> None: + """Launch the Synodic Client GUI application.""" + application(uri=uri) diff --git a/tests/unit/test_cli.py b/tests/unit/test_cli.py new file mode 100644 index 0000000..891723e --- /dev/null +++ b/tests/unit/test_cli.py @@ -0,0 +1,44 @@ +"""Tests for the CLI entry point.""" + +from unittest.mock import patch + +from typer.testing import CliRunner + +from synodic_client.cli import app + +runner = CliRunner() + + +class TestCli: + """Tests for the synodic-c CLI.""" + + @staticmethod + def test_version() -> None: + """Verify --version prints the version string.""" + result = runner.invoke(app, ['--version']) + assert result.exit_code == 0 + assert 'synodic-client' in result.output + + @staticmethod + def test_help() -> None: + """Verify --help shows usage information.""" + result = runner.invoke(app, ['--help']) + assert result.exit_code == 0 + assert 'synodic://' in result.output.lower() or 'uri' in result.output.lower() + + @staticmethod + def test_launches_application_without_uri() -> None: + """Verify invoking with no args calls application(uri=None).""" + with patch('synodic_client.cli.application') as mock_app: + result = runner.invoke(app, []) + assert result.exit_code == 0 + mock_app.assert_called_once_with(uri=None) + + @staticmethod + def test_launches_application_with_uri() -> None: + """Verify invoking with a URI passes it to application().""" + test_uri = 'synodic://install?manifest=https://example.com/foo.json' + with patch('synodic_client.cli.application') as mock_app: + result = runner.invoke(app, [test_uri]) + assert result.exit_code == 0 + mock_app.assert_called_once_with(uri=test_uri) diff --git a/tests/unit/test_examples.py b/tests/unit/test_examples.py index 44428d0..f743378 100644 --- a/tests/unit/test_examples.py +++ b/tests/unit/test_examples.py @@ -6,7 +6,7 @@ import re from pathlib import Path -from synodic_client.application.qt import find_uri, parse_uri +from synodic_client.application.qt import parse_uri _URI_PATTERN = re.compile(r'synodic://\S+') @@ -47,11 +47,3 @@ def test_embedded_uris_are_parseable(example_dir: Path) -> None: parsed = parse_uri(uri) assert 'action' in parsed, f'URI missing action: {uri}' assert parsed['action'], f'URI has empty action: {uri}' - - @staticmethod - def test_find_uri_detects_embedded(example_dir: Path) -> None: - """Embedded URIs should be discoverable by find_uri.""" - uris = _collect_uris(example_dir) - - for uri in uris: - assert find_uri([uri]) == uri, f'find_uri failed to detect: {uri}' diff --git a/tests/unit/test_uri.py b/tests/unit/test_uri.py index 6c22bf6..3270cf8 100644 --- a/tests/unit/test_uri.py +++ b/tests/unit/test_uri.py @@ -1,36 +1,38 @@ -"""Tests for URI finding in the qt application module.""" +"""Tests for URI parsing in the qt application module.""" -from synodic_client.application.qt import find_uri +from synodic_client.application.qt import parse_uri -class TestFindUri: - """Tests for find_uri.""" +class TestParseUri: + """Tests for parse_uri.""" @staticmethod - def test_finds_synodic_uri() -> None: - """Verify a synodic:// URI is found in args.""" - args = ['--flag', 'synodic://install?manifest=https://example.com'] - assert find_uri(args) == 'synodic://install?manifest=https://example.com' + def test_parses_action_from_netloc() -> None: + """Verify the action is extracted from the URI netloc.""" + result = parse_uri('synodic://install?manifest=https://example.com') + assert result['action'] == 'install' @staticmethod - def test_returns_none_when_absent() -> None: - """Verify None is returned when no URI is present.""" - args = ['--verbose', 'some-file.txt'] - assert find_uri(args) is None + def test_parses_query_parameters() -> None: + """Verify query parameters are included in the result.""" + result = parse_uri('synodic://install?manifest=https://example.com/foo.json') + assert result['manifest'] == ['https://example.com/foo.json'] @staticmethod - def test_empty_args() -> None: - """Verify None for empty args list.""" - assert find_uri([]) is None + def test_parses_multiple_query_values() -> None: + """Verify multiple values for the same key are collected into a list.""" + result = parse_uri('synodic://install?manifest=https://a.com/a.json&manifest=https://b.com/b.json') + assert result['manifest'] == ['https://a.com/a.json', 'https://b.com/b.json'] @staticmethod - def test_case_insensitive() -> None: - """Verify scheme matching is case-insensitive.""" - args = ['SYNODIC://Install'] - assert find_uri(args) == 'SYNODIC://Install' + def test_action_only_uri() -> None: + """Verify a URI with no query string returns just the action.""" + result = parse_uri('synodic://update') + assert result == {'action': 'update'} @staticmethod - def test_returns_first_uri() -> None: - """Verify only the first URI is returned when multiple are present.""" - args = ['synodic://first', 'synodic://second'] - assert find_uri(args) == 'synodic://first' + def test_unknown_action() -> None: + """Verify unknown actions are returned as-is.""" + result = parse_uri('synodic://unknown?foo=bar') + assert result['action'] == 'unknown' + assert result['foo'] == ['bar'] diff --git a/tool/scripts/dev.py b/tool/scripts/dev.py index 7fd9fab..f5e80a9 100644 --- a/tool/scripts/dev.py +++ b/tool/scripts/dev.py @@ -3,21 +3,33 @@ Builds the application with PyInstaller and launches the resulting EXE. Skips Velopack packaging entirely for fast iteration. -Invoked via ``pdm run dev`` or ``pdm run dev-uri``. +Invoked via ``pdm run dev`` or ``pdm run dev -- --uri ``. """ import subprocess import sys +from typing import Annotated + +import typer from tool.scripts.common import MAIN_EXE, PACK_DIR, REPO_ROOT, build +app = typer.Typer(help='Build and launch Synodic Client for development.') + _DEFAULT_URI = ( 'synodic://install?manifest=https://raw.githubusercontent.com/synodic' '/porringer/development/examples/python-bootstrap/porringer.json' ) -def main(*, uri: str | None = None) -> None: +@app.command() +def main( + *, + uri: Annotated[ + str | None, + typer.Option(help='A synodic:// URI to pass as a command-line argument.'), + ] = None, +) -> None: """Build with PyInstaller and launch the EXE. Args: @@ -40,10 +52,5 @@ def main(*, uri: str | None = None) -> None: subprocess.Popen(cmd, cwd=str(REPO_ROOT)) -def main_uri() -> None: - """Build and launch with the default install URI.""" - main(uri=_DEFAULT_URI) - - if __name__ == '__main__': - main() + app() diff --git a/tool/scripts/package.py b/tool/scripts/package.py index 64c4bcc..3c84f23 100644 --- a/tool/scripts/package.py +++ b/tool/scripts/package.py @@ -9,42 +9,44 @@ pdm run package -- --local-source D:/releases """ -import argparse import json import shutil import sys +from enum import StrEnum from pathlib import Path +from typing import Annotated + +import typer from synodic_client import __version__ from tool.scripts.common import MAIN_EXE, OUTPUT_DIR, PACK_DIR, PACK_ID, build, kill_running_instances, run +app = typer.Typer(help='Package Synodic Client with PyInstaller and Velopack.') -def main() -> None: - """Entry point for the packaging script.""" - parser = argparse.ArgumentParser(description='Package Synodic Client with PyInstaller and Velopack.') - parser.add_argument( - '--channel', - default='dev', - choices=['dev', 'stable'], - help='Velopack release channel (default: dev)', - ) - parser.add_argument( - '--local-source', - type=str, - default=None, - help='Path to copy releases to (for local dev update testing)', - ) - parser.add_argument( - '--skip-pyinstaller', - action='store_true', - help='Skip the PyInstaller step (use existing dist/synodic)', - ) - args = parser.parse_args() - print(f'Packaging Synodic Client v{__version__} (channel: {args.channel})') +class Channel(StrEnum): + """Velopack release channels.""" + + dev = 'dev' + stable = 'stable' + + +@app.command() +def main( + *, + channel: Annotated[Channel, typer.Option(help='Velopack release channel.')] = Channel.dev, + local_source: Annotated[ + str | None, typer.Option(help='Path to copy releases to (for local dev update testing).') + ] = None, + skip_pyinstaller: Annotated[ + bool, typer.Option('--skip-pyinstaller', help='Skip the PyInstaller step (use existing dist/synodic).') + ] = False, +) -> None: + """Entry point for the packaging script.""" + print(f'Packaging Synodic Client v{__version__} (channel: {channel.value})') # Step 1: PyInstaller - if not args.skip_pyinstaller: + if not skip_pyinstaller: build() else: kill_running_instances() @@ -55,10 +57,10 @@ def main() -> None: sys.exit(1) # Step 1b: Write portable config for dev builds - if args.local_source: + if local_source: portable_config = { - 'update_source': str(Path(args.local_source).resolve()), - 'update_channel': args.channel, + 'update_source': str(Path(local_source).resolve()), + 'update_channel': channel.value, } config_path = PACK_DIR / 'config.json' config_path.write_text(json.dumps(portable_config, indent=2), encoding='utf-8') @@ -85,7 +87,7 @@ def main() -> None: '--mainExe', MAIN_EXE, '--channel', - args.channel, + channel.value, '-o', str(OUTPUT_DIR), ], @@ -93,8 +95,8 @@ def main() -> None: ) # Step 3: Optionally copy to a local source directory - if args.local_source: - local_path = Path(args.local_source) + if local_source: + local_path = Path(local_source) local_path.mkdir(parents=True, exist_ok=True) run( @@ -107,14 +109,14 @@ def main() -> None: '-o', str(OUTPUT_DIR), '--channel', - args.channel, + channel.value, ], description=f'Uploading to local source: {local_path}', ) print(f'\nDone! Releases written to: {OUTPUT_DIR}') - if args.local_source: - print(f'Local update source: {args.local_source}') + if local_source: + print(f'Local update source: {local_source}') if __name__ == '__main__': From a6a72cab4fd7ffc029c066c77941dff5869ed180 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 11 Feb 2026 14:04:50 -0800 Subject: [PATCH 30/40] Update Projects UX --- pdm.lock | 6 +- synodic_client/application/qt.py | 11 +- synodic_client/application/screen/__init__.py | 31 +- synodic_client/application/screen/install.py | 465 +++++++------ .../application/screen/log_panel.py | 261 ++++++++ synodic_client/application/screen/screen.py | 239 ++++--- synodic_client/application/screen/tray.py | 6 +- synodic_client/application/theme.py | 57 ++ tests/unit/test_install_preview.py | 6 +- tests/unit/test_log_panel.py | 613 ++++++++++++++++++ tool/scripts/common.py | 6 +- tool/scripts/setup_dev.py | 35 +- 12 files changed, 1454 insertions(+), 282 deletions(-) create mode 100644 synodic_client/application/screen/log_panel.py create mode 100644 tests/unit/test_log_panel.py diff --git a/pdm.lock b/pdm.lock index ee13d3d..7207eec 100644 --- a/pdm.lock +++ b/pdm.lock @@ -272,7 +272,7 @@ files = [ [[package]] name = "porringer" -version = "0.2.1.dev10" +version = "0.2.1.dev12" requires_python = ">=3.14" summary = "" groups = ["default"] @@ -285,8 +285,8 @@ dependencies = [ "userpath>=1.9.2", ] files = [ - {file = "porringer-0.2.1.dev10-py3-none-any.whl", hash = "sha256:3d039714219132dcf0e8e05b828406055ec0a6925b4d91046a347235b20deb32"}, - {file = "porringer-0.2.1.dev10.tar.gz", hash = "sha256:66f0053d3154b9549c38ae100d40c0f2866ba21c730a17566de04011208db828"}, + {file = "porringer-0.2.1.dev12-py3-none-any.whl", hash = "sha256:275c6ae2cad332409ae4d11d9acdd4acb919e4def00f9306133c13ca21599461"}, + {file = "porringer-0.2.1.dev12.tar.gz", hash = "sha256:6ab314ab7792c5779d8e3355e31c1028971e58d1db5a33763c67a2fe9a01efb3"}, ] [[package]] diff --git a/synodic_client/application/qt.py b/synodic_client/application/qt.py index 6966a91..0f767be 100644 --- a/synodic_client/application/qt.py +++ b/synodic_client/application/qt.py @@ -10,7 +10,7 @@ from porringer.api import API from porringer.schema import ListPluginsParameters, LocalConfiguration from PySide6.QtCore import Qt -from PySide6.QtGui import QIcon +from PySide6.QtGui import QIcon, QPixmap from PySide6.QtWidgets import QApplication from synodic_client.application.instance import SingleInstance @@ -130,7 +130,9 @@ def _init_app() -> QApplication: app = QApplication([]) app.setQuitOnLastWindowClosed(False) with Client.resource(Client.icon) as icon_path: - app.setWindowIcon(QIcon(str(icon_path))) + # Load pixel data eagerly via QPixmap so the icon survives + # context-manager cleanup (QIcon uses lazy file-based loading). + app.setWindowIcon(QIcon(QPixmap(str(icon_path)))) app.setAttribute(Qt.ApplicationAttribute.AA_CompressHighFrequencyEvents) return app @@ -191,5 +193,8 @@ def _handle_install_uri(manifest_url: str) -> None: sys.exit(app.exec()) +_PROTOCOL_SCHEME = 'synodic' + if __name__ == '__main__': - application() + _uri = next((a for a in sys.argv[1:] if a.lower().startswith(f'{_PROTOCOL_SCHEME}://')), None) + application(uri=_uri) diff --git a/synodic_client/application/screen/__init__.py b/synodic_client/application/screen/__init__.py index 6523f79..ee9d21b 100644 --- a/synodic_client/application/screen/__init__.py +++ b/synodic_client/application/screen/__init__.py @@ -1 +1,30 @@ -"""The `synodic_client.application` package contains the GUI application logic for the Synodic Client.""" +"""The ``synodic_client.application.screen`` package — shared display helpers. + +Label mappings and helpers used by both the install module and the +execution log panel live here to avoid circular imports. +""" + +from __future__ import annotations + +from porringer.schema import PluginKind, SkipReason + +ACTION_KIND_LABELS: dict[PluginKind | None, str] = { + PluginKind.PACKAGE: 'Package', + PluginKind.TOOL: 'Tool', + PluginKind.PROJECT: 'Project', + PluginKind.RUNTIME: 'Runtime', + PluginKind.SCM: 'SCM', + None: 'Command', +} + +SKIP_REASON_LABELS: dict[SkipReason, str] = { + SkipReason.ALREADY_INSTALLED: 'Already installed', + SkipReason.NO_PROJECT_DIRECTORY: 'No project directory', +} + + +def skip_reason_label(reason: SkipReason | None) -> str: + """Return a human-readable label for a skip reason.""" + if reason is None: + return 'Skipped' + return SKIP_REASON_LABELS.get(reason, reason.name.replace('_', ' ').capitalize()) diff --git a/synodic_client/application/screen/install.py b/synodic_client/application/screen/install.py index 37497a4..2f23bbe 100644 --- a/synodic_client/application/screen/install.py +++ b/synodic_client/application/screen/install.py @@ -1,8 +1,11 @@ -"""Install preview window for URI-based manifest installs. +"""Install preview widgets and workers. -Displays a dry-run preview of porringer setup actions and lets the user -confirm execution. Execution runs on a background ``QThread`` with a -cancellable ``QProgressDialog``. +Provides a reusable :class:`SetupPreviewWidget` for displaying dry-run +previews and executing porringer setup actions, along with the standalone +:class:`InstallPreviewWindow` used for URI-based manifest installs. + +Execution runs on a background ``QThread`` with a real-time +:class:`~synodic_client.application.screen.log_panel.ExecutionLogPanel`. """ from __future__ import annotations @@ -25,7 +28,7 @@ SetupActionResult, SetupParameters, SetupResults, - SkipReason, + SubActionProgress, ) from PySide6.QtCore import QObject, Qt, QTimer, Signal from PySide6.QtGui import QFont, QKeySequence, QShortcut @@ -38,7 +41,6 @@ QLineEdit, QMainWindow, QMessageBox, - QProgressDialog, QPushButton, QScrollArea, QStackedWidget, @@ -49,6 +51,7 @@ QWidget, ) +from synodic_client.application.screen import ACTION_KIND_LABELS, skip_reason_label from synodic_client.application.theme import ( COMMAND_HEADER_STYLE, COMPACT_MARGINS, @@ -71,27 +74,6 @@ logger = logging.getLogger(__name__) -ACTION_KIND_LABELS: dict[PluginKind | None, str] = { - PluginKind.PACKAGE: 'Package', - PluginKind.TOOL: 'Tool', - PluginKind.PROJECT: 'Project', - PluginKind.RUNTIME: 'Runtime', - PluginKind.SCM: 'SCM', - None: 'Command', -} - -SKIP_REASON_LABELS: dict[SkipReason, str] = { - SkipReason.ALREADY_INSTALLED: 'Already installed', - SkipReason.NO_PROJECT_DIRECTORY: 'No project directory', -} - - -def skip_reason_label(reason: SkipReason | None) -> str: - """Return a human-readable label for a skip reason.""" - if reason is None: - return 'Skipped' - return SKIP_REASON_LABELS.get(reason, reason.name.replace('_', ' ').capitalize()) - def format_cli_command(action: SetupAction) -> str: """Return a copyable CLI command string for *action*.""" @@ -111,6 +93,8 @@ class InstallWorker(QObject): finished = Signal(object) # SetupResults progress = Signal(object, object) # (SetupAction, SetupActionResult) + action_started = Signal(object) # SetupAction + sub_progress = Signal(object, object) # (SetupAction, SubActionProgress) error = Signal(str) def __init__( @@ -164,6 +148,12 @@ async def _execute(self) -> SetupResults: manifest_result = event.manifest actions = list(event.manifest.actions) + if event.kind == ProgressEventKind.ACTION_STARTED and event.action: + self.action_started.emit(event.action) + + if event.kind == ProgressEventKind.SUB_ACTION_PROGRESS and event.action and event.sub_action: + self.sub_progress.emit(event.action, event.sub_action) + if event.kind == ProgressEventKind.ACTION_COMPLETED and event.result: collected.append(event.result) self.progress.emit(event.action, event.result) @@ -246,50 +236,59 @@ def _restore() -> None: QTimer.singleShot(COPY_FEEDBACK_MS, _restore) -class InstallPreviewWindow(QMainWindow): - """Standalone window that previews and executes a URI-based manifest install.""" +# --------------------------------------------------------------------------- +# SetupPreviewWidget — reusable preview + install widget +# --------------------------------------------------------------------------- - def __init__(self, porringer: API, manifest_url: str, parent: QWidget | None = None) -> None: - """Initialize the install preview window. + +class SetupPreviewWidget(QWidget): + """Reusable widget that displays a dry-run preview and executes installs. + + This widget is embedded by both :class:`InstallPreviewWindow` (for + URI-based installs) and ``ProjectsView`` (for cached-directory + projects). It owns the actions table, command list, metadata display, + status label, and install execution pipeline. + + The caller is responsible for providing a manifest path and project + directory. Preview data is fed in via + :meth:`on_preview_ready` / :meth:`on_action_checked` / + :meth:`on_preview_finished` / :meth:`on_preview_error` signal slots. + """ + + #: Emitted when the user clicks Close (or after a fatal preview error). + close_requested = Signal() + + #: Emitted after a successful install completes. + install_finished = Signal(object) # SetupResults + + def __init__(self, porringer: API, parent: QWidget | None = None, *, show_close: bool = True) -> None: + """Initialize the preview widget. Args: porringer: The porringer API instance. - manifest_url: The URL of the manifest to install. parent: Optional parent widget. + show_close: Whether to show the Close button. Set ``False`` + when embedding inside a persistent view (e.g. a tab). """ super().__init__(parent) self._porringer = porringer - self._manifest_url = manifest_url + self._show_close = show_close self._preview: SetupResults | None = None self._manifest_path: Path | None = None - self._temp_dir_path: str | None = None + self._project_directory: Path | None = None self._runner: ThreadRunner | None = None - self._progress_dialog: QProgressDialog | None = None self._cancellation_token: CancellationToken | None = None self._completed_count = 0 - - # Default project directory to the current working directory - self._project_directory: Path = Path.cwd() - - # Per-action status labels (updated by dry-run and install callbacks) self._action_statuses: list[str] = [] - self.setWindowTitle('Install Preview') - self.setMinimumSize(*INSTALL_PREVIEW_MIN_SIZE) - self._init_ui() - def _init_ui(self) -> None: - """Build the UI layout.""" - central = QWidget() - self.setCentralWidget(central) - layout = QVBoxLayout(central) - layout.setContentsMargins(*CONTENT_MARGINS) + # --- UI construction --- - # Header - self._url_label = QLabel() - self._url_label.setWordWrap(True) - layout.addWidget(self._url_label) + def _init_ui(self) -> None: + """Build the widget layout.""" + layout = QVBoxLayout(self) + layout.setContentsMargins(*NO_MARGINS) # Metadata labels (populated after preview completes) self._name_label = QLabel() @@ -307,23 +306,23 @@ def _init_ui(self) -> None: self._meta_label.hide() layout.addWidget(self._meta_label) - # Project directory input - layout.addLayout(self._init_project_dir_row()) - - # Status label (shown during download/preview) + # Status label self._status_label = QLabel() layout.addWidget(self._status_label) - # --- View stack (table / command list) --- + # --- View stack (table / command list / execution log) --- self._view_stack = QStackedWidget() - # Page 0: Actions table self._table = self._init_actions_table() - self._view_stack.addWidget(self._table) + self._view_stack.addWidget(self._table) # page 0 - # Page 1: Scrollable command cards self._command_list = CommandListWidget() - self._view_stack.addWidget(self._command_list) + self._view_stack.addWidget(self._command_list) # page 1 + + from synodic_client.application.screen.log_panel import ExecutionLogPanel + + self._log_panel = ExecutionLogPanel() + self._view_stack.addWidget(self._log_panel) # page 2 layout.addWidget(self._view_stack) @@ -347,40 +346,6 @@ def _init_actions_table(self) -> QTableWidget: QShortcut(QKeySequence.StandardKey.Copy, table, self._copy_table_selection) return table - def _init_project_dir_row(self) -> QHBoxLayout: - """Create the project directory input row.""" - row = QHBoxLayout() - row.setContentsMargins(*COMPACT_MARGINS) - - label = QLabel('Project path:') - row.addWidget(label) - - self._project_dir_field = QLineEdit(str(self._project_directory)) - self._project_dir_field.setToolTip('Working directory for project sync and post-sync commands') - self._project_dir_field.textChanged.connect(self._on_project_dir_changed) - row.addWidget(self._project_dir_field) - - browse_btn = QPushButton('Browse…') - browse_btn.clicked.connect(self._on_browse_project_dir) - row.addWidget(browse_btn) - - return row - - def _on_project_dir_changed(self, text: str) -> None: - """Update the project directory from the text field.""" - self._project_directory = Path(text) - - def _on_browse_project_dir(self) -> None: - """Open a directory picker for the project path.""" - chosen = QFileDialog.getExistingDirectory( - self, - 'Select Project Directory', - str(self._project_directory), - ) - if chosen: - self._project_directory = Path(chosen) - self._project_dir_field.setText(chosen) - def _init_button_bar(self) -> QHBoxLayout: """Create the bottom button bar.""" self._toggle_btn = QPushButton('Show Commands') @@ -397,68 +362,69 @@ def _init_button_bar(self) -> QHBoxLayout: button_bar.addWidget(self._install_btn) self._close_btn = QPushButton('Close') - self._close_btn.clicked.connect(self.close) + self._close_btn.clicked.connect(self.close_requested.emit) + if not self._show_close: + self._close_btn.hide() button_bar.addWidget(self._close_btn) return button_bar - # --- Lifecycle --- - - def showEvent(self, event: Any) -> None: - """Log when the window becomes visible.""" - super().showEvent(event) - logger.info('Install preview window shown (visible=%s)', self.isVisible()) - - def closeEvent(self, event: Any) -> None: - """Clean up the temp directory when the window is closed.""" - logger.info('Install preview window closing') - self._cleanup_temp_dir() - super().closeEvent(event) - - def _cleanup_temp_dir(self) -> None: - """Remove the temporary download directory if it exists.""" - if self._temp_dir_path: - _safe_rmtree(self._temp_dir_path) - self._temp_dir_path = None - # --- Public API --- - def start(self) -> None: - """Download the manifest and populate the preview. + def set_project_directory(self, path: Path) -> None: + """Set the project directory used for install execution. - Call this after ``show()`` to begin the download → preview flow. + Args: + path: Working directory for project sync actions. """ - logger.info('Starting install preview for: %s', self._manifest_url) - self._url_label.setText(f'Manifest: {self._manifest_url}') - self._status_label.setText('Loading manifest…') + self._project_directory = path + + def reset(self) -> None: + """Clear all state and UI for a fresh preview.""" + self._preview = None + self._manifest_path = None + self._runner = None + self._cancellation_token = None + self._completed_count = 0 + self._action_statuses = [] + + self._table.setRowCount(0) + self._log_panel.clear() + self._name_label.hide() + self._description_label.hide() + self._meta_label.hide() + self._status_label.setText('') + self._status_label.setStyleSheet('') self._install_btn.setEnabled(False) + self._toggle_btn.setEnabled(False) + self._view_stack.setCurrentIndex(0) - # Run download + preview on a background thread to keep UI responsive - preview_worker = PreviewWorker(self._porringer, self._manifest_url, project_directory=self._project_directory) + def show_not_found(self, message: str) -> None: + """Display a muted 'not found' message in the status label. - preview_worker.preview_ready.connect(self._on_preview_ready) - preview_worker.action_checked.connect(self._on_action_checked) - preview_worker.finished.connect(self._on_preview_finished) - preview_worker.error.connect(self._on_preview_error) + Used by callers that want to report a missing directory or manifest + without popping a modal dialog. - self._runner = ThreadRunner(preview_worker) - self._runner.start() + Args: + message: The human-readable error or not-found description. + """ + self._status_label.setText(message) + self._status_label.setStyleSheet(MUTED_STYLE) - # --- Preview callbacks --- + # --- Preview callbacks (connect to PreviewWorker signals) --- - def _on_preview_ready(self, preview: SetupResults, manifest_path: str, temp_dir_path: str) -> None: + def on_preview_ready(self, preview: SetupResults, manifest_path: str, temp_dir_path: str) -> None: """Handle a successful preview. Args: preview: The setup preview results. - manifest_path: Path to the downloaded manifest file. + manifest_path: Path to the manifest file. temp_dir_path: Path to the temp directory (kept alive for execution). """ logger.info('Preview ready: %d action(s) from %s', len(preview.actions), manifest_path) self._preview = preview self._manifest_path = Path(manifest_path) - # Keep the temp directory alive until the window closes - self._temp_dir_path = temp_dir_path + self._status_label.setStyleSheet('') self._show_metadata(preview) @@ -471,7 +437,7 @@ def _on_preview_ready(self, preview: SetupResults, manifest_path: str, temp_dir_ self._populate_table(preview.actions) self._install_btn.setEnabled(True) - def _on_action_checked(self, row: int, result: SetupActionResult) -> None: + def on_action_checked(self, row: int, result: SetupActionResult) -> None: """Update the data model and table row with the dry-run result.""" label = skip_reason_label(result.skip_reason) if result.skipped else 'Needed' @@ -488,7 +454,7 @@ def _on_action_checked(self, row: int, result: SetupActionResult) -> None: else: item.setForeground(self.palette().text()) - def _on_preview_finished(self) -> None: + def on_preview_finished(self) -> None: """Finalize the preview after the dry-run check completes.""" if not self._action_statuses: return @@ -514,13 +480,14 @@ def _on_preview_finished(self) -> None: logger.info('Preview complete: %d total, %d needed, %d satisfied', total, needed, satisfied) - def _on_preview_error(self, message: str) -> None: + def on_preview_error(self, message: str) -> None: """Handle a preview error.""" logger.error('Preview failed: %s', message) self._status_label.setText('') QMessageBox.critical(self, 'Preview Failed', message) - logger.info('Closing window due to preview error') - self.close() + self.close_requested.emit() + + # --- Metadata --- def _show_metadata(self, preview: SetupResults) -> None: """Display manifest metadata labels if available.""" @@ -531,7 +498,6 @@ def _show_metadata(self, preview: SetupResults) -> None: if metadata.name: self._name_label.setText(metadata.name) self._name_label.show() - self.setWindowTitle(f'Install Preview — {metadata.name}') if metadata.description: self._description_label.setText(metadata.description) self._description_label.show() @@ -548,9 +514,13 @@ def _show_metadata(self, preview: SetupResults) -> None: # --- View toggle --- def _toggle_view(self) -> None: - """Switch between overview table and command list.""" - if self._view_stack.currentIndex() == 0: + """Cycle between overview table, command list, and execution log.""" + current = self._view_stack.currentIndex() + if current == 0: self._view_stack.setCurrentIndex(1) + self._toggle_btn.setText('Show Log') + elif current == 1: + self._view_stack.setCurrentIndex(2) self._toggle_btn.setText('Show Overview') else: self._view_stack.setCurrentIndex(0) @@ -595,24 +565,16 @@ def _on_install(self) -> None: return self._install_btn.setEnabled(False) + self._close_btn.setEnabled(False) + self._toggle_btn.setEnabled(False) self._completed_count = 0 - total = len(self._preview.actions) if self._preview else 0 self._cancellation_token = CancellationToken() - # Progress dialog - self._progress_dialog = QProgressDialog( - 'Starting install…', - 'Cancel', - 0, - total, - self, - ) - self._progress_dialog.setWindowTitle('Installing') - self._progress_dialog.setAutoClose(False) - self._progress_dialog.setAutoReset(False) - self._progress_dialog.canceled.connect(self._on_cancel) - self._progress_dialog.show() + # Switch to the execution log panel view + self._log_panel.clear() + self._view_stack.setCurrentIndex(2) + self._status_label.setText('Installing…') # Worker thread worker = InstallWorker( @@ -621,6 +583,8 @@ def _on_install(self) -> None: self._cancellation_token, project_directory=self._project_directory, ) + worker.action_started.connect(self._on_action_started) + worker.sub_progress.connect(self._on_sub_progress) worker.progress.connect(self._on_action_progress) worker.finished.connect(self._on_install_finished) worker.error.connect(self._on_install_error) @@ -628,23 +592,29 @@ def _on_install(self) -> None: self._runner = ThreadRunner(worker) self._runner.start() + def _on_action_started(self, action: SetupAction) -> None: + """Handle an action starting execution — create a log section.""" + self._log_panel.add_section(action) + + def _on_sub_progress(self, action: SetupAction, progress: SubActionProgress) -> None: + """Handle a sub-action progress event — route to the log panel.""" + self._log_panel.on_sub_progress(action, progress) + def _on_action_progress(self, action: SetupAction, result: SetupActionResult) -> None: """Handle a single action completion from the worker.""" row = self._completed_count self._completed_count += 1 - label = action.description - if result.skipped: - label += f' (skipped: {skip_reason_label(result.skip_reason)})' - elif not result.success: - label += f' (FAILED: {result.message})' - if self._progress_dialog: - self._progress_dialog.setValue(self._completed_count) - self._progress_dialog.setLabelText(label) + # Update the execution log panel + self._log_panel.on_action_completed(action, result) - # Update the table status column + # Update the table status too (for when user switches back to table view) self._update_table_status(row, result) + # Update status label + total = len(self._preview.actions) if self._preview else 0 + self._status_label.setText(f'Installing… ({self._completed_count}/{total})') + def _update_table_status(self, row: int, result: SetupActionResult) -> None: """Update the status cell for a table row from an action result.""" item = self._table.item(row, 4) @@ -662,14 +632,12 @@ def _update_table_status(self, row: int, result: SetupActionResult) -> None: item.setForeground(self.palette().text()) def _on_cancel(self) -> None: - """Handle cancel button on the progress dialog.""" + """Handle cancel request.""" if self._cancellation_token: self._cancellation_token.cancel() def _on_install_finished(self, results: SetupResults) -> None: """Handle install completion.""" - self._cleanup_progress() - succeeded = sum(1 for r in results.results if r.success and not r.skipped) skipped = sum(1 for r in results.results if r.skipped) failed = sum(1 for r in results.results if not r.success) @@ -683,25 +651,160 @@ def _on_install_finished(self, results: SetupResults) -> None: parts.append(f'{failed} failed') summary = ', '.join(parts) if parts else 'No actions executed.' - if failed: - QMessageBox.warning(self, 'Install Complete', summary) - else: - QMessageBox.information(self, 'Install Complete', summary) - self._status_label.setText(f'Done — {summary}') self._install_btn.setEnabled(False) + self._close_btn.setEnabled(True) + self._toggle_btn.setEnabled(True) + self.install_finished.emit(results) def _on_install_error(self, message: str) -> None: """Handle install error.""" - self._cleanup_progress() - QMessageBox.critical(self, 'Install Failed', message) + self._status_label.setText(f'Install failed: {message}') self._install_btn.setEnabled(True) + self._close_btn.setEnabled(True) + self._toggle_btn.setEnabled(True) + + +# --------------------------------------------------------------------------- +# InstallPreviewWindow — standalone URI-based install window +# --------------------------------------------------------------------------- + + +class InstallPreviewWindow(QMainWindow): + """Standalone window that previews and executes a URI-based manifest install. + + Wraps :class:`SetupPreviewWidget` and owns the download lifecycle + (temp directory, ``PreviewWorker``). + """ + + def __init__(self, porringer: API, manifest_url: str, parent: QWidget | None = None) -> None: + """Initialize the install preview window. + + Args: + porringer: The porringer API instance. + manifest_url: The URL of the manifest to install. + parent: Optional parent widget. + """ + super().__init__(parent) + self._porringer = porringer + self._manifest_url = manifest_url + self._temp_dir_path: str | None = None + self._runner: ThreadRunner | None = None + + # Default project directory to the current working directory + self._project_directory: Path = Path.cwd() + + self.setWindowTitle('Install Preview') + self.setMinimumSize(*INSTALL_PREVIEW_MIN_SIZE) + + self._init_ui() + + def _init_ui(self) -> None: + """Build the UI layout.""" + central = QWidget() + self.setCentralWidget(central) + layout = QVBoxLayout(central) + layout.setContentsMargins(*CONTENT_MARGINS) + + # URL header + self._url_label = QLabel() + self._url_label.setWordWrap(True) + layout.addWidget(self._url_label) + + # Project directory input + layout.addLayout(self._init_project_dir_row()) + + # Shared preview widget + self._preview_widget = SetupPreviewWidget(self._porringer, self) + self._preview_widget.close_requested.connect(self.close) + self._preview_widget.set_project_directory(self._project_directory) + layout.addWidget(self._preview_widget) + + def _init_project_dir_row(self) -> QHBoxLayout: + """Create the project directory input row.""" + row = QHBoxLayout() + row.setContentsMargins(*COMPACT_MARGINS) + + label = QLabel('Project path:') + row.addWidget(label) + + self._project_dir_field = QLineEdit(str(self._project_directory)) + self._project_dir_field.setToolTip('Working directory for project sync and post-sync commands') + self._project_dir_field.textChanged.connect(self._on_project_dir_changed) + row.addWidget(self._project_dir_field) + + browse_btn = QPushButton('Browse…') + browse_btn.clicked.connect(self._on_browse_project_dir) + row.addWidget(browse_btn) + + return row + + def _on_project_dir_changed(self, text: str) -> None: + """Update the project directory from the text field.""" + self._project_directory = Path(text) + self._preview_widget.set_project_directory(self._project_directory) + + def _on_browse_project_dir(self) -> None: + """Open a directory picker for the project path.""" + chosen = QFileDialog.getExistingDirectory( + self, + 'Select Project Directory', + str(self._project_directory), + ) + if chosen: + self._project_directory = Path(chosen) + self._project_dir_field.setText(chosen) + + # --- Lifecycle --- + + def showEvent(self, event: Any) -> None: + """Log when the window becomes visible.""" + super().showEvent(event) + logger.info('Install preview window shown (visible=%s)', self.isVisible()) + + def closeEvent(self, event: Any) -> None: + """Clean up the temp directory when the window is closed.""" + logger.info('Install preview window closing') + self._cleanup_temp_dir() + super().closeEvent(event) + + def _cleanup_temp_dir(self) -> None: + """Remove the temporary download directory if it exists.""" + if self._temp_dir_path: + _safe_rmtree(self._temp_dir_path) + self._temp_dir_path = None + + # --- Public API --- + + def start(self) -> None: + """Download the manifest and populate the preview. + + Call this after ``show()`` to begin the download → preview flow. + """ + logger.info('Starting install preview for: %s', self._manifest_url) + self._url_label.setText(f'Manifest: {self._manifest_url}') + + preview_worker = PreviewWorker(self._porringer, self._manifest_url, project_directory=self._project_directory) + + preview_worker.preview_ready.connect(self._on_preview_ready) + preview_worker.action_checked.connect(self._preview_widget.on_action_checked) + preview_worker.finished.connect(self._preview_widget.on_preview_finished) + preview_worker.error.connect(self._preview_widget.on_preview_error) + + self._runner = ThreadRunner(preview_worker) + self._runner.start() + + # --- Preview callback (intercepts to capture temp dir) --- + + def _on_preview_ready(self, preview: SetupResults, manifest_path: str, temp_dir_path: str) -> None: + """Capture the temp dir path and forward to the preview widget.""" + self._temp_dir_path = temp_dir_path + + # Update window title from metadata + if preview.metadata and preview.metadata.name: + self.setWindowTitle(f'Install Preview — {preview.metadata.name}') - def _cleanup_progress(self) -> None: - """Close the progress dialog.""" - if self._progress_dialog: - self._progress_dialog.close() - self._progress_dialog = None + self._preview_widget.on_preview_ready(preview, manifest_path, temp_dir_path) class PreviewWorker(QObject): diff --git a/synodic_client/application/screen/log_panel.py b/synodic_client/application/screen/log_panel.py new file mode 100644 index 0000000..61ff6ca --- /dev/null +++ b/synodic_client/application/screen/log_panel.py @@ -0,0 +1,261 @@ +"""Collapsible execution log panel for install operations. + +Provides :class:`ExecutionLogPanel`, a scrollable container of +:class:`ActionLogSection` widgets — one per setup action. Each section +has a collapsible header (default: open) with a status badge and a +monospace output area that receives colour-coded stdout/stderr lines. +""" + +from __future__ import annotations + +import html +import logging + +from porringer.schema import SetupAction, SetupActionResult, SubActionProgress +from PySide6.QtCore import Qt +from PySide6.QtGui import QFont, QTextCursor +from PySide6.QtWidgets import ( + QHBoxLayout, + QLabel, + QScrollArea, + QSizePolicy, + QTextEdit, + QVBoxLayout, + QWidget, +) + +from synodic_client.application.screen import ACTION_KIND_LABELS, skip_reason_label +from synodic_client.application.theme import ( + LOG_CHEVRON_STYLE, + LOG_COLOR_ERROR, + LOG_COLOR_PHASE, + LOG_COLOR_STDERR, + LOG_COLOR_STDOUT, + LOG_COLOR_SUCCESS, + LOG_OUTPUT_STYLE, + LOG_SECTION_HEADER_STYLE, + LOG_SECTION_TITLE_STYLE, + LOG_STATUS_FAILED, + LOG_STATUS_RUNNING, + LOG_STATUS_SKIPPED, + LOG_STATUS_SUCCESS, + MONOSPACE_FAMILY, + MONOSPACE_SIZE, + NO_MARGINS, +) + +logger = logging.getLogger(__name__) + +# Unicode chevrons +_CHEVRON_DOWN = '\u25bc' +_CHEVRON_RIGHT = '\u25b6' + + +class ActionLogSection(QWidget): + """A single collapsible action log section. + + Shows a clickable header with chevron + action description + status badge, + and a monospace ``QTextEdit`` body that displays colour-coded output lines. + """ + + def __init__(self, action: SetupAction, index: int, parent: QWidget | None = None) -> None: + """Initialise the section. + + Args: + action: The setup action this section represents. + index: 1-based display index. + parent: Optional parent widget. + """ + super().__init__(parent) + self._action = action + self._expanded = True + + layout = QVBoxLayout(self) + layout.setContentsMargins(*NO_MARGINS) + layout.setSpacing(0) + + # --- Header --- + self._header = QWidget() + self._header.setObjectName('sectionHeader') + self._header.setStyleSheet(LOG_SECTION_HEADER_STYLE) + self._header.setCursor(Qt.CursorShape.PointingHandCursor) + self._header.mousePressEvent = lambda _event: self._toggle() + + header_layout = QHBoxLayout(self._header) + header_layout.setContentsMargins(0, 0, 0, 0) + header_layout.setSpacing(6) + + self._chevron = QLabel(_CHEVRON_DOWN) + self._chevron.setStyleSheet(LOG_CHEVRON_STYLE) + self._chevron.setFixedWidth(14) + header_layout.addWidget(self._chevron) + + kind_label = ACTION_KIND_LABELS.get(action.kind, 'Action') + desc = action.package_description or action.description + title = QLabel(f'{index}. [{kind_label}] {desc}') + title.setStyleSheet(LOG_SECTION_TITLE_STYLE) + header_layout.addWidget(title, stretch=1) + + self._status_label = QLabel('Running…') + self._status_label.setStyleSheet(LOG_STATUS_RUNNING) + header_layout.addWidget(self._status_label) + + layout.addWidget(self._header) + + # --- Output body --- + self._output = QTextEdit() + self._output.setReadOnly(True) + self._output.setFont(QFont(MONOSPACE_FAMILY, MONOSPACE_SIZE)) + self._output.setStyleSheet(LOG_OUTPUT_STYLE) + self._output.setMinimumHeight(60) + self._output.setMaximumHeight(300) + self._output.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred) + layout.addWidget(self._output) + + # --- Public API --- + + def append_output(self, text: str, stream: str | None = None) -> None: + """Append a line of output with stream-appropriate colouring. + + Args: + text: The output line text. + stream: ``'stdout'``, ``'stderr'``, or ``None`` for phase messages. + """ + colour = LOG_COLOR_STDOUT + if stream == 'stderr': + colour = LOG_COLOR_STDERR + elif stream is None: + colour = LOG_COLOR_PHASE + + escaped = html.escape(text) + self._output.append(f'{escaped}') + + # Auto-scroll to bottom + cursor = self._output.textCursor() + cursor.movePosition(QTextCursor.MoveOperation.End) + self._output.setTextCursor(cursor) + + def set_result(self, result: SetupActionResult) -> None: + """Update the section header with the final action result. + + Args: + result: The action result. + """ + if result.skipped: + label = skip_reason_label(result.skip_reason) + self._status_label.setText(label) + self._status_label.setStyleSheet(LOG_STATUS_SKIPPED) + self.append_output(f'⏭ Skipped: {label}', None) + elif result.success: + self._status_label.setText('Done') + self._status_label.setStyleSheet(LOG_STATUS_SUCCESS) + msg = result.message or 'Completed successfully' + self._output.append(f'✓ {html.escape(msg)}') + else: + self._status_label.setText('Failed') + self._status_label.setStyleSheet(LOG_STATUS_FAILED) + msg = result.message or 'Unknown error' + self._output.append(f'✗ {html.escape(msg)}') + + # --- Collapse / expand --- + + def _toggle(self) -> None: + """Toggle the output body visibility.""" + self._expanded = not self._expanded + self._output.setVisible(self._expanded) + self._chevron.setText(_CHEVRON_DOWN if self._expanded else _CHEVRON_RIGHT) + + +class ExecutionLogPanel(QScrollArea): + """Scrollable container of :class:`ActionLogSection` widgets. + + Used as the execution view during install operations. Sections are + added dynamically as ``ACTION_STARTED`` events arrive. + """ + + def __init__(self, parent: QWidget | None = None) -> None: + """Initialise the log panel.""" + super().__init__(parent) + self.setWidgetResizable(True) + + self._container = QWidget() + self._layout = QVBoxLayout(self._container) + self._layout.setContentsMargins(4, 4, 4, 4) + self._layout.setSpacing(6) + self._layout.addStretch() + + self.setWidget(self._container) + + # Map action id → section widget for quick lookup + self._sections: dict[int, ActionLogSection] = {} + self._section_count = 0 + + # --- Public API --- + + def add_section(self, action: SetupAction) -> ActionLogSection: + """Add a new collapsible section for an action. + + Args: + action: The setup action starting execution. + + Returns: + The created section widget. + """ + self._section_count += 1 + section = ActionLogSection(action, self._section_count, self._container) + # Insert before the stretch + self._layout.insertWidget(self._layout.count() - 1, section) + self._sections[id(action)] = section + + # Scroll to show the new section + self.ensureWidgetVisible(section) + + return section + + def get_section(self, action: SetupAction) -> ActionLogSection | None: + """Look up the section widget for a given action. + + Args: + action: The setup action to look up. + + Returns: + The section widget, or ``None`` if not found. + """ + return self._sections.get(id(action)) + + def on_sub_progress(self, action: SetupAction, progress: SubActionProgress) -> None: + """Handle a sub-action progress event. + + Routes output lines and phase messages to the correct section. + + Args: + action: The parent action. + progress: The sub-action progress update. + """ + section = self.get_section(action) + if section is None: + return + + if progress.output is not None: + section.append_output(progress.output, progress.stream) + elif progress.message is not None: + section.append_output(progress.message) + + def on_action_completed(self, action: SetupAction, result: SetupActionResult) -> None: + """Handle an action completion event. + + Args: + action: The completed action. + result: The action result. + """ + section = self.get_section(action) + if section is not None: + section.set_result(result) + + def clear(self) -> None: + """Remove all sections.""" + for section in self._sections.values(): + self._layout.removeWidget(section) + section.deleteLater() + self._sections.clear() + self._section_count = 0 diff --git a/synodic_client/application/screen/screen.py b/synodic_client/application/screen/screen.py index cd14c1a..117733e 100644 --- a/synodic_client/application/screen/screen.py +++ b/synodic_client/application/screen/screen.py @@ -2,17 +2,19 @@ from __future__ import annotations +import logging from pathlib import Path from typing import TYPE_CHECKING from porringer.schema import ListPluginsParameters from PySide6.QtCore import Qt +from PySide6.QtGui import QStandardItem from PySide6.QtWidgets import ( + QComboBox, QFileDialog, QHBoxLayout, QHeaderView, QMainWindow, - QMessageBox, QPushButton, QTableWidget, QTableWidgetItem, @@ -21,11 +23,15 @@ QWidget, ) +from synodic_client.application.screen.install import PreviewWorker, SetupPreviewWidget from synodic_client.application.theme import COMPACT_MARGINS, MAIN_WINDOW_MIN_SIZE +from synodic_client.application.threading import ThreadRunner if TYPE_CHECKING: from porringer.api import API +logger = logging.getLogger(__name__) + class PluginsView(QWidget): """Widget displaying cached plugin manifests.""" @@ -76,11 +82,16 @@ def refresh(self) -> None: self._table.setItem(row, 1, version_item) -class DirectoriesView(QWidget): - """Widget for managing cached manifest directories.""" +class ProjectsView(QWidget): + """Widget for managing project directories and previewing their manifests. + + Combines a cached-directory selector (editable ``QComboBox`` with + Browse) and a :class:`SetupPreviewWidget` for dry-run preview and + install execution. + """ def __init__(self, porringer: API, parent: QWidget | None = None) -> None: - """Initialize the directories view. + """Initialize the projects view. Args: porringer: The porringer API instance. @@ -88,6 +99,7 @@ def __init__(self, porringer: API, parent: QWidget | None = None) -> None: """ super().__init__(parent) self._porringer = porringer + self._runner: ThreadRunner | None = None self._init_ui() def _init_ui(self) -> None: @@ -95,95 +107,166 @@ def _init_ui(self) -> None: layout = QVBoxLayout(self) layout.setContentsMargins(*COMPACT_MARGINS) - # Toolbar with add/remove buttons - toolbar = QHBoxLayout() - toolbar.setContentsMargins(0, 0, 0, 8) + # --- Project directory selector --- + selector_row = QHBoxLayout() + selector_row.setContentsMargins(0, 0, 0, 8) - self._add_btn = QPushButton('Add Directory') - self._add_btn.clicked.connect(self._on_add_directory) - toolbar.addWidget(self._add_btn) + self._combo = QComboBox() + self._combo.setEditable(True) + self._combo.setToolTip('Select a cached project directory or enter a new path') + self._combo.setSizeAdjustPolicy(QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon) + self._combo.setMinimumContentsLength(40) + self._combo.currentIndexChanged.connect(self._on_selection_changed) + selector_row.addWidget(self._combo, 1) + + self._browse_btn = QPushButton('Browse…') + self._browse_btn.clicked.connect(self._on_browse) + selector_row.addWidget(self._browse_btn) self._remove_btn = QPushButton('Remove') - self._remove_btn.clicked.connect(self._on_remove_directory) + self._remove_btn.setToolTip('Remove the selected directory from the cache') + self._remove_btn.clicked.connect(self._on_remove) self._remove_btn.setEnabled(False) - toolbar.addWidget(self._remove_btn) - - toolbar.addStretch() - layout.addLayout(toolbar) + selector_row.addWidget(self._remove_btn) - # Directories table - self._table = QTableWidget() - self._table.setColumnCount(2) - self._table.setHorizontalHeaderLabels(['Path', 'Name']) - self._table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers) - self._table.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) - self._table.setAlternatingRowColors(True) - self._table.itemSelectionChanged.connect(self._on_selection_changed) + layout.addLayout(selector_row) - header = self._table.horizontalHeader() - header.setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch) - header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents) + # --- Shared preview widget --- + self._preview = SetupPreviewWidget(self._porringer, self, show_close=False) + self._preview.install_finished.connect(self._on_install_finished) + layout.addWidget(self._preview) - layout.addWidget(self._table) + # --- Public API --- def refresh(self) -> None: - """Refresh the directories list from porringer cache.""" - self._table.setRowCount(0) + """Refresh the cached directories combo box from porringer cache.""" + self._combo.blockSignals(True) + current_text = self._combo.currentText() + self._combo.clear() directories = self._porringer.cache.list_directories() + for directory in directories: + display = str(directory.path) + tooltip = directory.name or '' + exists = Path(directory.path).is_dir() + + idx = self._combo.count() + self._combo.addItem(display) + self._combo.setItemData(idx, tooltip, Qt.ItemDataRole.ToolTipRole) + self._combo.setItemData(idx, str(directory.path), Qt.ItemDataRole.UserRole) + + if not exists: + # Grey out entries whose directory no longer exists on disk + item = self._combo.model().item(idx) # type: ignore[union-attr] + if isinstance(item, QStandardItem): + item.setForeground(self.palette().placeholderText()) + item.setToolTip(f'{tooltip} \u2014 directory not found' if tooltip else 'Directory not found') + + # Restore previous selection if it still exists + idx = self._combo.findText(current_text) + if idx >= 0: + self._combo.setCurrentIndex(idx) + elif self._combo.count() > 0: + self._combo.setCurrentIndex(0) + + self._combo.blockSignals(False) + self._update_remove_btn() + + # Trigger preview for the current selection + if self._combo.currentText(): + self._load_preview() + + # --- Event handlers --- + + def _on_selection_changed(self, _index: int) -> None: + """Handle combo box selection changes.""" + self._update_remove_btn() + if self._combo.currentText(): + self._load_preview() + + def _on_browse(self) -> None: + """Open a directory picker and set the combo text.""" + chosen = QFileDialog.getExistingDirectory( + self, + 'Select Project Directory', + self._combo.currentText() or '', + QFileDialog.Option.ShowDirsOnly, + ) + if chosen: + self._combo.setEditText(chosen) + self._load_preview() + + def _on_remove(self) -> None: + """Remove the currently selected directory from the cache.""" + idx = self._combo.currentIndex() + if idx < 0: + return - self._table.setRowCount(len(directories)) - for row, directory in enumerate(directories): - path_item = QTableWidgetItem(str(directory.path)) - name_item = QTableWidgetItem(directory.name or '') + path_str = self._combo.itemData(idx, Qt.ItemDataRole.UserRole) + if path_str: + self._porringer.cache.remove_directory(Path(path_str)) - # Store the path in the item data for removal - path_item.setData(Qt.ItemDataRole.UserRole, directory.path) + self.refresh() - self._table.setItem(row, 0, path_item) - self._table.setItem(row, 1, name_item) + def _on_install_finished(self, _results: object) -> None: + """Register a new path in the cache after successful install.""" + current_text = self._combo.currentText().strip() + if not current_text: + return - self._on_selection_changed() + # Only register if the path isn't already in the combo's cached items + idx = self._combo.findText(current_text) + item_data = self._combo.itemData(idx, Qt.ItemDataRole.UserRole) if idx >= 0 else None + if item_data is None: + try: + self._porringer.cache.add_directory(Path(current_text)) + logger.info('Registered new project directory: %s', current_text) + self.refresh() + except ValueError: + logger.debug('Directory already cached or invalid: %s', current_text) + + # --- Preview loading --- + + def _load_preview(self) -> None: + """Run a dry-run preview for the currently selected path.""" + path_text = self._combo.currentText().strip() + if not path_text: + return - def _on_selection_changed(self) -> None: - """Update button states based on selection.""" - self._remove_btn.setEnabled(len(self._table.selectedItems()) > 0) + project_path = Path(path_text) + manifest_path = project_path / 'porringer.json' - def _on_add_directory(self) -> None: - """Handle add directory button click.""" - directory = QFileDialog.getExistingDirectory( - self, - 'Select Manifest Directory', - '', - QFileDialog.Option.ShowDirsOnly, - ) + self._preview.reset() - if not directory: + if not project_path.is_dir(): + self._preview.show_not_found(f'Directory not found: {project_path}') return - try: - path = Path(directory) - self._porringer.cache.add_directory(path) - self.refresh() - except ValueError as e: - QMessageBox.warning( - self, - 'Add Directory Failed', - str(e), - ) - - def _on_remove_directory(self) -> None: - """Handle remove directory button click.""" - selected_rows = set(item.row() for item in self._table.selectedItems()) - - for row in selected_rows: - path_item = self._table.item(row, 0) - if path_item: - path = path_item.data(Qt.ItemDataRole.UserRole) - if path: - self._porringer.cache.remove_directory(path) + self._preview.set_project_directory(project_path) - self.refresh() + preview_worker = PreviewWorker( + self._porringer, + str(manifest_path), + project_directory=project_path, + ) + preview_worker.preview_ready.connect(self._preview.on_preview_ready) + preview_worker.action_checked.connect(self._preview.on_action_checked) + preview_worker.finished.connect(self._preview.on_preview_finished) + preview_worker.error.connect(self._on_preview_error) + + self._runner = ThreadRunner(preview_worker) + self._runner.start() + + def _on_preview_error(self, message: str) -> None: + """Handle preview errors inline instead of showing a modal dialog.""" + logger.warning('Preview error: %s', message) + self._preview.show_not_found(message) + + def _update_remove_btn(self) -> None: + """Enable the Remove button only for cached (non-freeform) entries.""" + idx = self._combo.currentIndex() + has_data = idx >= 0 and self._combo.itemData(idx, Qt.ItemDataRole.UserRole) is not None + self._remove_btn.setEnabled(has_data) class MainWindow(QMainWindow): @@ -191,7 +274,7 @@ class MainWindow(QMainWindow): _tabs: QTabWidget | None = None _plugins_view: PluginsView | None = None - _directories_view: DirectoriesView | None = None + _projects_view: ProjectsView | None = None def __init__(self, porringer: API | None = None) -> None: """Initialize the main window. @@ -209,19 +292,19 @@ def show(self) -> None: if self._tabs is None and self._porringer is not None: self._tabs = QTabWidget(self) + self._projects_view = ProjectsView(self._porringer, self) + self._tabs.addTab(self._projects_view, 'Projects') + self._plugins_view = PluginsView(self._porringer, self) self._tabs.addTab(self._plugins_view, 'Plugins') - self._directories_view = DirectoriesView(self._porringer, self) - self._tabs.addTab(self._directories_view, 'Directories') - self.setCentralWidget(self._tabs) # Refresh both views if self._plugins_view is not None: self._plugins_view.refresh() - if self._directories_view is not None: - self._directories_view.refresh() + if self._projects_view is not None: + self._projects_view.refresh() super().show() diff --git a/synodic_client/application/screen/tray.py b/synodic_client/application/screen/tray.py index 1bef027..94b0663 100644 --- a/synodic_client/application/screen/tray.py +++ b/synodic_client/application/screen/tray.py @@ -4,7 +4,7 @@ from typing import LiteralString from PySide6.QtCore import QObject, QTimer, Signal -from PySide6.QtGui import QAction, QIcon +from PySide6.QtGui import QAction, QIcon, QPixmap from PySide6.QtWidgets import ( QApplication, QDialog, @@ -165,7 +165,9 @@ def __init__( self._download_cancelled = False with client.resource(icon_name) as icon_path: - self.tray_icon = QIcon(str(icon_path)) + # Load pixel data eagerly via QPixmap so the icon survives + # context-manager cleanup (QIcon uses lazy file-based loading). + self.tray_icon = QIcon(QPixmap(str(icon_path))) self.tray = QSystemTrayIcon() self.tray.setIcon(self.tray_icon) diff --git a/synodic_client/application/theme.py b/synodic_client/application/theme.py index 1945e5e..378f209 100644 --- a/synodic_client/application/theme.py +++ b/synodic_client/application/theme.py @@ -51,3 +51,60 @@ HEADER_STYLE = 'font-size: 14px; font-weight: bold;' MUTED_STYLE = 'color: grey;' COMMAND_HEADER_STYLE = 'color: grey; margin-top: 6px;' + +# --------------------------------------------------------------------------- +# Execution log panel +# --------------------------------------------------------------------------- + +# Section header styles +LOG_SECTION_HEADER_STYLE = ( + 'QWidget#sectionHeader {' + ' background: palette(midlight);' + ' border: 1px solid palette(mid);' + ' border-radius: 3px;' + ' padding: 4px 8px;' + '}' +) +LOG_CHEVRON_STYLE = 'font-size: 10px; color: palette(text);' +LOG_SECTION_TITLE_STYLE = 'font-weight: bold; font-size: 12px;' + +# Status badge colours +LOG_STATUS_RUNNING = 'color: #3794ff;' +"""Blue — action is currently executing.""" + +LOG_STATUS_SUCCESS = 'color: #89d185;' +"""Green — action completed successfully.""" + +LOG_STATUS_FAILED = 'color: #f48771;' +"""Red-orange — action failed.""" + +LOG_STATUS_SKIPPED = 'color: grey;' +"""Grey — action was skipped.""" + +# Output text colours (used in HTML spans inside QTextEdit) +LOG_COLOR_STDOUT = '#d4d4d4' +"""Default text — stdout lines.""" + +LOG_COLOR_STDERR = '#d7ba7d' +"""Amber — stderr lines.""" + +LOG_COLOR_PHASE = '#808080' +"""Grey — phase/status messages.""" + +LOG_COLOR_ERROR = '#f48771' +"""Red-orange — error messages.""" + +LOG_COLOR_SUCCESS = '#89d185' +"""Green — success messages.""" + +# Output area style +LOG_OUTPUT_STYLE = ( + 'QTextEdit {' + ' background: #1e1e1e;' + ' border: 1px solid palette(mid);' + ' border-top: none;' + ' border-bottom-left-radius: 3px;' + ' border-bottom-right-radius: 3px;' + ' padding: 6px;' + '}' +) diff --git a/tests/unit/test_install_preview.py b/tests/unit/test_install_preview.py index aeb3307..2178a59 100644 --- a/tests/unit/test_install_preview.py +++ b/tests/unit/test_install_preview.py @@ -18,14 +18,16 @@ ) from synodic_client.application.qt import parse_uri -from synodic_client.application.screen.install import ( +from synodic_client.application.screen import ( ACTION_KIND_LABELS, SKIP_REASON_LABELS, + skip_reason_label, +) +from synodic_client.application.screen.install import ( InstallWorker, PreviewWorker, format_cli_command, resolve_local_path, - skip_reason_label, ) diff --git a/tests/unit/test_log_panel.py b/tests/unit/test_log_panel.py new file mode 100644 index 0000000..59a5283 --- /dev/null +++ b/tests/unit/test_log_panel.py @@ -0,0 +1,613 @@ +"""Tests for the execution log panel widgets and new InstallWorker signals.""" + +from __future__ import annotations + +import sys +from unittest.mock import MagicMock + +from porringer.schema import ( + PluginKind, + SetupAction, + SetupActionResult, + SkipReason, + SubActionProgress, +) + +# PySide6 widgets require a QApplication; create one once for the module. +from PySide6.QtWidgets import QApplication + +_app = QApplication.instance() or QApplication(sys.argv) + +from synodic_client.application.screen.log_panel import ( + _CHEVRON_DOWN, + _CHEVRON_RIGHT, + ActionLogSection, + ExecutionLogPanel, +) +from synodic_client.application.theme import ( + LOG_COLOR_ERROR, + LOG_COLOR_PHASE, + LOG_COLOR_STDERR, + LOG_COLOR_STDOUT, + LOG_COLOR_SUCCESS, + LOG_STATUS_FAILED, + LOG_STATUS_RUNNING, + LOG_STATUS_SKIPPED, + LOG_STATUS_SUCCESS, +) + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + + +def _make_action( + kind: PluginKind = PluginKind.PACKAGE, + description: str = 'Install requests', + installer: str = 'pip', + package: str = 'requests', + package_description: str | None = None, +) -> SetupAction: + """Create a mock SetupAction with sensible defaults.""" + action = MagicMock(spec=SetupAction) + action.kind = kind + action.description = description + action.installer = installer + action.package = package + action.package_description = package_description or description + action.command = None + action.cli_command = None + return action + + +def _make_result( + action: SetupAction | None = None, + *, + success: bool = True, + skipped: bool = False, + skip_reason: SkipReason | None = None, + message: str | None = None, +) -> SetupActionResult: + """Create a SetupActionResult.""" + return SetupActionResult( + action=action or _make_action(), + success=success, + skipped=skipped, + skip_reason=skip_reason, + message=message, + ) + + +def _output_html(section: ActionLogSection) -> str: + """Return the full HTML content of a section's output text edit.""" + return section._output.toHtml() + + +# --------------------------------------------------------------------------- +# ActionLogSection +# --------------------------------------------------------------------------- + + +class TestActionLogSection: + """Tests for ActionLogSection widget.""" + + @staticmethod + def test_initial_status_shows_running() -> None: + """Section header starts with 'Running…' status.""" + action = _make_action() + section = ActionLogSection(action, index=1) + assert section._status_label.text() == 'Running…' + assert LOG_STATUS_RUNNING in section._status_label.styleSheet() + + @staticmethod + def test_initial_chevron_is_down() -> None: + """Section starts expanded with the down-pointing chevron.""" + action = _make_action() + section = ActionLogSection(action, index=1) + assert section._chevron.text() == _CHEVRON_DOWN + assert section._expanded is True + assert not section._output.isHidden() + + @staticmethod + def test_toggle_collapses_and_expands() -> None: + """Toggling collapses the output, toggling again restores it.""" + action = _make_action() + section = ActionLogSection(action, index=1) + + section._toggle() + assert not section._expanded + assert section._output.isHidden() + assert section._chevron.text() == _CHEVRON_RIGHT + + section._toggle() + assert section._expanded + assert not section._output.isHidden() + assert section._chevron.text() == _CHEVRON_DOWN + + @staticmethod + def test_append_stdout_output() -> None: + """Stdout lines are coloured with the stdout colour.""" + action = _make_action() + section = ActionLogSection(action, index=1) + section.append_output('hello world', 'stdout') + + html = _output_html(section) + assert LOG_COLOR_STDOUT in html + assert 'hello world' in html + + @staticmethod + def test_append_stderr_output() -> None: + """Stderr lines use the stderr/amber colour.""" + action = _make_action() + section = ActionLogSection(action, index=1) + section.append_output('warning: something', 'stderr') + + html = _output_html(section) + assert LOG_COLOR_STDERR in html + assert 'warning: something' in html + + @staticmethod + def test_append_output_none_stream_uses_phase_colour() -> None: + """Lines with stream=None use the phase/muted colour.""" + action = _make_action() + section = ActionLogSection(action, index=1) + section.append_output('Verifying checksums', None) + + html = _output_html(section) + assert LOG_COLOR_PHASE in html + assert 'Verifying checksums' in html + + @staticmethod + def test_append_phase_uses_phase_colour() -> None: + """Phase messages (stream=None) use the muted grey colour.""" + action = _make_action() + section = ActionLogSection(action, index=1) + section.append_output('downloading', None) + + html = _output_html(section) + assert LOG_COLOR_PHASE in html + assert 'downloading' in html + + @staticmethod + def test_html_escaping_in_output() -> None: + """Special HTML characters are escaped in output lines.""" + action = _make_action() + section = ActionLogSection(action, index=1) + section.append_output('', 'stdout') + + html = _output_html(section) + # HTML entities should have been escaped + assert '<script>' in html + assert '