PRIVACY
Privacy policy
Songnote (Piano Play) has no accounts. Score text is not sent to a server; it stays in this browser. This page matches the app code and deploy settings as of 2026-09-27.
Operator
The operator is Jonghoon Kim of Still Coding. Contact still.coding.cc@gmail.com. The service is not designed only for children, and it does not ask for an age.
What the app does not collect
- No name, email, or password account. Contact happens only if you send email yourself.
- Score text, opened files, and versions are not uploaded.
- The microphone, camera, location, and contacts are not used.
- The app code does not add analytics or advertising scripts, and it does not set cookies.
Scores kept in the browser
Storage is this browser’s localStorage. It does not sync to another device or browser.
| Key | Contents |
|---|---|
songnote-custom-pieces | Scores created with New score: title, composer, key, and ABC. |
songnote-drafts | A draft per score id. It updates as you edit, even before Save. |
songnote-draft | The last applied score text. The next visit reopens it. |
songnote-versions | One ABC version each time you press Save. |
The four examples live in the app file, not in these keys, so they return after storage is cleared. If storage is full, the screen asks you to download the score.
The display language is only the URL. The choice is not stored separately. Opening a Korean URL shows Korean, and opening an /en/ URL shows English. The app does not redirect you because of the browser’s language.
Opening and downloading files
Open reads an .abc or .txt file and rejects anything over 100KB. Reading finishes in the browser and makes no network request. The file becomes the current score and songnote-draft, but it is not added to the library card list automatically.
Download builds songnote.abc from the ABC you are editing. That file stays on your device.
Feedback
The studio loads the Still Coding feedback widget once. The public id is piano-play-still-coding-cc. It is not a secret. If you press the feedback button and submit, the title, description, optional reply email, and optional screenshot are sent to https://user-feedback.still-coding.cc. A screenshot must be JPEG, PNG, or WebP and at most 5MB. The service also stores the browser user agent and a hash of the IP address.
The score text, the page URL, a full-screen capture, and console logs are not sent automatically. Do not include passwords, API keys, or a private score you do not want stored. From one IP, this app accepts one submission every 10 seconds and 10 per hour. The app does not set a retention period; the operator keeps the message until deleting it. Deletion requests go to Contact.
The widget does not require an invite login. A submission from the registered site origin is stored. The button is hidden while the score editor or the in-app guide is open, so it does not cover editing or the keys there. Changing language closes an open feedback window.
Sound
Playback and the keys are synthesized on this device with the Web Audio API. Audio is not sent to a server and is not saved as a recording. Hiding the tab stops playback. If the browser blocks sound, the screen says audio did not start.
Server and logs
The site is static files on Cloudflare Workers. A request can leave operational data such as the URL, time, and status in Cloudflare logs. Workers observability is enabled. Score text is not in the URL or the request body, so those logs do not contain the score. The app code does not set a retention period for those logs; retention follows the Cloudflare account.
There is no public URL for a private score. ?piece= opens only the example ids ode, twinkle, elise, and techniques, and those query URLs are not in the sitemap.
Advertising
There is no ad script, publisher ID, or ads.txt yet. Ad code will not be added before a publisher account is confirmed. A consent tool for personalized ads in the EEA, UK, and Switzerland is not included, because personalized ads are not served.
If ads are considered later, the candidates are reading pages only: the user guide, scores, and each score note, in Korean and English alike. Those pages have data-ad-eligible="true".
The studio, editor, playback, keyboard, delete and open controls, about, privacy, terms, contact, and missing URLs are not ad eligible in either language. The studio removes ad tags if they appear and sets data-ad-eligible="false". Auto ads are not turned on across the performance screen. Ads are not placed beside the staff, editor tools, transport, keyboard, or delete and open controls.
Keeping and deleting
- The four built-in examples cannot be deleted.
- A score you created is deleted from the studio after confirmation. The card, draft, and versions are removed together.
- Clearing site data or localStorage removes all four keys. There is no server copy to delete.
- Email you send is handled in the mailbox. Do not include personal information that is not needed to solve the problem.
Changes
If storage or advertising changes, this page is updated and the visible date and the sitemap lastmod use that date. The English page states the same behavior as the Korean page.