M kovalsky/exceldep - #1317
Merged
Michael Kovalsky (m-kovalsky) merged 35 commits intoAug 12, 2026
Merged
Conversation
Copilot started reviewing on behalf of
Michael Kovalsky (m-kovalsky)
August 10, 2026 07:08
View session
Contributor
There was a problem hiding this comment.
Pull request overview
This PR standardizes the interactive-tool UI surface across Semantic Link Labs (shared header controls, searchable pickers, fullscreen behavior) while expanding/aligning “picker-first” entry points (notably Vertipaq Analyzer) and adding/adjusting tests to lock those behaviors in.
Changes:
- Make
vertipaq_analyzeracceptdataset=Noneto launch an initial workspace/model picker, and refine the initial-picker UX (inline picker screen + progress state). - Consolidate header control styling/markup around shared
.sl-theme-btn,.sl-change-btn,.sl-reload-btnand update multiple tools to consume the shared controls/searchable selects. - Add/extend tests to enforce the shared header controls and picker UX consistency; add
verbosecontrol toclear_cache()and suppress noise in internal calls.
Reviewed changes
Copilot reviewed 26 out of 26 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/test_vertipaq_picker.py | Adds tests validating Vertipaq’s dataset-optional picker-first flow and picker markup/layout expectations. |
| tests/test_ui_header_controls.py | Adds cross-tool assertions that shared header controls are referenced and not restyled per-tool. |
| tests/test_refresh_manager.py | Updates/extends Refresh Manager UI tests to match shared controls and picker design. |
| tests/test_perspective_editor.py | Adds tests for new Perspective Editor picker/state sync and table-kind handling. |
| tests/test_lineage_view_picker.py | Adds tests asserting lineage view uses shared searchable pickers and shared reload control styling. |
| tests/test_lineage_view_excel_scan.py | Adds tests around lineage view’s local Excel scan behaviors/UI wiring. |
| tests/test_find_unused_objects_layout.py | Adds tests for updated Find Unused Objects layout sizing. |
| tests/test_direct_lake_migration_picker.py | Adds tests ensuring Direct Lake migration picker uses shared searchable controls. |
| tests/test_delta_analyzer_picker.py | Adds tests for the Delta Analyzer anywidget picker/shell/fullscreen behavior. |
| tests/test_dax_model_picker.py | Extends DAX Perf Optimizer tests for picker UX/layout and model-tree icon/kind behaviors. |
| tests/test_clear_cache.py | Adds tests for new clear_cache(verbose=...) behavior. |
| tests/test_bpa_rule_editor.py | Extends BPA tests for modal centering and “change model” picker-as-modal behavior. |
| src/sempy_labs/semantic_model/_vertipaq_analyzer.py | Implements dataset-optional entry (picker-first), shared searchable selects in picker, and progress-in-root behavior. |
| src/sempy_labs/semantic_model/_perspective_editor.py | Adds picker-first flow when dataset omitted, shared searchable picker controls, table-kind icons, and calculation-group normalization. |
| src/sempy_labs/semantic_model/_find_unused_objects.py | Widens layout and switches header buttons to shared control classes; injects shared header CSS. |
| src/sempy_labs/semantic_model/_direct_lake_migration.py | Updates picker UI to searchable selects and aligns picker layout with shared patterns. |
| src/sempy_labs/semantic_model/_dax_perf.py | Tweaks workspace resolution defaults, suppresses cache-clear output, adds table-kind metadata, refactors monitoring requests, and simplifies build-query execution. |
| src/sempy_labs/semantic_model/_bpa.py | Injects shared header CSS and updates header controls to shared classes; changes “change model” to open picker as modal. |
| src/sempy_labs/_vertipaq.py | Updates wrapper signature to support dataset=None and passes through visualize. |
| src/sempy_labs/_utils.py | Adds item-type mapping for Plan. |
| src/sempy_labs/_ui_components.py | Adds shared reload button styles, adjusts caret icon behavior, updates header markup (title-row), and tweaks fullscreen script behavior. |
| src/sempy_labs/_delta_analyzer.py | Introduces anywidget-based interactive picker shell for Delta Analyzer and supporting list/adaptor helpers. |
| src/sempy_labs/_clear_cache.py | Adds verbose flag to suppress confirmation output when used internally. |
| .claude/skills/ui-styling/SKILL.md | Updates UI styling guidance to explicitly include the standard header controls as part of shared header CSS expectations. |
Suppressed comments (2)
src/sempy_labs/_ui_components.py:1521
- The
picker_btn_idparameter docstring appears to include a copy/paste of thefullscreen_btn_iddescription (it repeats full-screen toggle details). This is misleading for API consumers reading the docs.
This issue also appears on line 1816 of the same file.
picker_btn_id : str, default=None
If provided, includes a small "change" (swap) button with this DOM id
in the title area. Used to reveal/toggle an interactive picker.
If provided, includes a full-screen toggle button with this DOM id,
placed immediately to the left of the theme toggle button. Pair with
:func:`fullscreen_toggle_script` to wire up behavior.
src/sempy_labs/_ui_components.py:1820
fullscreen_toggle_scriptis defined twice in this module (an earlier implementation usingfs_class, and a later one that wraps_FULLSCREEN_BODY). Only the last definition is used at runtime, so the earlier one is dead code and can mislead future maintenance. Consider removing or renaming the earlier implementation so there is a single source of truth.
root.classList.toggle(fullscreenClass, cssFullscreen);
}
function enterFullscreen() {
cssFullscreen = true;
renderFullscreenBtn();
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+1422
to
+1425
| .replace("__LIGHT_VARS__", _UI_LIGHT_VARS) | ||
| .replace("__DARK_VARS__", _UI_DARK_VARS) | ||
| .replace("__HEADER_CSS__", _UI_HEADER_CSS) | ||
| .replace("__SEARCH_CSS__", _UI_SEARCH_SELECT_CSS) |
Comment on lines
+46
to
50
| SEARCH_SELECT_CSS as _UI_SEARCH_SELECT_CSS, | ||
| SEARCH_SELECT_JS as _UI_SEARCH_SELECT_JS, | ||
| HEADER_CSS as _UI_HEADER_CSS, | ||
| fullscreen_setup_js as _ui_fullscreen_setup_js, | ||
| ) |
Tian Wei (whiskyboy)
approved these changes
Aug 12, 2026
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.
No description provided.