Last Ship Sailing

Privacy Policy

Effective: May 3, 2026 ; Version 1.1

This Privacy Policy describes how Last Ship Sailing ("LSS," "the Game," "we") handles your data. LSS is a hobby project by Ashman Roonz, hosted at lss.fractalreality.ca.

The short version: LSS collects only what Discord OAuth lets us see (your Discord ID, username, display name, and avatar). We store match-result rows in a small Cloudflare D1 (SQLite) database so we can show leaderboards and per-player profiles. We do not collect email, IP addresses, or anything else, and we do not use cookies, analytics, or trackers. You can delete all of your data at any time by hitting the DELETE /me API endpoint or by asking us to do it for you.

1. Data we collect via Discord OAuth

When you click "Sign in with Discord" in LSS, Discord prompts you to authorize the Game to read a small set of data about your Discord account. We request only the identify scope (and, if you launch LSS as a Discord Activity in a voice channel, additional scopes specific to the Activity context).

The data we receive from Discord under identify consists of:

We do not request:

2. How we use that data

Your Discord identity is used for:

We do not use your data for advertising, profiling, training of AI models, or any commercial purpose. LSS is a non-commercial hobby project.

3. What we additionally collect when you play

Each time you complete a match, your browser submits the match's result to our backend. The submission includes:

This data populates per-player career stats and the public leaderboard. Match records are immutable once validated ; we don't track location data, in-game chat (there isn't any), keystroke timing, or anything else beyond the gameplay numbers above.

4. Where your data is stored

LSS uses a small backend stack hosted entirely on Cloudflare's infrastructure. Three places hold data:

On your device (browser localStorage): Your Discord OAuth access token and a cached copy of your Discord user object are stored in your browser's localStorage so signin persists across page reloads. Your in-game settings (volume preferences, control bindings, etc.) also live here. This data lives on your machine only. Clearing your browser's site data, or signing out of LSS, removes it.

In our Cloudflare D1 database (lss-stats): Player career rows (one per Discord user) and match records are stored in a small SQLite database hosted by Cloudflare's edge infrastructure. Tables are players, matches, match_participants, player_loadout_stats, and achievements. The data is owned by the developer (Ashman Roonz) ; Cloudflare provides the hosting under their terms. The database is small (typical free-tier usage), single-region (Cloudflare's nearest data center to North America), and only the LSS Worker has write access via authenticated D1 bindings.

In Cloudflare KV (ephemeral cache): Two small key-value stores hold short-lived data: room heartbeats (90-second TTL ; expires automatically when a room goes silent) and a top-N leaderboard cache (60-second TTL ; serves repeated leaderboard reads without re-querying D1). KV entries auto-expire ; nothing persists beyond the TTL.

Through our Cloudflare Worker: Every authenticated API request (match post, leaderboard read, profile fetch, room heartbeat) is validated by a Worker that checks your Discord OAuth token against Discord's /users/@me endpoint. The Worker does not log requests or persist any user data beyond what's described above. Cloudflare may log infrastructure-level metadata as part of running the Worker ; see Cloudflare's Privacy Policy for what they do with that.

On Discord: If we ever post highlight notifications to a Discord channel for big moments (championship wins, milestones), those posts live on Discord under its own data policies. As of this version, no such posts are sent automatically ; the integration exists but is opt-in for future use.

On any server we directly operate: Nothing. We don't run a self-hosted server, a VM, a Pi, or anything else. The only infrastructure is Cloudflare's managed services (Workers + D1 + KV) plus GitHub Pages for static hosting.

5. Cookies and similar technologies

LSS does not use cookies. We use browser localStorage to persist your Discord token (described above) and your in-game settings (volume preferences, control bindings, etc.). We do not use third-party analytics, advertising trackers, fingerprinting, or any other tracking mechanism. The leaderboard / profile / rooms pages on lss.fractalreality.ca do not run analytics scripts of any kind.

6. How to delete your data

You have several straightforward options to remove your data from LSS:

7. Children's privacy

LSS is not directed at children under 13. You must be at least 13 years old (or the minimum age required by Discord in your jurisdiction, whichever is higher) to use LSS. If we become aware that a user under that age has signed in, we will revoke their access.

7. Third parties

LSS interacts with the following third-party services:

We do not control these services and we are not responsible for their privacy practices. We chose them for technical fit and intentionally use only the minimum surface area each provides.

8. Data we do NOT collect

To be clear about what's not happening:

9. International users

LSS is operated from Canada. By using LSS, you consent to your data being processed in Canada and routed through Cloudflare's global edge network. If you are a resident of the European Union, the United Kingdom, California, or another jurisdiction with specific data-protection laws, you may have additional rights (access, correction, deletion, portability). The minimal-data architecture of LSS makes most of these straightforward to honor ; the deletion mechanisms in Section 6 satisfy the typical requests.

10. Security

We follow standard security practices for the limited surface area LSS exposes:

That said, no system is perfectly secure. If you become aware of a security issue with LSS, please report it privately to ashroney@gmail.com rather than disclosing it publicly.

11. Changes to this Policy

This Privacy Policy may be updated from time to time. Material changes will be posted at this URL with an updated effective date. Continued use of LSS after changes are posted constitutes acceptance of the revised Policy.

12. Contact

Questions about this Privacy Policy, requests for data access or deletion, and any other privacy-related concerns can be sent to ashroney@gmail.com, or raised in the LSS Discord server with moderators.