Skip to main content

Crate corundum_framework

Crate corundum_framework 

Source
Expand description

corundum-framework — a single-dependency facade over the crates the sapphire apps and asteria share.

Depend on this one crate and turn on the features you need; each feature re-exports a corundum-framework-* crate as a module, the same way sapphire-framework’s facade does. The default is the part without egui, for the crates without a window (a server, a CLI); an app turns on gui.

# A desktop app:
corundum-framework = { version = "0.1", features = ["eframe", "serde"] }
# The same app on an Android phone:
corundum-framework = { version = "0.1", features = ["android", "serde"] }

§Modules (feature-gated)

featuremodulecrate
platform (default)platformcorundum-framework-platform: the app’s directories, the system’s languages, the JNI / Objective-C bridging
gui[gui]corundum-framework-gui: the shell, theme, fonts, icons and translations (brings platform)
update[update]corundum-framework-update: finding newer GitHub releases of an app’s binary, and replacing it with one
self-updateupdateupdate with the download and the replacement; a store build leaves it off, as the store updates the app
package[package]corundum-framework-package: the app as a Velopack package on the desktops: its start and install hooks, its updates, its command line on PATH and the Windows console shim (brings platform)
service[service]corundum-framework-service: the app’s background service registered with systemd, launchd or Task Scheduler at user level (brings platform)
keys[keys]corundum-framework-keys: API keys for an app’s server — a store of named keys, one file each, in a directory the app chooses, and their verification
keys-axumkeys::require_keythe layer that checks a router’s requests and resolves each key’s profile with the app’s function (brings keys)
keys-clapkeys::KeyCommandthe subcommand that manages a store; add --profile takes one of the app’s profiles (brings keys)
gui-keysgui::keysthe API keys page in Settings, over a store on this machine or the app’s own backend; each key is added with one of the app’s profiles (brings gui and keys)
gui-updategui::updatethe gui crate’s update panel: the Settings → About rows that look for a newer release (brings gui and update)
gui-self-updategui::updatethe panel also downloads the release and replaces the running binary (brings gui-update and self-update)
gui-packagegui::updatethe panel’s row for the app’s own Velopack package, Target::Package (brings gui-update and package)
gui-servicegui::first_run::ServicePage, gui::settings::ServiceRowthe gui crate’s service: the first-run question whether to keep the app’s services running, and an About-page row per service (brings gui, service and serde; desktops only)
eframegui::window::run, [eframe]corundum-framework-gui with its eframe feature: a desktop window started the same way for every app
androidgui::window::run_android, [eframe]corundum-framework-gui with its android feature: the window on an Android phone (brings eframe)
media-sessionplatform::media_session, gui::media_sessionthe OS’s media keys and its “now playing”, for a music player; gui::media_session::start makes one for an eframe window (brings platform). An iOS app adds UIBackgroundModes audio to its Info.plist
single-instanceplatform::instance, gui::window::WindowOptions::single_instancea desktop app run once: a second start brings the first’s window to the front and exits (brings platform)
consoleplatform::consolea Windows GUI-subsystem binary that also answers in a terminal without the package’s console shim: attach_parent on a command-line start, not the window’s (brings platform)
serdegui::look, gui::store, gui::first_runSerialize / Deserialize on the gui’s theme and language settings, and store: the look in effect and the rail’s order, kept on the device in a TOML file and put back before the first frame; first_run, the first-run pages, which remember there that they were done

Re-exports§

pub use corundum_framework_platform as platform;