Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1072 commits
Select commit Hold shift + click to select a range
887f450
Merge branch 'Development' into M12_Premium
BisoLab Apr 27, 2026
4e35270
Merge pull request #130 from Rythmify/M12_Premium
BisoLab Apr 27, 2026
249da27
Update notifications test cases to match code structure
yoeweida36 Apr 28, 2026
c39f06e
premium cancellation is now wired
hana8-8 Apr 28, 2026
99ee842
format line
hana8-8 Apr 28, 2026
97ae8b9
Merge branch 'Development' into M3_Settings_clean
BisoLab Apr 28, 2026
0485078
Merge pull request #128 from Rythmify/M3_Settings_clean
BisoLab Apr 28, 2026
3de138f
Merge branch 'Development' into M12_Premium
BisoLab Apr 28, 2026
232f315
Merge pull request #131 from Rythmify/M12_Premium
BisoLab Apr 28, 2026
f138f36
Merge remote-tracking branch 'origin/Development' into e2e-cross
yoeweida36 Apr 28, 2026
00f3006
fixed message button problem
RanaElgharabawy Apr 28, 2026
7188690
Merge remote-tracking branch 'origin/Development' into M5_Messaging
RanaElgharabawy Apr 28, 2026
340a208
Refactor profile data models and update following logic in profile co…
karimwael45 Apr 28, 2026
f8e55f6
update notification test cases to have same format & all test cases p…
yoeweida36 Apr 28, 2026
5b448c4
delete trackUpload test case due to integration test package limitations
yoeweida36 Apr 28, 2026
fd41e9e
Add social media fields to profile model and update related components
karimwael45 Apr 28, 2026
f6339bd
tests
karimwael45 Apr 28, 2026
3573082
meaages of convert and delete is fixed , removed convert to station
hana8-8 Apr 28, 2026
c89b2c0
option sheet problem fixed , album viewing fixed
hana8-8 Apr 28, 2026
f69dfb7
fixed playlist name problem
hana8-8 Apr 28, 2026
b91a2fe
finalize search module test cases
yoeweida36 Apr 28, 2026
4e09c4d
copy wired still needs UI fixing for options sheeet and mixes copying…
hana8-8 Apr 28, 2026
b6d5ea6
format line
hana8-8 Apr 28, 2026
4ab2809
Merge pull request #133 from Rythmify/M14_Playlists
BisoLab Apr 28, 2026
f41672a
-modified search logic
sohailaahmed12 Apr 28, 2026
75b0e72
Merge branch 'M7_Search' of https://github.com/Rythmify/cross into M7…
sohailaahmed12 Apr 28, 2026
404a73d
fix naming issue in search_test
yoeweida36 Apr 28, 2026
171649e
Merge remote-tracking branch 'origin/Development' into M7_Search
sohailaahmed12 Apr 28, 2026
c91e2df
ran formatter
sohailaahmed12 Apr 28, 2026
a13a2b8
update comment test case
yoeweida36 Apr 28, 2026
4670b4a
auto refresh in library screen and privacy lock
hana8-8 Apr 29, 2026
ec37ae9
lock Ui and refresh fixes
hana8-8 Apr 29, 2026
7f880a3
format line
hana8-8 Apr 29, 2026
ffcf8a9
final updates on comments test & add new test cases to feed module
yoeweida36 Apr 29, 2026
3bc088e
Merge branch 'Development' into CP-5-fix
karimwael45 Apr 29, 2026
6d73506
Merge pull request #132 from Rythmify/CP-5-fix
BisoLab Apr 29, 2026
449a94f
Merge branch 'Development' into M7_Search
BisoLab Apr 29, 2026
0d7589b
Merge pull request #135 from Rythmify/M7_Search
BisoLab Apr 29, 2026
3b2d72c
Merge branch 'Development' into M14_Playlists
BisoLab Apr 29, 2026
c671a09
Merge pull request #136 from Rythmify/M14_Playlists
BisoLab Apr 29, 2026
3849405
Merge remote-tracking branch 'origin/Development' into e2e-cross
yoeweida36 Apr 29, 2026
db50c9c
Merge remote-tracking branch 'origin/Development' into e2e-cross
yoeweida36 Apr 29, 2026
43bd78d
chat screen bug fixes
RanaElgharabawy Apr 29, 2026
ba9d85f
New cancellation UI
hana8-8 Apr 29, 2026
03e0935
screen fix
hana8-8 Apr 29, 2026
1b13a7d
format line
hana8-8 Apr 29, 2026
9e3e8e7
Merge pull request #137 from Rythmify/M12_Premium
BisoLab Apr 29, 2026
1eca2d1
the multiple embed avatar problem fixed
RanaElgharabawy Apr 29, 2026
bec94e5
Merge remote-tracking branch 'origin/Development' into M5_Messaging
RanaElgharabawy Apr 29, 2026
166d96c
lib/ test/
RanaElgharabawy Apr 29, 2026
730f6c4
fix(profile):solving the problem with show albums
karimwael45 Apr 29, 2026
5b53548
Merge pull request #138 from Rythmify/M5_Messaging
BisoLab Apr 29, 2026
aeeee6d
tag fetching wired , you have to pick 2 tags at least
hana8-8 Apr 29, 2026
cf51d7a
format line
hana8-8 Apr 29, 2026
0cf3ec0
Merge branch 'Development' into M13_Upload_Track
BisoLab Apr 29, 2026
94870a5
finalize track_test & update feed tests
yoeweida36 Apr 29, 2026
955cea7
added add to playlist functionality
hana8-8 Apr 29, 2026
70a5e3a
search module unit tests(not finalized yet)
sohailaahmed12 Apr 29, 2026
66fc7fb
Merge branch 'M7_Search' of https://github.com/Rythmify/cross into M7…
sohailaahmed12 Apr 29, 2026
d222b1b
format line
hana8-8 Apr 29, 2026
3e5f117
-fixed the 'now playing'
sohailaahmed12 Apr 29, 2026
99665f8
finalize feed tests (home & feed page)
yoeweida36 Apr 29, 2026
d7d0545
feat(authentication): implement Google OAuth 2.0 sign-in for Windows …
karimwael45 Apr 29, 2026
54dfc77
start station from track is now wired , shows in library
hana8-8 Apr 29, 2026
7970060
Update the library tests
yoeweida36 Apr 29, 2026
2d29941
-added an add to playlist button in feed(waiting on route)
sohailaahmed12 Apr 30, 2026
3336c06
Merge remote-tracking branch 'origin/Development' into M7_Search
sohailaahmed12 Apr 30, 2026
a1efeeb
Merge pull request #139 from Rythmify/M13_Upload_Track
BisoLab Apr 30, 2026
8c2935a
Merge branch 'Development' into M14_Playlists
BisoLab Apr 30, 2026
97d256f
Merge pull request #140 from Rythmify/M14_Playlists
BisoLab Apr 30, 2026
a2c26cb
Merge branch 'Development' into M7_Search
BisoLab Apr 30, 2026
594fd1b
Merge pull request #141 from Rythmify/M7_Search
BisoLab Apr 30, 2026
0ada02d
Merge remote-tracking branch 'origin/Development' into e2e-cross
yoeweida36 Apr 30, 2026
e4927b1
Merge remote-tracking branch 'origin/Development' into e2e-cross
yoeweida36 Apr 30, 2026
79bd8cf
Fix: fixed all merge errors
BisoLab Apr 30, 2026
01f521a
Fix: dipose the subscription
BisoLab Apr 30, 2026
e531d81
added route for add to playlist bbutton in feed
sohailaahmed12 Apr 30, 2026
4661f83
UI: minor ui updates
BisoLab Apr 30, 2026
0c4c4bd
Update playlist & library tests & add keyvalues to run the tests
yoeweida36 Apr 30, 2026
d2de45b
Update player test to new structure
yoeweida36 Apr 30, 2026
57389a0
add premium test cases
yoeweida36 Apr 30, 2026
2183186
Merge pull request #142 from Rythmify/M7_Search
BisoLab Apr 30, 2026
85fbfe9
add missingKeyValues in cross code + update premium & library test + …
yoeweida36 Apr 30, 2026
16d6027
Fix: some random bugs fixed
BisoLab Apr 30, 2026
9d65311
functional documentation was done across all playlist module
hana8-8 Apr 30, 2026
08d4b64
Fix: fixed the queue freeze
BisoLab Apr 30, 2026
3d6c30b
unit tests done
hana8-8 Apr 30, 2026
41664fb
Fix: fixed the queue locating
BisoLab Apr 30, 2026
8c45fee
finalize premium & settings modules
yoeweida36 Apr 30, 2026
d272673
fixed minor bugs
hana8-8 Apr 30, 2026
7918d44
format line
hana8-8 Apr 30, 2026
e3b399c
Fix: fixed queue mismatch problem and change position problem
BisoLab Apr 30, 2026
1a4da06
Fix: ignored all infos
BisoLab Apr 30, 2026
db9ddb9
Merge pull request #143 from Rythmify/M14_Playlists
BisoLab Apr 30, 2026
4fffefc
Merge remote-tracking branch 'origin/Development' into core
BisoLab Apr 30, 2026
5115e0a
Fix: removed import
BisoLab Apr 30, 2026
64d7a86
push notifications complete + routing to chat on tap on message push …
RanaElgharabawy Apr 30, 2026
c96408a
functonal documentation done for all premium files
hana8-8 Apr 30, 2026
5bafbd4
tests done
hana8-8 Apr 30, 2026
9e61eb7
Fix: made the profile page play the queue well
BisoLab Apr 30, 2026
6e6f1ba
format line
hana8-8 Apr 30, 2026
268fda2
feat(profile): add getAlbums method to fetch user playlists
karimwael45 Apr 30, 2026
0b72196
refactor(profile): improve code formatting and readability in various…
karimwael45 Apr 30, 2026
e9b78a8
Merge branch 'Development' into M12_Premium
BisoLab Apr 30, 2026
da14e7b
Merge branch 'Development' into CP-5-fix
karimwael45 Apr 30, 2026
bf61474
Merge pull request #144 from Rythmify/M12_Premium
BisoLab Apr 30, 2026
9dc4a27
Merge branch 'Development' into CP-5-fix
BisoLab Apr 30, 2026
f9b0a1a
Merge pull request #145 from Rythmify/CP-5-fix
BisoLab Apr 30, 2026
5f6a926
Updates on remaining modules
yoeweida36 Apr 30, 2026
2678b74
-feed module unit tests
sohailaahmed12 May 1, 2026
492396c
minor fixes
RanaElgharabawy May 1, 2026
4046020
added functional doc for feed module
sohailaahmed12 May 1, 2026
07bdd5d
finalize profile tests & update other modules
yoeweida36 May 1, 2026
8297a3a
update library nodule
yoeweida36 May 1, 2026
e0ae946
-added func doc for search module and cleaned up code comments
sohailaahmed12 May 1, 2026
8cc89db
cleaned up comments in feed module
sohailaahmed12 May 1, 2026
2e80a48
-modified logic follow button in feed
sohailaahmed12 May 1, 2026
efead21
ran formatter
sohailaahmed12 May 1, 2026
b741854
Refactor code structure for improved readability and maintainability
karimwael45 May 1, 2026
ca482eb
Refactor test code for improved readability and maintainability
karimwael45 May 1, 2026
dcf4cae
Merge branch 'Development' into M7_Search
sohailaahmed12 May 1, 2026
5c71cbe
deleted empty unit test
sohailaahmed12 May 1, 2026
dd1ee0e
Merge branch 'M7_Search' of https://github.com/Rythmify/cross into M7…
sohailaahmed12 May 1, 2026
646bb78
Merge branch 'Development' into CP-5-fix
BisoLab May 1, 2026
905b27f
Merge pull request #147 from Rythmify/CP-5-fix
BisoLab May 1, 2026
dab0084
Merge branch 'Development' into M7_Search
BisoLab May 1, 2026
d85df84
Merge pull request #148 from Rythmify/M7_Search
BisoLab May 1, 2026
b6330de
Merge remote-tracking branch 'origin/Development' into core
BisoLab May 1, 2026
47593d2
fix
BisoLab May 1, 2026
dd88bf3
Fix: removed warnings
BisoLab May 1, 2026
a2d47d2
Fix: solved the play next and last for a single track
BisoLab May 1, 2026
4f3b900
General fixes in all three modules
RanaElgharabawy May 1, 2026
92a77e6
Merge remote-tracking branch 'origin/Development' into M4_Notifications
RanaElgharabawy May 1, 2026
a4fb608
Feat: made the add to playlist to next and to last into the queue
BisoLab May 1, 2026
af1f592
Final fixes commit
BisoLab May 1, 2026
6383743
Merge pull request #149 from Rythmify/core
nourabosaif May 1, 2026
010e5ae
fixes
RanaElgharabawy May 1, 2026
8c39115
finalize library module
yoeweida36 May 1, 2026
82d2f93
Merge remote-tracking branch 'origin/Development' into M4_Notifications
RanaElgharabawy May 1, 2026
9a42b1c
Merge remote-tracking branch 'origin/Development' into e2e-cross
yoeweida36 May 1, 2026
61bedfa
Add cross-platform CD workflow and update main pipeline for integrati…
Abasy714 May 1, 2026
8ec9437
Merge branch 'Development' into devops-infra
Abasy714 May 1, 2026
4ece1c6
Update main_app_scaffold.dart
RanaElgharabawy May 1, 2026
5d223dc
lib/ test/
RanaElgharabawy May 1, 2026
f1b037a
fixes
RanaElgharabawy May 1, 2026
ba815ff
Merge pull request #153 from Rythmify/M4_Notifications
BisoLab May 1, 2026
3b480a3
message push notification redirection
RanaElgharabawy May 1, 2026
92bd5b8
finalize playlist module & update in player module
yoeweida36 May 1, 2026
deed01c
finalize player module
yoeweida36 May 1, 2026
c4c183e
Feat: added premium badge in the public profile
BisoLab May 1, 2026
08a02da
finalize authentication module
yoeweida36 May 1, 2026
57823fa
Commit for 7pm Work load
BisoLab May 1, 2026
3746f53
Commit again
BisoLab May 1, 2026
96f7c7e
Merge branch 'Development' into devops-infra
BisoLab May 1, 2026
d4d88c4
Clean code from unnecessary comments
yoeweida36 May 1, 2026
3db4a19
Merge pull request #150 from Rythmify/devops-infra
BisoLab May 1, 2026
21b15c9
Merge branch 'Development' into core
BisoLab May 1, 2026
8f89aee
Merge pull request #154 from Rythmify/core
Abasy714 May 1, 2026
67ad8cf
Feat: implemented ads feature
BisoLab May 1, 2026
63d3372
Merge branch 'core' of https://github.com/Rythmify/cross into core
BisoLab May 1, 2026
634484f
Merge remote-tracking branch 'origin/Development' into e2e-cross
yoeweida36 May 1, 2026
4c79ee8
fix(profile): inf loop
karimwael45 May 1, 2026
ab93c6f
refactor(profile): remove unnecessary blank lines in public profile page
karimwael45 May 1, 2026
3fc3a02
Merge pull request #155 from Rythmify/CP-5-fix
BisoLab May 1, 2026
8a56da2
chat fixed from profile fixed, redirection of notifications fixed
RanaElgharabawy May 1, 2026
5b15861
Fix: fixed the premium module
BisoLab May 1, 2026
8d888ba
Merge remote-tracking branch 'origin/Development' into core
BisoLab May 1, 2026
07e9e4f
unit test messaging
RanaElgharabawy May 1, 2026
3edb292
Fix: fixed features in the track bottom sheet
BisoLab May 1, 2026
3dc243e
Merge remote-tracking branch 'origin/Development' into e2e-cross
yoeweida36 May 1, 2026
3256754
Final Commit for fixing premium and ads implementing
BisoLab May 1, 2026
02ca2fd
Merge pull request #156 from Rythmify/core
Abasy714 May 1, 2026
f519968
settings fixes
RanaElgharabawy May 1, 2026
aded872
Merge remote-tracking branch 'origin/Development' into M4_Notifications
RanaElgharabawy May 1, 2026
d0dbed2
change function place
yoeweida36 May 1, 2026
d076e94
docs
RanaElgharabawy May 1, 2026
08783c2
unit test docs
RanaElgharabawy May 1, 2026
b4a68e8
lib/ test/
RanaElgharabawy May 1, 2026
3b6a737
Fix: clean Flutter project before building Android APK
Abasy714 May 1, 2026
9e8981e
Merge pull request #158 from Rythmify/devops-infra
BisoLab May 1, 2026
d5707ed
Merge branch 'Development' into M4_Notifications
BisoLab May 1, 2026
6f4832a
Update CI/CD workflow for cross-platform builds
Abasy714 May 1, 2026
b79fd78
Merge branch 'Development' into devops-infra
Abasy714 May 1, 2026
25b4f1b
Merge pull request #157 from Rythmify/M4_Notifications
BisoLab May 1, 2026
f9cdd91
Merge branch 'Development' into devops-infra
Abasy714 May 1, 2026
50e4fe9
Merge pull request #159 from Rythmify/devops-infra
Abasy714 May 1, 2026
7c7b3ce
Feat: implemented offline playing
BisoLab May 1, 2026
1039332
Fix: fixed the downloads
BisoLab May 1, 2026
e94b0de
Feat: added a placeholder for home page if there is no internet
BisoLab May 1, 2026
be9c369
Merge remote-tracking branch 'origin/Development' into core
BisoLab May 1, 2026
77c26ab
Fix: fixed all the upload track
BisoLab May 2, 2026
d2734ce
Feat: implemented the geo restirction for tracks
BisoLab May 2, 2026
203ae12
Final commit for today ;((
BisoLab May 2, 2026
29ecca6
Merge pull request #160 from Rythmify/core
Abasy714 May 2, 2026
68ae231
fix: some randoms
BisoLab May 2, 2026
6fc084c
lib/ test/
RanaElgharabawy May 2, 2026
fba8dc3
Merge branch 'M4_Notifications' of https://github.com/Rythmify/cross …
RanaElgharabawy May 2, 2026
734d494
Merge remote-tracking branch 'origin/Development' into M4_Notifications
RanaElgharabawy May 2, 2026
68d76ae
Update home_screen.dart
RanaElgharabawy May 2, 2026
eace76b
-added track filtering in following feed
sohailaahmed12 May 2, 2026
f8c014e
lib/ test/
RanaElgharabawy May 2, 2026
8aa1052
pagination probelm fixed
hana8-8 May 2, 2026
c905b94
lib/ test/
RanaElgharabawy May 2, 2026
4b3637c
format line
hana8-8 May 2, 2026
ea9d367
-added track filtering in feed
sohailaahmed12 May 2, 2026
1d8bd50
Merge pull request #162 from Rythmify/M4_Notifications
BisoLab May 2, 2026
9e5a762
Merge branch 'Development' into M14_Playlists
BisoLab May 2, 2026
b5c2097
Merge pull request #163 from Rythmify/M14_Playlists
BisoLab May 2, 2026
3349dba
Merge branch 'Development' into M7_Search
BisoLab May 2, 2026
73c1b17
Merge pull request #164 from Rythmify/M7_Search
BisoLab May 2, 2026
1e8dae5
Merge remote-tracking branch 'origin/Development' into core
BisoLab May 2, 2026
2ee40da
Fix: fixed minor infos
BisoLab May 2, 2026
eba7c4d
Add a test case that goes through the main user scenarios
yoeweida36 May 2, 2026
018db98
Fix: fixed all interactions in the app
BisoLab May 2, 2026
6f8c6c6
Fix: fixed some ui glitches
BisoLab May 2, 2026
63510d5
Fix: Some UI fixes
BisoLab May 2, 2026
057159b
Fix: fixed the cancellation
BisoLab May 2, 2026
bd88e0b
format
BisoLab May 2, 2026
ddc4865
Merge pull request #165 from Rythmify/core
BisoLab May 2, 2026
47f17b2
Fix: fixed the share modal
BisoLab May 2, 2026
716852d
update on the main flow
yoeweida36 May 2, 2026
e3a4f61
Merge remote-tracking branch 'origin/Development' into e2e-cross
yoeweida36 May 2, 2026
b20031d
Fix: some profile ui bugs
BisoLab May 2, 2026
305011e
Fix: fixed station playback
BisoLab May 2, 2026
2c400d3
Fix: fixed the infinite play
BisoLab May 2, 2026
0eeff42
UI: modified some of the insights content and made the comment refresh
BisoLab May 2, 2026
3de40ca
Feat: implemented delete from downloads feature
BisoLab May 2, 2026
da171fc
update on the main flow
yoeweida36 May 3, 2026
367344d
Fix: made the report semi work (works for tracks copyright only now)
BisoLab May 3, 2026
046f07d
Semi Final commit for this night
BisoLab May 3, 2026
1a9e936
Merge branch 'Development' into core
BisoLab May 3, 2026
6848ffa
Merge pull request #166 from Rythmify/core
Abasy714 May 3, 2026
e3a8a11
Merge remote-tracking branch 'origin/Development' into e2e-cross
yoeweida36 May 3, 2026
8d93e4a
Feat: implemented the geo region on track card
BisoLab May 3, 2026
3bbd868
All Features Done ;)
BisoLab May 3, 2026
8ea5ac9
final update on main_flow, change the scenario of creating a playlist
yoeweida36 May 3, 2026
6128a34
Updates to request PR
yoeweida36 May 3, 2026
fbff5b8
Test: Made unit testing for the player
BisoLab May 3, 2026
5382312
Merge branch 'Development' into core
BisoLab May 3, 2026
7a5e9d9
Merge pull request #167 from Rythmify/e2e-cross
BisoLab May 3, 2026
34115c2
Merge remote-tracking branch 'origin/Development' into core
BisoLab May 3, 2026
eca82b8
Merge branch 'core' of https://github.com/Rythmify/cross into core
BisoLab May 3, 2026
1863157
Merge pull request #169 from Rythmify/core
Abasy714 May 3, 2026
1ce88c7
Inject dependencies for upload and playlist tests
Abasy714 May 3, 2026
4e2e25a
Merge pull request #170 from Rythmify/track/Unit-Tests
BisoLab May 3, 2026
8b25143
last min problems fixed
RanaElgharabawy May 3, 2026
eeed125
Merge remote-tracking branch 'origin/Development' into M4_Notifications
RanaElgharabawy May 3, 2026
cd61ae3
tests fixed
RanaElgharabawy May 3, 2026
5fdd99e
lib test
RanaElgharabawy May 3, 2026
07a3928
Merge pull request #172 from Rythmify/M4_Notifications
BisoLab May 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
150 changes: 150 additions & 0 deletions .github/workflows/cross-cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
name: Cross-Platform — CD Release

on:
push:
tags:
- "v*"
workflow_dispatch:
inputs:
version:
description: "Version tag for this release (e.g. v1.0.0)"
required: true

jobs:
# JOB 1 — Build Android release APK
build-android-apk:
name: Build Android APK
runs-on: ubuntu-latest

steps:
- name: Checkout cross-platform repo
uses: actions/checkout@v4

- name: Set up Java 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"

- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.41.4"
channel: stable
cache: true

- name: Clean Flutter project
run: flutter clean

- name: Install dependencies
run: flutter pub get

- name: Build Android release APK
run: flutter build apk --release --no-shrink

- name: Confirm APK was produced
run: |
test -f build/app/outputs/flutter-apk/app-release.apk || \
{ echo "Release APK not found — build may have silently failed."; exit 1; }
echo "Android release APK produced successfully."

- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: android-release-apk
path: build/app/outputs/flutter-apk/app-release.apk
retention-days: 1

# JOB 2 — Build Windows executable (must run on windows-latest)
build-windows-exe:
name: Build Windows Executable
runs-on: windows-latest

steps:
- name: Checkout cross-platform repo
uses: actions/checkout@v4

- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.41.4"
channel: stable
cache: true

- name: Enable Windows desktop support
run: flutter config --enable-windows-desktop

- name: Install dependencies
run: flutter pub get

- name: Build Windows release
run: flutter build windows --release --no-pub

- name: Zip Windows release folder
run: |
Compress-Archive -Path "build\windows\x64\runner\Release\*" -DestinationPath "rythmify-windows.zip"

- name: Confirm zip was produced
run: |
if (-not (Test-Path "rythmify-windows.zip")) {
Write-Error "rythmify-windows.zip not found — build may have silently failed."
exit 1
}
Write-Host "Windows release zip produced successfully."

- name: Upload Windows artifact
uses: actions/upload-artifact@v4
with:
name: windows-release-zip
path: rythmify-windows.zip
retention-days: 1

# JOB 3 — Create GitHub Release with permanent download URLs
create-release:
name: Create GitHub Release
runs-on: ubuntu-latest
needs: [build-android-apk, build-windows-exe]

steps:
- name: Determine release version
id: version
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "tag=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
else
echo "tag=${{ github.ref_name }}" >> $GITHUB_OUTPUT
fi

- name: Download Android APK artifact
uses: actions/download-artifact@v4
with:
name: android-release-apk
path: android-release-apk

- name: Download Windows zip artifact
uses: actions/download-artifact@v4
with:
name: windows-release-zip
path: windows-release-zip

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.version.outputs.tag }}
name: "Rythmify ${{ steps.version.outputs.tag }}"
body: |
## Rythmify ${{ steps.version.outputs.tag }}

