Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
533 commits
Select commit Hold shift + click to select a range
1e59d0d
release notes
Audionut Oct 10, 2025
868c204
v6.1.0
github-actions[bot] Oct 10, 2025
88e7f40
fix(BJS): NoneType error (#880)
wastaken7 Oct 10, 2025
f555acf
fix: ASC IMDb link, signatures (#884)
wastaken7 Oct 10, 2025
1ebb00c
fix: anime tagging
Audionut Oct 11, 2025
4741097
fix: skip checking AV1 encode settings
Audionut Oct 11, 2025
d805d85
tvmaze episode data use meta objects
Audionut Oct 11, 2025
f82babf
tvmaze - rely on meta object for additional check
Audionut Oct 11, 2025
968cee7
set meta object
Audionut Oct 11, 2025
55f636c
unit3d bbcode parser, white space handling
Audionut Oct 11, 2025
63d49d1
BHD fix empty returns
Audionut Oct 11, 2025
b22b12d
Revert "unit3d bbcode parser, white space handling"
Audionut Oct 11, 2025
903ba59
v6.1.1
github-actions[bot] Oct 11, 2025
5c7db2b
Add banned groups to CBR tracker: DragsterPS, DRENAN, S74Ll10n (#885)
franzopl Oct 11, 2025
f838eff
linux specific mi binaries (#886)
Audionut Oct 11, 2025
01fc6c9
force mediainfo
Audionut Oct 12, 2025
1a94f57
fix: args key (#889)
GizmoBal Oct 12, 2025
1c82a9e
catch exceptions
Audionut Oct 12, 2025
b292887
unit3d description handling update
Audionut Oct 13, 2025
c60328e
add prompt for ANT ids
Audionut Oct 13, 2025
a129a0e
Refactor SHRI (#888)
tdrkmn Oct 13, 2025
968d575
feat(SHRI): improve audio string cleaning in SHRI tracker (#893)
tdrkmn Oct 13, 2025
ffb3424
OE-OTW rules compliance
Audionut Oct 14, 2025
5b7ebf4
fixing imgur issue with TVC and making some improvements (#894)
swannie-eire Oct 14, 2025
abdfee7
Fix race condition in get_mediainfo_section by removing unnecessary a…
wastaken7 Oct 14, 2025
b783158
SHRI: handle bitrate conversion errors in audio track processing (#896)
tdrkmn Oct 14, 2025
83718c0
feat: add site checking
Audionut Oct 15, 2025
68ca252
feat: injection client
Audionut Oct 15, 2025
28a99f2
wrap child process kill
Audionut Oct 15, 2025
289e9b4
PTP: fix missing import
Audionut Oct 15, 2025
7d69389
debugging
Audionut Oct 16, 2025
73deae4
SHRI: improve encoding detection (#902)
tdrkmn Oct 16, 2025
2dedf50
ITT: add naming conventions and request research (#900)
wastaken7 Oct 16, 2025
98ec8ec
add EMUW tracker support (#898)
HichamLL04 Oct 16, 2025
3884b89
fix(ITT): missing mapping_only (#903)
wastaken7 Oct 16, 2025
04c70a8
always regenerate mi
Audionut Oct 16, 2025
0014260
SHRI: handle list sources (#905)
tdrkmn Oct 16, 2025
6283beb
distributor from edition only when is_disc
Audionut Oct 17, 2025
2b27633
UNIT3D: catch upload permission & incorrect API key (#904)
wastaken7 Oct 17, 2025
a2cd15d
Add Nebula streaming service (#906)
WOSSFOSS Oct 17, 2025
aafc3b0
rules compliance updates
Audionut Oct 18, 2025
22e912d
update -sc handling to work as only a tracker search
Audionut Oct 18, 2025
b897ff2
DP: enable request search (#912)
wastaken7 Oct 18, 2025
269d810
better -sc handling
Audionut Oct 18, 2025
bad14bc
YUS: disabled request searching
Audionut Oct 18, 2025
1c0c03c
remove print
Audionut Oct 18, 2025
27ee1d5
log requests
Audionut Oct 18, 2025
c1f04c3
fix logging only sucessfull trackers
Audionut Oct 18, 2025
d6e487a
site_searching: save aither trumpables
Audionut Oct 18, 2025
d6293c9
site_searching: always request search
Audionut Oct 18, 2025
1faa0a6
fix(SHRI): normalize Blu-ray to BluRay for non-DISC types (#914)
tdrkmn Oct 18, 2025
3941841
AITHER: add request support
Audionut Oct 18, 2025
9b82a6c
site_check: cleanup queue printing
Audionut Oct 18, 2025
c05bbc9
fix(SHRI): correct WEB-DL vs WEBRip detection logic (#916)
tdrkmn Oct 19, 2025
25755f5
feat: cache qbit login (#918)
WOSSFOSS Oct 19, 2025
63c3f67
banned groups update on CBR.py (#920)
franzopl Oct 19, 2025
e37c36e
fix(SHRI): improve release group tag extraction (#921)
tdrkmn Oct 19, 2025
b1888e6
blu, remove webdv
Audionut Oct 20, 2025
517247e
HHD: no dvdrip
Audionut Oct 20, 2025
7bd722c
use strip
Audionut Oct 20, 2025
d516502
BJS, ASC: add missing internal group detection (#923)
wastaken7 Oct 20, 2025
6dffda3
fix(SHRI): detect GPU encodes via empty BluRay metadata (#924)
tdrkmn Oct 21, 2025
c039dce
ANT: adult screens
Audionut Oct 21, 2025
8c4c75d
OTW: naming fixes
Audionut Oct 21, 2025
6211f21
use combined genre check
Audionut Oct 21, 2025
e954f12
LT: enhance category detection and add Spanish language checks (#925)
wastaken7 Oct 21, 2025
fb1c61f
ULCX: fail safe with adult screens
Audionut Oct 21, 2025
a2e6527
BT: add scene flag (#927)
wastaken7 Oct 21, 2025
cbb3bef
HUNO: correct HFR placement
Audionut Oct 22, 2025
d30290b
ANT: flagchange adult screens
Audionut Oct 22, 2025
43a3795
ANT: useragent
Audionut Oct 22, 2025
f83f0b8
SHRI: improve type detection for DV profile encodes (#929)
tdrkmn Oct 22, 2025
58d0793
Slice upload of comparison screenshots on HDB. (#930)
GizmoBal Oct 23, 2025
59bfb28
DVD naming
Audionut Oct 23, 2025
b544769
BHD: remove screensperrow handling
Audionut Oct 23, 2025
58be987
HUNO: replace dubbed
Audionut Oct 23, 2025
4895d64
BLU: fix webdv name replacement
Audionut Oct 24, 2025
3f54319
TL: Fix wrong syntax (#932)
WOSSFOSS Oct 24, 2025
c4685da
TL: fix unbound error in torrent edit (#933)
WOSSFOSS Oct 24, 2025
e62fd96
RF: domain change
Audionut Oct 24, 2025
04d8c4a
adult content handling
Audionut Oct 24, 2025
373bbb4
better matching against adult content
Audionut Oct 24, 2025
a6b8c5f
fix(SHRI): improve hybrid detection logic in SHRI tracker (#937)
tdrkmn Oct 24, 2025
df0b521
Center ordinary screens on HDB (#936)
GizmoBal Oct 24, 2025
76daec4
refactor: centralize cookie validation and upload logic (#883)
wastaken7 Oct 24, 2025
131849b
fix setting BHD id's
Audionut Oct 25, 2025
fb57fb3
ASC: Fix anime related issues (#939)
wastaken7 Oct 25, 2025
06339ae
CZ: add client matching (#945)
FortKnox1337 Oct 26, 2025
644e0ad
Added support for ImmortalSeed (#942)
wastaken7 Oct 26, 2025
81619c4
raise exceptions
Audionut Oct 26, 2025
79130f9
Use ffmpeg compression instead of oxipng (#946)
Audionut Oct 26, 2025
f0b70dc
refactor tvdb (#941)
Audionut Oct 26, 2025
06c04a3
feat: multiple searching client support (#913)
Audionut Oct 26, 2025
dad66b6
release notes
Audionut Oct 26, 2025
0892720
patch qui torrent comments
Audionut Oct 26, 2025
eac97c6
HUNO text size
Audionut Oct 26, 2025
624a825
HUNO: screens per row fix
Audionut Oct 26, 2025
a21cebc
fix args parsing
Audionut Oct 26, 2025
ed0f1c4
fix missing key set
Audionut Oct 26, 2025
194e4ab
fix(SHRI): web and remux handling (#947)
tdrkmn Oct 26, 2025
8ef665c
unit3d follow redirects
Audionut Oct 26, 2025
7027f6d
v6.2.0
github-actions[bot] Oct 26, 2025
1398458
fix: prevent error with missing config
Audionut Oct 26, 2025
e73d75b
v6.2.1
github-actions[bot] Oct 26, 2025
1c4f9b6
fix tvdb pagination
Audionut Oct 26, 2025
84787af
S/E overrides
Audionut Oct 26, 2025
d4de654
tvdb safe settings
Audionut Oct 26, 2025
c2dcf3a
v6.2.2
github-actions[bot] Oct 26, 2025
96d41b8
set torrent_properties
Audionut Oct 27, 2025
bd52996
discparse.py - Use BDInfo on PATH if available (Linux) (#952)
noobiangodd Oct 27, 2025
5891db5
tvdb improvements
Audionut Oct 27, 2025
daeadbe
BT: add internal upload support (#953)
wastaken7 Oct 27, 2025
3a0cd60
v6.2.3
github-actions[bot] Oct 27, 2025
4a56b81
docker pr building
Audionut Oct 27, 2025
d10bff9
build from fork
Audionut Oct 27, 2025
fa05ca5
fix some args parse quirks
Audionut Oct 28, 2025
c1050f2
prints behind debug
Audionut Oct 28, 2025
d852726
BT: fix internal (#955)
wastaken7 Oct 28, 2025
46346cd
fix: don't sanitize meta early
Audionut Oct 29, 2025
f45b9af
add new tracker URLs to match_tracker_url function (#957)
wastaken7 Oct 29, 2025
339ba64
refactor: remove UHD tracker (#958)
wastaken7 Oct 29, 2025
0db8ed8
feat: add support for super-seed mode (#956)
wastaken7 Oct 29, 2025
2c04770
PTP: upload error handling
Audionut Oct 29, 2025
fb12db1
handle domain changes in unit3d descriptions
Audionut Oct 29, 2025
569740f
TIK: videoformat update
Audionut Oct 29, 2025
3ab8bc5
image host validation updates
Audionut Oct 29, 2025
058b4cb
refactor(ASC): move internal flag setting to a separate method (#959)
wastaken7 Oct 30, 2025
089f127
fix uploaded images success check
Audionut Nov 1, 2025
ca87495
feat: Docker GUI for front end. (#954)
IPGPrometheus Nov 1, 2025
6271ded
AR: Improve genre tag compilation logic (#965)
iamcza Nov 2, 2025
b019965
refactor(SPD): remove passkey usage, update upload logic, add banned …
wastaken7 Nov 2, 2025
c342712
HDB - Refine granulometry of thumbnail size in comps (#968)
GizmoBal Nov 2, 2025
93330c2
webui example args
Audionut Nov 2, 2025
03c2fda
UHD: Remove from available trackers list in example-config.py (#970)
FortKnox1337 Nov 2, 2025
170a43a
Add Torrenteros support (#971)
wastaken7 Nov 3, 2025
bdd164f
TVDB/TVMaze improvements (#978)
Audionut Nov 4, 2025
1718e3c
README: Add CinemaZ to the list of supported sites. (#974)
FortKnox1337 Nov 4, 2025
7a8cb9c
refactor(DC): remove passkey handling, update API endpoint usage, and…
wastaken7 Nov 5, 2025
10eca14
reverse linux bdinfo checking
Audionut Nov 5, 2025
5224894
unattended no imdb
Audionut Nov 5, 2025
e51421a
fix imdb search params
Audionut Nov 5, 2025
80fe158
SHRI: BBCode description generation (#980)
tdrkmn Nov 5, 2025
7c9ced7
feat(SHRI): add customization and conditional sections (#983)
tdrkmn Nov 6, 2025
ed49e65
Scan type detection for empty ScanType value (#982)
tdrkmn Nov 6, 2025
13ba722
Minor THR improvements (#987)
cucaracha7126378 Nov 6, 2025
27d2143
fix(SHRI): handle MediaInfo Language dict and improve logo extraction…
tdrkmn Nov 6, 2025
7eb838e
Improve qui searching (#967)
Audionut Nov 7, 2025
a4b5af3
validate specific trackers
Audionut Nov 7, 2025
5598e24
improve existing torrent search
Audionut Nov 7, 2025
1f729ae
RTF: fix year check
Audionut Nov 7, 2025
a5c6ecf
BLU: Update banned release groups list (#990)
FortKnox1337 Nov 8, 2025
06c7e86
fix(THR): replace unsupported bbcode tags and fix NFO content alignme…
cucaracha7126378 Nov 9, 2025
7f45b58
fix(SHRI): improve REMUX detection and codec identification (#992)
tdrkmn Nov 9, 2025
c169279
print error when no audio
Audionut Nov 10, 2025
d3c5528
ANT: prohibit bloated
Audionut Nov 10, 2025
df76e53
handle height channels (#985)
Audionut Nov 11, 2025
df4a4cb
fix(CZ): change BDinfo summary file (#996)
wastaken7 Nov 11, 2025
f2a6513
ASC: fix localized data (#994)
Audionut Nov 11, 2025
614bbc0
catch bdinfo errors
Audionut Nov 12, 2025
1120f4a
Fix empty status_message after upload failure (#1000)
wastaken7 Nov 12, 2025
752072d
fix(LT.py): fix origin_country check, modQ option added (#1002)
Aerglonus Nov 12, 2025
d244af5
fix getting BTN ids
Audionut Nov 12, 2025
751253c
parse scene nfo for service
Audionut Nov 12, 2025
b22a07e
PHD: Add banned release groups (#1004)
FortKnox1337 Nov 12, 2025
7060e34
fix group checking for banned groups
Audionut Nov 12, 2025
fe5ee82
fix double screens print
Audionut Nov 13, 2025
d758027
refactor infohash
Audionut Nov 13, 2025
1e6b27a
fix(FF): follow the site's naming conventions (#1006)
wastaken7 Nov 13, 2025
a325fb3
RTV: refactor tv year handling
Audionut Nov 13, 2025
da2fff2
cleanup bluray com handling
Audionut Nov 16, 2025
9b38b2d
ULCX: refactor aka handling
Audionut Nov 19, 2025
e7e4e48
fixed mal handling
Audionut Nov 20, 2025
dc6f057
refactor(DC): remove logo and screenshot header from description (#1018)
wastaken7 Nov 20, 2025
f5d4a42
fix(SHRI): improve language handling for Italian and English (#1013)
tdrkmn Nov 20, 2025
4f166d4
add site uploading from site check log (#995)
Audionut Nov 20, 2025
3915ed9
always attempt mal
Audionut Nov 20, 2025
a4d1df4
Add IHD support
Audionut Nov 21, 2025
e2d2531
licensing (#1022)
Audionut Nov 22, 2025
a259e3d
IHD: fix language checking
Audionut Nov 22, 2025
458f48f
add extra tags catch
Audionut Nov 23, 2025
a08b887
unit3d internal flag debugging
Audionut Nov 23, 2025
23e1b08
Revert "unit3d internal flag debugging"
Audionut Nov 24, 2025
66dcc2b
fix: screens compression when image overlay
Audionut Nov 29, 2025
f0a13f4
Add further support for IHD tracker (#1027)
FortKnox1337 Nov 29, 2025
9949c1e
Refactor UNIT3D description handling (#1007)
wastaken7 Dec 1, 2025
1d13584
description fixes
Audionut Dec 1, 2025
8d328b5
mps support 1 MiB
Audionut Dec 1, 2025
ce4529a
fix audio track counting
Audionut Dec 1, 2025
f988749
allow override scene imdb
Audionut Dec 1, 2025
bfbc68f
fix search_imdb
Audionut Dec 1, 2025
a9b20a5
cleanup HDB description handling
Audionut Dec 2, 2025
37836f7
RTF: get all the years
Audionut Dec 4, 2025
0823f78
fix(SHRI) ignores akas titles with "attributes" (alternative titles) …
braingremlin85 Dec 4, 2025
a533425
TL: fix unbound variable 'torrent_id' (#1034)
wastaken7 Dec 6, 2025
4fc63d8
check image hosts before async upload (#1033)
Audionut Dec 6, 2025
ebb0d78
refactor(DC): streamline torrent naming convention and remove duplica…
wastaken7 Dec 7, 2025
3295781
Fix list formatting on different websites (#1038)
wastaken7 Dec 7, 2025
02865c7
add support for multi-client injection (#1037)
wastaken7 Dec 8, 2025
5c69c2b
BHD: adjust size bbcode for new site fix
Audionut Dec 9, 2025
bf6ecaa
Update eMuwarez base url (#1040)
jesusjmma Dec 9, 2025
66d7a05
refactor language checks to use common method across trackers (#1030)
wastaken7 Dec 9, 2025
e382ed9
rehosting: Use listdir instead of glob for PNG files (#1035)
WOSSFOSS Dec 9, 2025
d6757cc
fix qui searching
Audionut Dec 9, 2025
9f1f616
filter empty injection clients
Audionut Dec 10, 2025
a4ecf7e
Update LT.py (#1044)
Hielito2 Dec 10, 2025
dc3397d
fix: remove space before 'AKA' in anime title formatting (#1042)
wastaken7 Dec 10, 2025
4e7c4b2
fix qui url
Audionut Dec 10, 2025
a2471d0
ANT: all type ids
Audionut Dec 10, 2025
a237d6a
remove debugger
Audionut Dec 10, 2025
2d82858
Add language-data optional to langcodes (#1046)
WOSSFOSS Dec 11, 2025
2066f68
BHD: exclude 2160p by default when framestor and hdr release
Audionut Dec 14, 2025
f47307e
dupe checking: fix remux check
Audionut Dec 14, 2025
70cc612
unit3d: fix existing search when edition
Audionut Dec 14, 2025
a795bc8
fix DVD mediainfo use ifo
Audionut Dec 15, 2025
b3603d4
lint
Audionut Dec 15, 2025
55ca8cf
fix bdinfo progress output
Audionut Dec 15, 2025
a98eb50
Add TLZ support (#1048)
FortKnox1337 Dec 15, 2025
25647d4
ACM: fix multi-disc bdinfo
Audionut Dec 15, 2025
9faaf47
TL: fix NFO upload with cookie method (#1049)
wastaken7 Dec 15, 2025
e2ba3a7
Refactor TVC tracker with enhanced metadata handling and description …
Lusephur Dec 15, 2025
21835b2
license
Audionut Dec 15, 2025
65f2f55
6.3 release notes
Audionut Dec 15, 2025
92b6b89
v6.3.0
github-actions[bot] Dec 15, 2025
603ccb4
TVC: fix python f-string
Audionut Dec 15, 2025
df3a9d3
ACM: fix name return
Audionut Dec 15, 2025
0064917
ACM: fix description
Audionut Dec 16, 2025
994eba2
refactor anime/anilist handling
Audionut Dec 17, 2025
9fae288
Update banned groups in DP.py (#1055)
FortKnox1337 Dec 17, 2025
482184b
LT: release naming for spanish variants (#1052)
Aerglonus Dec 17, 2025
2abe5c5
fix: set VP9, AV1 and VC-1 (#1050)
cucaracha7126378 Dec 17, 2025
4738b02
fix: some bdinfo going though dual audio checking
Audionut Dec 17, 2025
d9ab112
fix NBLA service from filename
Audionut Dec 18, 2025
865663c
use existing mi json for dvd type source handling
Audionut Dec 19, 2025
7f49621
improve group tagging
Audionut Dec 19, 2025
e23e54e
PTP: send dvdrips with other resolution
Audionut Dec 19, 2025
135fab4
PTP: tag scene
Audionut Dec 19, 2025
63af9a7
PTP: remove scene nfo from descriptions
Audionut Dec 19, 2025
98ca55e
strip TBA from episode titles
Audionut Dec 19, 2025
2719211
Add support for disc menu images (#1051)
wastaken7 Dec 20, 2025
929beb8
docker, default to running upload.py
Audionut Dec 20, 2025
28c3784
fix: use cleaned summary for BDInfo parsing and meta (#1062)
wastaken7 Dec 20, 2025
3fac3d8
ping tv metadata sites when tv movie
Audionut Dec 20, 2025
eb2a782
Merge branch 'docker-exec'
Audionut Dec 20, 2025
392d06b
add cross-seeding support (#1029)
Audionut Dec 20, 2025
9c7a94a
Update master branch badge with latest run date [skip ci]
github-actions[bot] Dec 21, 2025
8df1424
Add seedpool cdn support (#1058)
tetrahydroc Dec 21, 2025
bb2b51f
fix tv handling
Audionut Dec 21, 2025
9c41e1c
fix indentation
Audionut Dec 21, 2025
4d832bb
SHRI: catch unknown locales
Audionut Dec 21, 2025
431da41
clarify linking setup for rtorrent
Audionut Dec 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 61 additions & 7 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,19 @@ on:
types:
- published
workflow_dispatch:
inputs:
pr_number:
description: 'PR number (for PR builds)'
required: false
type: string
pr_ref:
description: 'PR branch ref (for PR builds)'
required: false
type: string
pr_sha:
description: 'PR SHA (for PR builds)'
required: false
type: string

env:
REGISTRY: ghcr.io
Expand All @@ -20,6 +33,42 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.pr_sha || github.sha }}
fetch-depth: 0

- name: Fetch PR if building for PR
if: inputs.pr_number
run: |
echo "Building for PR #${{ inputs.pr_number }}"
echo "PR SHA: ${{ inputs.pr_sha }}"
echo "PR Ref: ${{ inputs.pr_ref }}"

# Try to fetch the PR head directly (works for both forks and same-repo PRs)
if git fetch origin pull/${{ inputs.pr_number }}/head:pr-${{ inputs.pr_number }}; then
echo "✅ Successfully fetched PR via pull/${{ inputs.pr_number }}/head"
git checkout pr-${{ inputs.pr_number }}
else
echo "⚠️ Failed to fetch via pull/ ref, trying to checkout SHA directly"
# Fallback: try to checkout the SHA if it exists
if git checkout ${{ inputs.pr_sha }}; then
echo "✅ Successfully checked out SHA ${{ inputs.pr_sha }}"
else
echo "❌ Failed to checkout PR. Using current ref."
exit 1
fi
fi

# Verify we're on the right commit
CURRENT_SHA=$(git rev-parse HEAD)
echo "Current SHA: $CURRENT_SHA"
echo "Expected SHA: ${{ inputs.pr_sha }}"

if [ "$CURRENT_SHA" = "${{ inputs.pr_sha }}" ]; then
echo "✅ Successfully checked out correct commit"
else
echo "⚠️ Warning: Current SHA doesn't match expected SHA"
fi

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
Expand All @@ -44,6 +93,9 @@ jobs:
if [ "${{ github.event_name }}" == "release" ]; then
RELEASE_VERSION="${{ github.event.release.tag_name }}"
echo "VERSION=${RELEASE_VERSION}" >> $GITHUB_ENV
elif [ "${{ github.event_name }}" == "workflow_dispatch" ] && [ -n "${{ inputs.pr_number }}" ]; then
PR_NUMBER="${{ inputs.pr_number }}"
echo "VERSION=pr-${PR_NUMBER}" >> $GITHUB_ENV
elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
BRANCH_NAME="${{ github.ref_name }}"
echo "VERSION=${BRANCH_NAME}" >> $GITHUB_ENV
Expand All @@ -57,17 +109,15 @@ jobs:
tags: |
type=ref,event=branch
type=ref,event=tag
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=latest,enable=${{ github.event_name == 'release' }}

- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64
platforms: linux/amd64
push: true
tags: |
${{ env.REGISTRY }}/${{ env.LOWER_CASE_REPO_NAME }}:${{ env.VERSION }}
${{ env.REGISTRY }}/${{ env.LOWER_CASE_REPO_NAME }}:latest
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
Expand All @@ -76,10 +126,14 @@ jobs:
run: |
echo "✅ Docker images built and pushed successfully!"
echo "🐋 Images:"
echo " - ${{ env.REGISTRY }}/${{ env.LOWER_CASE_REPO_NAME }}:${{ env.VERSION }}"
echo " - ${{ env.REGISTRY }}/${{ env.LOWER_CASE_REPO_NAME }}:latest"
echo "${{ steps.meta.outputs.tags }}" | sed 's/^/ - /'
echo "📝 Event: ${{ github.event_name }}"
if [ "${{ github.event_name }}" == "release" ]; then
echo "📝 Triggered by release: ${{ github.event.release.tag_name }}"
elif [ -n "${{ inputs.pr_number }}" ]; then
echo "📝 Triggered by comment on PR #${{ inputs.pr_number }}"
echo "📝 PR branch: ${{ inputs.pr_ref }}"
echo "📝 PR SHA: ${{ inputs.pr_sha }}"
else
echo "📝 Triggered by manual workflow dispatch on branch: ${{ github.ref_name }}"
fi
116 changes: 116 additions & 0 deletions .github/workflows/pr-build-comment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: PR Build Comment Trigger

on:
issue_comment:
types: [created]

jobs:
check-comment:
if: github.event.issue.pull_request && github.event.comment.user.login == 'Audionut' && contains(github.event.comment.body, '/build')
runs-on: ubuntu-latest
outputs:
should-build: ${{ steps.check.outputs.should-build }}
pr-number: ${{ steps.pr-info.outputs.pr-number }}
pr-ref: ${{ steps.pr-info.outputs.pr-ref }}
pr-sha: ${{ steps.pr-info.outputs.pr-sha }}
pr-repo: ${{ steps.pr-info.outputs.pr-repo }}

steps:
- name: Check comment and permissions
id: check
run: |
echo "Comment by: ${{ github.event.comment.user.login }}"
echo "Comment body: ${{ github.event.comment.body }}"
echo "should-build=true" >> $GITHUB_OUTPUT

- name: Get PR information
id: pr-info
uses: actions/github-script@v7
with:
script: |
const pr = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number
});

core.setOutput('pr-number', context.issue.number);
core.setOutput('pr-ref', pr.data.head.ref);
core.setOutput('pr-sha', pr.data.head.sha);
core.setOutput('pr-repo', pr.data.head.repo.full_name);

console.log(`PR #${context.issue.number}: ${pr.data.title}`);
console.log(`Branch: ${pr.data.head.ref}`);
console.log(`SHA: ${pr.data.head.sha}`);
console.log(`Repo: ${pr.data.head.repo.full_name}`);

- name: React to comment
uses: actions/github-script@v7
with:
script: |
github.rest.reactions.createForIssueComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: context.payload.comment.id,
content: 'rocket'
});

trigger-build:
needs: check-comment
if: needs.check-comment.outputs.should-build == 'true'
runs-on: ubuntu-latest

steps:
- name: Trigger Docker build workflow
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
// Check if PR is from a fork
const prRepo = '${{ needs.check-comment.outputs.pr-repo }}';
const baseRepo = context.repo.owner + '/' + context.repo.repo;
const isFromFork = prRepo !== baseRepo;

let ref;
if (isFromFork) {
// For forks, we can't dispatch to the fork's branch, so we'll trigger on main/master
// but pass the PR info so the workflow can checkout the right commit
console.log(`PR is from fork (${prRepo}), dispatching on default branch`);

// Get the default branch
const repo = await github.rest.repos.get({
owner: context.repo.owner,
repo: context.repo.repo
});
ref = repo.data.default_branch;
console.log(`Using default branch: ${ref}`);
} else {
// For same-repo PRs, use the actual branch
ref = '${{ needs.check-comment.outputs.pr-ref }}';
console.log(`PR is from same repo, using branch: ${ref}`);
}

const response = await github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'docker-image.yml',
ref: ref,
inputs: {
pr_number: '${{ needs.check-comment.outputs.pr-number }}',
pr_ref: '${{ needs.check-comment.outputs.pr-ref }}',
pr_sha: '${{ needs.check-comment.outputs.pr-sha }}'
}
});

console.log(`Triggered workflow dispatch for PR #${{ needs.check-comment.outputs.pr-number }} on ref: ${ref}`);

- name: Comment on PR
uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: ${{ needs.check-comment.outputs.pr-number }},
body: '🚀 Docker build triggered for PR #${{ needs.check-comment.outputs.pr-number }}!\n\nCheck the [Actions tab](https://github.com/${{ github.repository }}/actions) for build progress.'
});
102 changes: 91 additions & 11 deletions .github/workflows/push_release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,62 @@ jobs:
fi
echo "📝 Previous tag: ${PREVIOUS_TAG:-'none (first release)'}"

- name: Fetch changelog from local file
run: |
# Path to the local changelog file
CHANGELOG_FILE="data/Upload-Assistant-release_notes.md"

echo "🔍 Attempting to read changelog from: $CHANGELOG_FILE"

# Check if the file exists and read it
if [ -f "$CHANGELOG_FILE" ]; then
# Read the file content
GIST_CONTENT=$(cat "$CHANGELOG_FILE")

# Check if content is not empty
if [ -n "$GIST_CONTENT" ] && [ ${#GIST_CONTENT} -gt 10 ]; then
echo "✅ Successfully read content from local file"

# Get the first line and check if it matches the version
FIRST_LINE=$(echo "$GIST_CONTENT" | head -n 1)
echo "🔍 First line of file: '$FIRST_LINE'"
echo "🔍 Expected version: '${{ env.VERSION }}'"

# Check if first line matches the version (with or without markdown formatting)
if [[ "$FIRST_LINE" == "${{ env.VERSION }}" ]] || [[ "$FIRST_LINE" == "# ${{ env.VERSION }}" ]] || [[ "$FIRST_LINE" == "## ${{ env.VERSION }}" ]]; then
echo "✅ First line matches version, removing it and using rest of content"
# Remove the first line and use the rest
PROCESSED_CONTENT=$(echo "$GIST_CONTENT" | tail -n +2)
else
echo "⚠️ First line doesn't match version '${{ env.VERSION }}', skipping file content"
PROCESSED_CONTENT=""
fi

# Only set the changelog if we have processed content
if [ -n "$PROCESSED_CONTENT" ] && [ ${#PROCESSED_CONTENT} -gt 5 ]; then
echo "✅ Using local file changelog content"
# Save to environment variable
{
echo "GIST_CHANGELOG<<EOF"
echo "$PROCESSED_CONTENT"
echo ""
echo "---"
echo ""
echo "EOF"
} >> $GITHUB_ENV
else
echo "⚠️ No valid content after processing, skipping file"
echo "GIST_CHANGELOG=" >> $GITHUB_ENV
fi
else
echo "⚠️ File content appears to be empty or too short, skipping"
echo "GIST_CHANGELOG=" >> $GITHUB_ENV
fi
else
echo "⚠️ Changelog file '$CHANGELOG_FILE' not found, continuing without it"
echo "GIST_CHANGELOG=" >> $GITHUB_ENV
fi

- name: Generate changelog from merged PRs and commits
run: |
if [ "${{ env.PREVIOUS_TAG }}" = "initial" ]; then
Expand All @@ -71,6 +127,12 @@ jobs:
# Create changelog
{
echo "CHANGELOG<<EOF"

# Add Gist content at the top if it exists
if [ -n "${{ env.GIST_CHANGELOG }}" ]; then
echo "${{ env.GIST_CHANGELOG }}"
fi

echo "## What's Changed"
echo ""

Expand Down Expand Up @@ -123,6 +185,13 @@ jobs:
DISPLAY_AUTHOR="@$AUTHOR"
fi

# Map known username variations
case "$DISPLAY_AUTHOR" in
"@flower"|"@Flower") DISPLAY_AUTHOR="@flowerey" ;;
# Add other mappings as needed
# "@oldname") DISPLAY_AUTHOR="@newname" ;;
esac

echo "* ${TITLE} by ${DISPLAY_AUTHOR} in https://github.com/${{ github.repository }}/pull/${PR_NUMBER}"
FOUND_CHANGES=true

Expand All @@ -133,7 +202,13 @@ jobs:
# Clean up branch name for display
CLEAN_BRANCH=$(echo "$BRANCH_NAME" | sed 's|-| |g' | sed 's/_/ /g')

echo "* Merge branch '${BRANCH_NAME}' by @${AUTHOR}"
# Apply username mapping to commit author as well
MAPPED_AUTHOR="@$AUTHOR"
case "$MAPPED_AUTHOR" in
"@flower"|"@Flower") MAPPED_AUTHOR="@flowerey" ;;
esac

echo "* Merge branch '${BRANCH_NAME}' by ${MAPPED_AUTHOR}"
FOUND_CHANGES=true

# Handle direct commits (non-merge commits that might be significant)
Expand All @@ -142,18 +217,19 @@ jobs:
if [[ ! $SUBJECT =~ ^Update\ version\.py ]] && [[ ! $SUBJECT =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] && [[ ! $AUTHOR =~ github-actions ]]; then
# Only include if it looks like a meaningful change
if [[ $SUBJECT =~ ^(feat|fix|add|update|improve|remove|refactor): ]] || [[ ${#SUBJECT} -gt 10 ]]; then
echo "* ${SUBJECT} by @${AUTHOR} in ${COMMIT_HASH:0:7}"
# Apply username mapping to commit author
MAPPED_AUTHOR="@$AUTHOR"
case "$MAPPED_AUTHOR" in
"@flower"|"@Flower") MAPPED_AUTHOR="@flowerey" ;;
esac

echo "* ${SUBJECT} by ${MAPPED_AUTHOR} in ${COMMIT_HASH:0:7}"
FOUND_CHANGES=true
fi
fi
fi
done

# If no changes found, add default message
if [ "$FOUND_CHANGES" = false ]; then
echo "* Other minor updates and improvements"
fi


echo ""
if [ "${{ env.PREVIOUS_TAG }}" != "initial" ]; then
echo "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ env.PREVIOUS_TAG }}...${{ env.VERSION }}"
Expand All @@ -174,18 +250,22 @@ jobs:
echo "" >> "$VERSION_FILE"
fi

# Prepend new release info
# Update version and prepend new release info
TEMP_FILE=$(mktemp)

# Start with the NEW version (maintaining 'v' prefix format)
echo "__version__ = \"${{ env.VERSION }}\"" > "$TEMP_FILE"
echo "" >> "$TEMP_FILE"
echo "\"\"\"" >> "$TEMP_FILE"
echo "Release Notes for version ${{ env.VERSION }} ($TIMESTAMP):" >> "$TEMP_FILE"
echo "" >> "$TEMP_FILE"
echo "${{ env.CHANGELOG }}" | sed 's/^/# /' >> "$TEMP_FILE"
cat <<EOF | sed 's/^/# /' >> "$TEMP_FILE"
${{ env.CHANGELOG }}
EOF
echo "\"\"\"" >> "$TEMP_FILE"
echo "" >> "$TEMP_FILE"

# Skip the first line of existing version.py (old __version__)
# Add the rest of the existing file (skip first line since we're replacing it)
if [ -f "$VERSION_FILE" ]; then
tail -n +2 "$VERSION_FILE" >> "$TEMP_FILE"
fi
Expand Down
Loading