iComic format draft 0.4.0 — The Gremmoire Reader

iComic format — provisional draft 0.4.0

This specification is provisional. It is the current beta contract shared by Reader and Reader Publisher, not yet a stable interchange or archival standard. Fields, limits, profiles, and migration rules may change before a stable release.

iComic is a page-first interactive-comic format, not a video with comic controls. Each page owns layered panels, an explicit accessible reading order, and discrete reveal steps. Local images, video, audio, transitions, and optional compositing can respond to those steps. The essential page must remain understandable when those enhancements are unavailable.

Working identity and compatibility

{
  "format": "valentine.interactive-comic",
  "schemaVersion": "0.4.0"
}

The development container is .icomic: an ordinary ZIP archive with a custom extension. The provisional app file-handler MIME is application/vnd.gremmoire.icomic+zip; generic application/zip remains accepted during beta development.

The current Reader:

Draft 0.4.0 adds fail-closed capability negotiation, explicit page reading order and summaries, optional cover metadata, verifiable media byte declarations, and a bounded compositing vocabulary. Legacy drafts remain readable but do not retroactively gain guarantees for fields they never declared.

Minimum 0.4.0 manifest

{
  "format": "valentine.interactive-comic",
  "schemaVersion": "0.4.0",
  "id": "my-comic",
  "title": "My Comic",
  "capabilities": {
    "required": ["reading-order"],
    "optional": ["panel-reveals"]
  },
  "pages": [
    {
      "id": "page-1",
      "label": "Page 1",
      "summary": "The protagonist enters a dark station.",
      "readingOrder": ["page-1-art"],
      "panels": [
        {
          "id": "page-1-art",
          "type": "image",
          "src": "assets/pages/page-001.webp",
          "alt": "A lone figure enters an unlit railway station."
        }
      ]
    }
  ]
}

The assets catalog is optional, so one local source per panel is valid. In 0.4.0 every image, GIF, and video panel needs meaningful alt; every text panel needs nonempty text. Media-bearing content needs a local src, including content that also references a logical asset.

