Capture artifacts
What Quikap writes to disk for each capture, how QuikapStudio reads it, and how the format is versioned so that old and new versions of the two programs keep working together.
An artifact is a folder
Every capture Quikap takes is written to a folder of its own, on your disk:
<artifact>/
├─ manifest.json what this is: schema version, id, when, kind, source, content
├─ source/
│ ├─ still.* a still, or
│ ├─ tiles/<level>/… a large capture as tiles with mip levels, or
│ └─ recording.* a recording
├─ telemetry/
│ ├─ cursor.cbor the cursor's movement, kept apart from the pixels
│ └─ clicks.cbor the clicks
├─ audio/
├─ thumbnails/
└─ metadata/
├─ panorama.json how a panorama was stitched, with its confidence
└─ displays.json the displays as they were, with their scale factors
The folder is written to a temporary location and moved into place in one step when it is complete, so that QuikapStudio never sees a half-written capture. Artifacts inherit your user account's permissions and nobody else's.
The manifest
manifest.json is validated against a published JSON Schema (draft 2020-12). It names the schema version, the
artifact's id, when it was taken, its kind (still, panorama or recording), the source (platform, capture
backend, the logical and pixel bounds, the DPI scale) and the content (the file, its type and size, the tile manifest
for a tiled capture, the duration of a recording). Unknown fields are kept and ignored; a required field that is
missing or of the wrong type rejects the manifest whole rather than guessing.
What is never in an artifact
Keyboard input is recorded only when you explicitly switch it on for a recording; it is never captured by default. Window titles, the names of other programs, their command lines and access tokens are not written into an artifact unless a feature needs them and you chose that feature. The provenance an artifact carries is what is needed to render it the same way again, and no more.
Versioning
The manifest schema and the control protocol are versioned separately, and each program says which versions it reads and writes when the two connect. Fields are added, not changed; a change that breaks older readers is a new major version with migration code in QuikapStudio. Both programs are tested against the versions before them, so that an older Quikap and a newer Studio, or the other way round, keep working together.
Opening an artifact with something else
It is a folder of ordinary files: a PNG, a video, JSON and CBOR. You can open it with anything that reads those. The schema is published with the source of both programs.