anc
Ход работы не теряется при уходе с экрана; без «Записать» в шапке и предупреждения
- jobs.ts: расшифровка и ответ ИИ живут, пока открыта программа, а не
экран. Вернулся — видны процент, пришедшие реплики, текст ответа и его
вкладка; кончилось — экран перечитывает запись сам. Раньше экран
показывал «Расшифровать», хотя ядро ещё работало.
- В меню у записи — метка «расшифровка» / «ИИ», пока идёт работа.
- Кнопка «Записать» из шапки убрана (метка идущей записи осталась).
- Блок «Текст предупреждения участникам» убран из настроек, экрана
«Новая запись» и панели записи.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
a730a5c
1 октября 2026 г.
new.ts
// Экран «Новая запись»: «Записать встречу» ведёт сюда, а не запускает запись
// сразу (решение владельца 01.10.2026). Здесь видно, что запишется, и совет
// про наушники; запись начинается только кнопкой «Начать запись».
import { api } from "../api";
import type { Scope } from "../scope";
import { startRecording, state } from "../state";
export async function renderNew(root: HTMLElement, scope: Scope): Promise {
// Запись уже идёт — вторую не начать, показываем идущую.
if (state.recording) {
location.replace(`#/m/${encodeURIComponent(state.recording.meeting_id)}`);
return;
}
const view = await api.getSettings();
if (!scope.alive) return;
if (!view.capture_supported) {
root.innerHTML = `
Новая запись
На этой системе запись не поддерживается. Добавьте готовый аудиофайл — перетащите его в окно или выберите через меню.
`;
return;
}
root.innerHTML = `
Новая запись
Запишется
ваш микрофон
весь звук компьютера — голоса собеседников в Zoom, Google Meet, Телемосте и где угодно
Лучше в наушниках — так голоса собеседников не попадут в микрофон второй раз.
${
view.openrouter_key
? ""
: `Записать можно и без ИИ. Чтобы потом расшифровать, подключите его в настройках.`
}
Начать запись
`;
root.querySelector("[data-start]")!.addEventListener("click", async (e) => {
const b = e.currentTarget as HTMLButtonElement;
b.disabled = true;
b.textContent = "Начинаю…";
await startRecording();
// Не началась — ошибку уже показало сообщение внизу, кнопку возвращаем.
if (scope.alive && !state.recording) {
b.disabled = false;
b.textContent = "Начать запись";
}
});
}