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)
| feature | module | crate |
|---|---|---|
platform (default) | platform | corundum-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-update | update | update 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-axum | keys::require_key | the layer that checks a router’s requests and resolves each key’s profile with the app’s function (brings keys) |
keys-clap | keys::KeyCommand | the subcommand that manages a store; add --profile takes one of the app’s profiles (brings keys) |
gui-keys | gui::keys | the 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-update | gui::update | the gui crate’s update panel: the Settings → About rows that look for a newer release (brings gui and update) |
gui-self-update | gui::update | the panel also downloads the release and replaces the running binary (brings gui-update and self-update) |
gui-package | gui::update | the panel’s row for the app’s own Velopack package, Target::Package (brings gui-update and package) |
gui-service | gui::first_run::ServicePage, gui::settings::ServiceRow | the 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) |
eframe | gui::window::run, [eframe] | corundum-framework-gui with its eframe feature: a desktop window started the same way for every app |
android | gui::window::run_android, [eframe] | corundum-framework-gui with its android feature: the window on an Android phone (brings eframe) |
media-session | platform::media_session, gui::media_session | the 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-instance | platform::instance, gui::window::WindowOptions::single_instance | a desktop app run once: a second start brings the first’s window to the front and exits (brings platform) |
console | platform::console | a 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) |
serde | gui::look, gui::store, gui::first_run | Serialize / 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;