feat(#340): unify frameless KPI movement#388
Merged
Merged
Conversation
Make KPI tiles frameless across Dashboard layouts while retaining their structural wrappers, accessibility, resizing, deletion, and persisted placement. Reuse the shared modifier-drag movement path for flow KPI members and Grid Tiles, including floating previews, cancellation, destination hit testing, and exact-once commits. Add keyboard resizing and real-browser coverage for the transient edit chrome. Co-Authored-By: OpenAI Codex <noreply@openai.com> Claude-Session: unavailable (OpenAI Codex)
BorisTyshkevich
marked this pull request as ready for review
July 22, 2026 17:48
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.
What & why
Closes #340.
KPI queries now use the same frameless presentation across Grid Tiles, Full view, Report, 2-column, and 3-column Dashboard styles. Their structural wrappers still own accessibility, placement, deletion, resizing, and movement, while transient overlay chrome reveals the complete query boundary without shifting KPI content.
Flow KPI members and Grid/Full KPI wrappers use the shared Command/Ctrl-drag path with floating previews, destination resolution, auto-scroll, cancellation, click suppression, and exactly one
move-tilecommit. Plain dragging remains text selection. Grid/Full resize also gains keyboard operation and complete cancellation cleanup.Coverage includes unit interaction paths and real-browser rendering/movement checks, including wrapped multi-card KPI members.
Verification
npm test— 165 files, 5,013 tests passed; per-file coverage gate passednpm run build— built the single-filedist/sql.htmlThe initial 10-worker all-browser run encountered unrelated Firefox navigation timeouts from local resource saturation; the complete Firefox project passed cleanly at 2 workers.
Checklist
npm testpasses (the per-file coverage gate is non-negotiable)npm run buildsucceeds (single-filedist/sql.html)src/core/, network insrc/net/(injected fetch), DOM insrc/ui/CHANGELOG.md([Unreleased]) updated if behavior or the deployed surface changedRoadmap #68 and the #340 acceptance checklist are reconciled. No architecture or schema decision changed, so no ADR update is needed.