Rewrite plugin installer as a declarative manifest/engine framework for reliable mix-and-match plugin installs, with backup/restore support and assorted plugin fixes (Hardcover file API, Bookerly/Hardcover SettingAction registration, GitHubSync include path, Lockscreen render timing)

This commit is contained in:
Sterling Archer committed 2026-07-16 15:39:10 -07:00
1 parent 3ad7a7ab39
commit fec251f4d1
23 files changed
+2079 -3243

No files matched your search

+37
View File
@@ -0,0 +1,37 @@
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
from framework.manifest import (
PluginManifest, SourceFile, Include, SettingsField, PluginsTabEntry, ReaderInvertHook,
)
def get_manifest(ctx):
return PluginManifest(
name="darkmode",
pretty_name="Dark Mode",
source_files=[
SourceFile("DarkModePlugin.h", "src/activities/settings"),
SourceFile("DarkModePlugin.cpp", "src/activities/settings"),
],
includes=[
Include("activities/settings/DarkModePlugin.h", "cross_point_settings_h"),
],
settings_fields=[
SettingsField("uint8_t darkModeState = 0;"),
],
plugins_tab_entries=[
PluginsTabEntry(
label="Dark Mode",
kind="enum",
key="darkModeState",
option_labels=["Disabled", "Enabled"],
value_text_expr="DarkModePlugin::stateName(static_cast<DarkModeState>(value))",
),
],
reader_invert_hook=ReaderInvertHook(
predicate_expr="DarkModePlugin::isDarkMode(static_cast<DarkModeState>(SETTINGS.darkModeState))",
include_header="activities/settings/DarkModePlugin.h",
),
)