Skip to content

feat(desktop): unify management pages and model setup / 统一整页管理中心与模型配置 - #9821

Merged
SivanCola merged 5 commits into
esengine:main-v2from
SivanCola:feature/desktop-management-pages
Sep 5, 2026
Merged

feat(desktop): unify management pages and model setup / 统一整页管理中心与模型配置#9821
SivanCola merged 5 commits into
esengine:main-v2from
SivanCola:feature/desktop-management-pages

Conversation

@SivanCola

@SivanCola SivanCola commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

Settings, Trash, and Automation now use full-window management pages with shared navigation, titlebar geometry, focus isolation, and return behavior. The workspace stays mounted so conversations, composer drafts, and reading state survive page changes.

  • Keep automation drafts in memory across task/page switches, reconcile external changes, and separate saved configuration from edits.
  • Add trash list/preview navigation, explicit operation outcomes, confirmation, and failed-only batch retry.
  • Rework provider/model configuration with discovery, per-model limits, and bounded connection tests that do not persist draft credentials.
  • Add deterministic regressions and English/Chinese documentation.

Integration status

Integrated current main-v2 (8448ad96a), including #9809 updater/relaunch changes, and resolved the original seven conflicts plus the subsequent bundle-budget conflict. The shared management shell now owns the isolation behavior from #9811, including warm-terminal retention with fitting paused while hidden. Model editors reuse the image policy controls, hard endpoint restrictions, and discovery identity checks from #9812. Unsaved credential discovery uses a transient capability resolver so its results cannot enter the saved capability cache.

Fixed shared-titlebar double-click dispatch and added a DOM regression using the actual App selector and shell markup. An isolated macOS native build confirmed double-click maximization and restoration. Windows native DPI acceptance remains pending.

Related open work was reviewed for overlap: #9751 changes provider account identity and #9748 changes model-card layout. Neither is incorporated by this PR; coordinate ordering before merging those branches.

Compatibility and cache

Documentation-impact: updated - added English and Chinese model-settings and management-page guides, including platform verification boundaries.

Cache-impact: none - ordinary system prompts, tool schemas, and conversation serialization are unchanged; the explicit model probe is isolated from conversation history.
Cache-guard: TestProviderDraftProbesDoNotPersistCredentialsOrConfiguration asserts one user message, no tools, draft-key isolation, and no persisted provider configuration; focused probe tests are included in Desktop Go verification.
System-prompt-review: reviewed the configuration and probe diff; it adds an isolated credential-copy helper and a single user-message probe, with no system-prompt or memory-prefix changes.

No configuration-format migration is introduced. Existing Wails methods and provider overrides remain supported; draft probes use additive methods. Ordinary conversation system prompts, tool schemas, and serialization are unchanged. The explicit model test sends one small request without conversation history or tools and can incur provider usage.

Verification

  • Follow-up integration retains the latest updater, shared instance identity, and Windows tray ABI changes. Both base and integrated frontend builds were measured with the same toolchain; updater frontend assertions and root agent/control/install-layout regressions pass.
  • Fixed the coverage failure in the queued-paste fixture by sealing controller admission before delivering completion. The persistent inbox and input assertions remain covered. The extracted regression passes 100 repetitions with race detection and coverage; full CLI coverage also passes.
  • Follow-up 28b4bdfd7 replaces two URL substring assertions with exact comparisons against the input-associated endpoint display. All 52 provider editor assertions, test typecheck, and repolint pass. CodeQL marks both reported alerts as fixed.
  • Frontend production build, test typecheck, all 264 frontend suites (full run plus resumed tail), and transcript regressions passed after integration. Terminal and remote-tree contracts also passed.
  • Config, boot, and all provider package tests, Desktop go test ./..., Desktop go vet ./..., and focused provider-probe/image/catalog tests with -race passed. Repolint passed.
  • Browser checks covered wide/narrow Windows preview, navigation, trash confirmation/cancellation, and automation draft retention.
  • Isolated macOS native checks covered entry/return, Escape, Command-W, minimize/restore, and window zoom.
  • Windows ARM64 build/startup passed; native interaction and 100%/125%/150% DPI acceptance remain pending.
  • No real conversation deletion or automation execution was used for acceptance.

