diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b87abca8..6b987ccc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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: | @@ -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 @@ -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 @@ -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: | @@ -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: | @@ -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: | @@ -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 @@ -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 diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index 1c007a85..8192e315 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -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 diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 952dcd0d..ffa8e7d3 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -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. diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index b4440b83..02ea5008 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -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