Skip to content

Commit b2b035b

Browse files
bobokungithub-actions[bot]dependabot[bot]Haylibipre-commit-ci[bot]
authored
4.6.6 (#1124)
# Requirements Updated - "bencode.py==4.0.0" - "croniter==6.2.2" - "fastapi==0.135.1" - "GitPython==3.1.46" - "humanize==4.15.0" - "ruamel.yaml==0.19.1" - "uvicorn==0.42.0" - "pre-commit==4.5.1" - "ruff==0.15.7" # Improvements - Adds unraid version detection in mover script - Add better logging for apprise/notifiarr connection errors - Adds new linux ARM64 standalone binary and desktop builds - Changed dependency to bencode.py instead of bencodepy for packing for nixos, updated minimum python version to 3.10 # Bug Fixes - Fixes active downloads marked orphaned when qbit uses incomplete dir (Fixes #1115) - Fixed an issue where the qbm was failing to remove directories that rem_orphaned emptied. (Fixes #1089) - Fixed: Share limits not removed when exclusion tag added (Fixes #1067) - Fixed: Conflict409Error not triggering category auto-create (Fixes #1063) - Fixed: BHD 'Season Pack:' message not detected as unregistered - Fixed a bug where QBT_BASE_URL configuration was being ignored by frontend components (Fixes #1041) **Full Changelog**: v4.6.5...v4.6.6 Special thanks to @no-food-just-commits, @bakerboy448, @flyingpeakock, and @timrettop for their contributions! --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Haylibi <duarte.pinto7337@gmai..com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Philip Johansson <philip@phlipphlop.me> Co-authored-by: bakerboy448 <55419169+bakerboy448@users.noreply.github.com> Co-authored-by: Actionbot <actions@github.com> Co-authored-by: no-food-just-commits <deopso787@gmail.com> Co-authored-by: no-food-just-commits <nofoodjustcommits@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Tim Potter <musikgoat@gmail.com>
1 parent 371627b commit b2b035b

33 files changed

Lines changed: 793 additions & 759 deletions

.claude/CLAUDE.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# qbit_manage
2+
3+
Python tool for managing qBittorrent. Automates tagging, categorization, orphan cleanup, and more.
4+
5+
## Project
6+
- Python 3.10+, setuptools + pyproject.toml
7+
- Ruff: line-length=130 (see ruff.toml)
8+
- Entry point: `qbit_manage.py`
9+
- Config: `config/config.yml` (gitignored)
10+
- Logs: `config/logs/`
11+
12+
## Structure
13+
- `modules/` — core logic (qbittorrent.py, config.py, webhooks.py, util.py)
14+
- `modules/core/` — per-feature modules (tags, share_limits, category)
15+
- `scripts/` — standalone utilities
16+
- `build/` — generated, never edit
17+
18+
## Dev
19+
- `pip install -e ".[dev]"` to install with dev deps
20+
- `ruff check --fix .` — lint and auto-fix
21+
- `ruff format .` — format
22+
- PRs target the `develop` branch

.github/workflows/dependabot-approve-and-auto-merge.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
# will not occur.
2020
- name: Dependabot metadata
2121
id: dependabot-metadata
22-
uses: dependabot/fetch-metadata@v2.4.0
22+
uses: dependabot/fetch-metadata@v2.5.0
2323
with:
2424
github-token: "${{ secrets.GITHUB_TOKEN }}"
2525
# Here the PR gets approved.

.github/workflows/develop.yml

Lines changed: 32 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@ name: Docker Develop Release
22

33
on:
44
push:
5-
branches: [ develop ]
5+
branches: [develop]
66
workflow_dispatch:
77

88
concurrency:
99
group: ${{ github.workflow }}-${{ github.ref }}
1010
cancel-in-progress: true
1111

1212
jobs:
13-
1413
build-binaries:
1514
name: Build Standalone Binaries (${{ matrix.os }})
1615
permissions:
@@ -21,14 +20,19 @@ jobs:
2120
matrix:
2221
include:
2322
- os: ubuntu-latest
24-
python-version: '3.12'
23+
python-version: "3.12"
24+
arch: amd64
25+
- os: ubuntu-24.04-arm # for Arm based Linux (Raspberry Pi, etc.)
26+
python-version: "3.12"
27+
arch: arm64
2528
- os: windows-latest
26-
python-version: '3.12'
27-
- os: 'macos-latest' # for Arm based macs (M1 and above).
28-
python-version: '3.12'
29+
python-version: "3.12"
30+
arch: amd64
31+
- os: "macos-latest" # for Arm based macs (M1 and above).
32+
python-version: "3.12"
2933
arch: arm64
30-
- os: 'macos-13' # for Intel based macs.
31-
python-version: '3.12'
34+
- os: "macos-15-intel" # for Intel based macs.
35+
python-version: "3.12"
3236
arch: x86_64
3337
env:
3438
APP_NAME: qbit-manage
@@ -43,7 +47,7 @@ jobs:
4347
uses: actions/setup-python@v6
4448
with:
4549
python-version: ${{ matrix.python-version }}
46-
cache: 'pip'
50+
cache: "pip"
4751
cache-dependency-path: |
4852
pyproject.toml
4953
uv.lock
@@ -101,19 +105,13 @@ jobs:
101105
run: |
102106
mkdir -p out
103107
if [[ "${{ runner.os }}" == "Windows" ]]; then
104-
mv "dist/${APP_NAME}.exe" "out/${APP_NAME}-windows-amd64.exe"
108+
mv "dist/${APP_NAME}.exe" "out/${APP_NAME}-windows-${{ matrix.arch }}.exe"
105109
elif [[ "${{ runner.os }}" == "macOS" ]]; then
106-
ARCH=$(uname -m)
107-
if [[ "$ARCH" == "arm64" ]]; then
108-
mv "dist/${APP_NAME}" "out/${APP_NAME}-macos-arm64"
109-
else
110-
mv "dist/${APP_NAME}" "out/${APP_NAME}-macos-x86_64"
111-
fi
110+
mv "dist/${APP_NAME}" "out/${APP_NAME}-macos-${{ matrix.arch }}"
112111
else
113-
mv "dist/${APP_NAME}" "out/${APP_NAME}-linux-amd64"
112+
mv "dist/${APP_NAME}" "out/${APP_NAME}-linux-${{ matrix.arch }}"
114113
fi
115114
116-
117115
# Build Tauri desktop shell after binaries are ready
118116
- name: Setup Rust toolchain
119117
uses: dtolnay/rust-toolchain@stable
@@ -167,19 +165,13 @@ jobs:
167165
168166
# Copy the actual binary for this platform as a resource
169167
if [[ "${{ runner.os }}" == "Windows" ]]; then
170-
cp "out/${APP_NAME}-windows-amd64.exe" "desktop/tauri/src-tauri/bin/qbit-manage-windows-amd64.exe"
168+
cp "out/${APP_NAME}-windows-${{ matrix.arch }}.exe" "desktop/tauri/src-tauri/bin/qbit-manage-windows-${{ matrix.arch }}.exe"
171169
elif [[ "${{ runner.os }}" == "macOS" ]]; then
172-
ARCH=$(uname -m)
173-
if [[ "$ARCH" == "arm64" ]]; then
174-
cp "out/${APP_NAME}-macos-arm64" "desktop/tauri/src-tauri/bin/qbit-manage-macos-arm64"
175-
chmod +x "desktop/tauri/src-tauri/bin/qbit-manage-macos-arm64"
176-
else
177-
cp "out/${APP_NAME}-macos-x86_64" "desktop/tauri/src-tauri/bin/qbit-manage-macos-x86_64"
178-
chmod +x "desktop/tauri/src-tauri/bin/qbit-manage-macos-x86_64"
179-
fi
170+
cp "out/${APP_NAME}-macos-${{ matrix.arch }}" "desktop/tauri/src-tauri/bin/qbit-manage-macos-${{ matrix.arch }}"
171+
chmod +x "desktop/tauri/src-tauri/bin/qbit-manage-macos-${{ matrix.arch }}"
180172
else
181-
cp "out/${APP_NAME}-linux-amd64" "desktop/tauri/src-tauri/bin/qbit-manage-linux-amd64"
182-
chmod +x "desktop/tauri/src-tauri/bin/qbit-manage-linux-amd64"
173+
cp "out/${APP_NAME}-linux-${{ matrix.arch }}" "desktop/tauri/src-tauri/bin/qbit-manage-linux-${{ matrix.arch }}"
174+
chmod +x "desktop/tauri/src-tauri/bin/qbit-manage-linux-${{ matrix.arch }}"
183175
fi
184176
185177
- name: Update Tauri version files
@@ -266,21 +258,10 @@ jobs:
266258
- name: Set BUILD_ARCH for artifact naming
267259
shell: bash
268260
run: |
269-
if [[ "${{ runner.os }}" == "macOS" ]]; then
270-
ARCH=$(uname -m)
271-
if [[ "$ARCH" == "arm64" ]]; then
272-
echo "BUILD_ARCH=arm64" >> $GITHUB_ENV
273-
else
274-
echo "BUILD_ARCH=x86_64" >> $GITHUB_ENV
275-
fi
276-
elif [[ "${{ runner.os }}" == "Windows" ]]; then
277-
echo "BUILD_ARCH=amd64" >> $GITHUB_ENV
278-
else
279-
echo "BUILD_ARCH=amd64" >> $GITHUB_ENV
280-
fi
261+
echo "BUILD_ARCH=${{ matrix.arch }}" >> $GITHUB_ENV
281262
282263
- name: Upload build outputs (binary + Tauri bundles)
283-
uses: actions/upload-artifact@v5
264+
uses: actions/upload-artifact@v7
284265
with:
285266
name: build-outputs-${{ runner.os }}-${{ env.BUILD_ARCH }}
286267
path: |
@@ -298,7 +279,7 @@ jobs:
298279
contents: read
299280
steps:
300281
- name: Download and collect all build outputs
301-
uses: actions/download-artifact@v6
282+
uses: actions/download-artifact@v8
302283
with:
303284
pattern: build-outputs-*
304285
path: collected
@@ -314,6 +295,7 @@ jobs:
314295
# Copy server binaries with error checking
315296
server_files=(
316297
"qbit-manage-linux-amd64"
298+
"qbit-manage-linux-arm64"
317299
"qbit-manage-macos-arm64"
318300
"qbit-manage-macos-x86_64"
319301
"qbit-manage-windows-amd64.exe"
@@ -386,7 +368,7 @@ jobs:
386368
echo "Desktop installers: $(find release-assets -name "*desktop-installer*" | wc -l)"
387369
388370
- name: Upload final release assets
389-
uses: actions/upload-artifact@v5
371+
uses: actions/upload-artifact@v7
390372
with:
391373
name: qbit-manage-release-assets
392374
path: release-assets/*
@@ -401,41 +383,34 @@ jobs:
401383
run: |
402384
echo "OWNER_LC=${OWNER,,}" >>${GITHUB_ENV}
403385
env:
404-
OWNER: '${{ github.repository_owner }}'
386+
OWNER: "${{ github.repository_owner }}"
405387

406388
- name: Check Out Repo
407389
uses: actions/checkout@v6
408390
with:
409391
ref: develop
410392

411-
- name: Trigger Hotio Webhook
412-
uses: joelwmale/webhook-action@master
413-
with:
414-
url: ${{ secrets.HOTIO_WEBHOOK_URL }}
415-
headers: '{"Authorization": "Bearer ${{ secrets.HOTIO_WEBHOOK_SECRET }}"}'
416-
body: '{ "application": "qbitmanage", "branch": "nightly" }'
417-
418393
- name: Login to Docker Hub
419-
uses: docker/login-action@v3
394+
uses: docker/login-action@v4
420395
with:
421396
username: ${{ secrets.DOCKER_HUB_USERNAME }}
422397
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
423398

424399
- name: Login to ghcr.io
425-
uses: docker/login-action@v3
400+
uses: docker/login-action@v4
426401
with:
427402
registry: ghcr.io
428403
username: ${{ env.OWNER_LC }}
429404
password: ${{ secrets.GHCR_TOKEN }}
430405

431406
- name: Set up QEMU
432-
uses: docker/setup-qemu-action@v3
407+
uses: docker/setup-qemu-action@v4
433408
with:
434409
platforms: all
435410

436411
- name: Set up Docker Buildx
437412
id: buildx
438-
uses: docker/setup-buildx-action@v3
413+
uses: docker/setup-buildx-action@v4
439414

440415
- name: Read version from VERSION file
441416
id: get_version
@@ -449,7 +424,7 @@ jobs:
449424
450425
- name: Build and push
451426
id: docker_build
452-
uses: docker/build-push-action@v6
427+
uses: docker/build-push-action@v7
453428
with:
454429
context: ./
455430
file: ./Dockerfile

.github/workflows/update-supported-versions.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ jobs:
7575
- name: Create Pull Request
7676
if: ${{ steps.detect-changes.outputs.changed == 'true' }}
7777
id: create-pr
78-
uses: peter-evans/create-pull-request@v7
78+
uses: peter-evans/create-pull-request@v8
7979
with:
8080
commit-message: Update SUPPORTED_VERSIONS.json
8181
title: "Update SUPPORTED_VERSIONS.json for ${{ steps.get-develop-version.outputs.version || github.event.inputs.targetBranch || github.ref_name }}"

0 commit comments

Comments
 (0)