feat(ui): unify model and backend lifecycle - #11548
Merged
Merged
Conversation
Models now owns catalog exploration and installed runtime controls under one canonical route. URL-owned state keeps lifecycle context recoverable through links and browser history. Assisted-by: Codex:gpt-5 Playwright
Backends split discovery from backend-binary management. The canonical page now keeps both lifecycle views under one URL-backed shell while it preserves target-node placement. Assisted-by: Codex:gpt-5 Playwright
Installed models lost distributed refreshes and kept a deleted selection. Backend searches also stopped tracking URL changes, while batch upgrades stopped after their first error. Preserve background refreshes and finish each requested batch action. Drive catalog results from URL-backed state without losing full metadata. Assisted-by: Codex:gpt-5 [Playwright]
Replace Host navigation with canonical Models and Backends lifecycle routes, preserve legacy management URLs, and surface shared host capacity on the Operate overview. Assisted-by: Codex:gpt-5 [Playwright]
Finish the responsive list-to-detail behavior, remove the retired Host implementation, and keep Explore focused on discovery while Installed owns destructive actions. Update regression coverage, localization, documentation, and development binding for the canonical resource pages. Assisted-by: Codex:gpt-5 [Playwright]
Record the approved users, brand character, and design principles so future interface work uses the same product direction. Index the context from the repository's agent instructions. Assisted-by: Codex:gpt-5
2 tasks
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.
Why
Models had separate gallery and Host management surfaces, while Backends used a nested Host view for installed binaries. The duplication made it unclear where a resource lived and added navigation depth around common lifecycle actions.
This change gives each resource one canonical page. Discovery stays approachable, while installed and runtime controls remain available in context.
What changed
/app/modelsnow owns Explore and Installed views with URL-backed search, state, and selection./app/backendsnow owns Catalog and Installed views while preserving variants, development builds, and target-node scope./app/manageremains compatible through replace redirects that preserve legacy model and backend query state.0.0.0.0..impeccable.mdrecords the approved capable, easy-to-use, and trustworthy UI direction;AGENTS.mdindexes it.Compatibility
This PR does not change the API. Existing
/app/managebookmarks continue to work through the compatibility redirect.Verification
bash .sdd-run-ui-spec.sh— 449 passed, 4 skipped, 0 failednpm run build— passednpm run lint:inline-styles— passed at the 520 baselinegit diff --check origin/master...HEAD— passedRepository-wide
npm run lintstill reports six pre-existing errors in unchangede2e/coverage-fixtures.jsandsrc/pages/Chat.jsx. This branch adds no lint errors.