Uninstalling the App deletes these files.
The App offers optional purchases of in-game currency (Moonstone packs), a starter bundle, the premium track of the season pass (bought separately for each four-week season) and the auto-renewing Keeper's Club subscription (monthly or yearly, with a free trial for new subscribers). Purchases made in earlier versions of the App are restored automatically with the benefits they had. Payments are processed entirely by Google Play Billing on Android and by Apple (StoreKit) on iOS. We never receive your card number, billing address or other payment details. The store tells the App which purchases belong to the store account on the device; for a purchase it gives the App a purchase token or a signed transaction containing an order or transaction ID, the product, the purchase date and, for subscriptions, the expiry and renewal status. What the stores themselves process is described in the Google Privacy Policy and the Apple Privacy Policy. Refunds and subscription management are handled by the store. When the store confirms a refund (directly or through our server, see below), the App removes what that purchase granted; it does not remove anything for a refund the store has not confirmed.
To protect against fraud, to restore purchases on a reinstalled App, to apply refunds and to know whether a subscription is still active, the App sends each purchase to a server operated by the Developer. The server checks the purchase with the Google Play Developer API or with Apple's App Store Server API, and receives the stores' own notifications about renewals, cancellations and refunds. The server runs on Cloudflare (Cloudflare Workers and the Cloudflare D1 database), which acts as the Developer's processor. It stores:
The App also asks the server for the current time (no identifiers are sent) so that daily rewards cannot be obtained by changing the phone clock. When the App starts, it asks the server whether optional game features are switched on, for the current ad frequency settings (for example how many levels pass between full-screen ads) and which version of the App is the latest; that request carries only a one-way hash of another random install identifier, and the server stores nothing about it beyond short-lived rate-limit counters.
Purposes: verifying purchases, granting and revoking what you bought, applying refunds, keeping subscriptions in sync, preventing fraud and abuse, restoring purchases, and keeping the financial and tax records the law requires. We do not sell this data, do not share it with third parties other than the processors named here, and do not use it for advertising or profiling.
Retention: links between a purchase and your account or device identifiers are kept for as long as needed to provide your purchases (for example while a subscription is active and the App can still restore it). Purchase records needed for refunds, disputes and accounting are kept for the period required by applicable accounting and tax law. When you ask for deletion they are anonymised: the links to your account and device identifiers are removed and only the order or transaction ID, token hash, product, state and dates remain. Rate-limit counters are short-lived.
If the server cannot be reached, the App relies on the store's own signature on the purchase and checks again later.
The App is free to play and shows ads served by Google AdMob, through the Google Mobile Ads SDK on Android and iOS. There are two kinds of ads, and no banners:
Keeper's Club members (including during the free trial) see no full-screen ads. Any purchase in the App gives 7 days without full-screen ads from the time of purchase; purchases made before version 1.2 keep full-screen ads off for good. Rewarded videos stay optional for everyone. The frequency limits above are delivered to the App by our server (see "Purchase verification server") and stored on your device.
Data collected by Google. To serve ads, measure them, limit how often you see them and prevent ad fraud, the Google Mobile Ads SDK collects data on your device and sends it to Google: your IP address, from which Google derives your approximate location (for example country or city); your interactions with the ads (for example which ads were shown, taps and completed videos); diagnostic information about the SDK's performance; and device identifiers, which on Android are the advertising ID and the app set ID, together with device information such as model and operating system version. The Developer does not receive this data in identifiable form and sees only aggregate reports, such as the number of ads shown and the earnings. Google acts as an independent advertising partner for this data. Details: How Google uses information from sites or apps that use our services and the Google Privacy Policy.
Consent in the European Economic Area, the United Kingdom and Switzerland. Before any ad is requested, the App asks Google's User Messaging Platform whether consent is required where you are. If it is, Google's consent form is shown when you first open the App. Your choice is stored on your device and read by the Google Mobile Ads SDK with every ad request: if you consent, ads may be personalised; if you decline or close the form without choosing, Google shows only non-personalised or limited ads. You can use the whole App either way, including the rewarded videos. You can change your choice at any time in Settings › Help & privacy › Privacy options; this row is shown wherever the consent form applies.
Android. Outside the regions above, ads on Android may be personalised by Google based on your advertising ID. You can reset or delete your advertising ID, or opt out of personalised ads, in your device settings (on most devices Settings › Privacy › Ads, or Settings › Google › Ads). After you delete it, apps on your device, including this one, can no longer read an advertising ID.
iOS. After the consent step above, and only if your consent choice allows personalised ads, the App may ask once for your permission to track you through Apple's App Tracking Transparency prompt, preceded by a short explanation in the App (and, where configured, by Google). If you allow it, the Google Mobile Ads SDK may read your device's advertising identifier (IDFA) and, together with your consent choice where it applies, show you personalised ads and measure them. If you do not allow it, or if tracking is turned off in your device settings, the App cannot read the IDFA, it does not track you across apps or websites owned by other companies, and it requests only non-personalised ads; Google may still use contextual information, your approximate location from the IP address and device information to choose, limit and measure ads. You can change your choice at any time in Settings › Privacy & Security › Tracking on your device. The game works the same either way. Firebase Analytics does not read the IDFA.
The Developer does not sell your data to advertisers and does not combine ad data with your game progress, your purchases or your sign-in account.
On Android you may sign in with Google Play Games; on iOS the App uses Apple Game Center if you are signed in to it on your device. Signing in lets you appear on the Daily Challenge and Sunday Lighthouse leaderboards under your platform name and keep your progress in your account. The App receives from Google or Apple your player ID, your display name (gamer name or Game Center nickname) and, where available, your avatar. The App uses them to show your name in the App, to submit your Daily Challenge scores and Sunday Lighthouse times to the platform leaderboards, to save your progress (see next section) and, as a one-way hash only, to link purchases to your account on our server. Your display name and score are visible to other players on the same leaderboard. The App does not read your e-mail address, contacts, friends list or other account data. Sign-in is managed by Google or Apple under their own privacy policies. On Android you can sign out in Settings › Account; on iOS you manage Game Center in your device settings. Without sign-in the App works as a guest.
While you are signed in, the App stores a copy of your game progress (levels, currencies, owned items, purchase journal, map state, settings, My Puzzles and your Sunday Lighthouse times) in your own account: in the Google Play Games "Saved Games" storage on Android, or in iCloud key-value storage on iOS. Only this App can read that copy; the Developer has no access to it and it is not stored on our server. When you install the App on another device with the same account, the saved progress is merged with the progress on that device, so nothing you earned or bought is lost. You can delete the cloud copy yourself: on Android in Google Drive (Settings › Manage apps › Light & Mirrors › Delete hidden app data) or in Google Play Games settings; on iOS in Settings › your name › iCloud › Manage Account Storage.
In-game rankings combine real players from the platform leaderboards with simulated players generated on your device, and say so on screen. As a guest, your name and score are not uploaded anywhere. Signed in, your Daily Challenge score, your Sunday Lighthouse time and your display name are submitted to Google Play Games or Apple Game Center.
You can send a puzzle you built in the Puzzle Maker, or the result of an Arena duel, to a friend as a short code or link. Only when you choose to share, the App sends to a second small server operated by the Developer on Cloudflare: for a puzzle, its size and board (walls, numbers, mirrors and the other pieces), a title picked from a fixed list of phrases in the App, your solving time and a fingerprint of the board so the same puzzle gets the same code; for a duel, the board number, your time, the number of taps, whether a hint was used and a check value of your solution. The server answers with the code and a link. No name, account, player ID, device identifier, free text or image is sent or stored, and anyone you give the code or link to can open the puzzle or duel. A puzzle code is kept for 180 days after it was created; a duel code is kept for 30 days after the result was last shared. After that they stop working and are deleted automatically. Opening a code asks the same server for the board behind it. The link page a friend sees in a browser shows the challenge and links to the stores; it uses no cookies or trackers. Rate-limit counters are kept as described under "Purchase verification server". If you share through your phone's share sheet or a messaging app, that app handles the message under its own policy.
The App can show one gentle reminder a day if you allow notifications. The reminder is scheduled on your device by the operating system; no server sends it and nothing about it leaves your device. You can turn it off in the App's Settings or in your device's notification settings.
The App uses Firebase Analytics and Firebase Crashlytics, both provided by Google, to understand how the App is used and to diagnose crashes. Firebase Analytics receives app interaction events such as which levels you start and finish, how long a level takes, whether you use a hint or a booster, daily challenge results, progress on the coastline map, the steps of the first session (for example which tutorial page you reached), and whether a purchase succeeded or failed (never your payment details). Once per install it also sends technical information about the device's performance: the graphics quality tier the App chose, the amount of memory (RAM), the name of the graphics chip (GPU) and how long the first screens took to draw, so we can keep the game smooth on low-end phones. Firebase Crashlytics receives a crash report when the App crashes: the technical stack trace, device model, operating system version and a small set of in-app values, such as your highest completed level, that help reproduce the problem. Both services receive a Firebase installation identifier, a random identifier tied to this install of the App rather than to you. The App does not send your name, e-mail address or precise location to Firebase.
The App asks for your permission the first time you open it, before either service receives anything. If you decline, neither service collects anything; you can change your choice at any time with the "Anonymous statistics" switch in Settings. Google acts as the Developer's processor for this data; the Developer sees it only as aggregate statistics and crash listings in the Firebase console and cannot identify an individual player from it. By Firebase's default retention settings, event-level data is kept for 2 months and identifier-linked data for 14 months, after which Google deletes it automatically. Details: Firebase data privacy and security and Google Privacy Policy.
The Developer does not collect your name, e-mail address (unless you write to us), phone number, precise location, contacts, photos, files or payment details, and the App uses no cookies. The approximate location and device identifiers used for ads are processed by Google, as described under "Advertising", and are not shared with the Developer in identifiable form. The Developer operates only the purchase verification server and the puzzle and duel code server described above; your progress, settings and cloud saves are not stored on them.
The App uses the Internet to talk to the store (Google Play or the App Store), the platform sign-in and cloud save services, the purchase verification server, the puzzle and duel code server (only when you share or open a code), Google AdMob to load and measure ads (see "Advertising") and, only with your permission, Firebase, and to open links such as this policy in your browser. The puzzles themselves work without a connection.
Settings contains a "Send feedback" link. It opens your own mail application with the Developer's address pre-filled. Anything you send is a normal e-mail that you compose and control; the Developer uses it only to answer you and keeps it only as long as needed for that purpose.
The App is distributed through Google Play and the Apple App Store. Google and Apple process data in connection with the download, installation, payments and refunds under their own policies. The Developer receives from them only aggregate reports and the purchase information described above.
The Developer is based in Armenia. Google, Apple and Cloudflare may process the data described above on servers in other countries, including the United States, under their own safeguards for international transfers.
The App is a logic puzzle intended for adults (its target audience in the stores is 18 and over). It is not directed at children, and we do not knowingly collect personal data from children under 13 (or the higher age set by the law of your country). The App asks no one for their age, name or contact details. Because the App is not directed at children, its ad requests are not marked as directed at children. If you believe a child has given us personal data, contact us and we will delete it. Parents can control purchases with the family and purchase-approval tools of Google Play and Apple.
You can ask us to delete the data we hold about you at any time by e-mailing borisbalasanyankw@gmail.com with the subject "Delete my data". To help us find your records, please include the order ID of one of your purchases (from your Google Play or Apple receipt e-mail) and tell us whether you were signed in with Google Play Games or Game Center. We never need your password or payment details. We delete or anonymise the server records within 30 days and confirm by e-mail. Records we are legally required to keep (purchase and accounting data) are anonymised rather than deleted, as described under "Purchase verification server". We use the e-mail address you write from only to handle your request and delete the correspondence when it is no longer needed.
Depending on where you live (for example under the GDPR in the European Economic Area and the United Kingdom, or under California law), you may have the right to access, correct, export or delete your personal data, to object to or restrict its processing, to withdraw consent at any time, and to complain to your data protection authority. We do not sell personal data for money. On Android, outside the regions where consent is asked for, Google may use data from the ads in the App to personalise ads, which some US state laws treat as "sharing" for targeted advertising; you can opt out of this by deleting your advertising ID or opting out of personalised ads in your device settings (see "Advertising"). On iOS, this happens only if you allowed tracking in the App Tracking Transparency prompt; you can withdraw that permission at any time in Settings › Privacy & Security › Tracking. Contact us at the address above and we will respond within 30 days. Our legal bases are: performing our contract with you (purchases, cloud save, leaderboards), our legitimate interest in preventing fraud and keeping the App working, your consent (analytics and crash reporting, and personalised ads where the law requires consent), our legitimate interest in funding the free App with ads (non-personalised ads, and ad measurement and fraud prevention), and legal obligations (accounting records).
Updates to this policy are published at this address with a new effective date. Material changes, such as a new data-collecting feature, are announced in the App's update notes before they take effect.