Repository navigation
fix(settings): Preferences without wrong-state flashes, MCP pane polish, a fake Data Grid switch removed - #1632
Open
ZhuchkaTriplesix wants to merge 3 commits into
Open
ZhuchkaTriplesix wants to merge 3 commits into
ZhuchkaTriplesix wants to merge 3 commits into
Conversation
…polish - Preferences: settings load in parallel; visited panes stay mounted with their own scroll position and are not rebuilt while hidden. - Data Grid: remove 'Confirm DML staging applications', which wrote the SQL destructive-confirmation setting and was read by nothing else. - About: the real app version instead of a hardcoded 0.4.17; the portable-mode future is created once. - MCP: draw nothing that depends on stored state until it loads; list MongoDB connections; product names in type badges; querya-mcp path on its own line; copy buttons and the access token in separate groups; recent calls as rows with a status icon, divider and time. - Bench: Preferences scenarios (open, each category, reopen, scroll, typing, toggles).
The generic 'monospace' family costs a fontconfig lookup on first use (first MCP visit 10.4 ms build vs 4.3 on dev); the editor's QueryaTypography stack is already resolved when a workspace is open (4.2-5.7 ms).
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.
Review of Preferences ("feels laggy", "MCP looks rough"), measured and fixed.
What "laggy" was
Frame times were fine (profile build, new bench scenarios): scrolling, typing, hover and toggles stay under 4 ms build / 2 ms raster. What felt like lag was wrong state drawn first, then a jump:
FutureBuilderfuture created inbuild()restarted on every rebuild (every keystroke in the search), so the portable-mode banner flickered.Changes
querya-mcppath is on its own line instead of breaking mid-path. "Copy … config" buttons and "Access token → Regenerate" (which disconnects clients) are separate groups. Recent calls are rows with a status icon (ok / refused / error), the tool in bold, client and time right-aligned, dividers, and the refusal rule as a badge.confirm_destructive_operations(the SQL DROP / TRUNCATE / DELETE confirmation) and nothing reads a staging setting, so turning it off in Data Grid silently turned off the SQL confirmation.benchmark/app_perf_bench.dartgets Preferences scenarios (prefs_*: open, each category, reopen, scroll, typing, toggles); running only them skips the rest.Numbers
Build max per scenario, median of 3 profile runs,
dev→ this branch (60 Hz stock engine, 120 Hz display):An earlier version of this branch made the first MCP visit 10 ms; bisecting showed it was the generic
'monospace'family (a fontconfig lookup on first use). The pane now uses the editor'sQueryaTypographystack, which is already resolved. Other places still use'monospace'(welcome tour, PostgreSQL browser views) and pay the same once.The first open of the dialog in a session is the one remaining heavy frame (~17 ms build); it is the same on
devand not addressed here.Settings are still read one after another: sqflite serializes queries on one database, so reading them concurrently saved nothing and only started lock-wait timers (which failed the widget tests on the first CI run).
Tests: the MCP section (MongoDB listed, product badges, nothing drawn before load, path line, refusal badge) and the dialog (no staging switch in Data Grid, each pane keeps its own scroll). Not run locally; CI decides.