host: plugins, custom CSS, feature flags, settings and open_panel are host commands
run_app now keeps and serves what every app's panel and page need, with the same caller checks
as the rest (commands::SHELL: shell_only first; testkit::assert_host_guards covers them):
- app.rs: PageState (the plugin store in app data `plugins`, the feature flags, ShellSettings)
managed by the host; commands plugins_list, plugin_set_enabled, plugins_open_folder,
custom_css_get/set, features_get/set, settings_get/set (moved from wayBetter for X). The app
reads the state through app::page(), gets a loaded document's scripts from app::page_scripts()
(flags, links, custom CSS, plugins) and writes through set_features/set_settings/set_custom_css
(a backup import). AppConfig takes the app's PluginHost (AppConfig::new(site, title, plugins))
and an optional home_url. SiteHooks::navigation_started and new_window_mode default to the
owner's link settings.
- settings.rs (pure, tested): ShellSettings { homeUrl, externalLinks, siteLinks, restoreTabs }
with its input form (missing fields take the defaults; `xLinks`, the name wayBetter for X used,
is read as siteLinks), links_script ({ site: mode }), feature validation and features_script.
- commands::SITE + open_panel: a tab on the site's origin asks the shell to open the app's panel
(site_tab_only first). testkit: assert_site_only(command, site) checks that every capability
granting a site command is a tab capability limited to the site's URLs; assert_host_commands and
assert_host_guards include the site commands.
- shell frame backupModel: a settings section that still says xLinks compares as siteLinks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
94ca44edad
commit
f6a50602d7
7 changed files with 529 additions and 36 deletions
|
|
@ -23,6 +23,8 @@
|
|||
//! shows, its page color and delivery script) over a site's built-in themes.
|
||||
//! - [`workspaces`]: saved tab/pane/deck layouts, bounded and well-formed (never evaluated).
|
||||
//! - [`devmode`]: developer mode's debounced watcher of plugins, custom CSS and a theme file.
|
||||
//! - [`settings`]: the shell's settings (home page, where links open, session restore) and the page's
|
||||
//! feature flags, as validated data and the scripts that hand them to site tabs.
|
||||
//! - [`alerts`]: local keyword alerts (keywords, snippets, per-item/per-keyword rate limits).
|
||||
//! - [`media`]: gallery folders (path containment) and the opt-in clipboard history (private copies skipped).
|
||||
//! - [`gfonts`]: self-hosted Google Fonts: CSS parsing, URL/woff2 checks, the cache format, the page script;
|
||||
|
|
@ -37,7 +39,8 @@
|
|||
//! With the `tauri` feature, [`host`] adds the Tauri glue that does not depend on app state; with
|
||||
//! `tauri` and `net`, [`updater`] runs signed native updates and the hotfix channel. With `app`,
|
||||
//! [`app`] is the whole app around a site: [`app::run_app`] makes the window, the shell and the tab
|
||||
//! webviews, registers the plugins and serves the generic commands; the app adds its own.
|
||||
//! webviews, registers the plugins and serves the generic commands (tab layout and actions, profiles,
|
||||
//! language, the plugins folder and custom CSS, page tweaks, the shell's settings); the app adds its own.
|
||||
|
||||
pub mod alerts;
|
||||
pub mod backup;
|
||||
|
|
@ -54,6 +57,7 @@ pub mod media;
|
|||
pub mod plugins;
|
||||
pub mod policy;
|
||||
pub mod profiles;
|
||||
pub mod settings;
|
||||
pub mod site;
|
||||
pub mod store;
|
||||
pub mod sync;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue