Expand description
The Tilo application SDK.
The golden path is framework: declare a resource type and its actions
with [tilo_resource], write views against a framework::ViewCx, and
framework::run provides storage, sync, collaboration, history, undo,
permissions, the action palette, the agent and script door, and search.
The CRDT engine is not part of that surface.
The rendering toolkit is re-exported unchanged for widgets, custom surfaces and the imperative escape hatches.
Application manifests normally rename this package to ui:
ui = { package = "tilo-app", path = "../../crates/sdk/tilo-app" }That one line is the whole manifest an app needs. Every OS affordance is on
by default — history, undo, permissions, collaboration and device sync,
the host file chooser, media controls, notifications and GPU video — so an
app never picks features to get them. A headless tool that wants only the
toolkit sets default-features = false.
Shell and framework internals may depend on the lower tilo-ui package directly;
ordinary applications should use this facade.
Re-exports§
pub use tilo_resource;pub use serde_json;pub use tilo_feedback as feedback;pub use tilo_files as files;
Modules§
- a11y
- Accessibility semantic model: the data layer. Defines the
toolkit-ergonomic semantic types —
Role,AccessNode,AccessState, andAction— that everyWidgetdescribes itself with viaWidget::accessibility. - a11y_
tree - The retained accessibility tree — a stable, frame-to-frame semantic model of the running UI.
- accesskit
- accesskit_
bridge - AccessKit bridge: turns the toolkit’s per-widget semantic model
(
crate::a11y::AccessNode, fromWidget::accessibility) into anaccesskit::TreeUpdate, published over AT-SPI2. - action_
palette ActionPalette— the one Ctrl+K surface for atilo_ui::App.- advanced
- What a hand-written
Widgetdraws and lays out with: the renderer’s scene and transforms, the layout tree and the windowing events. Views built fromframework::ViewCxnever name them. - agent_
identity - A single, non-human identity silhouette for agents across Tilo.
- animation
- Shared motion system. One curve set (
Curve), one wall-clock driver (Animated), one interruptible open/close driver (Transition), and one stateful velocity-carryingSpringfor interactive drag. - app
- app_
surface - Which app surface the changes an app makes are decided against.
- application
- Checked application construction shared by hosts, independent of any runner.
- application_
view - Versioned, device/workspace-local presentation. Never contains document bytes.
- auth_
backdrop - Quiet current: the shared authentication artwork for the lock and greeter.
- author
- The one way every app draws who did something, so no app can forget to
say that a bot is a bot. A person gets their round avatar; an agent its
identity mark; a bot a rounded-square tile and a
BOTchip that is never elided. A bot may show another name (an appearance): it is shown, the chip stays, and a name that looks like a room member’s carries its service. - automerge
- Automerge
- backdrop
- The blurred material floating chrome is made of.
- background
- Background work and timers, provided by the host:
tilo_rt::backgroundunder the toolkit’s module path. - bound_
dispatch - Lifetime and canonical-record routing shared by retained and raw widget dispatch.
- caps_
lock - Heuristic Caps-Lock detection.
- capture
- Screen capture, as the host provides it.
- chart_
palette - Theme-aware reusable colour palettes for charts and data visualisation.
- charts
- Charts and plots
- chrome
- Reusable chrome — the framed UI around content. Two layers, not the
same thing: application chrome (
page,status_barand thecrate::widget::Toolbar) is the frame an app draws around its own content (the app owns button specs and click handling, the toolkit owns the look); shell chrome (shell) is the vocabulary the OS paints in around and between apps — top bar, window decorations, workspace disc, quick settings, collaborator surfaces (seecrates/sdk/ui-core/HIG.md§9). - clipboard
- Clipboard backends — how a
uiprocess accesses the selection:tilo_clipboardunder the toolkit’s module path. - clock
- The clock as a person reads it: local date and time.
- close_
admission - Shared, device-local close admission. Saving an external document still goes through its declared action; host chrome owns only the close decision.
- collaboration
- Toolkit-side collab client: a synchronous, non-blocking
send/pollpair trading typedCollabRequest/CollabEventframes, stable so every downstream app keeps compiling while the transport underneath changes. - collection_
transition - Bounded keyed transition snapshots for virtualized collections.
- color
- Colour conversions shared by the toolkit and apps:
#hexparsing and formatting, HSV and HSL, and WCAG relative luminance and contrast. - color_
compat - Compatibility helpers for the byte-channel accessors and
f64constructors thatpeniko::Colordoes not provide. - component_
lifecycle - How a widget takes part in closing its window and components: unsaved work, persistence checkpoints, component close reports and deferred window close.
- content_
layout - Responsive content-width policies for app surfaces.
- control_
custody - Emission-time local control custody. Emission-time custody for registered local controls.
- date
- Proleptic-Gregorian day counts for apps that label dates, on
chrono. - diag
- Diagnostic output that cannot take the application down with it.
- dmabuf_
import - Zero-copy DMA-BUF →
wgputexture import via Vulkan external memory. Shared by the WebView’s page buffers and the video decoder’s hardware frames. DMA-BUF →wgputexture import via Vulkan external memory. - dnd
- doc
- CRDT helpers: writes that keep Automerge documents from churning, and typed reads.
- doc_
source - Read sources for controls backed by the app document. User edits are submitted by the control owner as resource actions.
- env
- The toolkit’s debug, capture and benchmark knobs:
TILO_UI_*variables. - evdev
- Linux input-event codes (
linux/input-event-codes.h), the key codes the peer protocol carries on every host. - feedback_
composer - Shared private feedback presentation. Desktop hosts lend the system-owned controller into a private component; no draft is a workspace record.
- floating_
surface - Shared placement contract for app-bound overlays and shell-owned
PiP. - font_
catalog - format
- Shared value formatters for system apps — byte sizes, transfer rates, media timecodes, “time ago” labels, grouped and compact counts, and month/weekday names.
- framework
- The app framework: a resource, its actions, and views bound to it.
- fullscreen
- Shared fullscreen / presentation mechanism.
- gesture
- Pointer-driven selection gestures — the press → move → release state machine
behind click-to-place-caret, drag-to-select, double-click-word,
triple-click-line, and shift-extend. App-agnostic: it tracks the gesture and
reports intents (extend? what granularity?); the app maps points to its own
caret/selection model. Lives in
uiso every app gets consistent selection behaviour instead of re-deriving the timing/anchor rules. - gpu
- wgpu state, asked for in a size this machine can give.
- gpu_
video - Painting decoded video on the GPU: uploading a hardware decoder’s planar
output and converting YUV to RGB in a shader. Plain wgpu, so every target
(WebGPU included) has it;
gpu-videoadds the zero-copy dmabuf import, whichmedia::availability(Feature::ZeroCopyVideo)reports. Painting a decoded video frame on the GPU. - graph_
editor - Reusable interaction model for node/graph editors.
- headless
- Driving a
uiapp without a display. - history_
mode - Window-independent projection of a managed record’s historical states.
- history_
source - Turning a live CRDT document into the rows the history widgets render.
- host
- Host services — the capabilities a
uiprocess borrows from whatever is hosting it. - host_
data - Named data a host supplies on request, for builds that ship large application data (fonts, archives) beside the program instead of inside it. An application asks for a name each time it needs the bytes; a host that can fetch drains the requests, fetches each, installs the bytes or a failure, and relayouts its surfaces so the application asks again. Builds that embed their data never ask, and a host that never drains leaves every request pending.
- host_
notifications - Native notification scheduling where this build has none.
- host_
palette - Asking the host to open its palette from inside an app: a chord or a button of the app’s own (Ctrl+P for quick open, Ctrl+G for go to line) that lands in the same palette as Ctrl+K, over the same published actions and search entries, instead of a palette of the app’s own.
- host_
worker - Ordinary application workers shared by durable native and hosted owners. The host supplies current authority and committed bytes; this module owns only the real application runner and its original recovery custody.
- i18n
- icons
- Lucide-icon glyphs, stroked to match the concept’s 1.5 px aesthetic.
- image_
store - Async image loading, decode and cache — keyed by URL. Displaying remote
thumbnails on the UI thread would jank every frame, so loads run off the
UI thread — fetched through a caller-supplied
Fetcherand decoded ascrate::background::Backgroundjobs, or fetched by the host through aHostImageLoader— and the decodedpeniko::ImageDatais cached and handed back on a later frame; until then the caller paints a placeholder. - ime
- Focused widget IME intent shared by native windows and browser input bridges.
- input
- Device-neutral action bindings and the legends shown beside controls.
- interaction
- Host-owned input capabilities shared by the retained widget tree.
- invocation_
scope - Host-local invocation custody. No wire caller can manufacture these checks.
- keycaps
- The words and symbols printed on the keys of the active keyboard layout.
- launch
- The toolkit’s launch vocabulary, with
runresolved to the runner this build targets: the native event loop on Linux and macOS, registration with the page runtime in the browser. - live_
collaboration - Workspace-level collaboration experience shared by every application.
- local_
identity - Who sits at this device, as far as undo attribution and history authors are concerned.
- local_
state - Small, typed process-local state for retained application views.
- location
- Device location, as the host provides it:
tilo_locationunder the toolkit’s module path. - math
- Shared structured mathematical typesetting.
- mpris
- MPRIS —
org.mpris.MediaPlayer2desktop media control, in the toolkit. - native
- The native desktop side of the toolkit, behind the default-on
nativefeature. - native_
media - Closed local call controls. Identity and capture authority never come from this wire.
- native_
scenario - Opt-in native input timelines. These schedule delivery, not display completion.
- nav_
stack - A reusable, app-agnostic navigation stack with a back action and an edge-swipe back-gesture hook.
- notify
- User notifications:
tilo_notifyunder the toolkit’s module path. - num
- Explicit numeric conversions used at UI/model boundaries.
- offscreen
- Headless offscreen render harness: renders a Vello
Sceneinto a GPU texture with no window, reads the bytes back, optionally writes a PNG. - overlay
- The window’s top layer: what modal and anchored surfaces share.
- owner_
wake - Optional exact-component wake intake. This module does not schedule, service, freeze, or skip any component. A wake reason is not proof of model purity.
- paint
- Scene-painting shorthands for apps that draw their own surfaces.
- paragraph
- Paragraph-wide line composition.
- passcode_
keyboard - A keyboard drawn on the screen for entering a passcode by touch.
- pen
- The stylus behind the pointer event a widget is handling.
- permissions
- The toolkit’s permission gate.
- persist
- Making an app’s state survive a restart.
- personal_
dictionary - Current authenticated host’s shared local vocabulary. No filesystem or app-local fallback; missing/revoked channels clear personal hints.
- pipeline_
seed - The session’s read-only vello pipeline cache every app starts from. A pipeline cache every app starts from, written by the session.
- platform
- Semantic platform conventions for app-authored controls and shortcuts.
- png
- Lossless PNG encoding and decoding of tightly packed 8-bit RGBA frames.
- pointer_
replay - A still pointer over a rebuilt tree.
- portable_
storage - Hydrated, explicitly namespaced browser persistence. Durable writes are acknowledged by the host only after its backing transaction commits.
- portal
- The file-chooser and URI-opening vocabulary: requests, outcomes and the URI → path rule every backend shares.
- prelude
- The usual imports for application code.
- presence
- priority_
contacts - The priority-contacts projection an address book publishes to the Tilo shell, which lets those people through Do Not Disturb.
- profiling
- Frame profiler and headless performance-testing harness for
uiapps. - published
- A published resource tree whose unchanged subtrees are shared between versions.
- query_
text - Shared visual/IME state for transient search and command queries.
- raster
- Images built from raw RGBA8 pixels.
- reader_
hud - Shared reading-surface chrome for the document readers (ebook,
pdf_viewer), so both present the same selection affordances with the same spacing, hover, and selected-state treatment: - realtime_
continuity - Transport-neutral application contract for active realtime-session handoff.
- record
- Records — the unit of state, collaboration and storage. A record has a
type, a stable identity, and a home room. A file’s identity is its file
record — the durable id the filesystem gives the file, which a rename or
move keeps — and its path is only where it currently sits (see
RecordId::identify_file). Records reference other records rather than nesting (annotations reference the document they mark up), so “share the book without my notes” is expressible. - remote_
actions - An application’s own client for the session’s action door.
- render_
thread - UI render worker thread.
- reorder
- Shared drag/reorder state for virtualized collection widgets.
- resources
- Resources a widget publishes: the tree of open
tilo_actions::Resources with the actions each exports to the palette, agents and scripts, and the bounded pages the broker’s pull directory reads. - retained_
present - Drawing for a presenter that keeps the desktop between frames.
- richtext
RichTextLayout— attributed, word-wrapped, hit-testable text layout. The toolkit’s rich-text primitive (cosmic-text under the hood): per-run bold/italic, underlines, wrapping to a width, caret geometry, selection rectangles, and point↔offset hit-testing. Render it withcrate::text_render::TextRenderer::draw_rich.- rt
- The one async runtime model for Tilo processes.
- scale
- Display-scale plumbing shared by the render loop.
- scene_
parts - Keyed parts of a shell scene section, so a small change inside a section damages that change’s bounds instead of the whole display.
- screen_
reader - Built-in screen reader.
- scroll_
copy - Scrolling by copying the pixels that stay on screen.
- search
- Search as a platform service.
- secret_
paint - Whether a paint put a secret on screen.
- secrets
- App-scoped secrets:
tilo_secretsunder the toolkit’s module path. - selection
- Shared collection selection models.
- semantic_
document_ read - App reader registration and the SDK’s committed-read admission.
- shell_
tabs - Tabs belong to the desktop, never to an application.
- standalone_
history_ pane - Shared, read-only history presentation for standalone app hosts.
- state
- status_
bubble - A transient floating status bubble: a small floating Panel that appears when a status changes (a page turn, a zoom step, a sync that finished) or while the pointer rests on its corner, then fades away.
- storage
- Where an app keeps what is not a document: one seam for app files, preferences and secrets, the same on Linux, macOS and the web.
- surface
- Shared surface-drawing primitives — how a card/panel casts a shadow.
- synthetic_
input - Deterministic window input shared by native scenarios, headless driving, test control and tests: what they deliver in place of a device.
- sysdirs
- Localized XDG user directories.
- table_
model - The editable table’s model: the document layout a
Tableshows, and the operations its owner applies inside its own action (applywith the widget’sTableEdits). The widget itself only reads the document. - taffy
- Taffy
- text_
assistance - Process-local view of the shared spelling preferences: the per-user
text_assistancesection every app’s text fields follow. - text_
break - Unicode line-break opportunities shared by shaping-adjacent layout code.
- text_
detect - Identifiers inside free text: links, email addresses, mentions and room aliases found in a run of prose.
- text_
edit EditCore— the shared headless text-editing model.- text_
input - Private completion receipts shared by native and browser text editors. These types grant no access to an embedded browser or its engine.
- text_
metrics - Shared text-metric arithmetic for widgets that paint a line of text themselves.
- text_
position - Path-free text presentation for native continuation, anchored in the CRDT. This contains view state only. Resource contents retain their existing sync route, and restoring a view neither changes focus nor grants input authority.
- text_
render - text_
selection - Shared text-selection primitives for
TextInput,NotesApp, and any future text editor (terminal scrollback selector, code editor, …). - theme
- tilo_
actions - Tilo ACTION model
- time
- The toolkit’s clock:
tilo-clock, under the toolkit’s module path. - tokens
- ui_
graph - Versioned, serializable UI object graphs compiled into ordinary widgets.
- undo
- Seeing and driving undo from inside a widget.
- uri
- Percent-decoding for URIs, with the
+question answered once. - vello
- Vello is a 2d graphics rendering engine written in Rust, using
wgpu. It efficiently draws large 2d scenes with interactive or near-interactive performance. - view
- The View: an app’s presentation layer, distinct from its state.
- virtual_
viewport - Shared one-dimensional virtualization geometry for lists, trees, and tables.
- wake
- Instance-scoped background wake routing:
tilo_rt::wakeunder the toolkit’s module path. - webview
- Engine-agnostic embedded web view plumbing.
- widget
- window_
icon - Resolves the raster icon named by the launcher’s
TILO_APP_ICON, falling back to a generated Tilo icon when it is missing or invalid. - winit
- Winit is a cross-platform window creation and event loop management library.
Macros§
- android_
main - Export the Android entry point for this binary’s
main. - built_
in_ definition - The definition of the
framework::ResourceApp$appfor a host that runs it in its own process (the shell’s built-in apps, the web desktop, an agent’s participant host), naming the app crate’s committedsurface.tomlas its surface: such a host runs no package whose payload names one. An app’s library defines itsdefinition()with it; the app’s own binary usesframework::definition, so it does not carry the file. - column
- Build a retained
Columnfrom concrete child widgets without repeatingpush(Box::new(...)). - dev_
reload_ entry - Export the entry points every platform’s host enters the app library by.
- diag
eprintln!that cannot kill the process. See the module docs for why that difference is load-bearing.- embedded_
catalog - Define the calling crate’s
EmbeddedCatalog:locales/<locale>.ftlin the crate,en-USas the source, the user’s locale when no host chose one, and source copy pinned in the crate’s own tests. - forward_
to_ child - The
Widgetmethods a wrapper that keeps one childElementinself.$child— laid out as the only child of its own node, whose box it stores inself.$rect— forwards to it unchanged: placement, painting, events, child walks and its box. - forward_
to_ composed - The
Widgetmethods a view owning aComposedinself.$fieldforwards to it unchanged: layout placement, painting, events, child walks, its box and whether it must be rebuilt. - i18n
- main
- The binary entry point of an app, identical on every target.
- provides
- Declare the capabilities a widget provides, inside its
impl Widget:provides!(dyn FullscreenProvider, dyn Continuable); - rect_
geometry - Implements
Widget::apply_layoutandWidget::get_rectfor a widget that keeps the box layout gives it inself.rect. - redraw_
flag - Implements
Widget::needs_redrawandWidget::mark_drawnfor a widget that tracks whether it needs repainting inself.dirty. - row
- Build a retained
Rowfrom concrete child widgets. - stack
- Build a retained
Stackfrom overlapping concrete child widgets.
Structs§
- A11y
Settings - Stored in the per-user settings CRDT and mirrored into spawned sandboxes
via
TILO_A11Y_*env vars. Defaults are all-off so existing single-user setups are unaffected until a user opts in. - Access
Bounds - Serializable absolute logical-pixel geometry for a synthetic
AccessNode. This mirrorsRectwithout requiring widget authors to depend on its serialization feature. - Access
Node - The per-widget local accessibility semantics returned by
Widget::accessibility;name/descriptionmust already be FTL-resolved strings (viai18n!), not translation keys, since AccessKit/AT-SPI consume final text. - Access
State - Tri-state fields use
Option<bool>whereNonemeans “the state does not apply” (e.g. aRole::Buttonis neverchecked) — matching ARIA’saria-checked="false"vs. absent distinction. - Accessible
Text Selection - Editable-text selection in the widget’s native UTF-8 document space.
- Action
Bindings - Action
Palette - The unified Ctrl+K palette: a
SearchFieldover aSearchResultsView, fed by the focused app’s resource/action tree plus any folded-inSearchProviders. - Action
UiRoute - One visible expression of a domain action in the retained UI. The action address remains the execution identity; this route is presentation metadata for focus, presence, animation, and “show me where” behavior.
- Activity
Brief - Activity
Brief Action - Activity
Digest - Activity
Timeline - Scrolling, filterable, groupable activity pane. See module-level docs.
- Actor
- The thing asking to reach a sandboxed resource: every
Principalit can prove it is, and its signing key if it has one. - Agent
Run - One instruction that spanned one or more applications.
- Animated
- A driver that interpolates
from -> tooverdurationusingcurve, driven entirely off a wall-clockInstant. No per-frame state — just querycurrent(now)whenever you need the value. - App
- AppCommand
- A command palette entry contributed by an app. Invoked with a mutable
CRDT handle and the app’s root
ObjIdso the command can mutate state directly (matchingquick-ui’s direct-mutation event model). - Appearance
Intent - Polled by
crate::app::Apponce per frame and reconciled against the live theme. Level-triggered likefullscreen_intent: a steady value is correct, since the App only re-themes when a field differs from what’s applied, so a settings pane can return the same intent every open frame. - Argument
Spec - When set on an entry, choosing it first collects a free-text argument
before it completes: the palette switches into an argument-entry step
showing
promptas a heading and an editable field seeded withprefill. - Author
Directory - Maps automerge actor ids to the people the chrome should name.
- Band
Undo Request - What
[Undo]on a band asks for: the range, not a single id like[Restore]sends. Restore means “put the document back to this moment, discarding everything after”; undo means “take this band out, leave the rest alone” — a host cannot tell the two apart from one id. - Binding
Conflict - Binding
Set - Rebindable, app-owned actions. This intentionally stores stable action ids instead of callbacks so apps can persist the map in their ordinary state.
- CapOverride
- One sandbox capability.
- Caps
Lock Estimate - A running estimate of whether Caps Lock is engaged, inferred from typed
letters. Cheap to copy and to keep alive; update it by feeding each typed
character (and the Shift state that produced it) through
observe/observe_text. - Card
- A retained card. See the module docs.
- Card
Grid - Reflows its cards into equal, aligned columns by width. Each row is as tall as its tallest card; cards share the row’s height so their footers line up, and a row of short cards stays short.
- Caret
Word - Debounces the word under the caret: it is settled once the same word
(same text at the same place) has been under a collapsed caret for
SUGGESTION_SETTLE. Typing into the word or moving to another one restarts the wait; moving the caret within the word does not. - Change
Run - A contiguous run of changes, addressed by its first and last change.
- Char
Splice - An
Editin Automerge’s char offsets: deleteremovedchars at charat, then insertinsertedchars there. - Collaboration
Experience - State behind the universal “People” surface. It contains no model runner
and no transport: hosts feed it semantic activity and a grounded candidate
returned by their on-device summarizer, then publish
shareable_status. - Command
Entry - Command
Outcome - The result of pressing Enter on an entry: its
idplus the free-textargument(onlySomefor entries built withCommandEntry::with_argument). Drained viaCommandPalette::take_outcome. - Command
Palette - Composed
Line - One chosen line, indexing a half-open range of the input boxes.
- Content
Surface - Tokens a content surface paints with when
ContentSurface::forcedis set. When it is clear, a document keeps its own page palette. - Control
Coverage - This is an inventory, never an assertion that arbitrary private storage was observed. Legacy compatibility is retained until downstream migration ends.
- Control
Domain - Control
Outbox - A retained producer does not keep its owner, registry or widget alive.
- Controller
Binding - Document
Diagnostics - Document
Frontier - An explicit outbound synchronization frontier for one document route.
- Drag
Scroll Finish - Result of releasing a pointer tracked by
DragScroller. - Drag
Scroll Update - Result of moving a pointer tracked by
DragScroller. - Drag
Scroller - Thresholded, single-axis pointer panning shared by virtual collections. A press remains a click until it moves four logical pixels; once active, offset and release velocity are derived from the same pointer samples.
- Drag
Select - Tracks a text-selection drag gesture across press → move → release, including multi-click (word/line) and shift-extend.
- Drop
Candidate - Drop
Target - Edge
Swipe Back - Arms when a press starts within
edge_widthof the left edge, firesNavAction::Backonce the pointer travelstrigger_distancepx right in a mostly-horizontal drag. No velocity/animation, but a complete pointer-event contract a richer recognizer can later drop into. - Edit
- A splice to apply to the buffer, in byte offsets over the pre-edit text:
at..at+removedis replaced byinserted.Edit::applyapplies it to aStringmirror;Edit::splice_automergeto a char-addressed AutomergeText. - Edit
Core - The caret + selection model, the IME composition in progress, and the
field’s admission filter. Selection offsets are bytes into the bound
text (matching
text_selectionand cosmic-text’s byte-indexed layout). - Editable
Label - Embedded
Catalog - An application’s Fluent catalogues, embedded with
include_str!and loaded on first use on each thread. - File
Filter - One entry in the chooser’s file-type dropdown.
- FnProvider
- A
SearchProviderbuilt from a closure plus its kind label — the convenient way to register a source without declaring a struct. Created viaSearchRegistry::register_fn. - Focus
View - The focused widget’s ephemeral presentation state, captured through the
same mechanism the undo path uses to restore a caret across a rebuild.
ordinalis stable exactly when the tree shape is — the condition under which restoring a caret is meaningful;ephemeralis the opaque string from [crate::widget::Widget::get_state]/set_state. - Focused
Content Lane - A centered, horizontally constrained lane that remains fluid on compact viewports. Vertical bounds always match the supplied viewport.
- Font
Variation - One design-space coordinate for a variable font.
- Fragmentation
- Minimum line counts retained on either side of a page/column break.
- Frame
Profiler - The
crate::app::Appholds one of these behind anOption; the headlesscrate::headless::FrameHarnessholds another for the perf harness. Both feed it the same way:recorda pass duration, thencommit_frameonce per frame. - Frame
Timing - This is the atom every surface shares: the HUD graphs it, the dump
serialises it, and
PerfReportaggregates it. - Frontier
Diagnostics - Frozen
App - The versioned freeze envelope: an app’s serialized state bytes alongside
its captured
View. Collaboration and freeze/thaw serialize the same state; this pairs it with the presentation so a restore lands the user back where they were, not merely on the same data. - Glyph
Outline - One shaped glyph as geometry: see
TextRenderer::glyph_outlines. - Grounded
Narrative - Group
Name Request - What a host must write when a user names, renames, or un-names a run of changes. Both history surfaces emit this rather than writing to the document directly — neither widget has one, only the host does.
- Grouping
Config - Hanging
Punctuation - Optical punctuation protrusion at paragraph edges.
- History
Attribution - An author that acted for someone: an agent’s change is the agent’s, on behalf of its person, in every history (an app’s, the Files history, and what the history actions return).
- History
Author - Not crypto material — just enough metadata to render a per-author colour dot, display name, and a short identity hash for disambiguation when two authors share a name.
- History
Comparison - History
Controller - History
Entry - History
Entry Id - Opaque: only ever compared for equality (revert/restore callbacks pass it back to the caller). The caller picks the byte layout — UUID-v4 today, a content hash later.
- History
Facet Index - History
Filter - Empty fields are “match everything” so a freshly-constructed filter behaves like no filter at all. The chrome owns the filter (not the widget) so the host can persist it across remounts, e.g. a workspace switch, without poking at widget internals.
- History
Group - One collapsible band in a history surface.
- History
Resource - Full authority namespace for one historical resource.
- History
Resource Target - History
Seen Frontier - History
Selection Detail - History
Snapshot - Immutable Automerge bytes at one exact causal frontier.
- History
Source - Construct one, hand it an
AuthorDirectoryso actor ids resolve to people, and callHistorySource::entrieswhenever the document changes. - Host
Image Loader - The loading half of a host-driven
ImageStore. - HudControls
- Which controls a
SelectionHudoffers besides the always-present Copy: the highlight swatch row, and the Note and Delete controls when enabled. - HudPlacement
- Where a
SelectionHudfloats:anchoris the horizontal centre and top-y of the selection’s first band,boundsthe area the bar must stay inside, both in the drawing transform’s space. - HudSwatch
- One highlight colour offered in the HUD’s swatch row.
- I18n
Manager - Image
Store - A cheap-to-clone handle to a shared image cache whose loads run off the
UI thread — on the toolkit’s
BackgroundforImageStore::new, or in the host forImageStore::host_driven. - Input
Availability - A compact set of the input devices discovered for this session.
- Intents
- The queue a view’s controls write what they ask for to, and its app applies in one ordered place after the event: a click, a key and an accessibility action all become the same intent. Clones share the queue.
- Interaction
Environment - Runtime interaction information propagated by the host to every widget.
- Kept
Slot - A slot the revert declined to touch, and why.
- KeySelection
- Stable-key multi-selection for virtualized and mutable collections.
- Keyboard
Binding - Keyboard
Map - Theme-aware map of an explicitly selected physical model. It observes only ordinary focused window events, never global devices or document edits.
- Keyboard
MapInput - Private, process-local physical press state shared across page recomposition. It contains no entered text or logical input history and never edits a document.
- Keyboard
MapKey - A key’s physical outline and ordered XKB levels, in model coordinates.
- Keyboard
MapSelection - Action-bound inspection over the shared physical map. Keyboard presses never select an inspector or publish entered text.
- Keycaps
- The legends of one keyboard: its layout’s language and whether it is an Apple keyboard.
- Keyed
RowSnapshot - Keyed
Transition Set - One active structural transition over a bounded set of visible keys.
- Kinetic
Sampler - Release-velocity estimator for continuous (pixel) scrolling.
- Latest
Request - UI-thread inbox for worker results where only the newest request may win.
- Latest
Task - Typed state for restartable background work where only the latest run may
publish a result. Starting or cancelling a run invalidates every older
TaskCompletion. - List
Index - Ranks the rows of a list against a query, for surfaces that rebuild their rows on every query or change (commands, windows, actions).
- Live
Status - LiveUi
- A retained host whose child is reconciled after a validated graph edit.
- Local
State - A cloneable handle to typed, process-local application state.
- Local
State Writer - A background-safe
LocalStatemutation handle with event-loop wakeup. - Marker
Drag - A reader begins a drag when a press lands on a marker it owns, tracks the pointer while held, and reads back the marker origin on release to persist the new anchor. Agnostic of the coordinate space (page points vs. screen-y) — the caller decides how to interpret the returned origin.
- Model
View - A retained subtree selected by a value projected from application state.
- Name
Field - A one-line name field. Hosts own the placement and the lifetime; this owns the text and the keys.
- Named
Range - A user’s name over a run of history, as stored in the document.
- Narrative
Request - Narrative
Source - Native
View - Retained widget adapter around a
NativeViewBackend. - Native
View Geometry - Parent-relative geometry in both toolkit-logical and native physical
pixels. Backends should use
physical_*for child-window APIs. - Native
View Host - Live parent-window context supplied before a native view is shown.
- Native
View Input - Event coordinates and modifiers already normalized by the toolkit host.
- NavItem
- One destination. Every part but the label is optional; see
docs/ui-migration.md, “Rows: what each part of aNavItemmeans”. - NavList
- The navigation list. See the module docs.
- NavSection
- A group of destinations under a sentence-case title.
- NavShell
- The one window shell. See the module docs.
- NavStack
- A generic navigation history.
Tnames a view (an app’s route/screen descriptor). Back and forward keep browser-style history; pushing after a Back clears the abandoned forward branch. - Open
Type Feature - One explicit OpenType substitution/positioning setting.
- Open
Type Tag - A four-byte OpenType feature or variation tag (
kern,dlig,opsz, …). - Painted
Action Marker - One marker exported only by the action-presence painter, in surface-local logical coordinates. It grants no authority to its actor.
- Paragraph
Box - One shaped box in logical order. A box is usually a word or an unbreakable inline fragment; callers retain the actual glyph/style data separately.
- Paragraph
Options - Tunable paragraph-composition policy. Defaults are deliberately close to TeX’s ordinary prose behavior while remaining expressed in font-relative space capacities supplied by the caller.
- Participant
Presence - One remote participant’s live presence (caret/selection), published by a
multi-participant widget under that participant’s identity. Same key and
payload shape as the local window’s own presence (Writer:
wp_blockkey, byte offsets into the caret block). - Perf
Report - Per-pass and total statistics over every frame a
PerfScenarioproduced, plus how many blew the frame budget. - Perf
Scenario - Reusable across any app: build a
crate::headless::FrameHarnessover the app’s real root + state, then callrun_scenario. - Permission
Context - The authority and sandbox a frame’s permission checks are decided against.
Held by
App, consulted byapp::dispatch_gated_eventbefore a gated widget ever sees an event. - Person
Presence - Pick
Request - A portal file-chooser request, built up and then
sendon a worker thread. - Platform
Conventions - Host-selected conventions. Copyable so it can be propagated through a retained tree and overridden by deterministic tests or a native shell.
- Polygon
Text Layout - Built-in layout engine that fits text into and clips it against a polygon.
- Presence
Ctx - Query
Composition - Retained shaping and IME state for an inline query editor. Editing goes
through the shared
EditCore: the owner’sSelectionis loaded into it for every event and written back afterwards, so a query keeps the same grapheme, word, clipboard and composition rules as every other field. - Query
Ink - The colours a
QueryCompositionpaints with. - Query
View - The query a
QueryCompositionpaints: the committed text and its selection, the placeholder shown while it is empty, and whether the caret is visible. - Record
Checkout - A record named together with its type — what a widget declares it is working on, and what a room index holds.
- Record
Id - The stable identity of a record. Encoded by prefix:
file-record:<uuid>(a file, by the durable id its filesystem record carries — seeRecordId::identify_file),file:<absolute path>(a file known only by where it is: a not-yet-written Save As target, or a filesystem that can’t hold the durable id),uuid:<uuid>(minted, for a record with no natural name),tab:<tab id>(a window’s scratch document until a file names it, seeRecordId::for_tab) andderived:<role>@<id>(seeRecordId::derived). - Record
Kind - What kind of thing a record is —
document,annotation-set,book,playlist. App-owned rather than system-registered, so an app can add a kind without coordinating; the cost is no cross-app library view yet (needs a system-owned type registry, not built here). - Record
Ref - One record’s reference to another: annotations → the document they mark up, a duplicate → the record it was copied from.
- Record
Set - The records one app process has open, and which is live. Owns
per-record persistence and parking — not collaboration: routing a
record’s deltas is the toolkit’s business (
tilo_ui::Appre-announces its channel on checkout), since a channel is a property of the connection. - Record
Store - A
RecordSetseveral widgets share via a handle, so two tabs on the same file stay one document rather than drifting under per-widget ownership. Single-threaded on purpose — a widget tree is, and aMutexhere would guard against nothing. - Redaction
Display - Optional on
HistoryEntry— when present, the widget renders the row with the struck-through summary, suppresses the[Revert]chip, and exposes the redactor + reason on hover. - Remote
Actions - An application’s client for the session’s action door. Clones share one client.
- Remote
Actions Guard - Keeps a
RemoteActions::enterhost current on this thread. - Reorder
Controller - Gesture controller shared by list and tree widgets. Widgets retain model mutation authority and supply their own hit-tested, validated candidates.
- Reorder
Drop - Reorder
Motion - Request
Completion - Single-use worker capability returned by
LatestRequest::begin. - Responsive
Control Bar - Shared one-row/two-row policy for dense command and find bars. Callers declare the width their inline composition genuinely needs; the same value then drives reserved layout height and paint-time row placement, preventing controls from being clipped by a one-off app breakpoint.
- Restore
Review - Opaque proof that a particular selected state was reviewed against a particular live frontier. Validation grants no authority and writes nothing; the host must separately recheck permissions before restoring.
- Revert
Outcome - What a revert did, and what it deliberately did not do.
- Revision
- One node in a document’s causal revision graph.
- Revision
History - A causal-order snapshot of all revisions retained by a document.
- Revision
Id - Stable, content-addressed identifier for one document revision.
- Rich
Span - A styled inline run.
size/familyoverride the block defaults per run. - Rich
Text Layout - A laid-out block of attributed text.
- Route
Handle - A cloneable controller for one router’s process-local route stack.
- Router
- A retained single-screen host driven by an explicit
RouteHandle. - RowGeometry
- RunStep
- One application’s share of a run.
- RunUndo
Report - What a whole-run undo did, across every application it touched.
- Save
Status Surface - A document’s save status, on the framework’s status surfaces (HIG §7c):
“Saving…” and “Saved” are a change worth noticing once, so they show in
the transient
StatusBubble; a failed save is an error the person must act on, so it is an error toast (danger icon, the reason, a “Try again” action and a close button) that stays until the save succeeds or it is dismissed. An app reports the state and routes clicks; it never pins a bubble open or paints its own save pill. - Screen
Reader - Scroll
Momentum - Deterministic single-axis momentum used by virtualized collection widgets. Wheel input moves immediately; line-wheel impulses additionally feed this decay curve so detented wheels can traverse long collections without requiring one event per row.
- Search
Group - A ranked bucket of results that share a
SearchResult::kind. The results overlay renders one section per group, headed bykind. - Search
Registry - The set of providers a search surface draws from. One registry can back a single app (its own providers) or, in the shell, every app’s providers at once for a global Ctrl+K.
- Search
Result - One typed hit produced by a
SearchProvider. - Section
- An intrinsic-height group of content with an optional header. See the module docs.
- Selection
- Anchor + cursor pair.
anchor == cursormeans “no live selection”. - Selection
Hud - A drawn
SelectionHud: its bounding rect plus the hit rects of its controls. Built fresh each frame bySelectionHud::draw; the caller either hit-tests it directly viaSelectionHud::hitor folds its buttons into its own hit list viaSelectionHud::buttons. - Selection
Model - Index-based multi-selection state. Indices are opaque
usizes the owning widget assigns to its items (typically the row/cell order). - Selection
Range - Semantic
Action - One thing an assistive client can do to a
SemanticNode, addressable by a stablename. - Semantic
Activity - Semantic
Id - Stable identity of a semantic node, preserved across
refreshas long as the backing widget or resource recurs. - Semantic
Node - One node of the retained semantic tree.
- Semantic
Tree - The retained accessibility tree. Persists node identity across frames and
diffs each
refreshagainst the previous. - Shortcut
- A semantic shortcut whose display and matching use platform conventions.
- Sparse
Anchor - Stable scroll anchor captured from a model-resolved sparse viewport.
- Sparse
Virtual Viewport - Virtual geometry for collections whose logical item count is much larger than the set of resident keys.
- Spring
- Stat
Summary - For one column of measurements (a single pass, or the total), in microseconds.
- State
- The unified state object that holds our CRDT document.
- Status
Bubble - Every method takes an explicit
now: Instant, so a test drives the whole show → linger → fade → hide cycle without a wall clock. - Step
Outcome - One application’s outcome within a run undo.
- Task
Completion - A single-use capability returned by
LatestTask::begin. - Text
Edit - The splice
splice_text_diffedapplied, in characters — AutomergeTextis char-addressed, not byte-addressed. A no-op reports{pos:0, del:0, ins:0}. - Text
Flow Region - Non-rectangular local-coordinate region used for both line fitting and exact scene clipping. Concave polygons may produce several independent spans on one baseline, allowing text to flow around an inset or cutout.
- Text
Layout Constraints - Width/height offered to a pluggable text layout engine.
- Text
Position - A document byte offset plus the visual side of an ambiguous boundary.
- Text
Renderer - Text
Style - The complete typographic style for a plain text run.
- Theme
- Touch
Pointer Emulator - Converts direct touch into the toolkit’s ordinary pointer contract.
- Transition
- An interruptible open/close transition tracking a
0.0..=1.0“openness” so a surface animates in and out, and a mid-flight reversal retargets from the current value instead of snapping to 0 first. - Transition
Visual - Tree
Delta - What changed between two
refreshes. Ids that appear in neither list are present and byte-identical in both frames — their identity and content survived unchanged. - Typing
Run - A burst of typing: every edit
touches the run, and a programmatic replacement of the textcloses it. - UiBuild
Context - Process-local services available while compiling a serialized graph.
- UiComponent
Request - Inputs passed to one app-owned serialized-graph component factory.
- UiDocument
- UiGraph
Editor - A native, accessible object-graph editor with a live production-widget preview. It is also the root component used by the standalone UI builder.
- UiGraph
Handle - UiValues
- A graph’s text and checked values, by each control’s
value_path, and which buttons were clicked, by each button’son_click_path. - Undo
Access - The undo half of a widget, as one embeddable field: the last
UndoStatusthe host published, plus at most one pendingUndoRequest. - Undo
Entry - One step of the history as a window shows it: the changes it brackets, where the caret was, and who made it.
- UndoLog
- A document’s undo, as one window drives it. See the module docs.
- Undo
Status - What the live undo history can do right now, as a widget sees it.
- Unknown
Revision - A revision id from another document or from discarded/corrupt input.
- UserId
- A person’s stable id, as apps and presence spell it.
- View
- A participant’s View: everything about where they are looking that is
never merged into anyone else’s. Every field derives
Serialize/Deserializeso a future presence layer can broadcast any subset.View::defaultis “top of the document, nothing focused, no resource” — the correct starting point for a freshly-launched app. - View
Contribution - The typed presentation fields a widget contributes to (and has restored
from) the
View— its scroll offset(s) and its current view mode. Kept structured rather than folded intoFocusView::ephemeralbecause a presence layer wants to broadcast scroll/view-mode on their own — “this peer is scrolled here, in grid mode” — independent of whether the scrolling container is the focused widget. - View
Rect - A rectangle in physical pixels — the app’s viewport at capture time.
- Virtual
Viewport - Variable-height virtual collection geometry, keyed by model identity.
- Wake
Event - A weak identity for a queued wake; it never owns an app or its scope.
- Wake
Handle - Captures one scope, or remains detached forever. Unlike a closed scope, detached execution may publish local/headless state without waking a host.
- Wake
Scope - The non-clone owner of one mount incarnation. Drop closes it.
- Wake
Scope Guard - A thread-affine construction/dispatch guard, independent of an App borrow.
- Window
Appearance - What the host showing a window knows about where, and for whom, it is
shown: the temperature of the workspace the window is in and the colour
of the person sitting at it. The shell resolves both and hands them to
its own chrome and, over the shell-ui channel, to every app window
(
crate::floating_surface::FloatingSurfaceHostMessage::Appearance). A window nobody told stays neutral and wears the default colour.
Enums§
- Access
- How far a sandbox capability reaches into its resource.
- Action
Kind - What an action is able to do, derived by the framework from the action’s code and never declared by an app.
- AppKind
- ArgValue
- An owned value to interpolate into a localized message. Owned (rather than a
borrowed
FluentValue) so callers — most importantly the retained-modeTextwidget — can stash arguments alongside a translation key and re-format every frame without keeping the original references alive. - Author
Relation - Who an author is to the person reading the history. Rows draw the reader’s own changes, a collaborator’s and an agent’s differently.
- Baseline
Shift - Per-run baseline shift, for superscript / subscript runs.
- CapDecision
- The outcome of a sandbox check.
- CapScope
- What a sandbox capability ranges over.
- Compare
Error - Control
Producer Discipline - Controller
Button - Controller
Family - Controller legend/layout used when rendering face buttons.
- Curve
- Animation easing / dynamics curve. Applied to a normalized
0..1duration ratio to produce an interpolation factor (which may itself over/undershoot forSpring). - Dialog
Action Order - Visual order of a primary confirmation and its secondary/cancel action.
- Drop
Placement - Edit
Outcome - Entry
Kind - What a history entry did, as the history and activity views mark, filter and group it. Read from the change itself (its entry and what it wrote), not from the transport that carried it.
- Font
Choice - A font family to shape with. The three generic classes resolve to the
system’s default face for that class;
Namedtargets a specific installed family by name. - Font
Family - A generic font family the toolkit can resolve from system fonts.
- Granularity
- Selection granularity, from the click count.
- History
Classification - History
Error - HudAction
- The swatch index in
HudAction::Highlightindexes into theswatchesslice passed toSelectionHud::draw; the caller maps it back to its own colour model. - HudSide
- Which side of the selection a
SelectionHudprefers. - Hyphenation
- I18n
Error - Icon
Descriptor - A lightweight icon descriptor usable before the full asset pipeline lands.
Glyphis a Nerd Font / unicode codepoint (existing approach in both the iced file-explorer and quick-terminal).Namedis a symbolic name for future theme-driven icon resolution. - Input
Binding - Input
Device - Devices known to be available in this session. This is deliberately
separate from
InputModality: moving a mouse must not make a connected touchscreen or controller disappear from shortcut help. - Input
Modality - The kind of interaction most recently used.
- KeyLegend
- Keyboard
Family - Physical legends printed on the connected keyboard. Tilo may run on Linux with an Apple keyboard attached, so this cannot be inferred from the OS.
- Keyboard
Modifier - Keycap
Language - The legend language of a keyboard layout: which words are printed on its
modifier and navigation keys. Layouts whose keyboards carry English
legends (Dutch, Portuguese, Nordic, Swiss, Japanese) differ from US
English only in naming the right Alt key
Alt Gr. - Line
Break Kind - Whether a UAX #14 opportunity permits or requires a break.
- Motion
- A caret motion. Vertical motion across wrapped lines is the host’s job
because it needs laid-out line geometry;
Motion::LineUpandMotion::LineDownmove across\n-delimited lines only. - Name
Field Outcome - What a key did to the field.
- Native
View Accessibility - Whether AccessKit or the native child owns this view’s semantic subtree.
- NavAction
- Navigation history intents shared by gestures, keys, and buttons.
- NavMode
- What the sidebar becomes when the window is too narrow to dock it.
- NavPane
- A screen of the narrow push stack.
- Numeric
Style - Numeric glyph style requested from an OpenType face.
- OpFamily
- Grouping never mixes two families, so a filter chip can never empty a group while leaving its header claiming rows that are no longer shown.
- Optical
Sizing - Whether a variable font’s
opszaxis follows the rendered font size. - Palette
Mode - Which chrome the palette wears.
- Paragraph
Align - Paragraph alignment, including inter-word justification.
- Pass
- Attributes a measured duration to the right column of the current
frame’s
FrameTiming. - Path
Segment - Perf
Step - Each step drives the headless driver and produces one or more measured frames.
- Permission
Scope - What a widget or a launch asks permission for.
- Platform
- Platform family relevant to human-interface conventions.
- Pointer
Precision - Accuracy of the active pointing device.
- Portal
Outcome - The result of a single-file portal interaction (open, or a Save destination), delivered back to the UI thread over a channel.
- Presence
Key - Presence
Payload - Preview
Side - Which exact frontier of a selected change or group is being previewed.
- Pseudo
Locale - Layout-stress translation mode used by screenshots and acceptance tests. It deliberately preserves digits and punctuation while expanding letters, making clipped labels and fixed-width controls visible before translators have completed a catalog.
- Query
Event Change - Result of routing an event through the shared single-line query editor.
- Query
ImeChange - Whether an IME event changed only the display composition or committed a
new query value. Owners should re-run filtering only for
Committed. - Reading
Face - A reading face the system ships, chosen by name in a theme’s type role or by a reader in an app that sets long-form text (Books). Each is set through the Reading role’s family, so its optical sizes, features and script fallbacks work like the default’s.
- Reconcile
Error - A key appeared more than once in a reconciliation input.
- Remote
Call - Where one request stands.
- Resource
Ref - A sandboxed resource an app might reach.
- Revert
Error - Why a run could not be addressed at all — distinct from “addressed it and
chose to keep some of it”, which is
RevertOutcome::kept. - Role
- A role preset. A member of a room holds one; the room keeps the grants each
role carries (see
crate::roles). - Route
Error - Save
Action - What a person did on the save status surface.
- Save
State - What a document’s save state is, as the save status surface shows it.
- Scroll
Alignment - Where an item should land when explicitly scrolled into view.
- Search
Scope - Semantic
Action Kind - How a
SemanticActionis carried out when invoked. - Slot
- A place in the document a change wrote to, at the granularity where two writers collide.
- Status
Origin - Status
Sharing - Step
State - What happened to one application’s share of a run.
- Subject
- Who a capability is about: one signing identity or a named
Principal. - Text
Affinity - Which shaped run owns a caret at a shared logical byte boundary.
- Text
Align - Horizontal alignment of a block.
- Text
Flow Region Error - Text
Ground - The ground text is set on, as far as the face is concerned. Light ink on a
dark ground loses fine hairlines first, so a family drawn in separate
optical cuts keeps its sturdier text cut to larger sizes there
(
OpticalSizing::Auto). A theme’s roles carry its content ground; a surface that paints its own ground (a book’s page) says which it is. - Text
Kind - What a run of text is, so the toolkit can pick its OpenType features.
- Text
Role - What a piece of text is. Pick the role; never a pixel size.
- Text
Scaling - What a
TextStyle’s size (and pixel letter spacing) is measured in. - Text
Weight - Named weight tiers mapping 1:1 to
cosmic_text::fontdb::Weight’s numeric constants (Tailwind’s font-medium/semibold/bold), so call sites read declaratively instead of passing raw u16s. - Text
Wrap Mode - Line selection policy for a constrained paragraph.
- Thaw
Error - Why a
FreezeThaw::thawfailed. Thaw never panics — truncated or garbage bytes, an unknown version, or an unloadable state payload all surface here. - Touch
Gesture - Touch
Pointer Event - Pointer events synthesised from direct touch, so ordinary widgets work on a touchscreen without interpreting contact streams themselves.
- UiButton
Role - UiFace
- A UI face the system ships, chosen by name in a theme’s type role or by
the accessibility layer. Reading (
ReadingFace) and code keep their own faces. - UiGraph
Edit - One validated edit to a serialized UI object graph.
- UiGraph
Error - UiNavigation
- Process-local navigation requested by a button.
- UiNode
- UiText
Role - UiText
Source - Undo
Request - A widget’s request that the host drive the history. The host performs it through the one undo implementation; a widget never touches the stacks.
- Wake
Bind Error - Why a platform destination could not be installed.
- Wheel
Step - What a vertical collection should do with one wheel event, decided by
ScrollMomentum::wheel.
Constants§
- FRAME_
BUDGET_ US - Rounded 60 Hz CPU-work budget. Exceeding it is a CPU diagnostic, not evidence of an actual dropped display frame.
- FROZEN_
VERSION - Envelope format version. Bump when the wire shape of
FrozenAppchanges in a way older readers cannot decode;FreezeThaw::thawrefuses a version it does not understand rather than mis-reading it. - INFERRED_
STATUS_ TTL - Automatic summaries go stale quickly. A stale intention is worse than no status because it makes collaborators coordinate around work that stopped.
- LIVE_
GRAPH_ DIR_ ENV - Directory of live
*.jsonscreen graphs. When set, graph apps load and hot-reload screens from disk instead of the embed baked byinclude_str!. - LIVE_
GRAPH_ OPERATION - Operation type for live graph mutations published by
LiveUi. - MAX_
GROUP_ DEPTH - Two levels is what a reader can hold; three is a tree of edit history nobody asked for.
- MAX_
STATUS_ CHARS - Manual statuses are explicit communication and therefore remain until the author clears them.
- SUGGESTION_
SETTLE - How long the word under the caret must stay the same before a field offers a spelling suggestion for it: a short pause at the end of a word, or the caret coming to rest in a word typed earlier.
- UI_
GRAPH_ VERSION - UI_
HYPERLEGIBLE_ FAMILY - The built-in “Hyperlegible” UI face a theme or the accessibility layer
can choose instead of
UI_SANS_FAMILY. - UI_
MONOSPACE_ FAMILY - UI_
SANS_ FAMILY - Product-wide primary font families. Tilo ships these exact faces, and the renderer also assigns them to the CSS-like generic families below. Keeping the names here makes plain text, rich text, and theme tokens agree instead of depending on each machine’s fontconfig defaults.
- UI_
SERIF_ FAMILY - The default reading face, New Computer Modern. Set in this family, text
takes the cut its size calls for: the 8 pt design for footnotes, Book for
body text and Regular for titles (
crate::tokens::ReadingFace).
Traits§
- Activity
Narrator - AppWidget
- Trait every in-process app implements so the shell can host it inside a
TileContent::App.AppWidget: Widgetmeans the shell always falls through to the widget contract for layout, draw, and events. - Color
Compat - Freeze
Thaw - Freeze/thaw for a Tilo app, extendable at exactly one seam.
- Lerp
- Native
View Backend - App/platform implementation of one native child view.
- Search
Provider - A source of search results — implemented by an app for each searchable type it exposes (its contacts, its open files, its commands, …).
- Text
Layout Engine - Replaceable measurement/painting boundary used by
crate::widget::Text. Implementations keep localization, accessibility, Taffy integration, scene caching, and inspection supplied by the standard widget.styleis always renderer-relative: implementations which delegate toTextRendererpass it through unchanged. For theme-resolved or fixed-size widgets,Textcompensates the font size for the renderer’s current multiplier before this boundary; renderer-relative letter spacing keeps its established behavior. - UiDocument
Ext - Compile a validated serialized graph into ordinary Tilo widgets.
- Widget
Functions§
- card_
column_ width - The width of each of
colscolumns that, withgapbetween them, fillavail_wexactly. Never negative. - card_
columns - How many columns of at least
min_card_wfit inavail_wwithgapbetween them. Always at least 1. - clipboard_
copy - Push
textonto the system clipboard — the Ctrl+C buffer. - clipboard_
copy_ image - Push an RGBA8 image (
width * height * 4bytes, row-major, no padding) onto the system clipboard as image data, so it can be pasted into an image editor or chat. Returnsfalsewhen the buffer size is wrong or no backend can carry an image. Used by the PDF reader to copy a selected page region. - clipboard_
copy_ primary - Push
textonto the primary selection — the mouse-driven “select then middle-click paste” buffer, distinct from the Ctrl+C clipboard. Terminals and editors set this whenever a range is selected so a middle-click paste in any app receives it. Goes through the same clipboard asclipboard_copy. - clipboard_
paste - Pull the current clipboard contents as a UTF-8 string. Returns
Nonewhen the clipboard is empty / unavailable / non-text. - clipboard_
paste_ image - The image on the clipboard, when another app copied one (a screenshot,
an image from a viewer or a browser).
Nonewhen it holds no image. - clipboard_
paste_ primary - Read the primary selection as a UTF-8 string — what a middle-click
paste should insert.
Nonewhen empty or unavailable. - compare_
entries - Compare the dependency frontier immediately before the selected changes to the frontier after every selected change. Concurrent changes outside the selection are excluded. Pending edits are neither committed nor included.
- compose_
paragraph - Compose a paragraph globally. If the requested tolerance has no feasible solution, progressively looser emergency passes are tried; the final fallback preserves every box and always makes forward progress.
- configured_
font_ system - Build the process’s font system: the database a host built for it when there is one, otherwise the product font catalog with the system’s fonts behind it and Tilo’s script fallback (Android copies its catalog out of the APK first). A binary run from a checkout, a screenshot and the Tilo image therefore all set text in the same faces, whether or not the machine has them installed. Only when no catalog loads does it fall back to the system’s fonts alone with the generic families pinned to the product names.
- delete_
last_ grapheme - Backspace for text typed only at its end (a type-ahead query, a digit entry): remove the last character as a person sees it, never half of a combining sequence or an emoji. Returns whether anything was removed.
- describe
- Compose the spoken phrase for an accessible node — the pure, heavily unit-tested core of the screen reader.
- deterministic_
narrative - Privacy-preserving fallback used when no model is configured or when a generated result fails grounding validation.
- discretionary_
hyphen_ breaks - UTF-8 byte offsets at which TeX/Liang patterns permit a discretionary
hyphen for
language. The source text is never modified; callers decide whether a chosen line break should paint the hyphen glyph. - ease_
out - Delegates to
Curve::EaseOutso there is exactly one home for the formula — retune it there and every fade/slide/spawn/snap follows. - extend_
span_ drag - Word/line-granularity drag extension — the shared rule behind
double-click-then-drag in
TextInputand the reader. - flatten_
reading_ order - DFS, collapsing presentational widgets (
accessibility() == None) exactly ascrate::accesskit_bridge::build_tree_updatedoes. - forget_
run - Remove a run record. The changes it referenced stay untouched in their own documents; only the grouping goes.
- format_
relative_ time - Used by both widgets so the wording stays uniform with every other
“time ago” label (
crate::format::relative). Re-renders every frame, so the label freshens naturally asnowadvances — no clock plumbing needed. - grapheme_
boundary_ at_ or_ before - The nearest extended-grapheme boundary at or before
byte_idx. - group_
entries - Group
entries(oldest first, in the producer’s causal order). - heads_
for_ entry - The other half of
HistorySource::entries: a restore needs a document state for theHistoryEntryIda widget hands back.Nonewhen the id names no change in this document — mixed ids from two artifacts. - hue_
to_ rgb HSV(h, 0.65, 0.95)→ RGB. Saturation and value held constant so generated author colours stay visually coherent (no neon outliers, no muddy ones).- latest_
run_ by - The contiguous run of changes authored by
actor_hex, ending at the document’s newest change by that actor. - line_
boundaries - Byte range
(start, end)of the line containingbyte_idx, where lines are linefeed-delimited (\n). The end is the index of the trailing\n, ortext.len()for the final line. Triple-click line selection uses this. - line_
break_ opportunities - Iterate byte offsets where a line may or must end according to Unicode Standard Annex #14. Every offset is a UTF-8 boundary and the final text boundary is always returned as mandatory.
- local_
surface_ id - Public because it is half of a protocol: what a pointer published in this
surface’s content coordinates is scoped to
(
crate::presence::PointerSpace::Surface) — both ends must spell the surface the same way by calling this same function. - next_
char_ boundary - Step one user-perceived character to the right of
byte_idx. Seeprev_char_boundaryfor the compatibility note. - next_
word_ boundary - Mirror of
prev_word_boundaryfor forward movement: the next UAX #29 word start, or the end of the string. - next_
word_ boundary_ chars - Char index of the next word boundary at or after
char_idx— the char-indexed mirror ofnext_word_boundary. Used to extend a reader selection rightward by a whole word (Shift+Ctrl+Right). - parse_
ui_ graph_ edits - Parse a non-empty JSON array of tagged graph edits.
- participant_
display_ label - Turn a durable collaboration principal into copy suitable for people-facing history and audit UI.
- plan_
revert - Work out what undoing
runwould do, without touching the document. - prev_
char_ boundary - Step one user-perceived character to the left of
byte_idx. Extended grapheme clusters keep combining marks, emoji modifiers, flags, and ZWJ sequences together. The legacy function name is retained for API compatibility. - prev_
word_ boundary - Walk back to the previous UAX #29 word start. If the cursor is inside a word this returns that word’s start; at its start it returns the preceding word’s start. The result is always a UTF-8 boundary.
- prev_
word_ boundary_ chars - Char index of the previous word boundary at or before
char_idx— the char-indexed mirror ofprev_word_boundary. Used to extend a reader selection leftward by a whole word (Shift+Ctrl+Left). - put_
text_ diffed - Creates the
Textobject on first use (inserting the whole value); subsequent calls splice only the diff. - read_
runs - Read every recorded run out of
doc, oldest key first. A record that does not parse is skipped rather than guessed at: an undo affordance pointing at the wrong changes is worse than no affordance. - record_
run - Record a run. Returns the document key, which is also
AgentRun::id. The transaction is left open — the caller commits, so the record lands stamped and attributed like any other edit. A run with no steps is not recorded: nothing changed, so there is nothing to offer undo on. - record_
run_ with_ details - Record a run with the task evidence needed for a later review.
- refuse_
run - Build the report for a run that was refused whole. Nothing was written.
- resolve_
theme_ layers - Resolve the stack. Order, lowest first:
- revert_
run - Undo a run of changes by writing its inverse forward into
doc. - run_
scenario - The driver runs the app’s real five passes with no GPU or display, so timings are of the production code path, not a mock.
- run_
scenario_ on - The one-call entry point for an app author or a test: no driver bookkeeping.
- run_
starting_ at - The run whose first step starts at
start, if one is recorded. - splice_
text_ diffed - Prefer
put_text_diffedwhen you have a parent object + key and want theTextcreated on first use. - try_
clipboard_ copy - Copy text only if a system clipboard backend accepts it.
- undo_
run - Undo every step of a run, given the documents the caller could open.
- undo_
step - Undo one application’s share of a run against the document that app owns.
- unreachable_
steps - Steps whose documents this process cannot reach.
- validate_
narrative - version_
index_ for_ entry - word_
at_ caret - The word the caret is in or just after, as a byte range: letters plus
in-word apostrophes, so
don'tis one word.Nonebetween words. - word_
boundaries - Byte range
(start, end)of the UAX #29 word containingbyte_idx, or the word immediately on the left when the index lands in following punctuation or whitespace. Used by double-click word selection. - word_
boundaries_ chars - Char range
(start, end)of the word containingchar_idx— the char-indexed mirror ofword_boundaries. Drives double-click word selection in a reflowable reader. - workspace_
hue - The neutral temperature a workspace takes from its wallpaper (RGBA8
pixels): the image’s dominant hue, or
Nonefor a wallpaper with none (a grey photograph, a missing file), which leaves the material neutral. Only the hue is taken — the material never gains chroma from a wallpaper.
Type Aliases§
- Catalogue
Call - A catalogue read: every page of one query, gathered.
- Char
Filter - A per-character admission rule (for example a spreadsheet cell-reference
box that only takes
[A-Za-z0-9$:]). Applied to every insertion path: typing, paste, IME preedit and commit, programmatic insertion. - Element
- Fetcher
- Fetches the raw encoded bytes for a URL, or
Noneon failure. Invoked as background work, so it may block on I/O. - Invocation
Call - An invocation: its latest lifecycle update.
- Portal
Channel - A pending single-file request: the receiver the UI thread drains each
frame.
Some(rx)means a picker is in flight;Nonemeans idle.