Skip to content

Commit 27e1376

Browse files
medarioxbutlergrouprenovate[bot]
authored
Release/release 1.0.25 (#12108)
* yarn dev * Frontend / backend dependency overhaul (updates), dependency vulnerability fixes, add support for Python 3.13, and add support for Node.js 20/22/24/25 (#12073) * modified: .build/package.json modified: .build/yarn.lock modified: .github/workflows/api-tests.yml modified: .github/workflows/docker-image.yml modified: .github/workflows/node-frontend.yml modified: .github/workflows/python-backend.yml new file: .github/workflows/scorecard.yml modified: .github/workflows/version-check.yml modified: CHANGELOG.md new file: code-of-conduct.md modified: ext/guessit/rules/properties/website.py modified: lib/boto/ecs/item.py modified: medusa/helpers/__init__.py modified: medusa/notifiers/libnotify.py modified: medusa/notifiers/nmj.py modified: package.json modified: pyproject.toml modified: requirements.txt modified: runscripts/init.systemd modified: test_requirements.txt modified: themes-default/slim/package.json modified: themes-default/slim/yarn.lock modified: uv.lock modified: yarn.lock * modified: ext/future/backports/email/mime/image.py * modified: CHANGELOG.md * modified: code-of-conduct.md * modified: .github/workflows/node-frontend.yml modified: tests/providers/test_generic_provider.py * modified: tests/providers/test_generic_provider.py modified: themes-default/slim/package.json * modified: tests/providers/test_generic_provider.py * modified: tests/providers/test_generic_provider.py * renamed: ext/guessit/__init__.py -> lib/guessit/__init__.py renamed: ext/guessit/__main__.py -> lib/guessit/__main__.py renamed: ext/guessit/__version__.py -> lib/guessit/__version__.py renamed: ext/guessit/api.py -> lib/guessit/api.py renamed: ext/guessit/config/__init__.py -> lib/guessit/config/__init__.py renamed: ext/guessit/config/options.json -> lib/guessit/config/options.json renamed: ext/guessit/data/__init__.py -> lib/guessit/data/__init__.py renamed: ext/guessit/data/tlds-alpha-by-domain.txt -> lib/guessit/data/tlds-alpha-by-domain.txt renamed: ext/guessit/jsonutils.py -> lib/guessit/jsonutils.py renamed: ext/guessit/monkeypatch.py -> lib/guessit/monkeypatch.py renamed: ext/guessit/options.py -> lib/guessit/options.py renamed: ext/guessit/reutils.py -> lib/guessit/reutils.py renamed: ext/guessit/rules/__init__.py -> lib/guessit/rules/__init__.py renamed: ext/guessit/rules/common/__init__.py -> lib/guessit/rules/common/__init__.py renamed: ext/guessit/rules/common/comparators.py -> lib/guessit/rules/common/comparators.py renamed: ext/guessit/rules/common/date.py -> lib/guessit/rules/common/date.py renamed: ext/guessit/rules/common/expected.py -> lib/guessit/rules/common/expected.py renamed: ext/guessit/rules/common/formatters.py -> lib/guessit/rules/common/formatters.py renamed: ext/guessit/rules/common/numeral.py -> lib/guessit/rules/common/numeral.py renamed: ext/guessit/rules/common/pattern.py -> lib/guessit/rules/common/pattern.py renamed: ext/guessit/rules/common/quantity.py -> lib/guessit/rules/common/quantity.py renamed: ext/guessit/rules/common/validators.py -> lib/guessit/rules/common/validators.py renamed: ext/guessit/rules/common/words.py -> lib/guessit/rules/common/words.py renamed: ext/guessit/rules/markers/__init__.py -> lib/guessit/rules/markers/__init__.py renamed: ext/guessit/rules/markers/groups.py -> lib/guessit/rules/markers/groups.py renamed: ext/guessit/rules/markers/path.py -> lib/guessit/rules/markers/path.py renamed: ext/guessit/rules/match_processors.py -> lib/guessit/rules/match_processors.py renamed: ext/guessit/rules/processors.py -> lib/guessit/rules/processors.py renamed: ext/guessit/rules/properties/__init__.py -> lib/guessit/rules/properties/__init__.py renamed: ext/guessit/rules/properties/audio_codec.py -> lib/guessit/rules/properties/audio_codec.py renamed: ext/guessit/rules/properties/bit_rate.py -> lib/guessit/rules/properties/bit_rate.py renamed: ext/guessit/rules/properties/bonus.py -> lib/guessit/rules/properties/bonus.py renamed: ext/guessit/rules/properties/cd.py -> lib/guessit/rules/properties/cd.py renamed: ext/guessit/rules/properties/container.py -> lib/guessit/rules/properties/container.py renamed: ext/guessit/rules/properties/country.py -> lib/guessit/rules/properties/country.py renamed: ext/guessit/rules/properties/crc.py -> lib/guessit/rules/properties/crc.py renamed: ext/guessit/rules/properties/date.py -> lib/guessit/rules/properties/date.py renamed: ext/guessit/rules/properties/edition.py -> lib/guessit/rules/properties/edition.py renamed: ext/guessit/rules/properties/episode_title.py -> lib/guessit/rules/properties/episode_title.py renamed: ext/guessit/rules/properties/episodes.py -> lib/guessit/rules/properties/episodes.py renamed: ext/guessit/rules/properties/film.py -> lib/guessit/rules/properties/film.py renamed: ext/guessit/rules/properties/language.py -> lib/guessit/rules/properties/language.py renamed: ext/guessit/rules/properties/mimetype.py -> lib/guessit/rules/properties/mimetype.py renamed: ext/guessit/rules/properties/other.py -> lib/guessit/rules/properties/other.py renamed: ext/guessit/rules/properties/part.py -> lib/guessit/rules/properties/part.py renamed: ext/guessit/rules/properties/release_group.py -> lib/guessit/rules/properties/release_group.py renamed: ext/guessit/rules/properties/screen_size.py -> lib/guessit/rules/properties/screen_size.py renamed: ext/guessit/rules/properties/size.py -> lib/guessit/rules/properties/size.py renamed: ext/guessit/rules/properties/source.py -> lib/guessit/rules/properties/source.py renamed: ext/guessit/rules/properties/streaming_service.py -> lib/guessit/rules/properties/streaming_service.py renamed: ext/guessit/rules/properties/title.py -> lib/guessit/rules/properties/title.py renamed: ext/guessit/rules/properties/type.py -> lib/guessit/rules/properties/type.py renamed: ext/guessit/rules/properties/video_codec.py -> lib/guessit/rules/properties/video_codec.py renamed: ext/guessit/rules/properties/website.py -> lib/guessit/rules/properties/website.py renamed: ext/guessit/test/__init__.py -> lib/guessit/test/__init__.py renamed: ext/guessit/test/config/dummy.txt -> lib/guessit/test/config/dummy.txt renamed: ext/guessit/test/config/test.json -> lib/guessit/test/config/test.json renamed: ext/guessit/test/config/test.yaml -> lib/guessit/test/config/test.yaml renamed: ext/guessit/test/config/test.yml -> lib/guessit/test/config/test.yml renamed: ext/guessit/test/enable_disable_properties.yml -> lib/guessit/test/enable_disable_properties.yml renamed: ext/guessit/test/episodes.yml -> lib/guessit/test/episodes.yml renamed: ext/guessit/test/movies.yml -> lib/guessit/test/movies.yml renamed: ext/guessit/test/rules/__init__.py -> lib/guessit/test/rules/__init__.py renamed: ext/guessit/test/rules/audio_codec.yml -> lib/guessit/test/rules/audio_codec.yml renamed: ext/guessit/test/rules/bonus.yml -> lib/guessit/test/rules/bonus.yml renamed: ext/guessit/test/rules/cd.yml -> lib/guessit/test/rules/cd.yml renamed: ext/guessit/test/rules/common_words.yml -> lib/guessit/test/rules/common_words.yml renamed: ext/guessit/test/rules/country.yml -> lib/guessit/test/rules/country.yml renamed: ext/guessit/test/rules/date.yml -> lib/guessit/test/rules/date.yml renamed: ext/guessit/test/rules/edition.yml -> lib/guessit/test/rules/edition.yml renamed: ext/guessit/test/rules/episodes.yml -> lib/guessit/test/rules/episodes.yml renamed: ext/guessit/test/rules/film.yml -> lib/guessit/test/rules/film.yml renamed: ext/guessit/test/rules/language.yml -> lib/guessit/test/rules/language.yml renamed: ext/guessit/test/rules/other.yml -> lib/guessit/test/rules/other.yml renamed: ext/guessit/test/rules/part.yml -> lib/guessit/test/rules/part.yml renamed: ext/guessit/test/rules/processors.yml -> lib/guessit/test/rules/processors.yml renamed: ext/guessit/test/rules/processors_test.py -> lib/guessit/test/rules/processors_test.py renamed: ext/guessit/test/rules/release_group.yml -> lib/guessit/test/rules/release_group.yml renamed: ext/guessit/test/rules/screen_size.yml -> lib/guessit/test/rules/screen_size.yml renamed: ext/guessit/test/rules/size.yml -> lib/guessit/test/rules/size.yml renamed: ext/guessit/test/rules/source.yml -> lib/guessit/test/rules/source.yml renamed: ext/guessit/test/rules/title.yml -> lib/guessit/test/rules/title.yml renamed: ext/guessit/test/rules/video_codec.yml -> lib/guessit/test/rules/video_codec.yml renamed: ext/guessit/test/rules/website.yml -> lib/guessit/test/rules/website.yml renamed: ext/guessit/test/streaming_services.yaml -> lib/guessit/test/streaming_services.yaml renamed: ext/guessit/test/suggested.json -> lib/guessit/test/suggested.json renamed: ext/guessit/test/test-input-file.txt -> lib/guessit/test/test-input-file.txt renamed: ext/guessit/test/test_api.py -> lib/guessit/test/test_api.py renamed: ext/guessit/test/test_api_unicode_literals.py -> lib/guessit/test/test_api_unicode_literals.py renamed: ext/guessit/test/test_benchmark.py -> lib/guessit/test/test_benchmark.py renamed: ext/guessit/test/test_main.py -> lib/guessit/test/test_main.py renamed: ext/guessit/test/test_options.py -> lib/guessit/test/test_options.py renamed: ext/guessit/test/test_yml.py -> lib/guessit/test/test_yml.py renamed: ext/guessit/test/various.yml -> lib/guessit/test/various.yml renamed: ext/guessit/yamlutils.py -> lib/guessit/yamlutils.py modified: lib/readme.md modified: pyproject.toml modified: requirements.txt modified: uv.lock * Update bundled libs (#12091) * Update bundled libs * Add @popperjs/core dependency version 2.11.8 * Remove pull_request trigger from Docker workflow Removed pull_request trigger for master and develop branches. * yarn dev * Update yarn.lock * Update yarn.lock * yarn dev * yarn dev * Revert bootstrap to v3 (#12095) * Fix streaming logs (#12096) * Update dependency string-width to v4.2.3 (#12097) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Update string-width (#12102) * Update string-width * update * update * update * update * yarn build --------- Co-authored-by: Chris Butler <[email protected]> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 parents 59bb4ec + 5750704 commit 27e1376

File tree

892 files changed

+46595
-30184
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

892 files changed

+46595
-30184
lines changed

.build/package.json

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,29 @@
55
"install": "yarn run grunt"
66
},
77
"dependencies": {
8-
"bower": "1.8.8",
9-
"grunt": "1.0.4",
8+
"bower": "1.8.14",
9+
"grunt": "1.6.1",
1010
"grunt-bower-concat": "1.0.0",
11-
"grunt-bower-task": "0.5.0",
12-
"grunt-cli": "1.3.2",
13-
"grunt-contrib-clean": "2.0.0",
11+
"grunt-bower-task": "0.6.2",
12+
"grunt-cli": "1.5.0",
13+
"grunt-contrib-clean": "2.0.1",
1414
"grunt-contrib-copy": "1.0.0",
15-
"grunt-contrib-cssmin": "3.0.0",
16-
"grunt-contrib-uglify": "4.0.1",
15+
"grunt-contrib-cssmin": "5.0.0",
16+
"grunt-contrib-uglify": "5.2.2",
1717
"load-grunt-tasks": "5.1.0"
1818
},
1919
"resolutions": {
2020
"bower": ">= 1.8.8",
2121
"deep-extend": ">= 0.5.1",
22-
"lodash": ">= 4.17.12"
22+
"lodash": ">= 4.17.21",
23+
"minimist": "^1.2.8",
24+
"semver": "^7.7.3",
25+
"minimatch": "^10.0.3",
26+
"trim-newlines": "^5.0.0",
27+
"ini": "^6.0.0",
28+
"async": "^3.2.6",
29+
"path-parse": "^1.0.7",
30+
"hosted-git-info": "^9.0.2",
31+
"underscore.string": "^3.3.6"
2332
}
24-
}
33+
}

