Package-level declarations
Types
Actions about the application as a whole (startup, exit), rather than any one page or document.
How the user resolved a "close a dirty page?" prompt.
How many solutions a "Solve"/"Next" action should request at once (backs the Solve/Solve 10/Solve 100/Solve all buttons); limit is null for "keep going until exhausted".
Default presentation-independent application controller.
Actions about one document's lifecycle: editing, saving, and reloading it from its origin.
Root of every action a frontend can dispatch to a GuiController - see ApplicationAction, WorkspaceAction, PageAction, and DocumentAction for the actual families.
A one-shot request the controller can't fulfil itself and hands off to the hosting platform (file dialogs, actual I/O, confirmation prompts, clipboard, process exit) - delivered via GuiModel.effects.
A discrete notification of something that just happened, broadcast via GuiModel.events - complementary to GuiModel.state (which always holds the latest truth even if an event is missed by a late subscriber).
The observable, read-only surface of a GuiController: current state plus the two ways it communicates changes to a frontend.
Actions scoped to one page: editing its query/scratch text/stdin/configuration, driving resolutions, and managing its history/panels.
How the user resolved a "reload this document from disk, discarding unsaved changes?" prompt.
Actions about the workspace as a whole: creating/opening/closing/selecting pages, rather than editing an existing one's content.