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):
-
-[](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)
-
-
-
-
-
-> [!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|[](https://snapcraft.io/musicpod)
or
[](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|
-|-|-|
-|||
-|||
-|||
-|||
-|||
-|||
+|Features | Dark MacOS | Light MacOS |
+|-|-|-|
+|Play local audio|||
+|Find local audios sorted by [Metadata](https://github.com/ClementBeal/audio_metadata_reader) |||
+|Play radio stations, with icytags and artwork looked up!|||
+|Play and download podcasts, safe progress, sort episodes and more!|||
+|Video podcast support!|||
+|Discover podcasts, filtered as you like|||
+|Discover radio stations, filtered as you like|||
+
## 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"