README

#proton/manifest

moonbit-community/proton/manifest defines the runtime manifest types shared by bootstrap, native handoff, and the root facade.

It is a data package. Parsing belongs in bootstrap; application lifecycle belongs in the root proton facade.

#
AppEntry

pub(all) enum AppEntry {
Html(String)
Url(String)
File(String)
Asset(String)
} derive(Eq,
Debug
)

Declarative entry content loaded into a Proton application window.
impl Show for AppEntry

#
AppEntry::equal

fn AppEntry::equal(AppEntry, AppEntry) -> Bool

#
AppEntry::not_equal

fn AppEntry::not_equal(x : AppEntry, y : AppEntry) -> Bool

#
AppEntry::output

fn AppEntry::output(self : AppEntry, logger : &Logger) -> Unit

#
AppEntry::to_repr

#
AppEntry::to_string

fn AppEntry::to_string(self : AppEntry) -> String

#
AppManifest

pub struct AppManifest {
window : WindowManifest
entry : AppEntry
windows : Array[AppWindowManifest]
debug : Int
extensions : Map[String, ExtensionSetting]
permissions : Array[PermissionGrant]
}

Declarative application manifest consumed by the runtime.

#
AppManifest::extension_setting

fn AppManifest::extension_setting(self : AppManifest, name : String) -> ExtensionSetting?

Returns one configured extension setting, if present in the manifest. It returns None when the manifest does not mention the extension key at all.

#
AppManifest::extension_settings

fn AppManifest::extension_settings(self : AppManifest) -> Array[(String, ExtensionSetting)]

Returns the configured extension entries as name/setting pairs. Each pair contains the manifest key together with its normalized declarative enablement state.

#
AppManifest::new

fn AppManifest::new(window : WindowManifest, entry : AppEntry, debug? : Int, windows? : Array[AppWindowManifest], extensions? : Map[String, ExtensionSetting], permissions? : Array[PermissionGrant]) -> AppManifest

Builds an app manifest. The defaults match the minimal declarative shape accepted by bootstrap so callers can opt into debug, extra windows, or extensions incrementally.

#
AppManifest::permission_grants

fn AppManifest::permission_grants(self : AppManifest) -> Array[PermissionGrant]

#
AppWindowManifest

pub struct AppWindowManifest {
id : String
window : WindowManifest
entry : AppEntry
open_on_start : Bool
} derive(Eq,
Debug
)

Declarative secondary window entry consumed by runtime manifests.

#
AppWindowManifest::equal

#
AppWindowManifest::new

fn AppWindowManifest::new(id : String, window : WindowManifest, entry : AppEntry, open_on_start? : Bool) -> AppWindowManifest

Builds a declarative secondary window entry. Secondary windows keep their own id, window settings, and entry payload in the manifest document.

#
AppWindowManifest::not_equal

fn AppWindowManifest::not_equal(x : AppWindowManifest, y : AppWindowManifest) -> Bool

#
AppWindowManifest::output

fn AppWindowManifest::output(self : AppWindowManifest, logger : &Logger) -> Unit

#
AppWindowManifest::to_string

fn AppWindowManifest::to_string(self : AppWindowManifest) -> String

#
ExtensionSetting

pub(all) enum ExtensionSetting {
Disabled
Enabled
} derive(Eq,
Debug
)

Runtime extension setting produced from MoonBit app code.

Extension-specific configuration is carried by the permission scope, which is validated at configuration time through resolve_permission and read per request through AppCommandRequestContext::permission_scope. This type only records whether an extension is active.

#
ExtensionSetting::disabled

Builds a disabled extension setting. Use this when the manifest should preserve an explicit opt-out entry.

#
ExtensionSetting::enabled

Builds an enabled extension setting.

#
ExtensionSetting::equal

#
ExtensionSetting::is_enabled

fn ExtensionSetting::is_enabled(self : ExtensionSetting) -> Bool

Returns whether this setting enables an extension.