.build/yarn.lock

Lines changed: 378 additions & 920 deletions
Large diffs are not rendered by default.

.github/workflows/api-tests.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
name: API tests
22

3-
on: [pull_request]
3+
permissions:
4+
contents: read
5+
6+
on:
7+
push:
8+
branches: [ master, develop ]
9+
pull_request:
10+
branches: [ master, develop ]
11+
12+
concurrency:
13+
group: ${{ github.workflow }}-${{ github.ref }}
14+
cancel-in-progress: true
415

516
jobs:
617
build:
718
runs-on: ubuntu-latest
819
strategy:
920
matrix:
1021
python-version: [3.9]
11-
node-version: [14.x]
22+
node-version: [20.x]
1223

1324
steps:
1425
- uses: actions/checkout@v2

.github/workflows/docker-image.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
name: Docker Image CI
22

3+
permissions:
4+
contents: read
5+
36
on:
47
push:
58
branches: [ master, develop ]
69

10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.ref }}
12+
cancel-in-progress: true
13+
714
env:
815
PLATFORMS: linux/amd64,linux/arm/v7,linux/arm64
916

.github/workflows/node-frontend.yml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
11
name: Frontend tests
22

3-
on: [pull_request]
3+
permissions:
4+
contents: read
5+
6+
on:
7+
push:
8+
branches: [ master, develop ]
9+
pull_request:
10+
branches: [ master, develop ]
11+
12+
concurrency:
13+
group: ${{ github.workflow }}-${{ github.ref }}
14+
cancel-in-progress: true
415

