Cubist logo

Cubist

Terms of Service

Version 1.0.0|Last updated: June 27, 2026

Cubist — Terms of Service

  • Effective Date: To be set on launch day.
  • Last Updated: 2026-06-27
  • Document Owner: semag studios

1. Acceptance

These Terms of Service (the "Terms") form a binding agreement between you and semag studios ("we", "our", or "Cubist"), the publisher of the Cubist mobile application and the associated website at cubist.semag.app (collectively, the "Service").

By creating an account, signing in, or otherwise using the Service, you confirm that you have read, understood, and agree to be bound by these Terms and by our Privacy Policy. If you do not agree, do not use the Service.

If you use the Service on behalf of an organization, you represent that you have authority to bind that organization to these Terms.

2. The Service

Cubist is a mobile application for the speedcubing community. It provides:

  • A WCA-grade timer covering the 17 official World Cube Association (WCA) events.
  • Method tutorials (LBL, CFOP, Ortega, Reduction, and event-specific methods).
  • Local solve history, session management, and statistics (averages, mean of 3, personal bests).
  • Move-verified global, regional, and friend-scoped leaderboards.
  • A friend graph with invitations, blocks, and abuse reporting.
  • An algorithm library and trainer.
  • An optional one-time Cubist Pro purchase that unlocks advanced features (algorithm trainer, advanced statistics, full algorithm library) plus bonus accent themes, and removes the free-tier daily solve limit.

The Service is provided as-is and may evolve. We may add, remove, or change features at our discretion, including changing the set of supported events, methods, or scoring categories.

Cubist is not affiliated with, endorsed by, or sponsored by the World Cube Association. Times recorded in Cubist are not equivalent to WCA-official records and have no standing in WCA competitions. The phrase "Cubist Records · Not WCA Official" appears on every leaderboard surface for this reason.

3. Eligibility

You must be at least 13 years old to create an account or use the Service.

If you are between 13 and the age of digital consent in your jurisdiction (16 in many EU member states under GDPR Article 8, varying elsewhere), you confirm that your parent or legal guardian has reviewed these Terms and consented to your use of the Service.

If you indicate during onboarding that you are under 13, the Service will restrict friend-graph features and cross-user visibility in line with COPPA and equivalent local rules. [REVIEW] Final under-13 handling depends on counsel's review of COPPA / KISA youth-protection guidance and is intentionally conservative in the current build.

You may not use the Service if you are barred from doing so under the laws of your country.

4. Your Account

4.1 Authentication

Cubist uses Sign in with Apple or Google Sign-In for authentication. We do not collect or store passwords; identity verification is delegated to Apple and Google. See the Privacy Policy §3 for what we receive from these providers.

You are responsible for safeguarding the Apple ID or Google account that you use with Cubist. We are not liable for losses arising from unauthorized access to your linked account.

4.2 Profile Data

You may set the following profile fields:

  • Username (globally unique, 3–20 characters, a–z 0–9 _ only).
  • Display name (free-form, subject to §6 acceptable use).
  • Country code (ISO 3166-1 alpha-2, optional).
  • Avatar image (subject to size, content-type, and automated SafeSearch moderation).
  • WCA ID (optional display field; we do not verify it against WCA records).
  • Age band (under_13 / 13_17 / 18_plus, optional but required to unlock friend features).

We reserve the right to require changes to or remove profile content that violates §6, infringes third-party rights, or is reported by other users and meets our auto-hide thresholds.

4.3 Username Policy

Usernames are first-come, first-served, subject to:

  • A reserved list (administrator names, system reserved terms, common abuse vectors).
  • Homoglyph collision detection (e.g. pl0ri and plori cannot coexist under different users).
  • Reclaim policy: a username may be administratively reclaimed after 2 years of total inactivity combined with zero solves, friends, shared invites, and avatar. Reclaim is at our sole discretion. See docs/sprint-0/moderation-policy.md §3.3.

5. Privacy and Data

Your privacy is governed by the Privacy Policy, which is incorporated into these Terms by reference.

Cubist offers three privacy modes:

  • Private — default for new accounts. Profile, solves, and rank are visible only to you. You will not appear on leaderboards.
  • Public — your profile, country flag, username, verified solves, and rank are visible to all users.
  • Ghost — your profile and rank are visible only to mutual friends; you do not appear on global leaderboards.

You can change modes at any time in Me → Settings → Privacy. Mode changes propagate to leaderboard caches within a short window through the onPrivacyModeChange server function.

6. Acceptable Use

