verso_tile/lib.rs
1/* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
5//! `verso-tile` — the engine-flip tile.
6//!
7//! A *flip* re-presents the same page through a different engine with the
8//! user's place and session carried across (the compatibility-view charter;
9//! mere's `verso_docs/technical_architecture/2026-06-10_compatibility_view_charter.md`
10//! is the design record). Where inker's multiplexer picks an engine per
11//! address, the flip is its **dynamic** counterpart: it swaps engines
12//! mid-session, carrying cookies, scroll, and forms from a glass-box donor to
13//! a black-box receiver and back.
14//!
15//! One crate, four modules — consolidated from the mere workspace's four-crate
16//! family (2026-07-09, inker-serval adoption plan):
17//!
18//! * [`api`] (was `verso-api`) — the engine-agnostic contract: [`api::PortableViewState`],
19//! the layer lattice, and the donor / back / receiver traits. Dependency-free
20//! so an external black-box implementor reaches it without engine deps.
21//! * [`flip`] (was `verso`) — the orchestrator: masks the carry to the layers
22//! both sides support (degrade, never block) and runs the one-hop
23//! forward/back choreography. A secondary never implements
24//! [`api::FlipDonor`], so flips cannot chain.
25//! * [`scry`] (was `verso-scry`) — the black-box receiver: a two-phase
26//! forward-inject state machine (cookies + navigate, then restore on load)
27//! over the thin [`scry::ScrySurface`] seam a host implements on its
28//! concrete WebView producer.
29//! * [`serval`] (was `verso-serval`; behind the `serval-donor` feature) — the
30//! glass-box donor over serval's scripted DOM plus host-fed runtime and
31//! session state.
32
33pub mod api;
34pub mod flip;
35pub mod scry;
36#[cfg(feature = "serval-donor")]
37pub mod serval;