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
41
42
43
44
45
46
47
48
49
50
51
52
53
//! ashlar runtime: the [`App`] builder, the frame scheduler, crash guard, logging, telemetry and
//! agent control.
//!
//! An app declares its document type and [`Format`](ashlar_store::Format), its commands
//! (`fn(&mut Session<D>, &Value)`) and a view; [`App::run`] opens the window and gives it undo and
//! redo (one step per top-level command), save / open / autosave and crash recovery, menus, a
//! keymap editor and command palette, a crash guard and log files, the agent control port, and
//! telemetry when enabled. [`App::cli`] / [`cli_main`] serve the same commands as a CLI and MCP
//! server; [`App::headless`] and [`Driver`] run them in tests.
//!
//! | Module | |
//! |---|---|
//! | [`session`] | `Session<D>`: the state commands run on; the host glue (one undo step per command, failed commands change nothing) |
//! | [`runtime`] | `Runtime<D>`: one frame (control, jobs, keys, menus, view, dialogs, autosave), repaint policy, `Cx` for views |
//! | [`driver`] | `Driver`: a headless, virtual-clock event loop for tests and benches |
//! | [`crash`] | panic hook, crash logs, last panic, launch guard (from `ashlar-log`) |
//! | [`logging`] | stderr + rotating file + in-memory ring (`app.logs`), directive filters (from `ashlar-log`) |
//! | [`stats`] | frame-time p50/p95/max (`app.stats`) |
//! | [`wake`] | frame requests with a reason, frames and requests per reason (`app.stats` → `wakes`; from `ashlar-ui`) |
//! | [`telemetry`] | ashlar-telemetry hook points (feature `telemetry`) |
/// Logging and crash safety live in the headless `ashlar-log` crate (a CLI can use them without
/// the window); re-exported here unchanged.
pub use ;
/// The frame scheduler lives in `ashlar-ui` (it needs only egui, so hosts without the runtime use
/// it too); re-exported here unchanged.
pub use wake;
pub use ;
pub use Driver;
pub use ;
pub use ;
pub use ;
/// Methods the windowed runtime answers on the control port besides the standard ones.