Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
94b02a0
feat: enhance artist detail page with categorized album carousels, ci…
beeetfarmer Feb 15, 2026
0ee7e2e
chore: commit local changes before merging main
beeetfarmer Feb 15, 2026
4a93416
merge latest upstream changes from main
beeetfarmer Feb 15, 2026
b011920
ui: implement pill-shaped navigation dock, modern card-based settings…
beeetfarmer Feb 15, 2026
d7a8ba1
feat: circular artist images, player visibility fixes, and scrobble t…
beeetfarmer Feb 15, 2026
cd9b676
ui: adjust title and artist layout and update to Java 17
beeetfarmer Feb 16, 2026
9ba729a
feat: implement dynamic and configurable now playing metadata
beeetfarmer Feb 16, 2026
8004078
feat: add searchable playlist chooser and direct add button in player
beeetfarmer Feb 16, 2026
94fe1ff
feat: implement sequential play next and fix mini player crash
beeetfarmer Feb 16, 2026
a23fb52
feat: add reorganizable History section to home screen
beeetfarmer Feb 16, 2026
54bcde1
merge: sync ng-changes into ui-changes
beeetfarmer Feb 16, 2026
a5b96d7
feat: add recently played and top played sections for artists and son…
beeetfarmer Feb 16, 2026
79a5db0
feat: implement playlist pinning with persistent storage and improved…
beeetfarmer Feb 16, 2026
7346e8d
feat: implement multi-playlist selection and consolidated feedback in…
beeetfarmer Feb 16, 2026
2f303c4
feat: implement real-time playlist synchronization across Home and Pl…
beeetfarmer Feb 16, 2026
96b7a61
feat: show global star ratings and optimize playlist/UI sync
beeetfarmer Feb 16, 2026
e625313
feat: implement track removal from playlists with real-time UI updates
beeetfarmer Feb 16, 2026
f88e14e
feat: add Last.fm scrobble count to now-playing metadata
beeetfarmer Feb 16, 2026
6c8be7c
feat: add client-side sort options to playlist pages
beeetfarmer Feb 16, 2026
9ad9f4a
feat: redesign settings screen with pill-tab navigation
beeetfarmer Feb 16, 2026
8bcc545
UI: hide search icon in toolbar as it is now in the navigation dock
beeetfarmer Feb 16, 2026
8bcd3fe
feat: implement offline scrobble syncing with original timestamps
beeetfarmer Feb 17, 2026
16e15a0
feat: propagate favorite, rating, and play count changes across the app
beeetfarmer Feb 17, 2026
12ae6b0
UI: remove toolbar overflow menu from Library/Downloads, add Track In…
beeetfarmer Feb 17, 2026
1ea7cc9
security: harden credentials storage, logging, network config, and build
beeetfarmer Feb 17, 2026
b646362
perf: fix scroll choppiness and reduce per-item bind cost in SongHori…
beeetfarmer Feb 17, 2026
4d03786
chore: remove GitHub Actions release workflow, add keystore to gitignore
beeetfarmer Feb 18, 2026
0a86a8d
chore: remove screenshots from tracking, update gitignore
beeetfarmer Feb 18, 2026
f70e3d3
fix home startup loading and bump version to 0.1.1
beeetfarmer Feb 19, 2026
4332d75
Fix album page to use single unified scroll behavior
beeetfarmer Feb 19, 2026
e333c46
Bump version to 0.1.2 and reduce starred cover load stalls
beeetfarmer Feb 19, 2026
92c80af
Refresh home last-played albums on scrobble events
beeetfarmer Feb 19, 2026
3d93816
Fix Last.fm API key persistence and ignore build artifacts
beeetfarmer Mar 2, 2026
1973a9e
Ignore and untrack changes.md
beeetfarmer Mar 2, 2026
d7a8be2
Bump app version to 0.1.3
beeetfarmer Mar 2, 2026
0ccd5d4
feat: rebrand app to Rollynn and refine player UI
beeetfarmer Mar 15, 2026
e176da0
fix: align player theming with accent and dark/light rules
beeetfarmer Mar 15, 2026
68fdf5c
feat(ui): polish player layout and stabilize home sections
beeetfarmer Mar 15, 2026
82d7a9e
feat(player): add LRCLIB lyrics source switching and refine metadata …
beeetfarmer Mar 15, 2026
92fa9ea
Fix artist image loading reliability by relaxing Glide fetch policy
beeetfarmer Mar 15, 2026
8e2f702
Fix landscape player stability and enforce portrait orientation
beeetfarmer Mar 15, 2026
e7e877e
ci: add CodeQL workflow for Android code scanning
beeetfarmer Mar 15, 2026
904db8d
ci: rerun codeql after disabling default setup
beeetfarmer Mar 15, 2026
0e9c908
ci: trigger fresh CodeQL scan
beeetfarmer Mar 15, 2026
e03937c
docs: update README with fork changes and add screenshots
beeetfarmer Mar 15, 2026
a45df6a
docs: replace Tempus header logo with Rollynn title
beeetfarmer Mar 15, 2026
a1eb77d
feat(scrobbling): sync queued scrobbles on connectivity restore
beeetfarmer Mar 17, 2026
a880bcf
chore(release): bump app version to v0.2.1
beeetfarmer Mar 17, 2026
2264d70
merge(branch): integrate v0.2.1 into ng-changes
beeetfarmer Mar 17, 2026
8d98ea6
Merge remote-tracking branch 'official/main' into ng-changes
TrackArcher Mar 29, 2026
6f17a03
some stuff
TrackArcher Mar 29, 2026
77b0a31
Merge remote-tracking branch 'Elzify/main' into ng-changes
TrackArcher Mar 29, 2026
2027237
some stuff
TrackArcher Mar 29, 2026
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
49 changes: 49 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: "CodeQL"

