YOUR DATA

Privacy policy

Your translation work saves in your browser. Optional Google sign-in backs up personal settings and shares dictionaries, saved translations and dropped copies with authorized language teams. Managers can explicitly upload named source ZIPs and collect translated work.

Last updated:

1. About this policy

SDEditor is a community tool for translating Path of Exile StatDescriptions files. This policy covers the editor at sdeditor.pages.dev and its cloud service at sdeditor-api.poemaid.com. The SDEditor project maintainer operates the service and can be contacted at lpeachl@gmail.com.

2. Data stored in your browser

The editor uses browser storage, including IndexedDB, to save preferences, dictionaries, immutable parsed source baselines, account/game/branch/source workspaces, local names, cached online version details, ZIP hashes and verification data, clipboard content, and revision history. Ordinary standalone imports do not upload the complete ZIP. Manager publication explicitly uploads the original ZIP; the API retains it separately with accepted import decisions and compact baseline metadata, and parses its text temporarily when needed. The editor clipboard, unsaved typing and legacy local translation history are not uploaded. Saved/staged translation files and new shared history synchronize when collaboration is available for your signed-in account and selected language. Dropped copies synchronize separately, including their preserved original English, translation text, entry metadata, and source identities; they remain available until you save a replacement, confirm them unchanged, or discard them. Dropped copies do not become active translations or enter exports automatically.

Local storage also holds synchronization state, pending changes, conflicts, recovery copies, and your SDEditor session when signed in. Temporary browser session storage helps complete Google sign-in. You can use local editing without a Google account.

3. Google sign-in and account information

When you choose Backup using Google account, Google authenticates you and supplies your Google account identifier, verified email address, and display name. SDEditor stores these details to recognize your account, display your identity, and let an administrator manage your language assignment. We also store your role, assigned language, and account creation and sign-in times.

We request only the openid, email, and profile permissions. SDEditor does not receive your Google password or request access to your Gmail messages, Google Drive files, contacts, or calendar. Google tokens are used to complete sign-in and are not retained in the SDEditor database; the editor uses its own session afterward.

SDEditor uses Google user data only to provide and secure these account features. We do not sell Google user data, use it for advertising, or use it to train AI models. Our use and transfer of information received from Google APIs will adhere to the Google API Services User Data Policy, including its Limited Use requirements.

4. Cloud backups, shared dictionaries, and collaboration

Cloud synchronization is available to a Translator after an administrator assigns a language, and to Managers and Admins without an assigned language. It backs up your editor preferences and personal regex rules to the SDEditor API. These settings are associated with your account and are not shared with other translators.

Managers and Admins can explicitly upload an original StatDescriptions.zip, set its version name and informational import deadline, and publish it to all supported language teams. The API stores exact ZIP bytes separately, compact verified baseline metadata, import decisions, uploader identity and publication metadata. Complete parsed baselines stay in browsers or temporary server memory. Authorized translators can download the original ZIP and work in their assigned team's version; Managers/Admins can view all teams' translation progress and current participants. The dashboard derives progress from server-accepted translations. Unsaved drafts and pending offline changes are not included. This manager upload is separate from ordinary sparse collaboration described below.

A manager collection or download-only snapshot stores immutable server-accepted Saved content, its team/version, collector identity, cutoff information and ended state. The browser generates new translated ZIP downloads from that frozen snapshot and verified original. Ending waits for the API to verify those durable inputs; browser download completion is separate and can retry. Older server-generated ZIP collections remain retained and downloadable. Download only leaves the translation window and last ending collection unchanged. A passed deadline changes a reminder only. Ended windows allow further saves after a warning; those saves do not change an existing collection. Recollection creates another snapshot. Withdrawing a version hides it from ordinary selection and stops new shared writes while preserving its source, rooms, translations, history and recovery access.

File comments are available to signed-in Translators with an assigned language and to Managers and Admins. Posting sends the comment text, game, file path, source hash, and language audience. The server records your account identifier, display name, posting language, and posting time. Translator posts default to the assigned team language; Manager/Admin posts default to the selected editor language. Choosing Post to all languages shares a comment across teams. Translators can read their assigned-language and global comments across source hashes; Managers and Admins can read every language team's comments. Per-account read receipts are stored to show your unread counts; other translators do not receive your read receipts.

Dictionary entries, including Find/Replace text, alternates, and complete TL notes, are shared by language. Translators can read, edit, and export their assigned language's dictionary; dictionaries for other selected languages remain local. Managers and Admins can read and edit every language's shared dictionary, using the selected editor language with or without an assignment. The same language dictionary is used for PoE1 and PoE2.

Synchronization records include revisions, deletion markers, and change identifiers to merge edits and handle retries. Identical translation and source payloads may be compressed and stored once through immutable content references; their shared history remains retrievable. Shared dictionary history records before-and-after contents, the author's display name and account identifier, timestamps, and change types, including merges and restores. Translators assigned to the same language can view this history and restore earlier versions. Deleting or replacing an entry does not erase its recorded history. Avoid putting private or sensitive information in dictionary entries or notes: other translators can retain their own copies.

Translation collaboration starts automatically when you are signed in with access to the selected language and a source workspace is loaded. Translators need the selected language to match their assignment; Managers and Admins can select any language without an assignment. Standalone sparse rooms send the complete original ZIP's SHA-256 hash, archive size and file counts, importer version, duplicate-language-block decisions and fingerprints, and baseline verification hashes. These import decisions are shared across language teams so each participant can reproduce the same baseline from their own ZIP. Standalone room creation uploads no baseline translation files. Manager-published rooms use the accepted uploaded ZIP identity and compact metadata. All Saved/staged files are shared within the matching game, branch, accepted baseline and selected language, including first translations, intentional blanks and unchanged saves; differing personal work is preserved for reconciliation. Dropped copies are shared separately by game, branch, language and file with explicit source-version assignment provenance, including their preserved original English, translations and entry metadata.

