1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// The mark, in the docs.rs sidebar and its tab. Absolute URLs because rustdoc
// does not copy local files into the generated output — docs.rs would serve a
// dead link to a path that only exists in this checkout.
// The README is the crate's front page on docs.rs as well as on crates.io: this
// is an application, so what a reader needs first is what zoetrope does, not the
// module list. Its images use absolute URLs for the same reason the logo above
// does. What follows is the part that only concerns someone depending on the
// library rather than running the binary.
//!
//! ## The library
//!
//! The portable core behind both the native frontend
//! (the `zoe` terminal app, `src/main.rs`) and the browser frontend (the
//! `zoetrope-web` crate at `web/wasm/`, which depends on this one with default
//! features off).
//!
//! Portable everywhere: the domain [`state`] (model + unified replay/live
//! [`timeline`](state::timeline) + flow-graph projection), the [`ui`] rendering,
//! and [`transcript`] parsing. The wire types and pure replay assembly live in
//! [`tailer`]; its live file-tailing + the terminal loop ([`tui`]) and input
//! ([`handler`]) are native-only (they pull tokio/crossterm/fs) and `cfg`-gated
//! behind the `native` feature.
// The native frontend: terminal loop + crossterm input.