Skip to main content

fret_runtime/
lib.rs

1//! Portable runtime contracts and value types shared across the Fret workspace.
2//!
3//! This crate intentionally avoids backend bindings (`winit`, `wgpu`, `web-sys`) and must not
4//! force a global async runtime (Tokio, etc.).
5//!
6//! For module ownership and “where should this go?” guidance, see `crates/fret-runtime/README.md`.
7//!
8//! ## Where to start
9//!
10//! - Commands: [`CommandId`], [`CommandRegistry`], [`CommandMeta`]
11//! - Models/state: [`Model`], [`ModelStore`], [`ModelCx`]
12//! - Effects: [`Effect`]
13//! - Host integration: [`UiHost`], [`GlobalsHost`], [`ModelsHost`]
14//! - Portability contracts: [`PlatformCapabilities`]
15//!
16//! ## Minimal example
17//!
18//! ```
19//! use fret_runtime::{CommandId, CommandMeta, CommandRegistry};
20//!
21//! let mut commands = CommandRegistry::default();
22//! commands.register(CommandId::from("app.quit"), CommandMeta::new("Quit"));
23//! ```
24
25pub mod action;
26pub mod action_payload;
27mod asset_reload;
28pub mod asset_resolver;
29pub mod capabilities;
30pub mod clipboard_diagnostics;
31pub mod command;
32pub mod command_dispatch_diagnostics;
33pub mod commands;
34pub mod docking_settings;
35pub mod drag;
36pub mod effect;
37pub mod execution;
38pub mod font_bootstrap;
39pub mod font_catalog;
40pub mod font_catalog_cache;
41#[cfg(test)]
42mod font_config_tests;
43mod injected_event_scope;
44pub mod input;
45pub mod interaction_diagnostics;
46pub mod keymap;
47pub mod menu;
48pub mod model;
49pub mod platform_completion;
50pub mod platform_text_input;
51pub mod redraw_request_diagnostics;
52pub mod runner_accessibility_diagnostics;
53pub mod runner_frame_drive_diagnostics;
54pub mod runner_platform_window_receiver_diagnostics;
55pub mod runner_present_diagnostics;
56pub mod runner_surface_config_diagnostics;
57pub mod runner_surface_lifecycle_diagnostics;
58pub mod runner_window_lifecycle_diagnostics;
59pub mod runner_window_style_diagnostics;
60pub mod shortcut_routing_diagnostics;
61pub mod strict_runtime;
62pub mod text_interaction_settings;
63pub mod time;
64pub mod ui_host;
65pub mod when_expr;
66pub mod window_chrome;
67pub mod window_command_action_availability;
68pub mod window_command_availability;
69pub mod window_command_enabled;
70pub mod window_command_gating;
71pub mod window_global_change_diagnostics;
72pub mod window_input_arbitration;
73pub mod window_input_context;
74pub mod window_key_context_stack;
75pub mod window_menu_bar_focus;
76pub mod window_metrics;
77pub mod window_style;
78pub mod window_text_boundary_mode;
79pub mod window_text_input_snapshot;
80
81// -----------------------------------------------------------------------------
82// Stable re-exports (portable runtime contract surface)
83// -----------------------------------------------------------------------------
84pub use action::{ActionId, ActionMeta, ActionRegistry, TypedAction};
85pub use action_payload::WindowPendingActionPayloadService;
86pub use asset_reload::{
87    AssetReloadBackendKind, AssetReloadEpoch, AssetReloadFallbackReason, AssetReloadStatus,
88    AssetReloadSupport, asset_reload_epoch, asset_reload_status, asset_reload_support,
89    bump_asset_reload_epoch, set_asset_reload_status, set_asset_reload_support,
90};
91pub use asset_resolver::{
92    AssetLoadAccessKind, AssetLoadDiagnosticEvent, AssetLoadDiagnosticsSnapshot,
93    AssetLoadOutcomeKind, AssetResolverService, AssetRevisionTransitionKind, asset_capabilities,
94    asset_resolver, register_asset_resolver, register_bundle_asset_entries,
95    register_embedded_asset_entries, resolve_asset_bytes, resolve_asset_locator_bytes,
96    resolve_asset_locator_reference, resolve_asset_reference, set_asset_resolver,
97};
98pub use capabilities::{
99    ExecBackgroundWork, ExecCapabilities, ExecTimers, ExecWake, ExternalDragPayloadKind,
100    ExternalDragPositionQuality, PlatformCapabilities, ShellCapabilities,
101    WindowHoverDetectionQuality, WindowSetOuterPositionQuality, WindowZLevelQuality,
102};
103pub use clipboard_diagnostics::{
104    ClipboardReadDiagnostics, ClipboardWriteDiagnostics, WindowClipboardDiagnosticsStore,
105};
106pub use command::CommandId;
107pub use command_dispatch_diagnostics::{
108    CommandDispatchDecisionV1, CommandDispatchSourceKindV1, CommandDispatchSourceV1,
109    WindowCommandDispatchDiagnosticsStore, WindowPendingCommandDispatchSourceService,
110};
111pub use commands::{CommandMeta, CommandRegistry, CommandScope, OsAction};
112pub use docking_settings::{
113    DockDragInversionModifier, DockDragInversionPolicy, DockDragInversionSettings,
114    DockingInteractionSettings,
115};
116pub use drag::{
117    DRAG_KIND_DOCK_PANEL, DRAG_KIND_DOCK_TABS, DragKindId, DragPhase, DragSession, DragSessionId,
118    WindowUnderCursorSource,
119};
120pub use effect::DiagIncomingOpenItem;
121pub use effect::{CreateWindowKind, CreateWindowRequest, Effect, WindowRequest};
122pub use execution::{
123    DispatchPriority, Dispatcher, DispatcherHandle, InboxDrain, InboxDrainHost, InboxDrainRegistry,
124    Runnable,
125};
126pub use font_bootstrap::{
127    FontCatalogUpdate, FontFamilyDefaultsPolicy, apply_font_catalog_update,
128    apply_font_catalog_update_with_metadata,
129};
130pub use font_catalog::{
131    BundledFontBaselineSnapshot, BundledFontBaselineSource, FontCatalog, FontCatalogEntry,
132    FontCatalogMetadata, FontVariableAxisInfo, RendererFontEnvironmentSnapshot,
133    RendererFontSourceLane, RendererFontSourceRecord, RendererSvgTextBridgeDiagnosticsSnapshot,
134    RendererSvgTextFontFallbackRecord, RendererSvgTextFontSelectionMissRecord,
135    RendererSvgTextMissingGlyphRecord, SystemFontRescanState, TextFontStackKey,
136};
137pub use font_catalog_cache::FontCatalogCache;
138pub use fret_core::FrameId;
139pub use fret_core::ImageUpdateToken;
140pub use fret_core::ImageUploadToken;
141pub use fret_core::{
142    AlphaMode, ChromaSiting, ClipboardAccessError, ClipboardAccessErrorKind, ClipboardWriteOutcome,
143    ColorPrimaries, ColorRange, ImageColorInfo, ImageColorSpace, ImageEncoding, TransferFunction,
144    YuvMatrix,
145};
146pub use fret_core::{
147    ClipboardToken, ExternalDropToken, FileDialogToken, IncomingOpenToken, ShareSheetToken,
148    TimerToken,
149};
150pub use fret_core::{IncomingOpenDataEvent, IncomingOpenItem, ShareItem, ShareSheetOutcome};
151pub use fret_i18n;
152pub use injected_event_scope::{in_injected_event_scope, with_injected_event_scope};
153pub use input::{
154    DefaultAction, DefaultActionSet, InputContext, InputDispatchPhase, KeyChord, Platform,
155    TextBoundaryMode, format_chord, format_sequence,
156};
157pub use interaction_diagnostics::{
158    DockDragDiagnostics, DockDropCandidateRectDiagnostics, DockDropCandidateRectKind,
159    DockDropPreviewDiagnostics, DockDropPreviewKindDiagnostics, DockDropResolveDiagnostics,
160    DockDropResolveSource, DockDropTargetDiagnostics, DockFloatingDragDiagnostics,
161    DockGraphSignatureDiagnostics, DockGraphStatsDiagnostics,
162    DockTabStripActiveVisibilityDiagnostics, DockTabStripActiveVisibilityStatusDiagnostics,
163    DockingInteractionDiagnostics, ViewportCaptureDiagnostics, WindowInteractionDiagnosticsStore,
164    WorkspaceInteractionDiagnostics, WorkspaceTabStripActiveVisibilityDiagnostics,
165    WorkspaceTabStripActiveVisibilityStatusDiagnostics, WorkspaceTabStripDragDiagnostics,
166};
167pub use keymap::{BindingV1, KeySpecV1, KeymapError, KeymapFileV1};
168pub use keymap::{DefaultKeybinding, Keymap, KeymapContinuation, KeymapService, PlatformFilter};
169pub use menu::{
170    ItemAnchor, ItemSelector, ItemSelectorTyped, Menu, MenuBar, MenuBarConfig, MenuBarError,
171    MenuBarFileV1, MenuBarFileV2, MenuBarPatch, MenuBarPatchOp, MenuFileV1, MenuFileV2, MenuItem,
172    MenuItemFileV1, MenuItemFileV2, MenuItemToggle, MenuItemToggleKind, MenuRole, MenuTarget,
173    SystemMenuType,
174};
175pub use model::{
176    Model, ModelChangedDebugInfo, ModelCreatedDebugInfo, ModelCx, ModelHost, ModelId, ModelStore,
177    ModelUpdateError, WeakModel,
178};
179pub use platform_completion::PlatformCompletion;
180pub use platform_text_input::{PlatformTextInputQuery, PlatformTextInputQueryResult, Utf16Range};
181pub use redraw_request_diagnostics::{
182    RedrawRequestCallsiteCount, WindowRedrawRequestAggregateSnapshot,
183    WindowRedrawRequestDiagnosticsStore, WindowRedrawRequestWindowSnapshot,
184};
185pub use runner_accessibility_diagnostics::{
186    RunnerAccessibilityDiagnosticsStore, RunnerAccessibilitySnapshot,
187};
188pub use runner_frame_drive_diagnostics::{
189    RunnerFrameDriveAggregateSnapshot, RunnerFrameDriveDiagnosticsStore, RunnerFrameDriveReason,
190    RunnerFrameDriveReasonCount, RunnerFrameDriveWindowSnapshot,
191};
192pub use runner_platform_window_receiver_diagnostics::{
193    RunnerPlatformWindowReceiverAtCursorSnapshotV1, RunnerPlatformWindowReceiverAtCursorSourceV1,
194    RunnerPlatformWindowReceiverDiagnosticsStore,
195};
196pub use runner_present_diagnostics::{
197    RunnerPresentAggregateSnapshot, RunnerPresentDiagnosticsStore, RunnerPresentWindowSnapshot,
198};
199pub use runner_surface_config_diagnostics::{
200    RunnerSurfaceConfigDiagnosticsStore, RunnerSurfaceConfigWindowSnapshot,
201};
202pub use runner_surface_lifecycle_diagnostics::{
203    RunnerSurfaceLifecycleDiagnosticsStore, RunnerSurfaceLifecycleSnapshot,
204};
205pub use runner_window_lifecycle_diagnostics::{
206    RunnerWindowLifecycleDiagnosticsStore, RunnerWindowLifecycleSnapshot,
207};
208pub use runner_window_style_diagnostics::{
209    RunnerWindowAppearanceV1, RunnerWindowCompositedAlphaSourceV1,
210    RunnerWindowHitTestClampReasonV1, RunnerWindowHitTestSourceV1,
211    RunnerWindowStyleDiagnosticsStore, RunnerWindowStyleEffectiveSnapshotV1,
212    clamp_background_material_request,
213};
214pub use shortcut_routing_diagnostics::{
215    ShortcutRoutingDecision, ShortcutRoutingOutcome, ShortcutRoutingPhase,
216    WindowShortcutRoutingDiagnosticsStore,
217};
218pub use text_interaction_settings::TextInteractionSettings;
219pub use time::TickId;
220pub use ui_host::{CommandsHost, DragHost, EffectSink, GlobalsHost, ModelsHost, TimeHost, UiHost};
221pub use when_expr::WhenExpr;
222pub use window_chrome::WindowResizeDirection;
223pub use window_command_action_availability::WindowCommandActionAvailabilityService;
224pub use window_command_availability::{
225    WindowCommandAvailability, WindowCommandAvailabilityService,
226};
227pub use window_command_enabled::WindowCommandEnabledService;
228pub use window_command_gating::{
229    WindowCommandGatingHandle, WindowCommandGatingService, WindowCommandGatingSnapshot,
230    best_effort_snapshot_for_window, best_effort_snapshot_for_window_with_input_ctx_fallback,
231    command_is_enabled_for_window_with_input_ctx_fallback, snapshot_for_window,
232    snapshot_for_window_with_input_ctx_fallback,
233};
234pub use window_global_change_diagnostics::{
235    WindowGlobalChangeAggregateSnapshot, WindowGlobalChangeDiagnosticsStore,
236    WindowGlobalChangeNameCount, WindowGlobalChangeWindowSnapshot,
237};
238pub use window_input_arbitration::{WindowInputArbitrationSnapshot, WindowPointerOcclusion};
239pub use window_input_context::{
240    WindowInputContextService, best_effort_input_context_for_window,
241    best_effort_input_context_for_window_with_fallback,
242};
243pub use window_key_context_stack::WindowKeyContextStackService;
244pub use window_menu_bar_focus::WindowMenuBarFocusService;
245pub use window_metrics::apply_window_metrics_event;
246pub use window_style::{
247    ActivationPolicy, TaskbarVisibility, WindowBackgroundMaterialRequest, WindowDecorationsRequest,
248    WindowHitTestRegionV1, WindowHitTestRegionsSignatureV1, WindowHitTestRequestV1, WindowOpacity,
249    WindowRole, WindowStyleRequest, WindowZLevel, canonicalize_hit_test_regions_v1,
250    hit_test_regions_signature_v1,
251};
252pub use window_text_boundary_mode::{WindowTextBoundaryModeHandle, WindowTextBoundaryModeService};
253pub use window_text_input_snapshot::{
254    WindowImeSurroundingText, WindowTextInputSnapshot, WindowTextInputSnapshotService,
255};