ditherd is a browser-based binary raster synthesizer for oscilloscope-inspired interference patterns, harmonic traces, and animated GIF export.
- Eight synthesis modes with mode-aware scientific controls
- CPU safety governor for heavy modes and randomized states
- Dedicated mobile route (
/mobile/) with touch-first layout - PNG and GIF export (client-side)
- Shareable links that encode current state
- Guide and support overlays
python3 -m http.server 8000Open http://localhost:8000.
Mobile route: http://localhost:8000/mobile/.
Routing behavior:
- Mobile devices on
/auto-redirect to/mobile/ - Desktop users on
/mobile/auto-redirect back to/ - Use
/?desktop=1to force desktop view on phones
npm run checkThe smoke check validates required static files, local HTML references, and public configuration values.
Support and feedback links are configured in launch-config.js:
tipPrimary: Stripe donation/payment linktipKofi: optional Ko-fi profilefeedback: email or hosted feedback formroadmap: public project notes route
tipPrimary currently points to the live Stripe support link. If it is empty, the support modal keeps the tip action disabled.
- Edit
launch-config.js. - Reload the local page.
- Click
Supportand confirm the links open correctly.
RrandomizePpreset cycle[and]mode stepGexport GIFLcopy share linkHopen guideTopen supportSpacepause/resume
ditherd is a static site. Serve the repository root from Cloudflare Pages, Vercel, Netlify, or any static host.
- Cloudflare/Netlify headers are defined in
_headers. - Vercel headers are defined in
vercel.json. - Production domains:
ditherd.comandwww.ditherd.com.
- CSP is configured for:
- local scripts (
main.js) cdnjsGIF library- Google Fonts
- local scripts (
- Inline JS handlers are removed to keep CSP strict.
- Additional docs:
SECURITY.md.well-known/security.txt
favicon.svgicon.svgog-card.pngog-card.svgbrand-assets/site.webmanifestrobots.txtsitemap.xml
index.htmlincludes Open Graph and Twitter card tags.og-card.pngis prewired tohttps://ditherd.com/og-card.png.- If previews look stale after deploy, purge cache for updated files in Cloudflare.
Support links are loaded from launch-config.js:
tipPrimarytipKofifeedbackroadmap
Update those URLs when donation, feedback, or project-notes destinations change.