Add taskbar controls and summary oneliner

This commit is contained in:
2026-05-27 23:31:40 +02:00
parent 7777b349a5
commit 71f1e6a0b8
22 changed files with 720 additions and 9 deletions
@@ -206,8 +206,19 @@ public sealed class MeetingSummaryTools
return $"Deleted identity {deletion.Identity} and relabeled transcript speaker mentions to {deletion.Replacement}.";
}
public async Task<string> WriteSummary(string markdown, string? title = null)
public async Task<string> WriteSummary(string markdown, string oneliner, string? title = null)
{
if (string.IsNullOrWhiteSpace(oneliner))
{
return "Refused: oneliner must not be empty.";
}
var trimmedOneLiner = oneliner.Trim();
if (ContainsLineBreak(trimmedOneLiner))
{
return "Refused: oneliner must be a single line.";
}
Directory.CreateDirectory(Path.GetDirectoryName(artifacts.SummaryPath)!);
var meetingNote = await ReadMeetingNoteAsync();
var summaryTitle = string.IsNullOrWhiteSpace(meetingNote.Frontmatter.Title)
@@ -218,6 +229,7 @@ public sealed class MeetingSummaryTools
meetingNote,
string.IsNullOrWhiteSpace(summaryTitle) ? "Meeting Summary" : summaryTitle,
CancellationToken.None);
frontmatter.OneLiner = trimmedOneLiner;
await File.WriteAllTextAsync(
artifacts.SummaryPath,
MeetingArtifactFrontmatterRenderer.Render(frontmatter, markdown));
@@ -225,6 +237,12 @@ public sealed class MeetingSummaryTools
return artifacts.SummaryPath;
}
private static bool ContainsLineBreak(string value)
{
return value.Contains('\n', StringComparison.Ordinal) ||
value.Contains('\r', StringComparison.Ordinal);
}
public bool SummaryWasWritten { get; private set; }
public async Task<string> WriteContext(