using System.Diagnostics; namespace MeetingAssistant.MeetingNotes; public sealed class ObsidianMeetingNoteOpener : IMeetingNoteOpener { private readonly ILogger logger; public ObsidianMeetingNoteOpener(ILogger logger) { this.logger = logger; } public Task OpenAsync(string notePath, CancellationToken cancellationToken) { var uri = $"obsidian://open?path={Uri.EscapeDataString(Path.GetFullPath(notePath))}"; Process.Start(new ProcessStartInfo { FileName = uri, UseShellExecute = true }); logger.LogInformation("Opened meeting note in Obsidian via {ObsidianUri}", uri); return Task.CompletedTask; } }