my-comic.icomic
|-- comic.json
|-- assets/
|   |-- panels/
|   |   |-- page-001.avif
|   |   `-- page-001.webp
|   |-- audio/
|   |   |-- rain.opus
|   |   `-- rain.m4a
|   `-- video/
|       |-- motion-av1.webm
|       `-- motion-h264.mp4
`-- README.txt

For schema 0.4.0, comic.json is the only accepted manifest name and must be at the archive root. The aliases story.json, manifest.json, and reader.json remain readable only for legacy schema packages.

Archive rules:

Capability negotiation

capabilities has two arrays, each capped at 32 unique lowercase kebab-case names:

{
  "capabilities": {
    "required": ["reading-order"],
    "optional": ["audio-cues", "visual-compositing"]
  }
}

A Reader rejects a package when it does not understand a required capability. It may open a package with an unknown optional capability, but warns and uses the readable fallback. Capability names describe behavior; they do not grant permissions.

Capability Contract
reading-order Page panels can declare a separate accessible order.
media-variants Logical assets can provide bounded local alternatives.
panel-reveals Panels appear on discrete reveal steps.
panel-transitions The bounded transition vocabulary may be used.
panel-animations Decorative motion may be used and must respect reduced motion.
audio-cues Bounded local audio cues may run on entry/reveal/step.
video-panels Local video panels may be present.
visual-compositing Opacity, blend mode, and bounded effects may be used.
context-appendix Reader-wide context and linked terms may be present.

The older experimental booleans remain descriptive compatibility hints. They are not a substitute for required/optional capability negotiation.

Media-profile principle

The formats named here are first-class options, not universal winners. Results depend on the source, encoder, quality target, browser and operating system, and the author’s experience and preference.

Role Preferred high-efficiency choices Practical compatibility choices
Static image AVIF or WebP WebP, JPEG, or PNG where appropriate
Lossy audio Opus or AAC-LC in M4A/MP4 MP3 or supported Ogg audio
Lossless audio FLAC PCM WAV when its size is deliberate
Video AV1 in WebM/MP4 H.264/AVC in MP4

WavPack and H.266/VVC may be useful authoring/master inputs. They are not 0.4.0 browser-delivery promises. Publisher rejects WavPack in an iComic delivery package instead of silently exporting an unplayable cue. Animated AVIF and GIF imports remain deferred until bounded playback and fallback policies exist.

Logical assets and ordered variants

One manifest may declare at most 10,000 logical assets. Each may contain one to four ordered local variants:

{
  "assets": [
    {
      "id": "page-1-art",
      "kind": "image",
      "fallback": "assets/pages/page-001.webp",
      "delivery": {
        "profile": "painted-page",
        "selection": "first-supported"
      },
      "variants": [
        {
          "src": "assets/pages/page-001.avif",
          "type": "image/avif",
          "bytes": 481203
        },
        {
          "src": "assets/pages/page-001.webp",
          "type": "image/webp",
          "bytes": 639441
        }
      ]
    }
  ]
}
Asset field Meaning
id Unique stable logical-asset ID.
kind image, audio, or video; every variant must match.
fallback Required baseline path and one of the declared variants.
delivery.profile Inspectable authoring label; it does not select a decoder.
delivery.selection The only current value is first-supported.
variants One to four alternatives in preference order.
Variant field Meaning
src Required relative local path.
type Required MIME type consistent with the role and actual file.
codecs Optional browser capability hint, principally for audio/video.
bytes Optional positive integer. If supplied, it must exactly equal the packaged entry size and remain within the 80 MB ceiling.

Do not duplicate a source within one asset, bind one path to multiple logical assets, or assign one path conflicting roles. A declared type cannot disguise an extension or file signature.

An image background, cover, image/video panel, or audio cue can reference an asset. Its src must still exactly equal that asset’s fallback. The Reader tries variants in author order when the browser appears to support them and may retry a later local alternative after decoding failure.

Top-level fields

Field Current meaning
format Must be the working ID or a recognized legacy ID. Unknown IDs reject.
schemaVersion 0.4.0; 0.3.1, 0.3, and 0.2 are legacy-readable. Unknown versions reject.
id Stable work identifier, normalized to a safe local ID.
title Defaults to Untitled comic, maximum 240 characters.
creator Optional, maximum 240 characters.
description Optional, maximum 1,000 characters.
language Language hint, defaults to en, maximum 35 characters.
direction ltr or rtl; full RTL certification remains open.
cover Optional image source/asset plus required alt text in 0.4.0.
context Optional Reader-wide context/appendix, maximum 100 entries.
capabilities Required and optional behavior declarations.
assets Optional logical-media catalog.
experimental Legacy provisional behavior hints.
presentation Default fit, start mode, and page gap.
pages Required, 1–10,000 pages.

presentation.fit accepts contain, width, or height; presentation.startMode accepts panel or page; pageGap is clamped 0–100.

Page contract and accessible order

Field Current meaning
id Unique stable page ID.
label Timeline label, maximum 120 characters.
summary Optional accessible/editorial page summary, maximum 2,000 characters.
aspectRatio Positive number or ratio string such as 2/3 or 16:9.
background Color, gradient, image, or provisional dynamic background.
readingOrder Panel IDs in the order assistive and page-mode reading should use.
panels Layered visual/text/video content.
cues Page-scoped events such as entry ambience.

If readingOrder is supplied, it must name every panel exactly once: unknown, duplicate, and omitted IDs reject. When absent, manifest panel order is the fallback. z controls visual stacking and never changes reading order.

Background values accept only a narrow sanitized color/gradient grammar. Image backgrounds may use src, asset, fit, and bounded depth. URL/data/blob functions and network-capable CSS are discarded.

Panel contract

Field Current meaning
id Unique within the page.
type image, text, video, gif, pdf-page, or reserved canvas.
asset / src Optional logical reference plus required local fallback for media.
alt Nonvisual description, maximum 500 characters; required for 0.4 media panels.
text Plain text, maximum 10,000 characters; required for 0.4 text panels.
frame Page-relative percentages, rotation, and radius.
fit contain, cover, or fill.
opacity Number clamped 0–1.
blendMode normal, multiply, screen, or overlay.
effect none, blur, glow, or monochrome.
depth Optional pointer/tilt depth, clamped -10–10.
z Visual layer order, clamped -100–1,000.
reveal atStep 0–10,000, transition, and duration 0–30,000 ms.
animation Optional decorative motion.
playback Video autoplay, mute, loop, and inline hints.
cues Events attached to this panel/reveal.

Frame x/y are clamped -300–300 and width/height 1–300, permitting bounded off-canvas placement and overscan. Supported transitions are none, fade, rise, slide-left, slide-right, ink, and focus. Decorative animations are none, drift, pulse, float, pan, and breathe; they must never carry information lost under reduced motion.

Cue contract

Recognized cue types are audio, tone, background, vibrate, and caption. Audio cues may use a local audio asset. Current triggers are:

The Reader cancels delayed cues when a new reveal or page supersedes them. Browser autoplay and codec rules override playback hints. Channel replacement, crossfade, loop lifetime, mastering metadata, and transcript linkage remain provisional.

Cover and extended appendix

cover is optional and uses the same local image asset bridge as a panel. In 0.4.0, a supplied cover needs both a source and meaningful alt text.

Each top-level context entry needs a stable id, label, title, and concise body. An optional term links exact matching text to a hover/focus preview and click/tap appendix entry. Optional details supplies the expanded explanation. Entries without a term remain available from Comic margins. The limit is 100 author-context entries per work.

Packaging performance

The Reader opens comic.json first, resolves only media for the current page, and may warm a bounded part of the next page while idle.

Reader Publisher 0.4.0 exports text entries with DEFLATE and media entries with Store. Its current beta export uses one declared delivery source per staged layer; the format supports up to four. Importing a multi-variant package stages its declared fallback and warns the author to retain the original and masters.

Safety and resource limits

Current rejection ceilings include:

These are rejection limits, not performance promises. A valid package can still exceed the practical memory or decoding capacity of a particular phone.

Reader conformance principles

A conforming beta Reader should:

  1. Reject unknown schemas and unsupported required capabilities.
  2. Warn and fall back when an optional capability is unavailable.
  3. Preserve explicit reading order independently of visual stacking.
  4. Expose essential content without sound, haptics, animation, sensors, depth, or one optional codec.
  5. Respect reduced motion and mute immediately.
  6. Provide keyboard and button navigation independent of gestures.
  7. Expose authored alt text, context, captions, and page summaries.
  8. Never execute package-provided scripts, HTML, CSS, plugins, or network calls.
  9. Verify declared local media sizes before exposing archive assets.
  10. Tear down media, timers, decoders, and temporary URLs when leaving a work.

Reader Publisher 0.4.0 behavior

The iComic template compiles a real Reader-openable .icomic, rather than a generic prose package carrying an iComic label. Publisher maps included page records, summaries, scoped media layers, reveal steps, transitions, compositing, video playback, audio entry/step cues, context, cover art, and opening artwork into the manifest and archive.

Pages with no visual media receive a readable text fallback. Staged opening artwork receives its own first reveal on page one; that page’s authored panel and step-cue numbers shift forward so the opener is not immediately covered. Export runs the same validator used by Reader. Publisher draft JSON remains the editable working record; .icomic is the delivery copy and does not publish itself.

Local .icomic import uses the actual Reader loader and validator. It rebuilds pages and editable placements from safe local fallbacks. This is an editing bridge, not lossless source recovery: retain the original package and masters.

Packaging checklist

See Authoring and encoding for the production workflow.

Remaining open questions

Source availability and bespoke Readers

The iComic specification and observable behavior may be discussed publicly. The Gremmoire Reader and its authoring/tooling source remain closed.

For a bespoke Reader or authoring workflow adapted to another site, contact [email protected]. A recipient of a bespoke source copy may host, adapt, modify, and use that delivered copy. This does not make the Gremmoire Reader or general toolchain open source.