docs: viewer panel design audit (read-only inventory)#125
Draft
philliphoff wants to merge 1 commit into
Draft
Conversation
Catalogs every panel surface in the viewer (activity-bar tabs, Pick Report column, Timeline row, map overlays, exchange-set banner/progress, status bar, toast host) along the 8 axes from the audit brief: location, host, layout, visibility model, DI/construction, data flow, sizing/persistence, loc+tooltip+splitter compliance. Surfaces 7 pattern groups (activity-bar tab, right column overlay, bottom row, map overlay cluster, floating overlay, in-panel TabControl, in-panel data-templated content) with canonical example and divergences for each. Cross-cutting observations highlight persistence asymmetry (visibility booleans persisted, panel sizes never are), the triple-duplicated `PaneSplitter` style, the hard-coded `ActivityKind` enum + 4-place edit cost for new tabs, the Pick Report being inlined in MainWindow rather than extracted to a UserControl, and the duplicate UI between the toolbar pills and the ECDIS Display panel. Closes with 6 opinionated open questions for the refactor brief and a 5-item appendix of soft bugs spotted while auditing. Read-only — no code, axaml, or test changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
Performance Gate✅ PASSED — no regressions. Threshold: 10.0%, MAD multiplier (k): 3.0, retry-zone mult: 2.0× Scenario summary
exchange-set-openIteration statistics
Spans (sum of all iterations)
Metrics
s101-portray-coldIteration statistics
Spans (sum of all iterations)
Metrics
s101-portray-warmIteration statistics
Spans (sum of all iterations)
Metrics
s101-render-warmIteration statistics
Spans (sum of all iterations)
Metrics
s102-coverageIteration statistics
Spans (sum of all iterations)
Metrics
s102-coverage-openIteration statistics
Spans (sum of all iterations)
Metrics
s102-coverage-render-largeIteration statistics
Spans (sum of all iterations)
Metrics
s124-vectorIteration statistics
Spans (sum of all iterations)
Metrics
s201-vectorIteration statistics
Spans (sum of all iterations)
Metrics
Generated by EncDotNet.S100.PerfReport gate command |
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.
Read-only design audit of every panel surface in the viewer, requested via cross-session message from
Next features brainstorm. Single new file:docs/design/viewer-panel-inventory.md. No code, axaml, or test changes.What's in the doc
MainWindow.axaml's 5-columnContentGridplus the surrounding DockPanel and overlay layers.file:linethroughout.Highlights
MainWindow.axaml(~306 lines, lines 704-1010), not aUserControl— only panel in the codebase like this.PaneSplitterstyle is duplicated three times (MainWindow, CatalogPanelView, DatasetsView) — known perviewer.instructions.md, but a candidate for App.axaml lift.MainViewModel.cs+ the activity-bar XAML + the activity-pane<Panel>— argues for anIActivityTabplug-in registry.IsPickPanelVisible = _isPickPanelEnabled && PickReport.HasPickis the only double-gated visibility expression — every other surface is a single bool.TabControlwith 3 tabs) inside a single activity-bar tab.Word count
~4,400 words.
Audit method
Read MainWindow.axaml + .cs, App.axaml.cs, MainViewModel.cs, ViewerSettings.cs, ActivityKind.cs, and every UserControl under
Views/. Cross-checked theviewer.instructions.mdcompliance rules.Out of scope (per the brief)