Feature chore bug 005 #19
+28
-3
@@ -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) =>
|
||||||
|
|||||||
Reference in new issue
Block a user