Redesign web UI + cancellable long-running jobs#3
Merged
Conversation
Update default models to the current generation (balanced, cost-aware tier): Gemini 3.5 Flash, GPT-5.4-mini, Claude Sonnet 4.6, Command A. Remove the end-of-life gemini-2.0-flash-001 and the invalid claude-opus-4-1 model ID. Adapt provider request construction so the newer model families work instead of returning 400s or empty output: - OpenAI GPT-5/o-series: use max_completion_tokens + reasoning_effort and omit the unsupported temperature (shared is_openai_reasoning_model) - Gemini 3: set thinking_level=LOW and use the model-default temperature - Claude Opus 4.7+: omit sampling params (temperature/top_p/top_k), which those models reject with a 400; Sonnet/Haiku keep temperature - Settings UI preselects the registry default instead of the alphabetically-first model; the "Test OpenAI" path is reasoning-safe Embeddings are unchanged, so no FAISS re-index is required. Adds request-compatibility tests; updates CHANGELOG and README.
Redesign the web UI around a glass icon-rail and a ⌘K command palette (page search, action runner, quick vibes, g+key navigation). The Generator becomes an "AI-thinking" showpiece: a live particle vector-field, a four-phase progress tracker bound to the real generation pipeline, a streaming terminal log, and a results playlist with removable tracks. Add Settings → Appearance (theme toggle, density, accent intensity; persisted across reloads) and default the UI to light mode. Make every long-running job cancellable from the UI — library sync, embedding generation, MusicBrainz enrichment, audio analysis, Doctor fixes, and tagging — behind a single shared, shell-level confirmation that works from any page and the command palette. Work loops stop cooperatively at their next checkpoint and the "cancelled" outcome is surfaced (no longer reported as completed). Add a global "Cancel running task" command (⌘K) that stops all TaskStore-backed jobs plus an in-progress playlist generation. Backend: generate_embeddings_for_tracks and generate_tags_batch now honor a cancel_event between batches. Remove the orphaned per-page cancel-confirm machinery in LibraryState (request_cancel_sync / cancel_sync / request_cancel_audio / cancel_audio_analysis, their dismiss siblings, and the show_*_confirm vars), superseded by the shared AppState.request_cancel / confirm_cancel dialog mounted in the shell. Also: refresh logos, favicon, and brand assets; regenerate README hero screenshots; add the Claude Design handoff bundle under docs/design/; and gitignore .codex/.
TaskStore.cancel and cancel_all_running now also resume the job's pause event, so a worker blocked on `await pause_event.wait()` wakes up, observes the cancel signal, and exits — instead of staying stuck. Mirrors the existing JobManager.cancel_stale_clients behavior. Add TaskStore tests covering both cancel paths. Latent today (audio pause has no UI control), but future-proofs the global "Cancel running task" command and any re-exposed pause.
izzoa
added a commit
that referenced
this pull request
Jun 1, 2026
Cut the v0.11.0 release. The feature work (web UI redesign + cancellable long-running jobs) already landed on master via #3; this commit performs the release bookkeeping: - Bump version 0.10.0 -> 0.11.0 (pyproject.toml + src/plexmix/__init__.py) - Promote Unreleased CHANGELOG entries to [0.11.0] - 2026-06-01 - Swap the central README logo to the new light app icon (assets/logo-light.svg) - Refresh stale Docker image tag examples (:0.5.5 -> :0.11.0) Breaking Changes: None
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Brings
masterup to date with theredesign-webuibranch: a full web UI redesign, cancellable long-running jobs, and supporting fixes.Web UI redesign
g+key navigation).Cancellable long-running jobs
cancelledoutcome is surfaced (no longer reported as completed).generate_embeddings_for_tracksandgenerate_tags_batchhonor acancel_eventbetween batches.Fixes / cleanup
TaskStore.cancel/cancel_all_runningnow resume a paused loop so cancellation can't hang onawait pause_event.wait().LibraryState(superseded by the shared shell dialog).feat: Refresh AI model defaults and fix provider SDK compatibilitycommit (was never pushed toorigin/master).Verification
The corresponding OpenSpec changes (
redesign-webui,cancel-running-jobs) are archived locally underopenspec/changes/archive/.