Skip to content

Video OCR: install-status dots on engine/model pickers#12278

Merged
niksedk merged 1 commit into
mainfrom
feature/video-ocr-engine-status-dots
Jul 8, 2026
Merged

Video OCR: install-status dots on engine/model pickers#12278
niksedk merged 1 commit into
mainfrom
feature/video-ocr-engine-status-dots

Conversation

@niksedk

@niksedk niksedk commented Jul 8, 2026

Copy link
Copy Markdown
Member

Summary

Makes the burn-in / video OCR engine selection feel like the rest of the app's local-model pickers (text-to-speech, auto-translate) by adding the shared install-status dot to both comboboxes.

Engine combobox

Each engine now shows a status dot via the shared StatusDots helper:

  • 🟢 green — ready to use (installed)
  • 🟠 amber — installed, newer build available
  • grey — downloadable but not on disk yet
  • no dot — nothing for us to download (Paddle OCR Python via pip, Ollama server, the GLM cloud API)

PaddleOcrInstallHelper.IsStandaloneInstalled() is added so the Paddle OCR Standalone engine can report its dot synchronously; llama.cpp reports via LlamaCppServerManager install/update state.

llama.cpp model combobox

Model rows now show the same install dot plus the download size (e.g. ● GLM-OCR 0.9B (Q8_0) (1.4 GB)), matching how models render elsewhere.

Accessibility

Every dotted row also carries the install state as a tooltip and accessible name (from StatusDots), so status is conveyed in text, not colour alone.

Keeping dots fresh

The dots are one-off snapshots, so VideoOcrWindow.RefreshDownloadDots() rebuilds the item templates after a model/engine download or a server start.

Auto-download

Downloading stays on the existing, app-consistent path: llama.cpp / Paddle Standalone auto-prompt to download when you start OCR (EnsureEngineIsAvailable), plus the explicit Download button and Start/Stop server button for llama.cpp. The new dots now make it obvious before running which engines/models still need a download.

Testing

  • dotnet build -c Debug succeeds (0 warnings, 0 errors).
  • UI-only (combobox item templates); not driven headlessly.

🤖 Generated with Claude Code

Bring the burn-in / video OCR engine and model selection in line with the
text-to-speech window: the engine combobox and the llama.cpp model combobox
now render the shared StatusDots indicator - a green dot for "ready to use",
amber for "update available", grey for "downloadable but not installed", and
no dot for engines with nothing to download (Paddle OCR Python, Ollama, the
GLM cloud API). Each row also gets the install state as a tooltip and
accessible name, so it does not rely on colour alone. The llama.cpp model
rows additionally show the download size.

Add PaddleOcrInstallHelper.IsStandaloneInstalled() so the Paddle OCR
Standalone engine can report its dot status synchronously.

The dots are one-off snapshots, so VideoOcrWindow.RefreshDownloadDots()
rebuilds the templates after a model/engine download or server start to keep
the status current.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@niksedk niksedk merged commit 75b3e32 into main Jul 8, 2026
3 checks passed
@niksedk niksedk deleted the feature/video-ocr-engine-status-dots branch July 8, 2026 17:45
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