You agree that you will not:

  1. Submit solves you did not personally perform on a physical or virtual cube the Service is designed for.
  2. Tamper with, replay, or fabricate move sequences, scrambles, timer events, or session metadata to inflate rankings or evade anti-cheat heuristics.
  3. Operate more than one account to manipulate friend graphs, reports, or leaderboard positions.
  4. Use a username, display name, avatar, or note field to impersonate another person, harass others, distribute illegal content, or violate intellectual-property rights.
  5. Submit homoglyph variants of reserved or other users' usernames in order to deceive.
  6. Abuse the report or block features (e.g. coordinated mass reports against a single user).
  7. Reverse engineer, decompile, or attempt to extract source code from the Service except to the extent permitted by mandatory local law (e.g. EU Directive 2009/24/EC Article 6 interoperability allowance).
  8. Probe, scan, or test the Service's vulnerabilities except via a coordinated disclosure to official@eodin.app [REVIEW].
  9. Use automated means (bots, scripts, headless emulators) to generate solves, scrape leaderboards beyond ordinary in-app navigation, or otherwise simulate user activity.
  10. Bypass, disable, or interfere with security or rate-limiting features.

Violations may result in solve invalidation, account flagging (users/{uid}.flagged_for_review = true, which hides your data from cross-user reads and removes you from leaderboard caches), suspension, or permanent termination, at our discretion and proportionate to the severity.

7. User Content

7.1 Ownership

You retain ownership of all content you submit to the Service — solves, scrambles, notes, profile fields, and uploaded avatars (collectively, "User Content").

7.2 License Grant

For the Service to operate, you grant us a worldwide, royalty-free, non-exclusive license to host, store, transmit, display, reproduce, and create derived data (e.g. aggregate statistics, anti-cheat hashes, leaderboard cache entries) from your User Content for the purpose of operating, maintaining, and improving the Service. This license covers automated processing such as:

  • Server-side replay of move sequences via cubing.js to verify solves.
  • SafeSearch processing of uploaded avatars via Google Cloud Vision.
  • Aggregation of solve metadata into leaderboard caches and friend PB documents.
  • Creation of (scramble, moves, time) hash records used to detect replay attacks.

This license terminates when you delete the relevant content or your account, except where we are required to retain copies to comply with legal obligations or to operate fundamental safety features (e.g. anti-cheat replay-hash blocklists may persist as hashes detached from your account).

7.3 Anonymized and Aggregate Data

We may compute and publish aggregate, anonymized statistics — for example total solve counts, method completion rates, or country-level rank distributions — that do not identify you individually. This use survives account deletion.

7.4 Solve Verification

Solves submitted with a captured move sequence are processed by the verifySolve server function, which replays the sequence on a virtual cube. Solves that do not reach the solved state, or that fail anti-cheat heuristics (per-event sub-time floor, TPS cap, replay-hash collision, PB burst window), are rejected with a recorded reject_reason. Solves manually entered without a move sequence are labelled "self-reported" and appear separately on leaderboards.

7.5 Appeals

If you believe a solve was incorrectly rejected, you may submit an appeal through Solve detail → Appeal. Appeals are routed to the Eodin Link feedback service. We aim to respond within the timelines published at docs/sprint-0/moderation-policy.md §2 (critical 24 hours, normal 72 hours), but [REVIEW] the final published SLA depends on launch-prep operational sign-off.

8. Moderation and Reports

You may block another user (hides each other from search, leaderboards, and friend graph; existing friendship is automatically dissolved) or report another user for spam, harassment, inappropriate username, inappropriate avatar, cheating, or other reasons.

Cubist operates a low-friction moderation pipeline:

  • Reports accumulate in reports/{auto-id} with deduplication on reporter identity.
  • When 5 or more unique reporters flag the same user, the account is automatically hidden from cross-user reads via users/{uid}.flagged_for_review = true, and the user's leaderboard cache entries are deleted.
  • Administrators review flagged accounts and may reverse, sustain, or escalate the flag.
  • Report counts are not visible to the reported user.

We do not run real-time content moderation on free-text fields beyond automated avatar moderation. Inappropriate content should be reported.

9. Purchases

[REVIEW] Pricing is set in the app stores and shown at checkout; any figures here are illustrative.

9.1 In-App Purchases

The Service is free to use, with one optional paid upgrade:

  • Cubist Pro — a one-time, lifetime purchase (not a subscription, with no recurring charges) that unlocks the algorithm trainer, advanced statistics, and the full algorithm library, plus bonus themes.

Free accounts can start a limited number of timed solves per day (currently 5, with the counter resetting daily at 00:00 UTC); the one-time Cubist Pro purchase removes this daily limit. We may adjust the free-tier limit over time.

Purchases are processed by the Apple App Store or Google Play, with receipt validation and entitlement management by our payments processor RevenueCat, Inc. We do not collect or store payment-card details. Refund eligibility is governed by the platform store's policies; you must request refunds through Apple or Google, not through Cubist.

Cubist does not display third-party advertising.

10. Intellectual Property

10.1 Cubist

The Cubist name, logo, interface design, source code, design system tokens, prototype, and documentation are © semag studios. All rights reserved except as expressly granted in these Terms.

10.2 Third-Party Components

