Privacy Policy
Last updated: May 7, 2025
Your privacy is important to me. This policy explains exactly what is stored in your browser, why, and how it's used. All shell files and settings stay in your browser—only contact form data (name, email, message, hCaptcha token) is sent to a Netlify backend and then to SMTP2Go.
1. Information I Store
- Cookie Consent (
cookie-consent
): Set toaccepted
ordeclined
inlocalStorage
. Used only to decide whether to persist your in-shell files across sessions. This key is stored even if you decline, so I remember your choice. - Demo Initialization (
demo_initialized
): Until you accept cookies, the shell re-loads a set of demo files on every visit for quick testing. Once cookies are accepted, this runs just once. - File System Storage (powered by
tortalfs
IndexedDB): When you create or edit files in the shell:-
If
cookie-consent=accepted
, your files are saved in your browser's IndexedDB database namedtortalfs
, using the object storefiles
. They persist across sessions. -
If
cookie-consent=declined
(orlocalStorage
is unavailable), files are temporarily stored in memory and deleted on reload. - Encryption: Files are stored unencrypted in your browser. Anyone with access to your device or browser profile can read them directly.
-
If
- Theme Preference (
color-theme
): Your light/dark mode choice, stored inlocalStorage
. This does not affect file persistence.
2. How I Use This Data
- In-Browser Only:
- All shell files, settings, and preferences stay in your browser; they are never uploaded, emailed, or shared with third parties (outside of the fetch proxies described below).
- Improve Experience:
- Remembering theme and consent avoids repeated prompts.
- Persisting files lets you build, edit, and preview files across sessions.
3. Cookie & Storage Controls
You can change your consent at any time:
- Banner Buttons: “Accept” or “Decline” via the cookie banner.
- Shell Commands: Type
cookies accept
orcookies decline
in the terminal. - Clearing Cookies: If you clear cookies or localStorage after accepting,
all persisted files in the
tortalfs
database and thedemo_initialized
flag are deleted. The shell will then load in-memory files (or re-bootstrap the demo) until you accept again.
4. Third-Party Services
- Netlify Functions: Powers the contact form. Your contact form data (name, email, message, hCaptcha token) is sent to Netlify, where hCaptcha is validated, then forwarded to SMTP2Go for email delivery. See: netlify.com/privacy.
- SMTP2Go: Processes contact form submissions to send email. See: smtp2go.com/privacy.
- hCaptcha: Protects the form from spam and may set its own cookies. See: hcaptcha.com/privacy.
- AllOrigins CORS Proxy: When you use the
curl
command to fetch arbitrary URLs, requests are routed through api.allorigins.win to bypass browser CORS restrictions. No personal data or shell file contents are sent to this proxy—only the requested URL and the fetched content. - No-CORS Fetch Mode: You can override the proxy with
--no-cors
, causing an opaque fetch directly from your browser. In that case, the browser's same-origin policy applies and only raw response bytes are available. - No analytics or other tracking scripts run on this site.
5. File Export
At any time, you can download your shell files back to your computer using the
export
command (e.g. export path/to/file.txt
), which will
trigger a browser download of the specified file from the in-browser filesystem.
If you specify a directory, its contents will be packaged into a ZIP archive and downloaded
as <directory>.zip
.
6. Tearing Down Storage
To completely reset your shell environment:
- Export: Use the
export
command to download any files or directories you wish to keep. - Clear Shell Storage: Run
clearstorage
to wipe the in-memory or IndexedDB filesystem. - Clear Cookies: Choose “Decline” in the cookie banner or run
cookies decline
in the terminal to remove cookie-consent and demo flags. - After these steps, reload the page and the shell will boot fresh.
7. Your GDPR Rights
Under GDPR, EU visitors have the right to:
- Access: Request a copy of any data I hold.
- Rectify: Correct any inaccuracies.
- Erase: Request deletion (includes contact messages and logs).
- Restrict Processing: Temporarily block use of your data.
- Object: Object to certain data uses.
- Portability: Receive your data in a machine-readable format.
7. How to Contact Me
Questions or rights requests? Get in touch via the contact form.
By using this site, you acknowledge you've read and understood this Privacy Policy.
8. Open Source Attribution
The in-browser shell storage is implemented with modern Web APIs (in-memory Map & IndexedDB named tortalfs
, store files
).