A file's first sparse shared save sends its original source fields and original translation blocks across languages, with a verification proof, for that affected file only. After the save commits, the server retains the selected language's original and saved translations, entry count, verification hash, and shared history; complete verification payloads from staged uploads expire after one hour if they never commit. Untouched files remain in each browser's local baseline; manager-published original ZIPs are retained separately and parsed temporarily when needed. Existing rooms retain their previously uploaded source manifests, translations and history through immutable payload references. Associating an existing workspace with a manager-published version preserves its room/shared history; old browser-local history remains local.

During collaboration, other participants can see your display name, an initials avatar, whether your editor is active or away, and which file you have selected or opened for editing. Away status is based on two minutes of inactivity or a hidden tab. This presence information is temporary; detailed keyboard or pointer activity is not sent or stored. Unsaved keystrokes are not broadcast. New shared translation history stores authenticated author identifiers and display names, timestamps, before-and-after translations, and change origins such as saves, merges, imports, and restores. Other translators in the same workspace can inspect this history and restore earlier versions. Existing local history is not uploaded as shared history. Offline saved changes remain queued in your browser until access and connectivity allow synchronization.

5. Who can access data

The service operator can access server-stored data to run, maintain, secure, and support SDEditor. Administrators can view account identities and language assignments. Translators receive the shared dictionary and its history for their assigned language. Managers and Admins can access every language's shared dictionaries, translations, dropped copies, and history without an assignment; the selected editor language controls their dictionary and translation workspace. Participants using the same game, source version, and language can read, edit, export, and restore shared translations, and see active file presence. Shared history includes author display names and account identifiers; it does not expose your email address, sign-in credentials, or personal settings.

Google handles sign-in. Cloudflare delivers the public website and the API connection. The editor loads libraries and fonts from providers including cdnjs, jsDelivr, and Google Fonts. These providers receive normal connection information, such as an IP address and browser request headers, when your browser connects to them. Their processing is governed by their own policies, including Google's Privacy Policy and Cloudflare's Privacy Policy.

The SDEditor application does not include advertising or analytics trackers. Hosting and network services may process operational logs for delivery, reliability, and security. We do not sell your personal data. Data may also be disclosed when required by applicable law.

6. Storage, security, and retention

Cloud data is stored on the SDEditor API server and may be included in operational backups. Public connections use HTTPS. Session credentials are stored in your browser, with only a hash retained on the server. The server also keeps administrative language-assignment audit records and synchronization metadata.

Your SDEditor session expires after 30 days without authenticated activity. Visits and active use renew it; background read polling alone does not. Session expiry does not delete your account, cloud settings, shared dictionary, or local work.

Local data remains until you remove it, clear site data, or your browser removes it. Unresolved dropped snapshots remain in browser and cloud storage across reloads, exports, language switches, and later source imports until saved, confirmed, or discarded. Resolution removes the copy from the active Dropped list. Discard clears that cloud snapshot's text; preserved immutable payloads, promoted snapshots, local recovery copies and resolution metadata can remain. Account records, cloud settings, shared dictionaries, manager-uploaded ZIPs and compact baseline metadata, preparation summaries, translated collection snapshots and older ZIP artifacts, collaboration archive identities and import decisions, saved/staged translations, dropped recovery and resolution records, legacy source manifests, posted comments/read receipts, audit history and backups do not currently have an automatic age-based deletion schedule. Migration replaces duplicate full managed parsed baselines only after verifying retained originals; it preserves history and recoverable shared content. Withdrawal does not erase retained work or artifacts. Operational backups compact and compress an isolated database snapshot and retain archive references/checksums, but exclude ZIP files. ZIP artifacts remain stored separately on the API server. Presence expires after disconnection or inactivity. No storage or transmission system can guarantee absolute security.

7. Your choices and deletion requests

Account and cloud-data deletion requests are handled manually by the maintainer; there is no automatic account-deletion button. Shared dictionary and translation contributions, history, and copies already exported by other translators are separate from your personal account. If a request concerns personal information in shared data, identify the affected entry or translation file so it can be reviewed. We will explain any limits involving shared copies, backups, or records that must be retained by law.

MTL translation requests and private review records

MTL is optional and requires your explicit data-sharing and private-retention choice in Settings. A request sends the selected English field and bounded relevant workbook context, Developer notes, saved character tone notes and approved glossary terms to the configured external translation service. That service's account and terms govern its processing. Review suggestions before accepting and saving them.

SDEditor privately retains generation evidence on its server, including the selected source, executed prompt and context. Explicit Dismiss saves a private review archive containing this evidence, the original generated translation, the dismissal and any edited rejection text. These records are excluded from translation exports and translation memory. This applies to local in-memory sessions too: closing a tab does not delete evidence already received by the server. Unsent local dismissal requests remain only in the tab and are lost when it closes or reloads.

Character tone notes are shared within their language team, game and branch across source versions. The server retains their authored text, revisions, author identity and timestamps. Clearing a note creates a revision and retains its earlier history. Only saved guidance is sent with an explicitly requested MTL translation; unsaved drafts and example placeholders are excluded.

Private review records are separate from shared translation history and the temporary Admin request-details view. They remain on the server until the maintainer removes them; contact the maintainer using the privacy-request details above for access, correction or deletion requests.

8. Changes and contact

We may update this policy when SDEditor's features or data practices change. The current policy and its update date will remain available on this page.

For privacy questions or requests, contact the SDEditor maintainer at lpeachl@gmail.com.