Cubist incorporates third-party software, including:

  • cubing.js © Lucas Garron, licensed under MPL-2.0 (or GPL-3.0 at our option; we use MPL-2.0). Source: <https://github.com/cubing/cubing.js>. cubing.js is used unmodified and is shipped both as a vendored IIFE bundle inside the mobile app and as an npm dependency inside the server functions.
  • Newsreader (Production Type) and JetBrains Mono (JetBrains), licensed under the SIL Open Font License 1.1.
  • Firebase SDKs (Google LLC) under their respective license terms.
  • Other open-source libraries listed in the in-app About → Open-source licenses screen.

Use of these components is governed by their respective licenses; we provide source pointers and notices where required.

10.3 WCA

"WCA" and "World Cube Association" are marks of the World Cube Association. We use these names only descriptively, in the context "WCA events" or "WCA notation". We do not claim affiliation.

11. Cubist Records Notice

Records and rankings shown in the Service are produced by Cubist's own timer, scramble, and verification stack. Times depend on the device used, the input model selected, and the integrity of the move-sequence capture. These records do not transfer to WCA competitions and should not be represented as WCA-official results.

12. Disclaimers

THE SERVICE IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, including warranties of merchantability, fitness for a particular purpose, non-infringement, accuracy of records, or uninterrupted availability. We do not guarantee:

  • That any solve, ranking, or PB is accurate beyond the verification heuristics described in §7.4.
  • That the Service will be free of bugs, latency, or downtime.
  • That cloud backups are recoverable in all failure scenarios.

To the maximum extent permitted by applicable law, we disclaim all liability for loss of solves, sessions, rankings, or virtual purchases.

13. Limitation of Liability

To the maximum extent permitted by applicable law, in no event will semag studios, its officers, employees, contractors, or affiliates be liable for any indirect, incidental, special, consequential, exemplary, or punitive damages, including loss of profits, data, goodwill, or substitute services, arising out of or in connection with your use of the Service.

Our aggregate liability for any claim arising out of or related to the Service is limited to the greater of (a) the amount you paid us for the Service in the 12 months preceding the claim, or (b) USD 50.

Some jurisdictions do not allow the limitation or exclusion of liability for incidental or consequential damages; in such cases the foregoing limitations apply only to the extent permitted by law.

14. Indemnification

You agree to defend, indemnify, and hold harmless semag studios and its affiliates from any third-party claim, demand, or expense (including reasonable attorneys' fees) arising out of:

  • Your violation of these Terms.
  • Your violation of any law or third-party right.
  • User Content you submit that infringes another party's rights.

We will provide you with prompt written notice of any such claim and may participate in the defense at our own expense.

15. Termination

You may stop using the Service at any time. To fully delete your account and associated data, use Me → Settings → Privacy → Delete account. This action:

  1. Calls the wipeUserData server function, which recursively deletes your users/{uid} document and all subcollections (solves, sessions, statistics, and per-event personal-best snapshots); reclaims your usernames/{normalized} reservation and your usernames_skeleton/{skeleton} homoglyph-defense entry; deletes your friendships/{composite_key} edges in both directions; evicts your entries from the global, country, and continent leaderboard caches; and deletes your stored avatar in Cloud Storage.
  2. Sends a data-deletion request to Eodin Analytics via the SDK.
  3. Revokes refresh tokens.
  4. Deletes your Firebase Authentication entry.

Some derived or anti-cheat data may persist in anonymized, account-detached form (e.g. replay-hash records, aggregate statistics) as described in §7.

We may suspend or terminate your account, with or without notice, if you violate these Terms or if continued provision of the Service to you would expose us to legal risk. We will use reasonable efforts to notify affected users where allowed by law.

16. Changes to These Terms

We may update these Terms from time to time. Material changes will be announced inside the app and through the published changelog at least 14 days before they take effect, except where shorter notice is required for legal or security reasons. Continued use of the Service after the effective date constitutes acceptance.

17. Governing Law and Disputes

[REVIEW] This section is a placeholder pending counsel review.

These Terms are governed by the laws of the Republic of Korea, without regard to its conflict-of-laws rules. Disputes arising out of or related to the Service or these Terms will be resolved in the courts of Seoul Central District Court, unless your local consumer-protection law guarantees you a different forum.

Nothing in this section deprives EU, UK, or other consumers of mandatory protections they enjoy under local law.

18. Miscellaneous

  • Entire Agreement — These Terms, together with the Privacy Policy and any in-product notices we present, form the entire agreement between you and Cubist regarding the Service.
  • Severability — If any provision is found unenforceable, the remaining provisions remain in full force.
  • No Waiver — Our failure to enforce a provision is not a waiver of the right to enforce it later.
  • Assignment — You may not assign these Terms without our written consent; we may assign them to an affiliate or successor entity.
  • Headings — Section headings are for convenience only and do not affect interpretation.

19. Contact

For legal notices and questions about these Terms:

  • Email: official@eodin.app

For everyday product support, use the in-app feedback channel.

Terms of Service - Cubist