You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rebranded from ArchiveTune to Solstice. Modified package name to urstark.solstice. Updated icons to Solar Icons. Maintained copyright notices for original author Rukamori as per GPLv3.
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# 🛠️ Engineering & Build Guide
2
2
3
-
This document defines the protocols for setting up the development environment, understanding the underlying technology stack, and compiling **ArchiveTune** from the source.
3
+
This document defines the protocols for setting up the development environment, understanding the underlying technology stack, and compiling **Solstice** from the source.
4
4
5
5
---
6
6
@@ -17,7 +17,7 @@ To ensure build stability and environment parity, the following hardware and sof
17
17
18
18
### **Technical DNA (Skill Requirements)**
19
19
20
-
The ArchiveTune codebase is built on a modern, reactive architecture. Contributors are expected to have a high level of familiarity with:
20
+
The Solstice codebase is built on a modern, reactive architecture. Contributors are expected to have a high level of familiarity with:
21
21
22
22
***Kotlin (Advanced):** Proficiency in Coroutines, Flow API, and functional paradigms.
23
23
***Jetpack Compose:** Understanding of State Hoisting, Recomposition optimization, and Material 3 design systems.
@@ -28,7 +28,7 @@ The ArchiveTune codebase is built on a modern, reactive architecture. Contributo
28
28
29
29
## 📐 Architectural Manifesto
30
30
31
-
ArchiveTune follows a strict **Clean Architecture** approach. This separation of concerns ensures that the audio engine remains independent of the UI layer.
31
+
Solstice follows a strict **Clean Architecture** approach. This separation of concerns ensures that the audio engine remains independent of the UI layer.
32
32
33
33
1.**UI Layer (Compose):** Handles user interactions and renders state emitted by ViewModels.
34
34
2.**Domain Layer:** Contains business logic, Use Cases, and high-level audio processing interfaces.
@@ -41,14 +41,14 @@ ArchiveTune follows a strict **Clean Architecture** approach. This separation of
ArchiveTune uses a modular properties system. If your build requires specific API keys (e.g., Discord Client IDs), define them in your `local.properties`:
51
+
Solstice uses a modular properties system. If your build requires specific API keys (e.g., Discord Client IDs), define them in your `local.properties`:
52
52
```properties
53
53
# Path to your Android SDK
54
54
sdk.dir=/Users/yourname/Library/Android/sdk
@@ -96,5 +96,5 @@ Before initiating a Pull Request, every contributor must run the following quali
96
96
---
97
97
98
98
<divalign="center">
99
-
<sub>ArchiveTune: Engineering audio freedom. Part of the <strong>Koiverse</strong> ecosystem.</sub>
99
+
<sub>Solstice: Engineering audio freedom. Part of the <strong>Koiverse</strong> ecosystem.</sub>
Copy file name to clipboardExpand all lines: PRIVACY.md
+17-17Lines changed: 17 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,18 +1,18 @@
1
-
# ArchiveTune Privacy Notice
1
+
# Solstice Privacy Notice
2
2
3
3
Last updated: 2026-04-20
4
4
5
5
## Scope
6
6
7
-
This notice covers the Android ArchiveTune app in this repository. It explains what the app stores on your device, what it can send to external services when you use specific features, and what Android permissions it requests.
7
+
This notice covers the Android Solstice app in this repository. It explains what the app stores on your device, what it can send to external services when you use specific features, and what Android permissions it requests.
8
8
9
-
This notice is based on the current source code and build configuration. It does not replace the privacy terms of YouTube or YouTube Music, Last.fm, ListenBrainz, Discord, GitHub, lyrics providers, the ArchiveTune canvas service, or any Together server you choose to use.
9
+
This notice is based on the current source code and build configuration. It does not replace the privacy terms of YouTube or YouTube Music, Last.fm, ListenBrainz, Discord, GitHub, lyrics providers, the Solstice canvas service, or any Together server you choose to use.
10
10
11
11
## Privacy Summary
12
12
13
13
- Most core app data is stored locally on your device.
14
-
-ArchiveTune does not secretly harvest, sell, or broker your personal data.
15
-
-ArchiveTune does not silently send your data to unrelated third-party services.
14
+
-Solstice does not secretly harvest, sell, or broker your personal data.
15
+
-Solstice does not silently send your data to unrelated third-party services.
16
16
- Optional network features send only the data needed to provide those features.
17
17
- If data leaves your device, it is because you used a specific online feature or integration that requires that transfer.
18
18
- Android backup and device-transfer features may copy part of the app's local data unless excluded by the app's backup rules.
@@ -36,13 +36,13 @@ The app stores data locally to provide playback, library, search, lyrics, sync,
36
36
37
37
## Data the App May Send Off Your Device
38
38
39
-
ArchiveTune does not silently forward your data to unrelated services. It only contacts external services when you use online features, and the exact payload depends on the feature you use and how you configure it.
39
+
Solstice does not silently forward your data to unrelated services. It only contacts external services when you use online features, and the exact payload depends on the feature you use and how you configure it.
40
40
41
41
| Service or feature | Data that may be sent | When it happens |
42
42
| --- | --- | --- |
43
43
| YouTube or YouTube Music | Search terms, media playback requests, library or playlist requests, and signed-in session values such as visitor data, sync identifiers, cookies, or token values | When you browse, stream, sync, or sign in |
44
44
| Lyrics providers | Song title, artist name, album identifiers, or similar lookup data needed to fetch lyrics | When lyrics features are enabled or lyrics are requested |
45
-
|ArchiveTune canvas service | Song and artist names, album ID, or album URL, plus a bearer token if configured in the app build | When canvas or artwork lookup features are used |
45
+
|Solstice canvas service | Song and artist names, album ID, or album URL, plus a bearer token if configured in the app build | When canvas or artwork lookup features are used |
46
46
| Last.fm | Now playing and scrobble metadata, plus your Last.fm session information | When Last.fm scrobbling is enabled |
47
47
| ListenBrainz | Playback history or scrobble metadata and your ListenBrainz token | When ListenBrainz sync is enabled |
48
48
| Discord Rich Presence | Current track, artist, album, images, configured URLs or labels for presence cards, and Discord OAuth tokens required by the official Social SDK | When Discord Rich Presence is enabled |
@@ -70,7 +70,7 @@ If you deny a permission, the related feature may stop working or provide reduce
70
70
71
71
## Backups, Device Transfer, and Local Retention
72
72
73
-
ArchiveTune currently enables Android backup support. The backup and data-transfer rules exclude some cache and download paths, including the ExoPlayer cache, the download directory, and `exoplayer_internal.db`. Other app data, including local database content and app preferences, may still be included in Android cloud backup or device transfer depending on your Android settings and device behavior.
73
+
Solstice currently enables Android backup support. The backup and data-transfer rules exclude some cache and download paths, including the ExoPlayer cache, the download directory, and `exoplayer_internal.db`. Other app data, including local database content and app preferences, may still be included in Android cloud backup or device transfer depending on your Android settings and device behavior.
74
74
75
75
The app also provides a manual backup feature that creates a ZIP archive containing app settings and database files. This is a user-triggered export action.
76
76
@@ -107,14 +107,14 @@ You can control a significant amount of privacy-related behavior from the app an
107
107
108
108
## Changes to This Notice
109
109
110
-
This file should be reviewed whenever ArchiveTune changes its permissions, storage model, external integrations, backup behavior, or network architecture.
110
+
This file should be reviewed whenever Solstice changes its permissions, storage model, external integrations, backup behavior, or network architecture.
111
111
112
112
## Project Contact
113
113
114
114
For questions or corrections, use the project repository and issue tracker.
@@ -123,12 +123,12 @@ This appendix maps the main statements above to concrete implementation surfaces
123
123
| Topic | What the code shows | Main files |
124
124
| --- | --- | --- |
125
125
| Permissions and backup behavior | The manifest declares network, media, microphone, Bluetooth, notification, boot, wake-lock, and foreground-service permissions. It also enables backup, cleartext traffic, and audio playback capture. Separate XML files exclude selected caches and internal playback database files from Android backup and device transfer. |`app/src/main/AndroidManifest.xml`, `app/src/main/res/xml/data_extraction_rules.xml`, `app/src/main/res/xml/backup_rules.xml`|
126
-
| Local database contents | The Room schema includes songs, artists, albums, playlists, search history, lyrics, audio format metadata, and playback event records. |`app/schemas/moe.rukamori.archivetune.db.InternalDatabase/9.json`|
127
-
| Settings and tokens stored locally | DataStore preference keys include UI settings, proxy settings, history toggles, Together values, YouTube session values, account name or email fields, Last.fm session values, ListenBrainz token values, Discord values, and update-cache keys. |`app/src/main/kotlin/moe/archivetuneapp/archivetune/constants/PreferenceKeys.kt`|
128
-
| YouTube signed-in state | The Innertube layer exposes visitor data, data sync ID, cookie, PO token values, proxy state, and login-for-browse behavior as part of the current playback auth state. |`innertube/src/main/kotlin/moe/archivetuneapp/archivetune/innertube/YouTube.kt`|
129
-
| Manual backup export | The backup view model writes app settings plus database files into a ZIP archive chosen by the user. |`app/src/main/kotlin/moe/archivetuneapp/archivetune/viewmodels/BackupRestoreViewModel.kt`|
130
-
| External network integrations | Build configuration defines keys for Last.fm, Together, and canvas services. The updater fetches release information and caches related metadata in app preferences. |`app/build.gradle.kts`, `app/src/main/kotlin/moe/archivetuneapp/archivetune/utils/Updater.kt`|
131
-
| Canvas service requests | The canvas module sends song and artist names, album IDs, or album URLs to `https://artwork-archivetune.koiiverse.cloud/` and can attach a bearer token. |`canvas/src/main/kotlin/moe/archivetuneapp/archivetune/canvas/ArchiveTuneCanvas.kt`|
126
+
| Local database contents | The Room schema includes songs, artists, albums, playlists, search history, lyrics, audio format metadata, and playback event records. |`app/schemas/urstark.solstice.db.InternalDatabase/9.json`|
127
+
| Settings and tokens stored locally | DataStore preference keys include UI settings, proxy settings, history toggles, Together values, YouTube session values, account name or email fields, Last.fm session values, ListenBrainz token values, Discord values, and update-cache keys. |`app/src/main/kotlin/moe/solsticeapp/solstice/constants/PreferenceKeys.kt`|
128
+
| YouTube signed-in state | The Innertube layer exposes visitor data, data sync ID, cookie, PO token values, proxy state, and login-for-browse behavior as part of the current playback auth state. |`innertube/src/main/kotlin/moe/solsticeapp/solstice/innertube/YouTube.kt`|
129
+
| Manual backup export | The backup view model writes app settings plus database files into a ZIP archive chosen by the user. |`app/src/main/kotlin/moe/solsticeapp/solstice/viewmodels/BackupRestoreViewModel.kt`|
130
+
| External network integrations | Build configuration defines keys for Last.fm, Together, and canvas services. The updater fetches release information and caches related metadata in app preferences. |`app/build.gradle.kts`, `app/src/main/kotlin/moe/solsticeapp/solstice/utils/Updater.kt`|
131
+
| Canvas service requests | The canvas module sends song and artist names, album IDs, or album URLs to `https://artwork-solstice.koiiverse.cloud/` and can attach a bearer token. |`canvas/src/main/kotlin/moe/solsticeapp/solstice/canvas/SolsticeCanvas.kt`|
132
132
| Public feature claims | The repository README and store metadata describe privacy, YouTube integration, lyrics, music recognition, Last.fm, ListenBrainz, Discord Rich Presence, and other network-backed features that must stay aligned with this notice. |`README.md`, `fastlane/metadata/android/en-US/full_description.txt`|
133
133
| Current dependency posture | The current Android dependency declarations show Compose, Room, Hilt, Ktor, Media3, Coil, Timber, and related libraries. They do not currently show Firebase, Crashlytics, Sentry, mobile ad SDKs, or mobile analytics SDKs in the Android app dependency definitions reviewed for this notice. |`app/build.gradle.kts`, `gradle/libs.versions.toml`|
0 commit comments