feat: write 3 files per solo recording (index + transkript + zusammenfassung)

- pipeline: call write_solo_docs() instead of save_transcript(); broadcast paths dict
- router: /open accepts paths list for Obsidian mode, copies all 3 files to vault
- app.js: store _modalPaths from saved event; Obsidian button sends all paths
- tests: test_write_solo_docs_creates_three_files added

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-02 11:10:28 +02:00
parent a37e09fb4e
commit 06f7361004
4 changed files with 58 additions and 17 deletions
+9 -2
View File
@@ -13,6 +13,7 @@ const modalFolderBtn = document.getElementById('modal-folder-btn');
const modalOpenBtn = document.getElementById('modal-open-btn');
const modalCloseBtn = document.getElementById('modal-close-btn');
let _modalPath = null;
let _modalPaths = null;
let _modalFilename = null;
const speakerCard = document.getElementById('speaker-card');
@@ -53,8 +54,9 @@ logoutBtn.addEventListener('click', () => {
});
});
function openModal(filename, path) {
function openModal(filename, path, paths) {
_modalPath = path;
_modalPaths = paths || null;
_modalFilename = filename;
modalTitle.textContent = filename.replace(/\.md$/, '').replace(/^\d{4}-\d{2}-\d{2}-\d{4}-/, '');
modalBody.innerHTML = '';
@@ -69,6 +71,7 @@ function openModal(filename, path) {
function closeModal() {
modal.classList.add('hidden');
_modalPath = null;
_modalPaths = null;
_modalFilename = null;
}
@@ -76,7 +79,11 @@ modalCloseBtn.addEventListener('click', closeModal);
modal.querySelector('.modal-backdrop').addEventListener('click', closeModal);
document.addEventListener('keydown', e => { if (e.key === 'Escape') closeModal(); });
modalObsidianBtn.addEventListener('click', () => {
if (_modalPath) apiFetch('/open', { method: 'POST', body: JSON.stringify({ path: _modalPath, mode: 'obsidian' }) });
if (_modalPaths) {
apiFetch('/open', { method: 'POST', body: JSON.stringify({ paths: Object.values(_modalPaths), mode: 'obsidian' }) });
} else if (_modalPath) {
apiFetch('/open', { method: 'POST', body: JSON.stringify({ path: _modalPath, mode: 'obsidian' }) });
}
});
modalFolderBtn.addEventListener('click', () => {
if (_modalPath) apiFetch('/open', { method: 'POST', body: JSON.stringify({ path: _modalPath, mode: 'folder' }) });