516
jobs:
617
build:
7-
runs-on: ubuntu-latest
18+
runs-on: ${{ matrix.os }}
819
strategy:
920
matrix:
10-
node-version: [16.x]
21+
node-version: [20.x, 22.x, 24.x, 25.x]
22+
os: [ubuntu-latest, macos-latest, windows-latest]
1123

1224
steps:
1325
- uses: actions/checkout@v2

.github/workflows/python-backend.yml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
11
name: Backend tests
22

3-
on: [pull_request]
3+
permissions:
4+
contents: read
5+
6+
on:
7+
push:
8+
branches: [ master, develop ]
9+
pull_request:
10+
branches: [ master, develop ]
11+
12+
concurrency:
13+
group: ${{ github.workflow }}-${{ github.ref }}
14+
cancel-in-progress: true
415

516
jobs:
617
build:
7-
runs-on: ubuntu-latest
18+
runs-on: ${{ matrix.os }}
819
strategy:
9-
max-parallel: 4
1020
matrix:
11-
python-version: [3.9, '3.10', '3.11', '3.12']
12-
21+
python-version: [3.9, '3.10', '3.11', '3.12', '3.13']
22+
os: [ubuntu-latest, macos-latest, windows-latest]
1323
steps:
1424
- uses: actions/checkout@v4
1525
- name: Set up Python ${{ matrix.python-version }}

