Docs / Brayer for iPad

Relief bundles

What a .relief file holds, the privacy switches on export, how import handles conflicts, and the round-trip guarantee.

Updated 2026-09-09

A .relief bundle is one or more projects, packed up whole. It is how work leaves an iPad: to a backup drive, to a second iPad, to a student, to whoever holds the archive after you.

It is also the reason Brayer can promise you own your records. Open the bundle on any computer and the files inside are readable JSON.

What is inside

A .relief file is a zip archive laid out like this:

myproject.relief/
├── manifest.json          format, contents index, asset index, checksums
├── metadata.json          human-readable summary
├── projects/<uuid>/
│   ├── project.json
│   ├── design.json
│   ├── separations.json
│   ├── carve-plans.json
│   ├── edition.json
│   └── sessions.json
├── ink-recipes.json   papers.json   base-inks.json   tools.json
├── paper-tests.json   consignments.json   exchanges.json
├── assets/<uuid>.<ext>    images, drawings, recordings
└── preview.png            the cover Files shows

Every JSON file is the same envelope: an entity name, a schema version, the data, and a customFields slot reserved for later versions to fill.

Drawings from the Design canvas travel as .pkdrawing assets alongside the images, so a layer comes back as a layer you can keep drawing on, not as a flattened picture.

Assets are stored by content hash. Use the same photo in three places and the bundle carries one copy.

The manifest holds the counts (projects, impressions, recipes, papers, tools, sessions, exchanges, assets), the index of what is in the bundle, the asset table, a SHA-256 checksum of the bundle, and the settings it was exported with.

Exporting

Export from a project: the title menu ▸ Export .relief, or Export .relief from a card's menu in the Library.

The sheet shows what travels, project by project, with the counts under each title. Then three switches.

Switch Default What it controls
Include sale data Off Sale dates, prices and channels. Off means prices leave the bundle empty.
Include buyer data Off Names, emails and addresses of collectors and exchange participants. Needs sale data.
Include tools Off Your whole gouge, brayer and baren inventory, for a studio backup

The defaults are deliberate. A bundle you send a student should not carry your collectors' home addresses. Turn the switches on when you are backing up your own studio, and leave them off when the file is going to somebody else.

When the export finishes you get the file name, its size, the first part of the checksum, and the asset count. Share bundle sends it through the share sheet: Files, AirDrop, mail, whatever you use.

Importing

Library ▸ options menu ▸ Import .relief, then choose the file.

Before anything is written, the sheet shows you what it found: the summary line, then every project in the bundle with its counts. Anything already in your studio is tagged "Already here".

If there are conflicts, you choose how to handle them:

Strategy What happens
Skip Keep what is in the studio. Import only the new projects.
Replace Overwrite the project in place. Impressions it no longer contains are archived, never deleted.
Duplicate Import alongside as a fresh working copy, with its own IDs and a copy of every image. Sales stay with the original.

Nothing is ever hard-deleted by an import. Replace archives what it displaces.

Shared studio records follow a different rule from projects. Paper tests, consignments and exchanges are matched by id, inserted when they are new, and never overwritten or duplicated. A row already in your studio is yours and wins. Buyers work the same way.

When it is done you get a summary of what came in, plus any warnings.

The round-trip guarantee

Export a project, import it on another iPad, export it again, and you get the same bytes. That is the promise, and it is why the JSON is written with sorted keys, ISO-8601 dates and stable array ordering.

The export sheet has a Verify round-trip button. It exports a project, reads it back into a clean store, exports again, and compares the two. It reports PASS or FAIL with the file count, so you can check the promise yourself rather than take it on faith.

Ink recipes travel too

One recipe does not need a whole bundle. Open a recipe in Studio ▸ Ink library and tap Share as .relief-ink.

That writes a small JSON document: the format tag, the recipe name, base type, swatch colour, each component ink with its colour and ratio, the modifiers with their percentages, the tags, the notes, the paper it was tested on, and who exported it. Pass it to a friend the way you would pass a swatch card. See Studio log.

What bundles are for

  • Backup. Everything on one iPad, on a drive you control.
  • Moving to a new iPad. There is no iCloud sync in this version, so a bundle is the way across.
  • Teaching. Send students a project set up with the block size, the template and the registration you want them to use.
  • Archiving a finished series. Off the iPad, onto storage, readable in ten years without this app.
  • Estate and insurance. The record of what exists, what it was made of, and where it went.

Not in this version

The bundle format is versioned with semver, and this reader accepts any bundle with the same major version. There is no PDF-only insurance report and no export to individual loose JSON, only the .relief bundle and .relief-ink. There is no cloud storage of bundles: a bundle is a file, and where you put it is your business.