The integrated initial payload measures 465.435 KiB gzip JS and 2480.9 KiB raw JS/CSS, versus 464.7/2481.7 KiB on the same-toolchain base. The gzip ceiling is 465.5 KiB; the upstream raw ceiling stays 2481.7 KiB. The Traditional Chinese chunk ceiling is 61.7 KiB (measured 61.631 KiB). Feature bodies remain lazy and independent chunk/CSS gates remain enforced.

Narrow source-size ratchets account for additive model metadata/API fields and shared page wiring: app +2, Composer +4, HistoryPanel +7, bridge +6, and types +2 lines. Provider probe/discovery code was extracted into its own file, and the credential-copy helper was moved out of the oversized config file.

Replace separate settings, trash, and automation surfaces with shared management navigation while preserving the mounted workspace and its reading state. Keep automation drafts in memory across navigation, reconcile concurrent configuration edits, and report trash mutation outcomes explicitly.

Add provider model editing, discovery, and bounded connection probes without persisting draft credentials. Preserve existing provider overrides and document desktop navigation and platform verification boundaries in English and Chinese.

Verification: frontend production build, test typecheck, all 262 frontend suites, transcript regression suite, and focused config tests passed. Native Windows interaction and DPI acceptance remain pending; latest main-v2 integration requires review before merge.
@github-actions github-actions Bot added v2 Go rewrite (1.x) — main-v2 branch, active development desktop Wails desktop app (desktop/**) config Configuration & setup (internal/config) labels Sep 5, 2026
Problem: the management page redesign conflicted with the merged automation isolation and model image capability changes. Its renamed shared titlebar also missed the native double-click handler.

Root cause: parallel page projections and provider editor implementations owned the same behavior. Fix: retain one management navigation/shell, preserve warm terminal state while pausing fitting, reuse image policy controls and discovery identity guards, isolate unsaved credential catalogs from persistent caches, and dispatch titlebar double-click through the shared chrome class.

Verification: 264 frontend suites passed across the full run and resumed tail; transcript, terminal, remote tree, typecheck, production build, repolint, Desktop Go, config/boot/provider tests, and focused race tests passed. Isolated macOS double-click maximization and restore passed. Same-toolchain initial gzip is 465.3 KiB versus 464.6 KiB on main-v2; raw initial size falls from 2481.1 to 2480.3 KiB. Narrow size ratchets cover additive API fields and shared navigation; probe code is extracted from existing oversized files.
Read the effective endpoint from the URL input's associated help element and compare its full value. This tightens legacy endpoint regressions and removes the two CodeQL substring URL findings.
@SivanCola
SivanCola marked this pull request as ready for review September 5, 2026 13:41
@SivanCola
SivanCola requested a review from esengine as a code owner September 5, 2026 13:41
Problem: the newly merged updater and stable-relaunch work conflicts with the management-page initial bundle budget.
Root cause: both branches calibrated the same initial bundle against different feature sets.
Fix: preserve the upstream updater, instance identity, and tray changes, then measure both builds with the same toolchain. Set the integrated gzip ceiling to 465.5 KiB for 465.435 KiB measured; retain the upstream 2481.7 KiB raw ceiling for 2480.9 KiB measured. Update both management-page guides.
Verification: production compilation and all bundle gates, updater frontend assertions, root agent/control/install-layout regressions, and repolint pass. The shared management titlebar selector remains intact.
Problem: the coverage job intermittently failed while removing the queued-paste test's temporary session directory.
Root cause: TurnDone reached the test before the controller's completion tail attempted another durable-inbox dispatch, allowing disk access to overlap fixture cleanup.
Fix: close the single-turn controller inside the TurnDone sink before publishing completion. Keep the real persistent inbox and every queue/input assertion, remove the redundant runner polling, and extract the case from the oversized TUI test file.
Verification: the regression passes 100 repetitions with race detection and coverage; the complete CLI package coverage test and repolint pass. No production lifecycle or persistence semantics change.
@github-actions github-actions Bot added the tui Terminal UI / CLI (internal/cli, internal/control) label Sep 5, 2026
@SivanCola
SivanCola merged commit e47ff8c into esengine:main-v2 Sep 5, 2026
27 of 29 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

config Configuration & setup (internal/config) desktop Wails desktop app (desktop/**) tui Terminal UI / CLI (internal/cli, internal/control) v2 Go rewrite (1.x) — main-v2 branch, active development

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants