SubSonicSter 2.2.1 - redistribution notices Original developer: langhaarschneider Source: https://codeberg.org/langhaarschneider/SubSonicSter Project license declared by F-Droid: MIT Corresponding source: subsonicster-2.2.1-source.tar.gz APK redistributed without modification. Store media is normalized without cropping. FILE: rocks.langhaarschneider.subsonicster_12_src.tar.gz/LICENSE SubSonicSter is dual-licensed under the following licenses: 1. Beerware License (Revision 42) - See LICENSE.beerware 2. MIT License - See LICENSE.mit You may choose to use this software under either license, whichever suits your needs best. For F-Droid and other distributions that require OSI/FSF-approved licenses, please use the MIT License. For more information about both licenses, see the individual license files. --- BEERWARE LICENSE (Revision 42) See LICENSE.beerware for full text. In short: You can do whatever you want with this software. If we meet some day and you think this is worth it, you can buy me a beer in return. --- MIT LICENSE See LICENSE.mit for full text. In short: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, subject to the condition that the above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. FILE: rocks.langhaarschneider.subsonicster_12_src.tar.gz/LICENSE.mit MIT License Copyright (c) 2026 langhaarschneider Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. FILE: rocks.langhaarschneider.subsonicster_12_src.tar.gz/LICENSE.beerware /* * ---------------------------------------------------------------------------- * "THE BEER-WARE LICENSE" (Revision 42): * wrote this file. As long as you retain this notice you * can do whatever you want with this stuff. If we meet some day, and you think * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- */ FILE: rocks.langhaarschneider.subsonicster_12_src.tar.gz/LICENSES_THIRD_PARTY.md # Third-Party Licenses This application uses the following open-source libraries. All licenses are compatible with the Beerware License used for this application. **SubSonicSter version:** 2.2.0 (license list last reviewed for this release, 2026-04-10) --- ## Apache License 2.0 The following libraries are licensed under the Apache License, Version 2.0: ### AndroidX Libraries - **androidx.core:core-ktx** (1.15.0) - **androidx.lifecycle:lifecycle-runtime-ktx** (2.8.7) - **androidx.lifecycle:lifecycle-viewmodel-compose** (2.8.7) - **androidx.activity:activity-compose** (1.9.3) - **androidx.compose.ui:ui** (2024.12.01) - **androidx.compose.ui:ui-graphics** (2024.12.01) - **androidx.compose.ui:ui-tooling-preview** (2024.12.01) - **androidx.compose.material3:material3** (1.3.1) - **androidx.navigation:navigation-compose** (2.8.5) - **androidx.datastore:datastore-preferences** (1.1.1) - Copyright: The Android Open Source Project - License: Apache License 2.0 - https://source.android.com/license ### Dependency Injection - **com.google.dagger:hilt-android** (2.51.1) - **androidx.hilt:hilt-navigation-compose** (1.2.0) - Copyright: Google Inc. - License: Apache License 2.0 - https://github.com/google/dagger ### Networking - **com.squareup.retrofit2:retrofit** (2.11.0) - **com.squareup.retrofit2:converter-gson** (2.11.0) - **com.squareup.okhttp3:okhttp** (4.12.0) - Copyright: Square, Inc. - License: Apache License 2.0 - https://square.github.io/retrofit/ - https://square.github.io/okhttp/ ### JSON Parsing - **com.google.code.gson:gson** (2.10.1) - Copyright: Google Inc. - License: Apache License 2.0 - https://github.com/google/gson ### Coroutines - **org.jetbrains.kotlinx:kotlinx-coroutines-core** (1.8.0) - **org.jetbrains.kotlinx:kotlinx-coroutines-android** (1.8.0) - Copyright: JetBrains s.r.o. - License: Apache License 2.0 - https://github.com/Kotlin/kotlinx.coroutines ### Media Playback - **androidx.media3:media3-exoplayer** (1.2.1) - **androidx.media3:media3-ui** (1.2.1) - Copyright: The Android Open Source Project, Google Inc. - License: Apache License 2.0 - https://github.com/androidx/media ### Camera & QR Code Scanning - **androidx.camera:camera-core** (1.3.0) - **androidx.camera:camera-camera2** (1.3.0) - **androidx.camera:camera-lifecycle** (1.3.0) - **androidx.camera:camera-view** (1.3.0) - Copyright: The Android Open Source Project - License: Apache License 2.0 - https://developer.android.com/jetpack/androidx/releases/camera - **com.journeyapps:zxing-android-embedded** (4.3.0) - Copyright: ZXing authors, Journey Mobile, Inc. - License: Apache License 2.0 - https://github.com/journeyapps/zxing-android-embedded --- ## BSD-2-Clause License (Simplified BSD License) ### Markdown Parsing - **org.commonmark:commonmark** (0.22.0) - Copyright: Atlassian Pty Ltd - License: BSD-2-Clause License - https://github.com/commonmark/commonmark-java ``` BSD 2-Clause License Copyright (c) Atlassian and others Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ``` --- ## Full License Texts ### Apache License 2.0 The complete Apache License 2.0 text is available at: https://www.apache.org/licenses/LICENSE-2.0 ``` Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. [... full license text continues ...] ``` For brevity, the full Apache 2.0 license text is not included here. Please refer to the link above for the complete terms. --- ## License Compatibility Statement All third-party libraries listed above use **permissive open-source licenses** (Apache 2.0 and BSD-2-Clause). These licenses are fully compatible with the **Beerware License** used for SubSonicSter's own code. ### Requirements Fulfilled: - ✅ **Attribution**: This file provides attribution for all third-party libraries - ✅ **License Preservation**: All license texts and copyright notices are maintained - ✅ **No Conflicts**: Permissive licenses (Apache 2.0, BSD) do not conflict with Beerware - ✅ **F-Droid Compatible**: All dependencies are FOSS and approved for F-Droid FILE: rocks.langhaarschneider.subsonicster_12_src.tar.gz/app/src/main/java/rocks/langhaarschneider/subsonicster/ui/screens/LicensesScreen.kt package rocks.langhaarschneider.subsonicster.ui.screens import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import rocks.langhaarschneider.subsonicster.ui.components.BackButton import org.commonmark.parser.Parser import org.commonmark.node.Node import java.io.BufferedReader import java.io.InputStreamReader @OptIn(ExperimentalMaterial3Api::class) @Composable fun LicensesScreen( onNavigateBack: () -> Unit ) { val context = LocalContext.current var markdownNodes by remember { mutableStateOf(null) } var errorMessage by remember { mutableStateOf(null) } LaunchedEffect(Unit) { try { val inputStream = context.assets.open("LICENSES_THIRD_PARTY.md") val reader = BufferedReader(InputStreamReader(inputStream)) val markdownText = reader.use { it.readText() } val parser = Parser.builder().build() markdownNodes = parser.parse(markdownText) } catch (e: Exception) { errorMessage = "Error loading licenses: ${e.message}" } } Scaffold( topBar = { TopAppBar( title = { Text("Open Source Licenses") } ) } ) { paddingValues -> Column( modifier = Modifier .fillMaxSize() .padding(paddingValues) ) { Column( modifier = Modifier .weight(1f) .verticalScroll(rememberScrollState()) .padding(16.dp) ) { when { errorMessage != null -> { Text( text = errorMessage!!, color = MaterialTheme.colorScheme.error ) } markdownNodes != null -> { MarkdownContent(markdownNodes!!) } else -> { Text("Loading...") } } } // Centered Back button at the bottom BackButton( onClick = onNavigateBack, modifier = Modifier.align(Alignment.CenterHorizontally) ) } } }