Kromatika Privacy Policy

Last updated: 2026-09-19

Kromatika is a color-gradient puzzle game built by Ian Handy. I designed it to collect as little data as possible about the people who play it. This page explains what does and doesn't leave your device, why, and what you can do about it.


Summary


What leaves your device, and when

Game Center

If you sign in to Game Center, Apple relays your scores (daily time, daily moves, and daily streak) and earned achievements. I don't receive your Apple ID or Game Center identity through Kromatika's community backend. Apple manages Game Center identity and leaderboard data under its own privacy policy.

Liked puzzles (optional, opt-in)

Tapping the thumbs-up after solving a puzzle uploads the puzzle's JSON structure, its difficulty level, and an opaque per-install UUID to kroma.ianhandy.com. The UUID is a random identifier generated on first launch and used only so the server can make sure one device can only like the same puzzle once. It associates your contributions with the same app installation. It is not tied to your Apple ID, phone number, or contacts.

Other players may receive puzzles you've liked when their game pulls from the community pool. No identifying information is ever sent along with the puzzle.

Disliked puzzles (optional, opt-in)

Tapping the thumbs-down sends the same UUID, puzzle JSON, and level to the server. The dislike is used to decrement the puzzle's community like count and is logged separately for future improvements to the puzzle generator.

Solve stats for liked puzzles

When you solve a puzzle in challenge mode that's currently in your liked-puzzle pool, your solve time, move count, and whether you solved it perfectly are recorded locally and may be sent to the community pool for generator tuning. No timestamps or identifiers beyond the opaque install UUID are attached.

Daily streak leaderboard (optional, opt-in)

If you choose to join the daily-streak leaderboard, Kromatika sends your longest daily streak, the date it runs through, and an opaque device UUID to kroma.ianhandy.com. The server immediately hashes the UUID and publishes only the streak with a generated anonymous handle. Turning leaderboard sharing off removes that record from the server.

Feedback form (optional)

In the Godot edition, written feedback goes directly to Kromatika's service, hosted by Vercel and stored in Turso, rather than Google Forms. It includes your message, app version, platform, game mode, level, completion status, elapsed seconds, mistakes and reduced-motion setting. Reports are private to authorized administrators. A random per-message receipt prevents duplicates; no hardware identifier or account identity is included. Unsent reports stay on your device and retry while the game is open. Stopping retries cannot recall a report already received.

In the original native iOS edition, when you send feedback from the menu, your written comments, difficulty and quality ratings, puzzle and session details (including level, mode, solve time, mistakes, and completion), accessibility settings, app version, and operating-system version go to a Google Form to help improve the game. Game feedback has no puzzle ratings, but still includes the current session details. A stable device identifier is not included in this feedback form payload. Avoid including personal information in your comments.

Thumbs-up and thumbs-down also submit puzzle feedback to that form. Community likes and dislikes separately send the random installation identifier described above to the Kromatika backend.

Sharing

Opening the in-game puzzle menu prepares a share link by uploading the puzzle's JSON structure to kroma.ianhandy.com, even if you do not then send the link. Other share actions also upload the puzzle to create a short link. The stored puzzle expires after 90 days. If you choose to share, the link is handed to the iOS share sheet and travels through whichever channel you choose.

Community puzzles: publishing, voting, blocking, and reporting

Publishing uploads the puzzle's structure, title, difficulty level, and a random device identifier to kroma.ianhandy.com. The title is the name you give the puzzle, not a required personal name. Community votes send the puzzle identifier, vote, and the same device identifier. These records support publishing, moderation, and duplicate-vote prevention. Submissions await community review before they appear in the public pool.

This community identifier is stored in the device Keychain and is separate from the installation identifier used for likes and dislikes. It may persist after reinstalling the app. The backend stores identifiers alongside their contributions; these records are associated with a device, even though no account is required.

Blocking a submitter and hiding a single puzzle are both local-only, they change what your device shows and nothing leaves it. Reporting a puzzle hides it on your device immediately and sends the puzzle's identifier, the reason you picked (offensive, spam, not their puzzle, or something else), and the community device identifier to kroma.ianhandy.com so it can be reviewed. All three are available as VoiceOver / Voice Control accessibility actions, not just long-press gestures.

Photos library

If you tap "save image" after solving a puzzle, the rendered image is saved to your Photos library. This requires Photo-Library-Add permission, which iOS will prompt for the first time. I never read your photo library, I only write one image when you ask me to.


What stays on your device

If your device is signed into iCloud and iCloud Drive is on, zen and challenge progression, aggregate stats, and daily completion history sync across your own devices via Apple's iCloud Key-Value Store, I never see that data, only you do.


Your rights and controls


Children

Kromatika has no advertising, account system, or chat. The optional community features use the random device identifiers described above. Do not include personal information in puzzle titles or feedback.


Data retention


Third parties


Changes to this policy

If the game changes in a way that changes what data is collected, I'll update this page and bump the "last updated" date above. The app itself doesn't show privacy prompts beyond what iOS requires (Photos permission, Game Center sign-in) so material changes will be reflected here first.


Contact

Questions, deletion requests, or anything else: help@ianhandy.com.