#
ExtensionSetting::not_equal

fn ExtensionSetting::not_equal(x : ExtensionSetting, y : ExtensionSetting) -> Bool

#
ExtensionSetting::output

fn ExtensionSetting::output(self : ExtensionSetting, logger : &Logger) -> Unit

#
ExtensionSetting::to_string

fn ExtensionSetting::to_string(self : ExtensionSetting) -> String

#
PermissionGrant

pub struct PermissionGrant {
window : String
origin : PermissionOrigin
extension : String
scope : Json
}

Grants one extension to one trusted source in one application window.

Extension registration and permission grants are deliberately separate: registering an extension makes its backend implementation available, while a grant decides which renderer may invoke it. scope is interpreted by the extension and is always copied at the manifest boundary.

#
PermissionGrant::extension

fn PermissionGrant::extension(self : PermissionGrant) -> String

#
PermissionGrant::new

fn PermissionGrant::new(window : String, origin : PermissionOrigin, extension : String, scope? : Json) -> PermissionGrant

#
PermissionGrant::origin

#
PermissionGrant::scope

fn PermissionGrant::scope(self : PermissionGrant) -> Json

#
PermissionGrant::window

fn PermissionGrant::window(self : PermissionGrant) -> String

#
PermissionOrigin

pub(all) enum PermissionOrigin {
App
Entry
} derive(Eq,
Debug
)

Selects the trusted page source covered by a permission grant.

#
PermissionOrigin::equal

#
PermissionOrigin::not_equal

fn PermissionOrigin::not_equal(x : PermissionOrigin, y : PermissionOrigin) -> Bool

#
TitlebarStyle

pub(all) enum TitlebarStyle {
Default
Overlay
} derive(Eq,
Debug
)

Controls whether web content remains below or extends beneath the native titlebar. Platforms without overlay support keep the default titlebar.

#
TitlebarStyle::equal

#
TitlebarStyle::not_equal

fn TitlebarStyle::not_equal(x : TitlebarStyle, y : TitlebarStyle) -> Bool

#
TitlebarStyle::output

fn TitlebarStyle::output(self : TitlebarStyle, logger : &Logger) -> Unit

#
TitlebarStyle::to_string

fn TitlebarStyle::to_string(self : TitlebarStyle) -> String

#
WindowManifest

pub struct WindowManifest {
title : String
width : Int
height : Int
size_hint : WindowSizeHint
titlebar_style : TitlebarStyle
} derive(Eq,
Debug
)

Declarative window settings consumed by runtime manifests.

#
WindowManifest::equal

#
WindowManifest::new

fn WindowManifest::new(title : String, width : Int, height : Int, size_hint? : WindowSizeHint, titlebar_style? : TitlebarStyle) -> WindowManifest

Builds a manifest window configuration. This is the declarative window shape consumed by bootstrap and later turned into runtime WindowConfig values.

#
WindowManifest::not_equal

fn WindowManifest::not_equal(x : WindowManifest, y : WindowManifest) -> Bool

#
WindowManifest::output

fn WindowManifest::output(self : WindowManifest, logger : &Logger) -> Unit

#
WindowManifest::to_string

fn WindowManifest::to_string(self : WindowManifest) -> String

#
WindowSizeHint

pub(all) enum WindowSizeHint {
None
Fixed
Min
Max
} derive(Eq,
Debug
)

Declarative sizing hint used by manifest windows.

#
WindowSizeHint::equal

#
WindowSizeHint::not_equal

fn WindowSizeHint::not_equal(x : WindowSizeHint, y : WindowSizeHint) -> Bool

#
WindowSizeHint::output

fn WindowSizeHint::output(self : WindowSizeHint, logger : &Logger) -> Unit

#
WindowSizeHint::to_string

fn WindowSizeHint::to_string(self : WindowSizeHint) -> String

Powered by MoonBit

Site sourceReport issuePackagesBuild queueSkillsStatistics

© 2026 mooncakes.io