Compare commits

...

16 Commits

Author SHA1 Message Date
dependabot[bot] 55ba9e7b6e ci(deps): bump docker/build-push-action from 5 to 7
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 7.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v7)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 06:21:35 +00:00
Tomáš Dvořák fbf4a71ea5 Merge pull request #7 from Dvorinka/dependabot/pip/rapidfuzz-3.14.3 2026-04-10 12:28:25 +02:00
dependabot[bot] 5ed457d79d deps(deps): bump rapidfuzz from 3.11.0 to 3.14.3
Bumps [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) from 3.11.0 to 3.14.3.
- [Release notes](https://github.com/rapidfuzz/RapidFuzz/releases)
- [Changelog](https://github.com/rapidfuzz/RapidFuzz/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/rapidfuzz/RapidFuzz/compare/v3.11.0...v3.14.3)

---
updated-dependencies:
- dependency-name: rapidfuzz
  dependency-version: 3.14.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 10:27:17 +00:00
Tomáš Dvořák 93b0f81990 Merge pull request #1 from Dvorinka/dependabot/github_actions/actions/cache-5 2026-04-10 12:26:57 +02:00
Tomáš Dvořák f27f8504bb Merge pull request #2 from Dvorinka/dependabot/github_actions/actions/upload-artifact-7 2026-04-10 12:26:38 +02:00
Tomáš Dvořák 274c51d44b Merge pull request #3 from Dvorinka/dependabot/github_actions/codecov/codecov-action-5 2026-04-10 12:26:25 +02:00
Tomáš Dvořák 37a60b98d7 Merge pull request #4 from Dvorinka/dependabot/github_actions/actions/checkout-6 2026-04-10 12:26:16 +02:00
Tomáš Dvořák 5d06dda687 Merge pull request #5 from Dvorinka/dependabot/github_actions/actions/setup-node-6 2026-04-10 12:25:57 +02:00
Tomáš Dvořák e26cf25e6f Merge pull request #6 from Dvorinka/dependabot/pip/flask-72b697a17d 2026-04-10 12:25:11 +02:00
dependabot[bot] d5c664d753 deps(deps): bump flask-openapi3 from 3.0.2 to 4.3.1 in the flask group
Bumps the flask group with 1 update: [flask-openapi3](https://github.com/luolingchun/flask-openapi3).


Updates `flask-openapi3` from 3.0.2 to 4.3.1
- [Release notes](https://github.com/luolingchun/flask-openapi3/releases)
- [Changelog](https://github.com/luolingchun/flask-openapi/blob/main/CHANGELOG.md)
- [Commits](https://github.com/luolingchun/flask-openapi3/compare/v3.0.2...v4.3.1)

---
updated-dependencies:
- dependency-name: flask-openapi3
  dependency-version: 4.3.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: flask
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-06 06:21:37 +00:00
Tomas Dvorak 523ebf1c94 fix 2026-04-04 14:39:47 +02:00
dependabot[bot] 58f720d7de ci(deps): bump actions/setup-node from 4 to 6
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-22 10:32:53 +00:00
dependabot[bot] facff2d322 ci(deps): bump actions/upload-artifact from 4 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-22 10:32:50 +00:00
dependabot[bot] 1648e0fea2 ci(deps): bump actions/cache from 4 to 5
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-22 09:56:26 +00:00
dependabot[bot] 69244c9429 ci(deps): bump actions/checkout from 4 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-22 09:56:21 +00:00
dependabot[bot] 8661101706 ci(deps): bump codecov/codecov-action from 4 to 5
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-21 09:01:59 +00:00
7 changed files with 106 additions and 42 deletions
+67
View File
@@ -0,0 +1,67 @@
name: Build and Push Docker Image
on:
push:
branches: [ "master", "main" ]
paths:
- 'src/**'
- 'swingmusic-webclient/**'
- 'pyproject.toml'
- 'requirements.txt'
- 'Dockerfile'
workflow_dispatch:
release:
types: [published]
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,value=latest,enable={{is_default_branch}}
- name: Build and push Docker image
uses: docker/build-push-action@v7
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
+10 -10
View File
@@ -15,7 +15,7 @@ jobs:
name: Backend Lint & Type Check name: Backend Lint & Type Check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
@@ -43,7 +43,7 @@ jobs:
name: Backend Tests name: Backend Tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
@@ -66,7 +66,7 @@ jobs:
run: python -m pytest tests/ -v --tb=short --cov=src/swingmusic --cov-report=xml --cov-report=term-missing run: python -m pytest tests/ -v --tb=short --cov=src/swingmusic --cov-report=xml --cov-report=term-missing
- name: Upload coverage - name: Upload coverage
uses: codecov/codecov-action@v4 uses: codecov/codecov-action@v5
with: with:
files: ./coverage.xml files: ./coverage.xml
fail_ci_if_error: false fail_ci_if_error: false
@@ -75,7 +75,7 @@ jobs:
name: Backend Startup Check name: Backend Startup Check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
@@ -104,7 +104,7 @@ jobs:
working-directory: swingmusic_mobile working-directory: swingmusic_mobile
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
@@ -131,12 +131,12 @@ jobs:
working-directory: swingmusic-webclient working-directory: swingmusic-webclient
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
- name: Set up Node.js - name: Set up Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: '20' node-version: '20'
cache: 'npm' cache: 'npm'
@@ -162,12 +162,12 @@ jobs:
working-directory: swingmusic-desktop working-directory: swingmusic-desktop
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
- name: Set up Node.js - name: Set up Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: '20' node-version: '20'
cache: 'npm' cache: 'npm'
@@ -186,7 +186,7 @@ jobs:
if: always() if: always()
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
+8 -8
View File
@@ -24,7 +24,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v3 uses: github/codeql-action/init@v3
@@ -47,7 +47,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
@@ -69,7 +69,7 @@ jobs:
name: Python Dependency Audit name: Python Dependency Audit
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v5 uses: actions/setup-python@v5
@@ -90,12 +90,12 @@ jobs:
run: run:
working-directory: swingmusic-webclient working-directory: swingmusic-webclient
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
- name: Set up Node.js - name: Set up Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: '20' node-version: '20'
@@ -113,12 +113,12 @@ jobs:
run: run:
working-directory: swingmusic-desktop working-directory: swingmusic-desktop
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
- name: Set up Node.js - name: Set up Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: '20' node-version: '20'
@@ -136,7 +136,7 @@ jobs:
name: Secret Scanning name: Secret Scanning
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
+16 -16
View File
@@ -34,7 +34,7 @@ jobs:
release_notes: ${{ steps.version.outputs.release_notes }} release_notes: ${{ steps.version.outputs.release_notes }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
@@ -167,7 +167,7 @@ jobs:
rust_target: 'x86_64-unknown-linux-gnu' rust_target: 'x86_64-unknown-linux-gnu'
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: Initialize submodules - name: Initialize submodules
run: git submodule update --init --recursive run: git submodule update --init --recursive
@@ -177,7 +177,7 @@ jobs:
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: '18' node-version: '18'
cache: 'npm' cache: 'npm'
@@ -211,7 +211,7 @@ jobs:
npm run tauri build -- --target ${{ matrix.rust_target }} npm run tauri build -- --target ${{ matrix.rust_target }}
- name: Upload Linux artifacts - name: Upload Linux artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7
with: with:
name: desktop-${{ matrix.platform }} name: desktop-${{ matrix.platform }}
path: | path: |
@@ -234,7 +234,7 @@ jobs:
rust_target: 'x86_64-pc-windows-gnu' rust_target: 'x86_64-pc-windows-gnu'
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: Initialize submodules - name: Initialize submodules
run: git submodule update --init --recursive run: git submodule update --init --recursive
@@ -244,7 +244,7 @@ jobs:
sudo apt-get install -y mingw-w64 g++-multilib nsis libgtk-3-dev libwebkit2gtk-4.1-dev librsvg2-dev patchelf sudo apt-get install -y mingw-w64 g++-multilib nsis libgtk-3-dev libwebkit2gtk-4.1-dev librsvg2-dev patchelf
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: '18' node-version: '18'
cache: 'npm' cache: 'npm'
@@ -278,7 +278,7 @@ jobs:
npm run tauri build -- --target ${{ matrix.rust_target }} npm run tauri build -- --target ${{ matrix.rust_target }}
- name: Upload Windows artifacts - name: Upload Windows artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7
with: with:
name: desktop-${{ matrix.platform }} name: desktop-${{ matrix.platform }}
path: | path: |
@@ -303,12 +303,12 @@ jobs:
rust_target: 'aarch64-apple-darwin' rust_target: 'aarch64-apple-darwin'
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: Initialize submodules - name: Initialize submodules
run: git submodule update --init --recursive run: git submodule update --init --recursive
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: '18' node-version: '18'
cache: 'npm' cache: 'npm'
@@ -342,7 +342,7 @@ jobs:
npm run tauri build -- --target ${{ matrix.rust_target }} npm run tauri build -- --target ${{ matrix.rust_target }}
- name: Upload macOS artifacts - name: Upload macOS artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7
with: with:
name: desktop-${{ matrix.platform }} name: desktop-${{ matrix.platform }}
path: | path: |
@@ -358,7 +358,7 @@ jobs:
if: contains(github.event.inputs.components, 'mobile') || github.event_name == 'push' if: contains(github.event.inputs.components, 'mobile') || github.event_name == 'push'
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: Initialize submodules - name: Initialize submodules
run: git submodule update --init --recursive run: git submodule update --init --recursive
@@ -381,7 +381,7 @@ jobs:
flutter build apk --release --no-pub flutter build apk --release --no-pub
- name: Upload Mobile artifacts - name: Upload Mobile artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7
with: with:
name: mobile-release name: mobile-release
path: swingmusic_mobile/build/app/outputs/flutter-apk/app-release.apk path: swingmusic_mobile/build/app/outputs/flutter-apk/app-release.apk
@@ -395,7 +395,7 @@ jobs:
if: contains(github.event.inputs.components, 'backend') || github.event_name == 'push' if: contains(github.event.inputs.components, 'backend') || github.event_name == 'push'
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: Initialize submodules - name: Initialize submodules
run: git submodule update --init --recursive run: git submodule update --init --recursive
@@ -410,7 +410,7 @@ jobs:
sudo apt-get install -y libev-dev sudo apt-get install -y libev-dev
- name: Cache Python dependencies - name: Cache Python dependencies
uses: actions/cache@v4 uses: actions/cache@v5
with: with:
path: ~/.cache/pip path: ~/.cache/pip
key: pip-${{ hashFiles('**/requirements.txt') }} key: pip-${{ hashFiles('**/requirements.txt') }}
@@ -427,7 +427,7 @@ jobs:
python -m build python -m build
- name: Upload Backend artifacts - name: Upload Backend artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7
with: with:
name: backend-package name: backend-package
path: dist/ path: dist/
@@ -441,7 +441,7 @@ jobs:
if: success() if: success()
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: Download all artifacts - name: Download all artifacts
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
+1 -4
View File
@@ -36,12 +36,9 @@ RUN apt-get update \
COPY pyproject.toml requirements.txt version.txt ./ COPY pyproject.toml requirements.txt version.txt ./
COPY src/ ./src/ COPY src/ ./src/
# Install the package and its dependencies # Install the package and its dependencies (includes aiohttp, aiofiles, redis)
RUN pip install --no-cache-dir . RUN pip install --no-cache-dir .
# Install Redis library for DragonflyDB support
RUN pip install --no-cache-dir redis
# Ship a deterministic web client with the backend image so startup does not # Ship a deterministic web client with the backend image so startup does not
# depend on downloading release assets at runtime. # depend on downloading release assets at runtime.
COPY --from=webclient-builder /webclient/dist /app/client COPY --from=webclient-builder /webclient/dist /app/client
+2 -2
View File
@@ -34,8 +34,8 @@ dependencies = [
"ffmpeg-python>=0.2.0", "ffmpeg-python>=0.2.0",
"schedule>=1.2.2", "schedule>=1.2.2",
"pillow>=11.1.0", "pillow>=11.1.0",
"flask-openapi3==3.0.2", "flask-openapi3==4.3.1",
"rapidfuzz==3.11.0", "rapidfuzz==3.14.5",
"pendulum>=3.0.0", "pendulum>=3.0.0",
"pystray>=0.19.5", "pystray>=0.19.5",
"waitress>=3.0.2; sys_platform == 'win32'", "waitress>=3.0.2; sys_platform == 'win32'",
+2 -2
View File
@@ -21,8 +21,8 @@ sortedcontainers>=2.4.0
xxhash>=3.4.1 xxhash>=3.4.1
ffmpeg-python>=0.2.0 ffmpeg-python>=0.2.0
schedule>=1.2.2 schedule>=1.2.2
flask-openapi3==3.0.2 flask-openapi3==4.3.1
rapidfuzz==3.11.0 rapidfuzz==3.14.5
pendulum>=3.0.0 pendulum>=3.0.0
pystray>=0.19.5 pystray>=0.19.5
waitress==3.0.2; sys_platform == 'win32' waitress==3.0.2; sys_platform == 'win32'