Timing in Taleem is explicit, absolute, and declarative.
These rules define when content becomes visible. They do not define animation, transitions, or behavior.
Timing is part of the data contract. How that timing is enforced depends on the engine.
Ensure every timing value is:
These rules apply to all slide types, including flat-format
eq slides.
All timing values (start, end, showAt)
are measured in absolute seconds from the beginning of playback.
There is no concept of relative, local, or slide-based time.
Every slide defines a visible time window:
{
"start": 10,
"end": 20
}
start marks when the slide becomes visibleend marks when the slide stops being visibleA slide is considered visible when:
start ≤ currentTime < end
The start value is typically injected by the DeckBuilder
and equals the previous slide’s end.
The end value must be provided and must be
strictly greater than start.
showAt)
Items inside a slide may define showAt,
which controls when the item becomes visible.
{
"name": "bullet",
"content": "Key point",
"showAt": 12
}
An item is visible when:
currentTime ≥ showAt
Each showAt must satisfy:
slide.start ≤ showAt ≤ slide.end
If showAt is omitted, it defaults to slide.start.
Item order in the data array does not control timing.
Only explicit time values matter.
EQ slides use a flat list of entries.
{
"type": "eq",
"start": 50,
"end": 60,
"data": [
{ "name": "line", "type": "math", "content": "E = mc²", "showAt": 52 },
{ "type": "spText", "content": "Sidebar note" }
]
}
math, text, heading)
carry showAt
sp* entries are not timed individually
sp* entries appear together with their parent line
showAt on sp* entries is ignored
slide[i].end ≤ slide[i+1].start
slide.start ≤ showAt ≤ slide.end
sp* items must follow a main linesp* items are attached during transformationshowAt outside the slide’s rangeshowAt to sp* entriesend, creating a zero-length slideTiming rules exist even if an engine chooses not to use them.
Timing is a contract, not behavior.
These timing rules are fixed for deck-v1.
Any future timing-related features will appear only in
deck-v2.