plugins/* relient l’interface React au code natif de Syntheo Desktop. Cette page décrit ce que chaque plugin expose et quelles pages utilisateur relire quand il change. Pour la place des plugins dans l’ensemble du monorepo, voir Architecture.
Anatomie d’un plugin
Chaque dossierplugins/<nom> suit la même structure :
Après toute modification des commandes d’un plugin, lancez
codegen, puis mettez à jour permissions/default.toml et apps/desktop/src-tauri/capabilities/default.json (plugins/AGENTS.md).
Tous les plugins sont enregistrés dans apps/desktop/src-tauri/src/lib.rs, avec trois exceptions conditionnelles :
agentethooksne sont pas chargés avec la featureapp-store.relayn’est chargé qu’en build de debug ou avec la featuredevtools.
Le nom d’un plugin ne dit pas tout :
notification affiche les notifications, notify surveille le système de fichiers. Les suffixes 2 (fs2, path2, opener2, store2, sidecar2, deeplink2) désignent des extensions maison d’un plugin Tauri officiel du même nom.Inventaire
La colonne « Interface » indique siapps/desktop/src importe le paquet @syntheo/plugin-<nom>.
Capture, transcription et dictée
transcription
- Chemin :
plugins/transcription - Rôle : pilote la capture du micro et de l’audio système, la transcription en direct, la transcription par lot des fichiers importés et la rétention des segments audio en attente d’envoi. C’est le plugin le plus utilisé par l’interface.
- Commandes principales :
- Périphériques et niveaux :
list_microphone_devices,list_speaker_devices,start_microphone_level_monitor,set_mic_muted,set_speaker_muted. - Capture :
start_capture,stop_capture,stop_capture_for_session,retry_audio_capture,update_capture_config,update_capture_credentials,get_capture_state,get_capture_snapshot,get_capture_audio_gaps. - Reprise après arrêt :
list_stopped_captures,list_capture_recoveries, marqueurs de cycle de vie (save_capture_lifecycle_marker…). - Transcription en direct :
flush_live_transcript,render_transcript_segments,render_session_transcript. - Lot et import :
start_transcription,stop_transcription,begin_audio_upload,append_audio_upload,refine_batch_transcript,save_batch_transcript,reconcile_refined_speaker_clusters. - Sous-titres :
parse_subtitle,export_to_vtt. - Langues :
is_supported_languages_liveet_batch,suggest_providers_for_languages_liveet_batch,list_documented_language_codes_liveet_batch. - Audio en mémoire :
list_capture_audio_chunks,delete_transcribed_capture_audio,delete_processed_session_audio.
- Périphériques et niveaux :
- Événements :
CaptureLifecycleEvent,CaptureStatusEvent,CaptureDataEvent,LiveTranscriptPersistenceEvent,SessionAudioRetentionEvent,TranscriptionEvent. - Dépendances internes :
crates/audio,crates/db-app,crates/language,crates/storage,crates/transcript,crates/transcription-core,crates/owhisper-client,crates/owhisper-interface; pluginsdb,fs-sync,settings,store2,tray. - Pages de doc concernées : /meetings, /import-recordings, /languages, /ai-setup, /offline, /data-and-privacy, /troubleshooting.
dictation
- Chemin :
plugins/dictation - Rôle : enregistre la voix, l’envoie au serveur STT et insère le texte dans l’application active. L’insertion a une implémentation Linux et une Windows (
src/insertion/). - Commandes :
show,hide,set_phase,update_amplitude,start_recording,start_system_recording,stop_recording,cancel_recording,capture_target,insert_text. - Dépendances internes :
crates/owhisper-client,crates/owhisper-interface,crates/audio. - Pages de doc concernées : /dictation.
detect
- Chemin :
plugins/detect - Rôle : repère les applications qui utilisent le micro, respecte le mode « Ne pas déranger », lit l’accessibilité des fenêtres de réunion pour envoyer ou capturer des messages de chat, et capture les partages d’écran.
- Commandes :
list_installed_applications,list_mic_using_applications,set_respect_do_not_disturb,set_ignored_bundle_ids,set_included_bundle_ids,set_mic_active_threshold,inspect_meeting_accessibility,send_meeting_chat_message,capture_meeting_chat_messages,capture_meeting_screen_share,get_preferred_languages,get_current_locale_identifier. - Événements :
DetectEvent(MicDetected,MicStopped,MicMuteStateChanged,SleepStateChanged…). - Dépendances internes :
crates/detect,crates/notification-interface; pluginssettings,windows. - Pages de doc concernées : /automatic-capture (sections « Détecter une réunion non planifiée », « Arrêter l’écoute », « Informer les participants », « Capturer les écrans partagés », et le tableau de disponibilité par plateforme).
Autres plugins audio
Données et contenu
db
- Chemin :
plugins/db - Rôle : expose la base SQLite à l’interface. Applique les migrations, exécute les requêtes et pousse les changements aux abonnés.
- Commandes :
execute,execute_transaction,execute_proxy,subscribe,unsubscribe,list_meetings,get_meeting,get_meeting_transcript,get_recurring_meeting_history,apply_session_ingest,get_startup_status,wait_until_ready. - Dépendances internes :
crates/db-core,crates/db-app,crates/db-execute,crates/db-migrate,crates/db-reactive,crates/session-ingest,crates/agent-access. - Consommateurs :
packages/db-tauriet l’interface ; les pluginssession,contacts,template,export,local-apiettranscriptionen dépendent côté Rust. - Pages de doc concernées : /meetings, /notes, /data-and-privacy.
session
- Chemin :
plugins/session - Rôle : écritures transactionnelles sur les notes et les dossiers.
- Commandes :
create_session,soft_delete_session,restore_deleted_session,add_session_participant,remove_session_participant,persist_chat_session_proposal,set_session_proposal_status,resolve_session_conflicts,move_session_contents, catalogue des pièces jointes et de l’audio (catalog_note_attachment,catalog_session_audio,tombstone_session_audio…), catalogue des dossiers (ensure_folder_catalog,rename_folder_catalog,update_folder_instructions,update_folder_workspace,update_folder_icon…). - Dépendances internes :
crates/db-app; plugindb. - Pages de doc concernées : /notes, /meetings, /chat (propositions issues du chat).
template
- Chemin :
plugins/template - Rôle : rend les prompts Jinja et enregistre le résultat de la génération.
- Commandes :
render,render_custom,get_template_source,summary_length_policy,dominant_language,prepare_generated_summary,compose_generated_summary,save_generated_summary,save_generated_title,apply_session_content_corrections. - Dépendances internes :
crates/template-app,crates/template-app-legacy,crates/summary,crates/gbnf,crates/language,crates/db-app; plugindb. - Pages de doc concernées : /customize-summaries, /languages (langue des résumés et des titres), /chat.
Autres plugins de données
Fenêtres et intégration système
windows
- Chemin :
plugins/windows - Rôle : ouvre, masque et anime les fenêtres et onglets, et pilote deux fenêtres superposées : la barre flottante et les sous-titres en direct.
- Commandes :
window_show,window_hide,window_navigate,window_emit_navigate,window_save_frame,window_restore_frame_animated,set_show_app_in_dock,webview_health_ack,floating_bar_show,floating_bar_hide,floating_bar_update,live_caption_show,live_caption_hide,live_caption_update. - Événements :
Navigate,OpenTab,WindowDestroyed,VisibilityEvent,WebviewHealthCheck,FloatingBarStop,FloatingBarDictationAction,FloatingBarListeningAction,FloatingBarOpenMain,FloatingBarSettingsChange,LiveCaptionOverlayState… - Dépendances internes :
crates/brand. - Pages de doc concernées : /automatic-capture (« Garder les commandes à portée de main »), /meetings.
Autres plugins système
Plugins internes, spécifiques à macOS ou hérités
Quand mettre à jour la documentation
- Une commande ou un événement ajouté, renommé ou retiré : mettez à jour le tableau de cette page.
- Un changement de comportement visible dans un plugin dont la colonne « Pages de doc concernées » n’est pas « aucune » : relisez ces pages.
- Un plugin qui commence à être appelé par l’interface (par exemple
audio-priorityouagent) : ajoutez les pages utilisateur concernées et la ligne correspondante dans Correspondance doc ↔ code.