Skip to content

fix(ui): keep drag-over state stable across nested drop-zone elements - #533

Draft
seonghobae wants to merge 2 commits into
mainfrom
palette-drag-flicker-fix-15332755469774996302
Draft

fix(ui): keep drag-over state stable across nested drop-zone elements#533
seonghobae wants to merge 2 commits into
mainfrom
palette-drag-flicker-fix-15332755469774996302

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Current exact authority — 2026-09-06

  • protected base: main@47c6fd27de13b0da37a7db64697b869941909351
  • exact head: 2793248abed72a3c0accd0c584ff77f793395dd8
  • lifecycle: Draft / source repair present / repository-wide Palette doctrine removed / browser evidence and hosted gates pending
  • effective protected-base delta: saas_web.py only

Product finding

The existing drop-zone handlers add .dragover on dragenter/dragover and remove it on every dragleave. Moving a dragged file between the drop zone and nested label/input descendants can therefore make the parent observe leave/enter transitions even though the pointer has not left the overall drop target, producing unstable highlight state.

The branch introduces per-zone nesting state: dragenter increments dragCounter, dragleave decrements it and clears .dragover only at zero, and drop resets both counter and visual state. Single-file and batch zones share the same setup path.

Scope repair

The generated predecessor also appended a blanket dragCounter prescription to .jules/palette.md. That repository-wide doctrine was not necessary to express this product-local interaction repair. Normal descendant 2793248abed72a3c0accd0c584ff77f793395dd8 restores .jules/palette.md byte-for-byte to protected main; no force push or destructive rebase was used.

Remaining acceptance

There is no current-head behavioral browser/E2E evidence yet, so the visual claim is not promoted as complete. Before Ready, exercise both single and batch drop zones in a real browser with at least: enter from outside, movement across nested label/input descendants, leave to outside, drop, and a second drag after drop. Verify .dragover does not flicker or stick, counter state resets between gestures, native file selection remains unchanged, and keyboard/form behavior is unaffected.

Fresh exact-head CI, fuzz, Security Scan, SAST Semgrep and CodeQL PR runs are newly materialized and non-terminal. Predecessor results do not transfer.

Delivery Gate

  • 의도성: PASS — visual drag state maps directly to an active drop-zone gesture.
  • 기능 완전성: PARTIAL — source state machine exists; real-browser nested-element/drop/re-entry evidence is missing.
  • 콘텐츠 적합성: PASS — generated repository-wide Palette doctrine is no longer in the effective delta.
  • 복원력: PARTIAL — single/batch source parity exists; browser leave/drop/reset behavior is not yet evidenced.
  • 증거성: FAIL / PENDING — exact-head hosted workflows and current-browser evidence are non-terminal/missing.
  • 고유성: N/A — interaction-state bug fix, not a brand-expression change.

No Ready/merge promotion until one unchanged exact head satisfies the material UI evidence, hosted security/CI gates, current review threads, and independent non-author review. No self-approval, bypass, source-neutral retrigger, gate weakening, force push, or destructive rebase.

@google-labs-jules

Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@coderabbitai

coderabbitai Bot commented Sep 5, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae
seonghobae marked this pull request as draft September 5, 2026 18:11
@seonghobae seonghobae changed the title 🎨 Palette: 드래그 앤 드롭 깜박임(Flickering) 문제 개선 fix(ui): keep drag-over state stable across nested drop-zone elements Sep 5, 2026
@seonghobae seonghobae added bug Something isn't working priority: medium Normal-priority or P2 work status: draft Draft pull request type: bug Defect or incorrect behavior labels Sep 7, 2026 — with ChatGPT Codex Connector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working priority: medium Normal-priority or P2 work status: draft Draft pull request type: bug Defect or incorrect behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant