diff --git a/.github/album_dark.png b/.github/album_dark.png deleted file mode 100644 index 6c64bbca9..000000000 Binary files a/.github/album_dark.png and /dev/null differ diff --git a/.github/album_light.png b/.github/album_light.png deleted file mode 100644 index 51c1366ba..000000000 Binary files a/.github/album_light.png and /dev/null differ diff --git a/.github/full_window_dark.png b/.github/full_window_dark.png deleted file mode 100644 index b2880c065..000000000 Binary files a/.github/full_window_dark.png and /dev/null differ diff --git a/.github/full_window_light.png b/.github/full_window_light.png deleted file mode 100644 index b477cf872..000000000 Binary files a/.github/full_window_light.png and /dev/null differ diff --git a/.github/images/album_dark_macos.png b/.github/images/album_dark_macos.png new file mode 100644 index 000000000..2c2169044 Binary files /dev/null and b/.github/images/album_dark_macos.png differ diff --git a/.github/images/album_light_macos.png b/.github/images/album_light_macos.png new file mode 100644 index 000000000..141641cc8 Binary files /dev/null and b/.github/images/album_light_macos.png differ diff --git a/.github/images/albums_dark_macos.png b/.github/images/albums_dark_macos.png new file mode 100644 index 000000000..d9f46bbaa Binary files /dev/null and b/.github/images/albums_dark_macos.png differ diff --git a/.github/images/albums_light_macos.png b/.github/images/albums_light_macos.png new file mode 100644 index 000000000..3814a5233 Binary files /dev/null and b/.github/images/albums_light_macos.png differ diff --git a/.github/images/fullheight_dark_macos.png b/.github/images/fullheight_dark_macos.png new file mode 100644 index 000000000..8f4065604 Binary files /dev/null and b/.github/images/fullheight_dark_macos.png differ diff --git a/.github/images/fullheight_light_macos.png b/.github/images/fullheight_light_macos.png new file mode 100644 index 000000000..fb64fa223 Binary files /dev/null and b/.github/images/fullheight_light_macos.png differ diff --git a/.github/images/podcast_dark_macos.png b/.github/images/podcast_dark_macos.png new file mode 100644 index 000000000..ada17bf18 Binary files /dev/null and b/.github/images/podcast_dark_macos.png differ diff --git a/.github/images/podcast_light_macos.png b/.github/images/podcast_light_macos.png new file mode 100644 index 000000000..17cfc545b Binary files /dev/null and b/.github/images/podcast_light_macos.png differ diff --git a/.github/images/podcasts_dark_macos.png b/.github/images/podcasts_dark_macos.png new file mode 100644 index 000000000..7c92ef085 Binary files /dev/null and b/.github/images/podcasts_dark_macos.png differ diff --git a/.github/images/podcasts_light_macos.png b/.github/images/podcasts_light_macos.png new file mode 100644 index 000000000..020499e37 Binary files /dev/null and b/.github/images/podcasts_light_macos.png differ diff --git a/.github/images/radio_dark_macos.png b/.github/images/radio_dark_macos.png new file mode 100644 index 000000000..336a9d417 Binary files /dev/null and b/.github/images/radio_dark_macos.png differ diff --git a/.github/images/radio_light_macos.png b/.github/images/radio_light_macos.png new file mode 100644 index 000000000..1b89a7f6b Binary files /dev/null and b/.github/images/radio_light_macos.png differ diff --git a/.github/images/station_dark_macos.png b/.github/images/station_dark_macos.png new file mode 100644 index 000000000..1f4b6be9f Binary files /dev/null and b/.github/images/station_dark_macos.png differ diff --git a/.github/images/station_light_macos.png b/.github/images/station_light_macos.png new file mode 100644 index 000000000..b1a8f4107 Binary files /dev/null and b/.github/images/station_light_macos.png differ diff --git a/.github/images/video_dark_macos.png b/.github/images/video_dark_macos.png new file mode 100644 index 000000000..f67080fab Binary files /dev/null and b/.github/images/video_dark_macos.png differ diff --git a/.github/images/video_light_macos.png b/.github/images/video_light_macos.png new file mode 100644 index 000000000..3de74f64d Binary files /dev/null and b/.github/images/video_light_macos.png differ diff --git a/.github/local_dark.png b/.github/local_dark.png deleted file mode 100644 index 536b3e305..000000000 Binary files a/.github/local_dark.png and /dev/null differ diff --git a/.github/local_light.png b/.github/local_light.png deleted file mode 100644 index d24bc48df..000000000 Binary files a/.github/local_light.png and /dev/null differ diff --git a/.github/podcast_dark.png b/.github/podcast_dark.png deleted file mode 100644 index dd9e64b3e..000000000 Binary files a/.github/podcast_dark.png and /dev/null differ diff --git a/.github/podcast_light.png b/.github/podcast_light.png deleted file mode 100644 index 26d995486..000000000 Binary files a/.github/podcast_light.png and /dev/null differ diff --git a/.github/radio_dark.png b/.github/radio_dark.png deleted file mode 100644 index 371d44006..000000000 Binary files a/.github/radio_dark.png and /dev/null differ diff --git a/.github/radio_light.png b/.github/radio_light.png deleted file mode 100644 index 3479c3962..000000000 Binary files a/.github/radio_light.png and /dev/null differ diff --git a/.github/wide_window_dark.png b/.github/wide_window_dark.png deleted file mode 100644 index c6e887797..000000000 Binary files a/.github/wide_window_dark.png and /dev/null differ diff --git a/.github/wide_window_light.png b/.github/wide_window_light.png deleted file mode 100644 index 305ea4c2a..000000000 Binary files a/.github/wide_window_light.png and /dev/null differ diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml index d03d98518..f10513fe9 100644 --- a/.github/workflows/cd.yaml +++ b/.github/workflows/cd.yaml @@ -7,6 +7,7 @@ on: env: FLUTTER_VERSION: '3.24.x' + MACOS_APP_RELEASE_PATH: build/macos/Build/Products/Release jobs: build_and_upload_macos_dmg: @@ -52,6 +53,8 @@ jobs: security import certificate.p12 -k build.keychain -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign echo "Set Key Partition" security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $MACOS_CERTIFICATE_PWD build.keychain + echo "Find Identity" + security find-identity echo "Sign the app" /usr/bin/codesign --force --deep -s $MACOS_IDENTITY ./$MACOS_APP_RELEASE_PATH/musicpod.app - name: Create a dmg @@ -73,13 +76,8 @@ jobs: --hdiutil-quiet \ "musicpod.dmg" \ "musicpod.app" - - name: Append Asset - if: steps.createdmg.outcome == 'success' - uses: AButler/upload-release-assets@v3.0 - with: - files: "$MACOS_APP_RELEASE_PATH/musicpod.app" - repo-token: ${{ secrets.GITHUB_TOKEN }} - release-tag: ${{ github.ref_name }} + ls -l + pwd build_and_publish_snap: runs-on: ubuntu-latest @@ -96,17 +94,17 @@ jobs: if [[ "$changed" == "5" ]]; then echo "lines=changed" >> "$GITHUB_OUTPUT" fi - - uses: subosito/flutter-action@v2 - with: - channel: 'stable' - flutter-version: ${{env.FLUTTER_VERSION}} - - run: sudo apt update - - run: sudo apt install -y clang cmake curl libgtk-3-dev ninja-build pkg-config unzip libunwind-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libmpv-dev - - run: flutter pub get - - uses: snapcore/action-build@v1 - if: steps.check.outputs.lines == 'changed' - id: build # Disabled until linux arm runners are available + # - uses: subosito/flutter-action@v2 + # with: + # channel: 'stable' + # flutter-version: ${{env.FLUTTER_VERSION}} + # - run: sudo apt update + # - run: sudo apt install -y clang cmake curl libgtk-3-dev ninja-build pkg-config unzip libunwind-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libmpv-dev + # - run: flutter pub get + # - uses: snapcore/action-build@v1 + # if: steps.check.outputs.lines == 'changed' + # id: build # - uses: snapcore/action-publish@v1 # if: steps.build.outcome == 'success' # env: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 882368819..07ce42722 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,6 +6,10 @@ on: - main workflow_dispatch: +env: + FLUTTER_VERSION: '3.24.x' + MACOS_APP_RELEASE_PATH: build/macos/Build/Products/Release + jobs: release: permissions: @@ -13,8 +17,67 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: google-github-actions/release-please-action@v4 + - uses: googleapis/release-please-action@v4 + id: release with: release-type: dart - changelog-notes-type: github - pull-request-title-pattern: 'chore: release v${version}' \ No newline at end of file + # - uses: subosito/flutter-action@v2 + # if: ${{ steps.release.outputs.release_created }} + # with: + # channel: 'stable' + # flutter-version: ${{env.FLUTTER_VERSION}} + # - name: Build macOS app + # id: buildmacos + # if: ${{ steps.release.outputs.release_created }} + # run: flutter build macos --release + # - name: Codesign executable + # id: codesignmacos + # if: steps.buildmacos.outcome == 'success' + # env: + # MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} + # MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} + # MACOS_IDENTITY: ${{ secrets.MACOS_IDENTITY }} + # run: | + # echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12 + # echo "Create Keychain" + # security create-keychain -p $MACOS_CERTIFICATE_PWD build.keychain + # echo "Assign to Login Keychain" + # security default-keychain -s build.keychain + # echo "Unlock the Login Keychain" + # security unlock-keychain -p $MACOS_CERTIFICATE_PWD build.keychain + # echo "Import certificate" + # security import certificate.p12 -k build.keychain -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign + # echo "Set Key Partition" + # security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $MACOS_CERTIFICATE_PWD build.keychain + # echo "Find Identity" + # security find-identity + # echo "Sign the app" + # /usr/bin/codesign --force --deep -s $MACOS_IDENTITY ./$MACOS_APP_RELEASE_PATH/musicpod.app + + # - name: Create a dmg + # id: createdmg + # if: steps.codesignmacos.outcome == 'success' + # run: | + # echo "Install create-dmg" + # brew install create-dmg + # cd $MACOS_APP_RELEASE_PATH + # create-dmg \ + # --volname "musicpod" \ + # --window-pos 200 120 \ + # --window-size 950 820 \ + # --icon-size 130 \ + # --text-size 14 \ + # --icon "musicpod.app" 260 250 \ + # --hide-extension "musicpod.app" \ + # --app-drop-link 540 250 \ + # --hdiutil-quiet \ + # "musicpod.dmg" \ + # "musicpod.app" + # pwd + # ls -l + # - name: Upload Release Artifact + # if: ${{ steps.release.outputs.release_created }} + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # run: gh release upload ${{ steps.release.outputs.tag_name }} ./artifact/musicpod.dmg + diff --git a/CHANGELOG.md b/CHANGELOG.md index bb74afae1..3211359b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [1.7.0](https://github.com/ubuntu-flutter-community/musicpod/compare/1.6.0...v1.7.0) (2024-08-19) + + +### Features + +* improved patch notes dialog and single podcast refreshing ([#864](https://github.com/ubuntu-flutter-community/musicpod/issues/864)) ([02d92e9](https://github.com/ubuntu-flutter-community/musicpod/commit/02d92e943af1b69e4c772316e64320c11a748f11)) +* update Italian language ([#859](https://github.com/ubuntu-flutter-community/musicpod/issues/859)) ([9019bb2](https://github.com/ubuntu-flutter-community/musicpod/commit/9019bb2cb5d519e57ce7588d9bdd54b0b831872f)) + + +### Bug Fixes + +* init radio model before tapping on a tag ([#862](https://github.com/ubuntu-flutter-community/musicpod/issues/862)) ([3754781](https://github.com/ubuntu-flutter-community/musicpod/commit/3754781b86cefb1720f5fc62b6ec4d02ed1c06b6)) +* some title of radio is html format, need to convert to human readable format ([#870](https://github.com/ubuntu-flutter-community/musicpod/issues/870)) ([4c398e1](https://github.com/ubuntu-flutter-community/musicpod/commit/4c398e1d7904d2e837cb2fc1c6160539f2bce236)), closes [#866](https://github.com/ubuntu-flutter-community/musicpod/issues/866) + ## 1.6.0 (2024-08-16) ## What's Changed diff --git a/README.md b/README.md index 910950cc8..c56ff6b70 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,29 @@ -# Musicpod +# MusicPod -Music, Radio, Television and Podcast player for Linux Desktop, MacOS, Windows and Android made with Flutter. +MusicPod is a local music, radio, television and podcast player for Linux Desktop, MacOS and Windows. (Android is planed but no ETA yet when it will happen.) -Install for Linux Desktop (snapd is preinstalled on Ubuntu): - -[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/musicpod) - -- How to install snapd on... - - [Fedora](https://snapcraft.io/docs/installing-snap-on-fedora) - - [Arch Linux](https://snapcraft.io/docs/installing-snap-on-arch-linux) - - [Debian](https://snapcraft.io/docs/installing-snap-on-debian) - - [Manjaro](https://snapcraft.io/docs/installing-snap-on-manjaro-linux) - - - Download on Flathub - - -> [!CAUTION] -> Flatpak support is ***EXPERIMENTAL***, there are currently heavy graphic issues with Fedora. -> See [#747](https://github.com/ubuntu-flutter-community/musicpod/issues/747). If you are using Fedora, currently use the snap. - -
-Install For MacOS & Windows: +|OS|How to install| +|-|-| +|Linux|[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/musicpod)
or
[![](https://flathub.org/api/badge?locale=en)](https://flathub.org/apps/org.feichtmeier.Musicpod)| +|Windows|[Release Page](https://github.com/ubuntu-flutter-community/musicpod/releases)| +|MacOS|[Release Page](https://github.com/ubuntu-flutter-community/musicpod/releases)| +|Android|WIP| -[Release Page](https://github.com/ubuntu-flutter-community/musicpod/releases) -
-Android release is WIP!

-|Dark | Light| -|-|-| -|![](.github/local_dark.png)|![](.github/local_light.png)| -|![](.github/radio_dark.png)|![](.github/radio_light.png)| -|![](.github/podcast_dark.png)|![](.github/podcast_light.png)| -|![](.github/album_dark.png)|![](.github/album_light.png)| -|![](.github/full_window_dark.png)|![](.github/full_window_light.png)| -|![](.github/wide_window_dark.png)|![](.github/wide_window_light.png)| +|Features | Dark MacOS | Light MacOS | +|-|-|-| +|Play local audio|![](.github/images/album_dark_macos.png)|![](.github/images/album_light_macos.png)| +|Find local audios sorted by [Metadata](https://github.com/ClementBeal/audio_metadata_reader) |![](.github/images/albums_dark_macos.png)|![](.github/images/albums_light_macos.png)| +|Play radio stations, with icytags and artwork looked up!|![](.github/images/station_dark_macos.png)|![](.github/images/station_light_macos.png)| +|Play and download podcasts, safe progress, sort episodes and more!|![](.github/images/podcast_dark_macos.png)|![](.github/images/podcast_light_macos.png)| +|Video podcast support!|![](.github/images/video_dark_macos.png)|![](.github/images/video_light_macos.png)| +|Discover podcasts, filtered as you like|![](.github/images/podcasts_dark_macos.png)|![](.github/images/podcasts_light_macos.png)| +|Discover radio stations, filtered as you like|![](.github/images/radio_dark_macos.png)|![](.github/images/radio_light_macos.png)| + ## Credits @@ -56,51 +41,6 @@ Thank you [@ClementBeal](https://github.com/ClementBeal) for the super fast, pur Thank you [@escamoteur](https://github.com/escamoteur) for creating [get_it](https://pub.dev/packages/get_it) and [watch_it](https://pub.dev/packages/watch_it), which made my application faster and the source code cleaner! -## MusicPod Level 1 - -- [X] play local audio files -- [X] filter local files -- [X] set root directory -- [X] create and manage playlists -- [X] play internet radio streams -- [X] browse for radio stations -- [X] play podcasts -- [X] search for podcasts -- [X] load podcast charts -- [X] filter podcasts by country -- [X] filter podcasts by genre -- [X] save playlists -- [X] save liked songs -- [X] save settings on disk -- [X] notify when a new episode of your subscribed podcasts is available - -## MusicPod Level 2 - -- [X] Video Podcasts ([#71](https://github.com/ubuntu-flutter-community/musicpod/issues/71)) -- [X] Play TV Stations found on radiobrowser -- [ ] Chromecast Support ([#91](https://github.com/ubuntu-flutter-community/musicpod/issues/91)) -- [X] streaming provider agnostic sharing links -- [X] option to download podcasts (#[240](https://github.com/ubuntu-flutter-community/musicpod/issues/240)) -- [X] reduced memory allocation -- [ ] WebDav support (#[248](https://github.com/ubuntu-flutter-community/musicpod/issues/248)) -- [ ] upnp/dlna support (#[248](https://github.com/ubuntu-flutter-community/musicpod/issues/247)) - -## Supported operating systems and package formats - -- [X] Ubuntu Desktop - - [X] [snap package](https://snapcraft.io/musicpod) (this is the primary supported package!) - - [X] [Flatpak](https://flathub.org/apps/org.feichtmeier.Musicpod) -- [X] Windows Support - - [ ] Windows Store - - [X] [Exe](https://github.com/ubuntu-flutter-community/musicpod/releases) -- [X] Android Support (Media Controls are WIP) - - [ ] PlayStore -- [X] MacOs Support - - [ ] Apple?Store? - - [X] [DMG](https://github.com/ubuntu-flutter-community/musicpod/releases) -- [ ] iOS Support - - [ ] AppStore - # Contributing Contributions are highly welcome. Especially translations. @@ -177,4 +117,4 @@ Though performance is the biggest goal, especially for flutter apps on the deskt ### Persistence -For persisting both setting and application state I've chosen a home cooked solution inside the LibraryService and SettingsService that writes json files to disk. It is simple and fast and sufficient for the needs of this application. Eventually at some point it might make sense to switch to a real database though :). \ No newline at end of file +Preferences are stored with [shared_preferences](https://pub.dev/packages/shared_preferences). \ No newline at end of file diff --git a/lib/app/app_model.dart b/lib/app/app_model.dart index 6ebe07a10..0ed9cf385 100644 --- a/lib/app/app_model.dart +++ b/lib/app/app_model.dart @@ -95,6 +95,7 @@ class AppModel extends SafeChangeNotifier { int? getExtendedVersionNumber(String? version) { if (version == null) return null; + version = version.replaceAll('v', ''); List versionCells = version.split('.'); versionCells = versionCells.map((i) => int.parse(i)).toList(); return versionCells[0] * 100000 + versionCells[1] * 1000 + versionCells[2]; diff --git a/lib/main.dart b/lib/main.dart index 4731f4471..42001802c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -151,7 +151,6 @@ Future main(List args) async { dispose: (s) => s.dispose(), ); - // TODO: when the app is in appstore/windowsstore enable/disable this only via args final appModel = AppModel( gitHub: gitHub, settingsService: settingsService, diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 2fa039a47..653ea7bec 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -567,11 +567,12 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_IDENTITY = "Apple Development: frederik.feichtmeier@gmail.com (U3643MR29R)"; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = Y7ZGTYFNR6; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=macosx*]" = Y7ZGTYFNR6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = MusicPod; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.music"; @@ -700,11 +701,12 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_IDENTITY = "Apple Development: frederik.feichtmeier@gmail.com (U3643MR29R)"; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = Y7ZGTYFNR6; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=macosx*]" = Y7ZGTYFNR6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = MusicPod; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.music"; @@ -728,10 +730,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = Y7ZGTYFNR6; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=macosx*]" = Y7ZGTYFNR6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = MusicPod; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.music"; diff --git a/pubspec.yaml b/pubspec.yaml index 46f553f21..eba9b74a6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: musicpod description: Ubuntu music, radio and podcast player. -version: 1.6.0 +version: 1.7.0 publish_to: "none"