on:
push:
branches:
- main
- ng-changes
- v0.2.0
pull_request:
branches:
- main
schedule:
- cron: "22 4 * * 1"

jobs:
analyze:
name: Analyze (${{ matrix.language }})
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language:
- java-kotlin

steps:
- name: Checkout repository
uses: actions/checkout@v4

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

- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: manual

- name: Build app (degoogled debug)
run: ./gradlew :app:assembleDegoogledDebug --no-daemon

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
129 changes: 0 additions & 129 deletions .github/workflows/github_release.yml

This file was deleted.

7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,12 @@
.vscode/settings.json
# release / debug files
tempus-release-key.jks
*.keystore
*.jks
app/tempus/
app/degoogled/
/release-apks/
*.apk
*.aab

/changes.md
15 changes: 8 additions & 7 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ android {
minSdkVersion 24
targetSdk 35

versionCode 24
versionName '4.13.0'
versionCode 25
versionName 'v0.2.1'
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'

javaCompileOptions {
Expand Down Expand Up @@ -68,12 +68,12 @@ android {
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}

kotlinOptions {
jvmTarget = "1.8"
jvmTarget = "17"
}

buildFeatures {
Expand All @@ -88,6 +88,7 @@ dependencies {
implementation files('../libs/lib-decoder-ffmpeg-release.aar')

// AndroidX
implementation 'androidx.security:security-crypto:1.1.0-alpha06'
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0'
implementation 'androidx.preference:preference-ktx:1.2.1'
Expand All @@ -97,7 +98,7 @@ dependencies {
implementation 'androidx.room:room-runtime:2.6.1'
implementation 'androidx.core:core-splashscreen:1.0.1'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0"
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.2.0'

// Android Material
implementation 'com.google.android.material:material:1.10.0'
Expand All @@ -120,7 +121,7 @@ dependencies {

// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.11.0'
implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.14'
implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'
implementation 'com.squareup.retrofit2:converter-gson:2.11.0'
}
java {
Expand Down
17 changes: 15 additions & 2 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,24 @@

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-renamesourcefileattribute SourceFile

-keepattributes SourceFile, LineNumberTable
-keep public class * extends java.lang.Exception
-keep class retrofit2.** { *; }

-keep class **.reflect.TypeToken { *; }
-keep class * extends **.reflect.TypeToken
-keep class * extends **.reflect.TypeToken

-keep class com.google.crypto.tink.** { *; }
-keep class androidx.security.crypto.** { *; }

-dontwarn com.google.api.client.http.GenericUrl
-dontwarn com.google.api.client.http.HttpHeaders
-dontwarn com.google.api.client.http.HttpRequest
-dontwarn com.google.api.client.http.HttpRequestFactory
-dontwarn com.google.api.client.http.HttpResponse
-dontwarn com.google.api.client.http.HttpTransport
-dontwarn com.google.api.client.http.javanet.NetHttpTransport$Builder
-dontwarn com.google.api.client.http.javanet.NetHttpTransport
-dontwarn org.joda.time.Instant
20 changes: 10 additions & 10 deletions app/schemas/com.cappielloantonio.tempo.database.AppDatabase/14.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"formatVersion": 1,
"database": {
"version": 14,
"identityHash": "42299b5bbc21c4c7c83eea7dc5ca5f66",
"identityHash": "5df6007016fbf8aac8b69173ee7f7c6e",
"entities": [
{
"tableName": "queue",
Expand Down Expand Up @@ -242,7 +242,7 @@
},
{
"tableName": "server",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `local_address` TEXT, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, `client_cert` TEXT, PRIMARY KEY(`id`))",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `server_name` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `address` TEXT NOT NULL, `local_address` TEXT, `timestamp` INTEGER NOT NULL, `low_security` INTEGER NOT NULL DEFAULT false, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "serverId",
Expand Down Expand Up @@ -292,12 +292,6 @@
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "false"
},
{
"fieldPath": "clientCert",
"columnName": "client_cert",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
Expand Down Expand Up @@ -1068,7 +1062,7 @@
},
{
"tableName": "playlist",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `name` TEXT, `duration` INTEGER NOT NULL, `coverArt` TEXT, PRIMARY KEY(`id`))",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `name` TEXT, `duration` INTEGER NOT NULL, `songCount` INTEGER NOT NULL, `coverArt` TEXT, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
Expand All @@ -1088,6 +1082,12 @@
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "songCount",
"columnName": "songCount",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "coverArtId",
"columnName": "coverArt",
Expand Down Expand Up @@ -1158,7 +1158,7 @@
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '42299b5bbc21c4c7c83eea7dc5ca5f66')"
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '5df6007016fbf8aac8b69173ee7f7c6e')"
]
}
}
Loading
Loading