anc
Этап 0: каркас Tauri 2, разбор встречи через OpenRouter, стиль skillok.org
- Ядро на Rust: расшифровка и импорт текста, схема разбора со строгой
проверкой ответа модели, клиент OpenRouter (проверка ключа, разбор),
настройки и ключ в хранилище паролей ОС, встречи папками на диске.
- Интерфейс: экраны «Встречи», «Встреча» (расшифровка, конспект, задачи),
«Настройки»; токены, шрифты и кнопки как на skillok.org.
- Промпт разбора prompts/analysis.md и проверочные расшифровки.
- 30 тестов ядра; клиент OpenRouter проверяется против локальной заглушки.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
d93e31a
30 сентября 2026 г.
dom.ts
// Маленькие помощники вёрстки: экранирование и сборка разметки строкой.
export function esc(value: unknown): string {
return String(value ?? "")
.replace(/&/g, "&")
.replace(//g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
export function list(items: string[]): string {
return `${items.map((i) => `${esc(i)}`).join("")}`;
}
export function $(root: ParentNode, selector: string): HTMLElement {
const el = root.querySelector(selector);
if (!el) throw new Error(`нет элемента ${selector}`);
return el;
}
/** Кнопка в ожидании: недоступна и с другой подписью, пока идёт `work`. */
export async function busy(button: HTMLButtonElement, label: string, work: () => Promise): Promise {
const before = button.textContent;
button.disabled = true;
button.textContent = label;
try {
return await work();
} finally {
button.disabled = false;
button.textContent = before;
}
}