Skip to content

Models page, per-model prompts, copy job, SQLite + Omnilingual ASR - #5

Open
KillerX wants to merge 3 commits into
mainfrom
feat/models-page-copy-job-sqlite
Open

KillerX wants to merge 3 commits into
mainfrom
feat/models-page-copy-job-sqlite

Conversation

@KillerX

@KillerX KillerX commented Nov 5, 2026

Copy link
Copy Markdown
Member

Summary

Two commits:

1. feat(omnilingual): Meta Omnilingual ASR sidecar

  • Python sidecar (omnilingual/) serving Omnilingual ASR 7B, a Go adapter, an opt-in omnilingual compose profile and a CI workflow for its image.
  • omnilingual-7b is only registered when OMNILINGUAL_URL is set.

2. feat: models page, per-model prompts, copy job, SQLite

  • Models page at /model-settings ("Models" in the header; /models is the JSON API). Shows each model's name, ID, default badge, aliases, job counts and an editable default prompt.
  • Per-model prompts. New endpoint PUT /models/{id}/prompt. GET /models now also returns aliases, prompt and supports_prompt. When a job is created the prompt comes from, in order: the request's prompt, then the model's prompt, then the server-wide prompt.txt. Omnilingual is marked as not supporting prompts, and the API refuses to save one for it.
  • Copy job. Available from the job list and the job detail page; opens the new-job form filled in from the original job. The form gains an "Advanced" section (callback URL, timeout, subtitle line limits). The form's priority limit of 10 is removed (the server's default is 1000).
  • SQLite. Uses the pure-Go modernc.org/sqlite driver, so builds without CGO still work. Migrations are embedded and applied by goose on startup; queries are generated with sqlc (make sqlc). New -db flag; compose adds a data volume at /var/lib/transcriber. Jobs are still kept in memory.
  • Dockerfile now copies go.sum (it previously copied only go.mod, which breaks once there are dependencies).

Testing

  • go test -race ./... passes, including new tests for the model prompt store and the API (prompt order, aliases, unknown model).
  • Ran the server against a fresh database and checked the endpoints with curl: the database is created and migrated, prompts save, and the prompt order holds.
  • The frontend builds with pnpm generate; vue-tsc reports only an existing error in nuxt.config.ts.
  • Not yet clicked through in a browser.

🤖 Generated with Claude Code

KillerX and others added 3 commits November 5, 2026 22:10
Python sidecar (omnilingual/) serving Meta Omnilingual ASR 7B, a Go
adapter that talks to it, an opt-in compose profile, and a CI workflow
for the sidecar image. The omnilingual-7b model is only registered when
OMNILINGUAL_URL is set.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Models page (/model-settings): lists models with aliases, default
  badge, job counts, and an editable per-model default prompt.
- Per-model prompts: PUT /models/{id}/prompt; GET /models now returns
  aliases, prompt and supports_prompt. Prompt precedence on job create:
  request prompt > model prompt > server-wide default prompt.
  Models that ignore prompts (omnilingual) refuse a stored prompt.
- Copy job: from the job list or detail page, opens the new-job form
  prefilled (aliases resolved to the canonical model). The form gains
  an Advanced section for callback, timeout and subtitle options.
- SQLite via pure-Go modernc.org/sqlite with embedded goose migrations
  and sqlc-generated queries (make sqlc). New -db flag; compose mounts a
  `data` volume at /var/lib/transcriber. Jobs remain in-memory.
- Dockerfile copies go.sum and pre-downloads modules.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kenlm (a dependency of omnilingual-asr) is only published as an sdist
and needs CMake plus a C/C++ compiler, which python:3.12-slim lacks, so
`uv sync` failed in CI. Build the venv in a separate stage with
build-essential and copy only /opt/venv into the runtime image.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant