Custom Backgrounds¶
Your images, as note and app backgrounds. Upload a picture once; Glassy generates the renditions, dedupes by content hash, and — since beta.40 — syncs both the rows and the image files to your paired appliance.
Uploading¶
Settings → Backgrounds (or the note background picker) accepts common image formats. Every upload runs an atomic pipeline:
- The original is validated and content-hashed — an identical re-upload returns the existing entry instead of storing a duplicate.
- Three renditions are generated: thumbnail, mobile, and desktop (WebP), with EXIF orientation applied so phone photos are not sideways.
- Only after every rendition succeeds do the files move into place — a mid-pipeline failure never leaves a selectable-but-broken background.
Files live under your instance's persistent volume
(uploads/backgrounds/<you>/{thumbs,mobile,desktop}/), so they survive
container rebuilds.
Availability¶
| Surface | Custom backgrounds |
|---|---|
| Cloud | Available within your plan's storage limits |
| Self-hosted appliance | Unlocked, no metering |
Sync (beta.40+)¶
Custom backgrounds are a synced type:
- Rows (name, hash, dimensions, size) sync like any other content type — captured by database triggers, delivered through the outbox.
- Image files transfer with the Cloud Sync media step: your appliance fetches any rendition it is missing from the origin, best-effort, retrying each cycle.
- Deleting a background removes its row and its files on the instance that owns them.
Troubleshooting¶
| Symptom | Cause / fix |
|---|---|
| Upload fails on a large image | Check the instance's storage cap (Settings → Storage); free-tier cloud accounts are metered |
| Background missing on the appliance after sync | Open Settings → Cloud Sync: the amber media missing count shows pending renditions; they retry every cycle |
| Same image uploaded twice shows once | By design — content-hash dedup returns the existing entry |