### Downloads
- **Android APK** — Install on your Android device
- **Windows Desktop** — Extract the zip and run `rythmify.exe`

### What's New
See the [changelog](https://github.com/Rythmify/cross/blob/main/CHANGELOG.md) for details.
files: |
android-release-apk/app-release.apk
windows-release-zip/rythmify-windows.zip
draft: false
prerelease: ${{ contains(steps.version.outputs.tag, 'beta') || contains(steps.version.outputs.tag, 'alpha') }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
125 changes: 125 additions & 0 deletions .github/workflows/cross-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
name: Cross-Platform — Dev Pipeline

on:
pull_request:
branches:
- Development

jobs:
# JOB 1 — Validate repo structure
validate-structure:
name: Validate Repo Structure
runs-on: ubuntu-latest

steps:
- name: Checkout cross-platform repo
uses: actions/checkout@v4

- name: Check pubspec files exist
run: |
test -f pubspec.yaml || { echo "MISSING: pubspec.yaml"; exit 1; }
test -f pubspec.lock || { echo "MISSING: pubspec.lock"; exit 1; }
echo "pubspec files present."

- name: Check analysis options exist
run: |
test -f analysis_options.yaml || { echo "MISSING: analysis_options.yaml"; exit 1; }
echo "analysis_options.yaml present."

- name: Check main entry point exists
run: |
test -f lib/main.dart || { echo "MISSING: lib/main.dart"; exit 1; }
echo "lib/main.dart present."

- name: Check core structure exists
run: |
test -d lib/core || { echo "MISSING: lib/core/"; exit 1; }
test -d lib/features || { echo "MISSING: lib/features/"; exit 1; }
test -f lib/core/network/api_client.dart || { echo "MISSING: lib/core/network/api_client.dart"; exit 1; }
test -f lib/core/routing/app_router.dart || { echo "MISSING: lib/core/routing/app_router.dart"; exit 1; }
echo "Core structure present."

- name: Check no hardcoded base URLs in API client
run: |
echo "Scanning api_client.dart for hardcoded URLs..."
if grep -qE "http://[0-9]|https://[a-zA-Z0-9]" lib/core/network/api_client.dart; then
echo "WARNING: Possible hardcoded URL found in api_client.dart"
grep -nE "http://[0-9]|https://[a-zA-Z0-9]" lib/core/network/api_client.dart || true
else
echo "No hardcoded URLs detected in api_client.dart."
fi

# JOB 2 — Flutter analysis and format check
analyze:
name: Format Check & Static Analysis
runs-on: ubuntu-latest
needs: validate-structure

steps:
- name: Checkout cross-platform repo
uses: actions/checkout@v4

- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.41.4"
channel: stable
cache: true

- name: Install dependencies
run: flutter pub get

- name: Verify dependency resolution
run: |
flutter pub deps > /dev/null && echo "Dependencies resolved cleanly." || \
{ echo "Dependency resolution failed."; exit 1; }

- name: Run Dart format check
run: |
dart format --output=none --set-exit-if-changed lib/ test/ || \
{ echo "Format check failed — run 'dart format lib/ test/' locally to fix."; exit 1; }

- name: Run Flutter analyze
run: flutter analyze --no-fatal-infos --no-fatal-warnings

# JOB 3 — Android debug build
build-android:
name: Android Debug Build
runs-on: ubuntu-latest
needs: analyze

steps:
- name: Checkout cross-platform repo
uses: actions/checkout@v4

- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.41.4"
channel: stable
cache: true

- name: Set up Java (required for Android build)
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"

- name: Install dependencies
run: flutter pub get

- name: Build Android debug APK
run: flutter build apk --debug --no-pub

- name: Confirm APK was produced
run: |
test -f build/app/outputs/flutter-apk/app-debug.apk || \
{ echo "APK not found — build may have silently failed."; exit 1; }
echo "Android debug APK produced successfully."

- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: android-debug-apk
path: build/app/outputs/flutter-apk/app-debug.apk
retention-days: 7
Loading
Loading