feat: UX polish — ListResult<T>, DataTable upgrades, all 8 panels#651
feat: UX polish — ListResult<T>, DataTable upgrades, all 8 panels#651joshsmithxrm merged 22 commits intomainfrom
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request delivers a comprehensive UX polish across the entire extension, focusing on improving data presentation, interactivity, and transparency. It introduces a new Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request implements the UX Polish project, which aims to improve the user experience of the Power Platform Dataverse extension. The changes include adding a new ListResult<T> type to service return types, upgrading the DataTable shared component, and implementing quick wins across all panels. It also addresses I4 compliance by ensuring data transparency and reversibility. The implementation plan involves multiple steps, including service return type foundation, DataTable shared component upgrades, quick wins, and per-panel fixes. The changes also include updating RPC handlers and MCP tools to align with the new service return types.
… type foundation Implement Constitution I4 (never silently hide/truncate data): - Add ListResult<T> with Items, TotalCount, WasTruncated, FiltersApplied - Update all 9 service interfaces + implementations to return ListResult<T> - Add paging cookie progressive loading to ImportJob, WebResource, User services (removes silent $top=50/5000/100 truncation) - Add includeInternal param to SolutionService (isvisible filter) - Add includeIntersect param to MetadataService (66 junction tables) - Track FiltersApplied on ConnectionReference, EnvironmentVariable, Flow, Role services - Wire totalCount through all RPC handlers and MCP tools - Update all callers: CLI commands, TUI screens, tests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…, sort, styling CC-01: Add sortValue option for correct date/number sorting (3-state toggle) CC-02: Virtual scrolling — render only visible rows + buffer (~60 rows) CC-03: Cell selection + Ctrl+A/C TSV copy via shared SelectionManager CC-06: Header styling — 12px, foreground color, 2px border, column separators CC-07: Row striping via nth-child(even) CC-08: Cell tooltips via title attribute on every td CC-09: matchesSearch() utility for full-row text matching I4: formatStatusCount() utility for "X of Y" status display Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… states, bugs CC-04: retainContextWhenHidden: true on all 8 panels CC-05: enableFindWidget: true on all 8 panels CC-11: box-sizing: border-box global reset CC-12: user-select: none with text element whitelist CC-13: Button loading states on all panels with Refresh WR-10: Fix search input CSS class (search-input → toolbar-search) EV-41: Fix filter count element not appended to DOM Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ggle, badges S-02: friendlyName first, uniqueName in parentheses S-03: Secondary line with Installed/Modified dates, Visible, API Managed S-05: Visible | All segmented control with totalCount display S-09: Date format includes time (toLocaleString) S-10: createdOn added to detail view S-11: managed/unmanaged badge on all solutions Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…otalCount IJ-01: Solution name clickable, opens import log IJ-02: Row click opens prettified XML in VS Code editor tab IJ-15: Status badges for Cancelled, Queued, Completed with Errors IJ-43: Removed inline detail pane IJ-45: Aligned status string matching P2-IJ-01: Show totalCount from paged service results Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ery builder
6a: Side-by-side detail split with resize handle + X close button
6b: All 9 missing detail fields (Stage, Created By, Plugin Step ID, etc.)
6c: Overview tab as default landing (status + exception + message)
6d: Operation Type + Correlation ID table columns
6e: Timeline overhaul — depth colors, shimmer, click nav, legend, hover
6f: Advanced query builder — 3-tab filter (Quick/Advanced/Preview),
condition builder with type-aware operators, AND/OR logic
6g: PT-43 selection zones, PT-49 keyboard protection, PT-59 close button,
PT-20 persist width, V-21 formatStatusCount
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
DE-06: Inline transpilation warning banner for SQL→FetchXML issues DE-15: Hover copy button on record link cells DE-31: Top N and DISTINCT options in overflow menu Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…relationship tabs
8a: Global Choices tree section as peer of Entities (MB-01)
8b: Collapsible tree headers with count badges (MB-02)
8c: Three relationship tabs with correct per-type columns (MB-03)
8d: Properties detail panel with type-specific SDK metadata (MB-05)
8e: Per-tab search with debounce (MB-04)
8f: Entity breadcrumb (MB-06), legacy icons (MB-07), entity navigation
(MB-09), displayName first (MB-10), copy schema name (MB-22),
includeIntersect toggle (V-03)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…t solution CR-01/02: Flow count column at table level CR-03/30: Per-flow Maker Portal deep links (make.powerautomate.com) CR-05: Relationship health-aware status CR-09: Default to Default Solution GUID, persist per env CR-11: AbortController on solution change CR-17: Search placeholder V-16: includeInactive toggle with "X of Y" display Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…e, inactive toggle EV-09/10/37: Wire Sync Deployment Settings to existing backend service EV-22: Date format includes time (toLocaleString) V-17: includeInactive toggle with "X of Y" display Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
WR-03: Server-side search fallback when client filter insufficient WR-04: Progressive background loading (250-record pages, streamed) WR-20: Publish prompt already implemented (verified) WR-23: Cache by solution ID, invalidate on refresh Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… MCP totalCount V-15: FlowService includeClassic param (cloud flows only filter visible) V-18: DeploymentSettings logs "N secrets excluded" count V-14: PluginsListTool returns totalCount All MCP list tools verified returning totalCount Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…d JSDoc CC-14: Delete QueryPanel.updateTitle(), use base class updatePanelTitle() All 8 panels now use single format: profileName · envName — PanelLabel Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ce.ListAsync FakeXrmEasy can't handle enum filters in FetchXML aggregate queries. Fall back to items.Count when CountAsync fails so ListAsync stays usable. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… declarations Fix stylelint: break-word→overflow-wrap, tl-fadeIn→tl-fade-in, expand single-line declarations, shorten hex colors. Remove unused matchesSearch function. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… stub) Replace "coming soon" notification with actual sync implementation matching the Environment Variables panel pattern. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…r hint - Standardize all date formatting to shared formatDateTime (no seconds) - Search placeholders: "Filter..." → "Search..." across all panels - Data Explorer: add placeholder comment in Monaco editor Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… CDP panel targeting Implementation plan from 2026-03-23 retrospective covering: - P0 drift fixes (CLAUDE.md, spec-audit, verify, co-author) - /implement enhancements (findings reconciliation, shared-infra scan, model selection) - CDP panel targeting (data-ppds-panel + --panel flag) - /design handoff, retro skill fix, hook improvements Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Revised Task 1: delete the 42-line workflow section entirely instead of patching individual lines. Skills and hooks already enforce the workflow; CLAUDE.md was a redundant drift-prone copy. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…o-actions) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…d by this branch) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
36ceaf1 to
c8bae87
Compare
Summary
Comprehensive UX polish pass across the entire extension, driven by a three-phase audit (code review, interactive CDP testing, owner review) comparing legacy v0.3.4 against the new extension.
Infrastructure
Items,TotalCount,WasTruncated,FiltersApplied(Constitution I4 compliance)retainContextWhenHidden: true,enableFindWidget: true,box-sizing: border-box, button loading states, standardized date formatting, search placeholdersPer-Panel
Constitution
includeInactive,includeInternal,includeIntersect,includeClassicparams added where silent filters existedTest plan
🤖 Generated with Claude Code