Skip to content

feat(profiles): simplify provider configuration - #216

Merged
kfstorm merged 6 commits into
mainfrom
feat/standalone-model-profile-ux
Sep 28, 2026
Merged

kfstorm merged 6 commits into
mainfrom
feat/standalone-model-profile-ux

Conversation

@kfstorm

@kfstorm kfstorm commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Replace inheritable Model Profiles with standalone configurations containing a name, a provider, and sparse provider settings.
  • Build the provider form from PySubtrans runtime "GetOptions()" results and refresh it according to "refresh_when_changed", including network-backed model discovery.
  • Render PySubtrans field types directly and keep runtime defaults and environment fallbacks out of the browser; only explicit profile settings are persisted.
  • Reconcile missing or invalid models using PySubtrans's available models and persist explicit runtime updates such as an auto-selected model.
  • Preserve drafts across refresh errors, reject stale responses, and clear provider-specific settings when the provider changes.
  • Keep Jobs linked by "model_profile_id" and resolve the current profile when each translation attempt starts.

Migration

The existing "0004_model_profiles" migration remains unchanged because it has already been deployed. A new migration rebuilds the Model Profile tables with the standalone schema and removes "parent_id", "selectable", setting kinds, and unset tombstones.

There is no existing Model Profile data to preserve, so the migration intentionally does not flatten inheritance or provide a legacy data-conversion path.

Context

This PR replaces the configuration UX direction from the closed #215. It does not reopen that PR or continue from its branch.

Removing inheritance and Base Profile semantics makes each profile understandable on its own. Reading option visibility, types, choices, descriptions, and refresh behavior from PySubtrans also removes CueWeaver's AST-derived configuration schema. Sparse explicit settings keep PySubtrans defaults and environment configuration at runtime without exposing their effective values through the configuration API.

The result is a shorter first-time setup flow with less provider-specific configuration logic for CueWeaver to maintain.

Replace inheritable Model Profiles with standalone provider configurations and render provider settings directly from PySubtrans runtime options.

Keep profile persistence sparse, refresh dynamic options according to provider metadata, and preserve Job resolution by profile ID. Add a new migration that rebuilds the empty deployed profile tables without changing the existing migration.
Validate saved settings against the current PySubtrans GetOptions contract and reconcile explicit models with available models. Drop settings hidden by successful dynamic refreshes and correct the profile creation E2E route.
@kfstorm
kfstorm merged commit 7829841 into main Sep 28, 2026
3 checks passed
@kfstorm
kfstorm deleted the feat/standalone-model-profile-ux branch September 28, 2026 15:56
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