Skip to content
This repository was archived by the owner on Sep 7, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
16 changes: 8 additions & 8 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ jobs:
Compress-Archive -Path "build\windows\x64\runner\Release\*" -DestinationPath "PlayTorrioMod-Windows-x64-Portable.zip" -Force

- name: Upload Windows Artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: PlayTorrioMod-Windows
path: |
Expand Down Expand Up @@ -288,7 +288,7 @@ jobs:
fi

- name: Upload Android Artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: PlayTorrioMod-Android
path: android_apks/*.apk
Expand Down Expand Up @@ -398,7 +398,7 @@ jobs:
android_apks/PlayTorrioMod-Android-Universal.apk

- name: Upload Android Universal Artifact
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: PlayTorrioMod-Android-Universal
path: android_apks/*.apk
Expand Down Expand Up @@ -496,7 +496,7 @@ jobs:
tar -czvf PlayTorrioMod-Linux-x86_64.tar.gz -C build/linux/x64/release/bundle .

- name: Upload Linux Artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: PlayTorrioMod-Linux-x64
path: |
Expand Down Expand Up @@ -570,7 +570,7 @@ jobs:
zip -ry ../../../../../PlayTorrioMod-macOS-arm64.zip PlayTorrioMod.app

- name: Upload macOS ARM64 Artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: PlayTorrioMod-macOS-arm64
path: |
Expand Down Expand Up @@ -642,7 +642,7 @@ jobs:
zip -ry ../../../../../PlayTorrioMod-macOS-intel.zip PlayTorrioMod.app

- name: Upload macOS Intel Artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: PlayTorrioMod-macOS-intel
path: |
Expand Down Expand Up @@ -699,7 +699,7 @@ jobs:
zip -ry ../../../PlayTorrioMod-iOS.ipa Payload

- name: Upload iOS Artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: PlayTorrioMod-iOS
path: PlayTorrioMod-iOS.ipa
Expand All @@ -722,7 +722,7 @@ jobs:
contents: write
steps:
- name: Download all build artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
merge-multiple: true

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ jobs:
run: flutter build apk --release --dart-define-from-file=.env

- name: Upload APK
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: PlayTorrioMod-Android-PR${{ github.event.pull_request.number || github.run_number }}
path: build/app/outputs/flutter-apk/app-release.apk
Expand Down
6 changes: 6 additions & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ All notable changes to PlayTorrio V3 will be documented in this file.

## [unreleased] — 2026-08-22

### Move the artifact actions onto Node 24 — 2026-08-31
- **I got this wrong twice before getting it right.** First I wrote that the release job ran a step on "the deprecated Node 20" — an assumption. Then I checked the actions' own `action.yml`, found `upload-artifact@v5` and `download-artifact@v5`/`v6` all declaring `using: node20`, and concluded there was nothing to fix, since bumping within those majors changed nothing.
- **The v1.1.3 release run settled it**: `##[warning]Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v5`. The runner is already overriding them, and GitHub says that override is temporary. That is exactly the "revisit only if a release run actually warns" condition the roadmap entry named.
- The fix is a *higher major*, not a different v5. Verified from each action's own `action.yml`: `upload-artifact@v6` and `download-artifact@v7` declare `node24`. Both are post-v4, so they remain a compatible pair — the only documented artifact incompatibility is v4-and-above being unable to read `upload-artifact@v3` or below.
- `checkout@v5`, `cache@v5` and `setup-java@v5` did not appear in the warning and are already on Node 24; they stay.
- Roadmap item 8 now tracks the real dated fuse instead: every Android build warns that the app and six plugins apply the Kotlin Gradle Plugin, and that *"future versions of Flutter will fail to build"* because of it.
### One like control instead of five (AUDIT: favorite schemes, High) — 2026-08-31
- **Five content types each rendered the same boolean "like" their own way**: two pill variants (Manga inline, Audiobooks via a private `_LikeButton`), a bare `IconButton` (Podcasts), and two list-row hearts (Books, Music). The colours were unified on 2026-08-29; the controls were not.
- All now use `LikeButton`, in one of two styles.
Expand Down
2 changes: 1 addition & 1 deletion docs/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Once a build has actually been through this, clear `AppInfo.channel` and the
| 5 | **Anime and Movies/Series now share one row; the pages still differ** | The row is done: `BrowseRowView` is the single implementation, `BrowseScaffold` builds its rows from it and `AnimeSliderSection` wraps it, so card size, spacing, header and arrows cannot drift. Migrating the anime *page* itself onto `BrowseScaffold` was **dropped as not worth it**: `AnimeSliderSection` is also used by `anime_search_page`, so converting only the anime page would leave two row implementations on adjacent screens — worse than before. Converting both is two large pages of churn for a layout that now already matches. What the anime page still has of its own is a hero carousel and a `ContinueWatchingSlider` slot; revisit only if a third page wants that arrangement. |
| 6 | **35 files do ad-hoc `MediaQuery.sizeOf(context).width`** instead of `AppBreakpoints.of(context)` | 35 independent call sites, no shared risk, no user-visible bug. Migrate opportunistically when a file is touched for another reason, not as a batch pass. |
| 7 | **`music_page.dart` is 5,220 lines** | Four other files are over 2,000. Splitting is worthwhile but is a refactor with no user-visible payoff, so it waits behind anything that a user would notice. |
| 8 | **`actions/download-artifact` is still on v4** | Checked 2026-08-31 and there is **nothing to fix**, recorded so it is not re-raised. The only documented incompatibility is that v4-and-above cannot read artifacts from `upload-artifact@v3` or below, so v4 download alongside v5 upload is a supported pair. Nor is it a runtime issue: `upload-artifact@v5`, `download-artifact@v5` and `download-artifact@v6` all declare `using: node20` in their own `action.yml`, so none of the v5 bumps moved anything off Node 20. Bumping it would be churn. Revisit only if a release run actually warns. |
| 8 | **Kotlin Gradle Plugin will break future Flutter builds** | Every Android build warns: the app and six plugins (`package_info_plus`, `shared_preferences_android`, `torrserver_flutter`, `url_launcher_android`, `video_player_android`, `wakelock_plus`) apply KGP, and *"future versions of Flutter will fail to build if your app uses plugins that apply KGP"*. The app's own `build.gradle.kts` can migrate to Built-in Kotlin; the plugins cannot be fixed here — each needs a version that supports it, or an upstream issue. Not urgent, but it is a dated fuse rather than a style nit. |

## Content sources

Expand Down