fix(app-tauri,frontend): le panneau MCP se détache en fenêtre OS — #299 (cause: enum Rust ViewPanel sans variante Mcp, open_view_window("mcp") rejetait INVALID et detachPanel ne touchait le placement qu'en cas de succès donc aucun effet visible ni message; fix: variante ViewPanel::Mcp avec parse/as_str/title "MCP" + contrat stable label view-mcp / url index.html?panel=mcp / decodage view_panel_from_window_label, identite persistee des fenetres view-mcp acceptee a la restauration #50, et ProjectsView surface desormais un echec de detachement via alerte role=alert avec bouton Reessayer au lieu de l'echec silencieux — placement conserve tant que la fenetre OS ne s'ouvre pas; QA verte reconfirmee par Git: rustup run stable cargo fmt --all -- --check, git diff --check, cargo test -p app-tauri view_window_tests 9/9 dont mcp_view_window_contract_is_stable, persisted_identity_accepts_mcp_view_label 1/1, npm test 22/22 sur ViewWindow/ProjectsView.detach/viewPlacement, npm run build tsc+vite OK; fichiers tickets/296/*, tickets/299/, scripts/ et sync counter/index hors perimetre; aucun push)

This commit is contained in:
2026-09-09 21:41:41 +02:00
parent 602abfea58
commit e4622cd753
6 changed files with 101 additions and 3 deletions

View File

@ -1090,6 +1090,24 @@ mod tests {
assert_eq!(url.as_deref(), Some("index.html?panel=agents"));
}
#[test]
fn persisted_identity_accepts_mcp_view_label() {
let (kind, panel, project_id, plugin_layout, url) =
persisted_window_identity_from_label("view-mcp").unwrap();
assert_eq!(kind, PersistedWindowKind::View);
assert_eq!(panel.as_deref(), Some("mcp"));
assert!(project_id.is_none());
assert!(plugin_layout.is_none());
assert_eq!(url.as_deref(), Some("index.html?panel=mcp"));
assert_eq!(
persisted_view_identity_from_label("view-mcp")
.unwrap()
.as_str(),
"mcp"
);
}
#[test]
fn persisted_identity_accepts_plugin_layout_view_labels() {
let plugin_id = domain::PluginId::new("dev.idea.android-plugin").unwrap();