.github/workflows/scorecard.yml

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# This workflow uses actions that are not certified by GitHub. They are provided
2+
# by a third-party and are governed by separate terms of service, privacy
3+
# policy, and support documentation.
4+
5+
name: Scorecard supply-chain security
6+
on:
7+
# For Branch-Protection check. Only the default branch is supported. See
8+
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
9+
branch_protection_rule:
10+
# To guarantee Maintained check is occasionally updated. See
11+
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
12+
schedule:
13+
- cron: '26 4 * * 5'
14+
push:
15+
branches: [ master, develop ]
16+
17+
# Declare default permissions as read only.
18+
permissions: read-all
19+
20+
jobs:
21+
analysis:
22+
name: Scorecard analysis
23+
runs-on: ubuntu-latest
24+
# `publish_results: true` only works when run from the default branch. conditional can be removed if disabled.
25+
if: github.event.repository.default_branch == github.ref_name || github.event_name == 'pull_request'
26+
permissions:
27+
# Needed to upload the results to code-scanning dashboard.
28+
security-events: write
29+
# Needed to publish results and get a badge (see publish_results below).
30+
id-token: write
31+
# Uncomment the permissions below if installing in a private repository.
32+
# contents: read
33+
# actions: read
34+
35+
steps:
36+
- name: "Checkout code"
37+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
38+
with:
39+
persist-credentials: false
40+
41+
- name: "Run analysis"
42+
uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
43+
with:
44+
results_file: results.sarif
45+
results_format: sarif
46+
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
47+
# - you want to enable the Branch-Protection check on a *public* repository, or
48+
# - you are installing Scorecard on a *private* repository
49+
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional.
50+
# repo_token: ${{ secrets.SCORECARD_TOKEN }}
51+
52+
# Public repositories:
53+
# - Publish results to OpenSSF REST API for easy access by consumers
54+
# - Allows the repository to include the Scorecard badge.
55+
# - See https://github.com/ossf/scorecard-action#publishing-results.
56+
# For private repositories:
57+
# - `publish_results` will always be set to `false`, regardless
58+
# of the value entered here.
59+
publish_results: true
60+
61+
# (Optional) Uncomment file_mode if you have a .gitattributes with files marked export-ignore
62+
# file_mode: git
63+
64+
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
65+
# format to the repository Actions tab.
66+
- name: "Upload artifact"
67+
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
68+
with:
69+
name: SARIF file
70+
path: results.sarif
71+
retention-days: 5
72+
73+
# Upload the results to GitHub's code scanning dashboard (optional).
74+
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
75+
- name: "Upload to code-scanning"
76+
uses: github/codeql-action/upload-sarif@v3
77+
with:
78+
sarif_file: results.sarif

