# Privacy Policy — Forever Jukebox **Last updated: 2026-08-29** Forever Jukebox ("the app") is a free, open-source music visualization and playback app developed by Creighton Linza ("we", "us"). This policy explains what the app does and does not collect. ## Summary - The app has **no accounts, no ads, and no in-app purchases**. - Your audio files and listening activity stay **on your device**, except when you choose to cast to a Chromecast — see [Casting](#casting-to-a-chromecast) below. - Nothing you cast is ever stored — it passes through our relay in memory and is discarded once your Chromecast has loaded it. - The only data that leaves your device automatically is **anonymous crash and error diagnostics**, used solely to find and fix bugs. ## What the app does on your device The Play Store version of Forever Jukebox runs in **local mode**: you choose an audio file from your device, and all analysis and visualization happen on-device. - Audio files you select are read locally for analysis and playback. Nothing is sent to us unless you start a cast. - Analysis results are cached in the app's private storage to speed up reloads. You can clear this cache anytime from Settings. ## Casting to a Chromecast Casting is **optional** and happens only when you tap the Cast button and pick a device. A Chromecast can't read files out of your phone's private storage, so the app sends them through a relay we operate: - **What is sent.** The audio file you selected, and the analysis the app generated from it. No listening history, no account or device identifiers. - **How long it's kept.** Only as long as it takes your Chromecast to load the track. The relay holds your audio **in memory only — it is never written to disk** — and discards it once the load completes. We keep no library of past casts. - **How it's protected.** The transfer is encrypted, and nothing we relay is published, listed, or browsable. - **What we don't do.** We don't inspect, share, or sell the audio you cast, and we don't use it to train anything. If you don't cast, none of this applies and your audio never leaves your device. You are responsible for having the rights to any audio you cast through the app. ## Feedback and bug reports The Settings screen has an optional feedback and bug-report form. Nothing is sent unless you tap Send. A submission contains only: - the feedback text you type, - the app version, and - a basic device summary (manufacturer, model, Android version). Submissions go to a Google Form, so Google processes them on our behalf. No account, contact, or device identifiers are attached — a submission is anonymous unless you include contact details in the text. ## Diagnostics and usage data we collect (Firebase Crashlytics and Analytics) To keep the app stable and understand which features get used, we use [Firebase Crashlytics](https://firebase.google.com/products/crashlytics) and Firebase Analytics (both provided by Google). This may include: - Crash and error reports: the stack trace and diagnostic log messages (no audio, no file contents, no screen captures). - Coarse app-lifecycle events used as crash context — for example that an analysis started, completed, or failed, or that a cast session connected or disconnected. - Which features you use — for example starting playback, adding a file for analysis, changing an audio mode or a tuning control, switching visualizations, or starting a cast. - Device model, operating system version, and app version. - A random identifier generated by the SDK for this installation of the app. It is not the Android advertising ID, is not shared with other apps, cannot identify you, and is discarded when you uninstall the app. **We do not collect the Android advertising ID**, and none of this data is used for advertising, marketing, or tracking you across apps. **Titles of tracks from your own library never leave your device.** Playback events for an on-device track are counted using a random-looking fingerprint of the analysis, which says nothing about what the track is. Track titles are included only for tracks from the server catalog, which are public. This data is used **only** to diagnose problems and improve the app, is **not sold**, and is **not shared** with anyone other than Google acting as our processor (see [Firebase privacy and security](https://firebase.google.com/support/privacy)). It is transmitted over an encrypted connection. ## Permissions - **Internet** — used to send anonymous crash diagnostics and usage events, and, when you start a cast, to relay the selected audio and its analysis to your Chromecast. - **Foreground service / media playback / notifications / wake lock** — used to play audio reliably and show playback controls. ## Children The app is not directed at children and does not knowingly collect data from children. ## Data deletion Crash diagnostics are anonymous and not tied to an account, so there is no personal profile to delete. Audio you cast is discarded automatically once your Chromecast loads it, so there is nothing on our side to delete. To remove locally cached analysis data, clear the cache from the app's Settings or uninstall the app. For any privacy question or request, contact us using the details below. ## Open source Forever Jukebox is open source (AGPLv3). You can review exactly what the app does in the source code: ## Contact Creighton Linza — foreverjukebox@creighton.dev