Skip to main content

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;