Feature chore bug 005 #19

Merged
iamdoubz merged 106 commits from feature_chore_bug_005 into main 2026-07-07 22:02:41 -05:00
Showing only changes of commit 4c00496c09 - Show all commits
+28 -3
View File
@@ -69,6 +69,16 @@ export interface ModelInfo {
size_mb: number; size_mb: number;
installed: boolean; installed: boolean;
active: boolean; active: boolean;
/** `false` for `.en` (English-only) ggml variants; `true` for multilingual
* ones — gates the Settings language picker (T8.7, FR-TRX-4, M4.2). */
multilingual: boolean;
}
// One selectable transcription language (T8.7, FR-TRX-4) — ISO-639-1 code
// as accepted by whisper.cpp, plus a display label.
export interface LanguageOption {
code: string;
label: string;
} }
export type MeetingStatus = "recording" | "transcribing" | "ready" | "recovering" | "error"; export type MeetingStatus = "recording" | "transcribing" | "ready" | "recovering" | "error";
@@ -152,6 +162,9 @@ export interface Meeting {
duration_secs: number | null; duration_secs: number | null;
status: MeetingStatus; status: MeetingStatus;
recorded: boolean; recorded: boolean;
// Transcription language actually used/selected for this meeting (T8.7,
// FR-TRX-4) — an ISO-639-1 code, or null if never resolved (e.g. no audio
// was ever decoded).
language: string | null; language: string | null;
backend_used: string | null; backend_used: string | null;
model_used: string | null; model_used: string | null;
@@ -284,6 +297,10 @@ export interface AppSettings {
} | null; } | null;
preferred_backend: string; preferred_backend: string;
whisper_model: string; whisper_model: string;
/** Default transcription language (T8.7, FR-TRX-4): `null` = auto-detect,
* an ISO-639-1 code forces that language. Only takes effect with a
* multilingual model — see `ModelInfo.multilingual`. */
whisper_language: string | null;
low_overhead: boolean; low_overhead: boolean;
default_record: boolean; default_record: boolean;
consent_acknowledged: boolean; consent_acknowledged: boolean;
@@ -345,14 +362,17 @@ export interface McpStatus {
// ---- Commands ---- // ---- Commands ----
export const api = { export const api = {
// `record` controls audio RETENTION (default false / off — ADR-0009). // `record` controls audio RETENTION (default false / off — ADR-0009).
// `language` (T8.7, FR-TRX-4): omit/undefined falls back to
// Settings.whisper_language; "auto" or omitted both mean auto-detect.
startRecording: ( startRecording: (
meetingTitle?: string, meetingTitle?: string,
calendarEventId?: string, calendarEventId?: string,
record = false, record = false,
templateId?: string, templateId?: string,
language?: string,
) => ) =>
invoke<MeetingId>("start_recording", { invoke<MeetingId>("start_recording", {
args: { meetingTitle, calendarEventId, record, templateId }, args: { meetingTitle, calendarEventId, record, templateId, language },
}), }),
listNoteTemplates: () => invoke<NoteTemplate[]>("list_note_templates"), listNoteTemplates: () => invoke<NoteTemplate[]>("list_note_templates"),
stopRecording: (meetingId: MeetingId) => invoke<void>("stop_recording", { meetingId }), stopRecording: (meetingId: MeetingId) => invoke<void>("stop_recording", { meetingId }),
@@ -377,11 +397,16 @@ export const api = {
downloadNpuPackage: () => invoke<void>("download_npu_package"), downloadNpuPackage: () => invoke<void>("download_npu_package"),
downloadDirectmlPackage: () => invoke<void>("download_directml_package"), downloadDirectmlPackage: () => invoke<void>("download_directml_package"),
listModels: () => invoke<ModelInfo[]>("list_models"), listModels: () => invoke<ModelInfo[]>("list_models"),
// T8.7/FR-TRX-4: static catalog of whisper.cpp-recognized language codes
// for the Settings dropdown; "Auto-detect" is a frontend-only addition.
listWhisperLanguages: () => invoke<LanguageOption[]>("list_whisper_languages"),
downloadModel: (id: string, kind: "whisper" = "whisper") => downloadModel: (id: string, kind: "whisper" = "whisper") =>
invoke<void>("download_model", { args: { kind, id } }), invoke<void>("download_model", { args: { kind, id } }),
removeModel: (id: string) => invoke<void>("remove_model", { id }), removeModel: (id: string) => invoke<void>("remove_model", { id }),
reprocessTranscript: (meetingId: MeetingId, model: string) => // `language` (T8.7): omit/undefined reuses whatever language the meeting
invoke<void>("reprocess_transcript", { meetingId, model }), // already had rather than resetting it to auto.
reprocessTranscript: (meetingId: MeetingId, model: string, language?: string) =>
invoke<void>("reprocess_transcript", { meetingId, model, language }),
resumeTranscription: (meetingId: MeetingId) => resumeTranscription: (meetingId: MeetingId) =>
invoke<void>("resume_transcription", { meetingId }), invoke<void>("resume_transcription", { meetingId }),
listMeetings: (filter?: MeetingFilter) => listMeetings: (filter?: MeetingFilter) =>