.github/workflows/version-check.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
name: Check app version
22

3-
on: [pull_request]
3+
permissions:
4+
contents: read
5+
6+
on:
7+
push:
8+
branches: [ master, develop ]
9+
pull_request:
10+
branches: [ master, develop ]
11+
12+
concurrency:
13+
group: ${{ github.workflow }}-${{ github.ref }}
14+
cancel-in-progress: true
415

516
jobs:
617
build:

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,27 @@
1+
## 1.0.25 (12-11-2025)
2+
3+
([@butlergroup](https://github.com/butlergroup) did a bunch of homework for y'all!)
4+
#### New Features
5+
- Add code-of-conduct.md
6+
- Add supply chain security scorecard Github action
7+
- Add support for Python 3.13
8+
- Add support for Node.js 20, 22, 24, and 25 and remove support for Node.js 14 and 16
9+
10+
#### Improvements
11+
- All dependencies in pyproject.toml, requirements.txt, and test_requirements.txt have been updated to the latest possible version without build/test errors
12+
- uv.lock file updated
13+
- All dependencies in package.json, themes-default/slim/package.json, and .build/package.json have been updated to the latest possible version without build/test errors
14+
- All yarn.lock files updated
15+
- runscripts/init.systemd was modified for compatibility across Ubuntu versions (24.04, 25.04, and 25.10)
16+
- Existing Github actions modified for better security, autorun on push/pull, and autoterminate previous instances of running actions
17+
- Existing Github actions for backend and frontend tests have been enhanced to run on multiple OS platforms and toolchains (Python 3.9-3.13 and Node.js 20, 22, 24, & 25)
18+
- pyproject.toml now includes current application version
19+
20+
#### Fixes
21+
- Dependency resolutions added to package.json, themes-default/slim/package.json, and .build/package.json to fix as many security vulnerabilities with dependencies as possible without build/test errors
22+
23+
-----
24+
125
## 1.0.24 (30-10-2025)
226

327
#### Improvements

code-of-conduct.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Code of Conduct
2+
3+
Our [Code of Conduct](https://github.com/github/docs/blob/c7d69c9e0b97b393709942a4b4426b8b1730637f/.github/CODE_OF_CONDUCT.md) is analogous to the [Github Code of Conduct](https://github.com/github/docs/blob/c7d69c9e0b97b393709942a4b4426b8b1730637f/.github/CODE_OF_CONDUCT.md).
4+
5+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement. All complaints will be reviewed and investigated promptly and fairly.
6+
7+
All community leaders are obligated to respect the privacy and security of the reporter of any incident.

0 commit comments

Comments
 (0)