feat(plugins,host): pluginRoot officiel transmis au contexte activate(ctx) des plugins — #285 (domain ports + infrastructure plugin: racine du package installé résolue depuis la même source de vérité que la substitution manifest ${pluginRoot}; application runtime_catalog + slash_command; backend dto + app-tauri dto_plugins; frontend domain + plugins runtime loader transmettent pluginRoot au contexte activé; bump pointeur IdeaSDK e3a0f46 via feature/285-plugin-root-runtime-api; QA verte: cargo check domain/application/infrastructure/backend/app-tauri, runtime_catalog 5/5, plugin_install_load 5/5, dto_plugins 2/2, frontend typecheck + 33 tests/3 fichiers, cargo fmt --check, git diff --check; réserves: rebuild AppImage + validation live ctx.pluginRoot dans le binaire actif restants)

This commit is contained in:
2026-09-08 18:35:34 +02:00
parent 46a1d1a31b
commit e499a0fd34
13 changed files with 88 additions and 4 deletions

View File

@ -184,6 +184,8 @@ pub struct PluginRuntimePlugin {
pub version: String,
/// Bundle URL.
pub bundle_url: String,
/// Canonical host-local root of the installed plugin package.
pub plugin_root: String,
/// Icon URL.
pub icon_url: Option<String>,
/// Content hash.
@ -3022,6 +3024,10 @@ pub(crate) async fn runtime_plugin_from_entry(
&descriptor.registry.content_hash,
&descriptor.manifest.main,
)?;
let plugin_root = packages
.installed_plugin_root(&descriptor.manifest.id)
.await
.map_err(map_store)?;
let icon_url = match &descriptor.manifest.icon {
Some(icon) => Some(checked_plugin_asset_url(
packages,
@ -3038,6 +3044,7 @@ pub(crate) async fn runtime_plugin_from_entry(
publisher: descriptor.manifest.publisher,
version: descriptor.manifest.version.as_str().to_owned(),
bundle_url: bundle,
plugin_root: plugin_root.as_str().to_owned(),
icon_url,
content_hash: descriptor.registry.content_hash.as_str().to_owned(),
capabilities: descriptor.manifest.capabilities,
@ -4203,6 +4210,10 @@ mod tests {
let catalog = usecase.execute().await.unwrap();
assert_eq!(catalog.plugins.len(), 1);
assert_eq!(
catalog.plugins[0].plugin_root,
"/installed/dev.acme.gitgraph"
);
assert_eq!(
catalog.plugins[0].capabilities,
vec![