Local engine model management: TUI - #488
Merged
Merged
Conversation
rexlunae
force-pushed
the
feat/local-engines-tui
branch
from
August 18, 2026 06:28
b9be026 to
ccd8919
Compare
rexlunae
force-pushed
the
feat/local-engines-tui
branch
from
August 18, 2026 06:37
ccd8919 to
85bf44f
Compare
Owner
Author
|
Second-round Devin findings addressed in
The core-file findings (non-Linux start/stop, ctx wiring, protocol frames, shell quoting) are fixed in the parent PRs of this stack; all threads here are resolved. |
rexlunae
force-pushed
the
feat/local-engines-tui
branch
from
August 18, 2026 06:42
85bf44f to
234efd8
Compare
rexlunae
force-pushed
the
feat/local-engines-tui
branch
from
August 18, 2026 07:10
234efd8 to
7cac178
Compare
rexlunae
force-pushed
the
feat/local-engines-tui
branch
from
August 18, 2026 07:51
7cac178 to
279fb76
Compare
- Esc in parameter-edit mode now discards the draft for the active engine, so cancelling an edit no longer leaves the dialog showing the cancelled values (it rendered the draft even outside edit mode). - Engine configs arrive in their own EngineConfigList frame (protocol change on the backend): the TUI surfaces it as a GwEvent and patches the engines panel's entries, instead of expecting the config inside EngineInfoDto. - Formatting fix for a wrapped line in the desktop handler (parent branch).
- Parameter-edit mode clamps the focused-field index against the active engine's field list before every use, so the editor can no longer panic when a model-list reply for another engine moves the selection under it. - Opening the engines dialog clears the previous Load/Unload result row, so a stale message no longer lingers after a close/reopen. - The public engine-parameter field constants gain the doc comments the style guide requires.
- Changing the startup model (+/-) with an empty local model list no longer erases the saved choice: with nothing to pick from, the cycle previously landed on its None-only option and blanked default_model. It is now a no-op while the model list is empty.
rexlunae
force-pushed
the
feat/local-engines-tui
branch
from
August 18, 2026 08:29
279fb76 to
36cedea
Compare
- The engines panel's loaded-model count no longer sums every server on the host: status() counts only servers on the engine's own configured port (joshua + llama.cpp), so an unrelated server elsewhere cannot inflate the count for an engine serving one model. - Saving engine parameters from the terminal is gated on the EngineConfigList snapshot (new engines_configs_received state, reset on EngineListResult): until the real configs arrive, Enter refuses to save with an inline explanation and keeps the draft, instead of writing the placeholder config over the engine's stored endpoint/port/models_dir/ extra_args. - The default-model picker only cycles through the edited engine's own model list (the panel's models belong to whatever engine was last inspected), so a saved default can no longer be pointed at another engine's model.
- Restore the expandable error detail for provider model-list failures: the error string (with its cause chain) is attached as the Warning's details again instead of dropping it, so the detail popup works. - The engines panel now updates its local copy of an engine's config when parameters are saved, so a later unrelated setting change can no longer silently revert the earlier save (the EngineRefresh round-trip re-confirms it from the gateway).
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.
What & why
The
/enginespanel gets the same management depth as the desktop: keyboard-driven parameter editing and visible action feedback. Depends on #486 and #487 — merge in order (its diff is cumulative until the earlier PRs merge).Changes
Parameter editing (
components/engines_params.rs+engines_dialog.rs)ptoggles parameter-edit mode for the active engine. Left/right (or Tab) moves the focused field;+/-adjusts it (numeric fields step, selects cycle through their options, toggles flip, default model cycles through the local model list);xclears a field back to its default; Enter saves viaEngineConfigSetand refreshes the engine + model lists; Esc discards.Action feedback
Local-model pickers
/models, autocomplete) now useprovider_models_with_local_fallback, so local models show up even when the engine server isn't running — same lists the desktop pickers get.Testing
cargo check --workspace, clippy clean; TUI (23) tests pass, including 5 newengines_paramsunit tests (field sets per engine, numeric stepping, select cycling, default-model cycling, clear).