- Merge Anbieter and Standard-LLM-Parameter into one card with explicit
step labels (Schritt 1: Anbieter, Schritt 2: Modell setzen)
- Show current default provider name in step 2 so it's always visible
- Add inline edit form per provider row (pencil button toggles form)
- Add /providers/{id}/update and /providers/{id}/clear-key routes
- Fix sqlite3.Row.get() AttributeError in _prompt_llm_block and
_process_analysis_job (use .keys() instead)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace Ollama-native API (/api/generate) with OpenAI-compatible
/v1/chat/completions — works with Ollama, OpenAI, Groq, LM Studio,
LocalAI, and any other OpenAI-compatible endpoint
- New providers table: name, base_url, optional API key, default flag
- Settings page: add/delete/set-default providers; rename LLM params
from ollama_* to llm_* settings keys
- Per-prompt: choose provider from dropdown, model load button fetches
from that provider's /v1/models
- <think>…</think> tags extracted for live thinking display (works with
Ollama thinking models and DeepSeek-R1 style responses)
- Existing OLLAMA_BASE_URL env var seeds the initial provider on first
start for backward compat
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Upload page: select and reorder prompts via drag & drop; after
transcription each prompt runs sequentially, feeding its output
into the next prompt in the chain
- After the last pipeline step the final document is optionally sent
as a Markdown attachment via SMTP to selected recipients
- Settings: new SMTP configuration section (host, port, user,
password, sender, STARTTLS toggle)
- Settings: managed list of email recipient addresses (add/delete)
- DB migrations: jobs.pipeline_prompt_ids, jobs.email_to,
email_addresses table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Each prompt can override model, thinking, num_ctx, num_predict,
repeat_penalty and repeat_last_n. Default switch uses global settings;
custom values are preserved when switching back to default.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add settings table (key/value) to SQLite DB
- New /settings page: lazy-load models from Ollama API, configure
num_ctx, num_predict, repeat_penalty, repeat_last_n, thinking toggle
- Analysis job reads all parameters from DB (fallback to env vars)
- Add Traefik labels and network to docker-compose.yml (voicelog.aquantico.lan)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Thinking tokens count against num_predict. At 4096 the model was
running out mid-response after spending ~3000 tokens on thinking.
16384 gives enough headroom for thinking + full response.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Empty documents caused the model to spin in its thinking loop and waste
all tokens. Now raises a clear job error before the Ollama call.
Also adds OLLAMA_THINK env var (default false) to control whether
the model uses extended thinking - disabling it avoids runaway thinking
loops on ambiguous inputs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds repeat_penalty=1.15 and repeat_last_n=128 to suppress token
repetition loops (e.g. "tragen" -> "tragen" -> ...). Also caps output
via num_predict (default 4096, configurable via OLLAMA_NUM_PREDICT env
var) as a hard stop in case the model still gets stuck.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Estimates required context window from prompt length (chars/3 + 2048
response buffer) and rounds up to the nearest fixed tier (4096, 8192,
16384, 32768, 65536). Fixed tiers prevent Ollama from reloading the
model on every call. The chosen num_ctx is prepended to the stored
llm_prompt so it's visible in the debug window.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ollama streaming chunks for thinking models use a separate "thinking"
field. Previously only "response" was captured, leaving the debug
window empty while the model reasoned. Now both fields are tracked
independently: thinking is shown in blue above the final answer,
both are persisted to new llm_thinking / existing llm_response columns.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Streams the Ollama response token-by-token and stores the full LLM
prompt in the jobs table. A Debug button on each analysis job opens
a modal with two tabs: the sent prompt and the live-updating answer
(polls /jobs/{id}/debug-data every 500 ms while streaming, badge
shows "● live"). Response is persisted to llm_response after the job
completes so it stays viewable afterwards.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Upload page accepts multiple audio files at once
- Project field is a combobox: pick existing or type new name (auto-created)
- Document titles derived from filename without extension
- Files uploaded sequentially with progress bar
- New POST /projects/create-api endpoint (idempotent: returns existing if name matches)
- POST /upload now returns JSON {job_id} instead of HTML redirect
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds an edit mode to the document view: click "Bearbeiten" to switch
from rendered Markdown to a monospace textarea, save via POST
/document/{id}/edit, or cancel to discard changes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sqlite3.Row does not support .get() — converting to dict at the source
fixes all current and future call sites uniformly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace static server-rendered job cards with JS-driven polling of
/jobs/data every 3s (active jobs) or 10s (all idle). Cards are
re-rendered client-side, preserving checkbox selection. Polling
accelerates when queued/running jobs exist and resumes on tab focus.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New tab layout on /run: single-document vs. project-batch mode
- POST /run/project enqueues one analysis job per transcript in a project
- Optional user_prompt field on both modes for extra context to the LLM
- DB migration: adds user_prompt column to jobs table
- LLM prompt builder includes ZUSATZINFOS block when user_prompt is set
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add checkboxes to each row, select-all/deselect-all controls, and a
bulk action bar for moving or deleting multiple documents at once.
New endpoints: POST /documents/bulk-move and /documents/bulk-delete.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>