Skip to content

fix: preserve DashKit lifecycle and mobile item layouts - #328

Merged
daniil-filippov-dev merged 13 commits into
mainfrom
daniil-filippov-dev/UXRFC-664-gridstack-preparation
Oct 30, 2026
Merged

daniil-filippov-dev merged 13 commits into
mainfrom
daniil-filippov-dev/UXRFC-664-gridstack-preparation

Conversation

@daniil-filippov-dev

@daniil-filippov-dev daniil-filippov-dev commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

🤖 AI TLDR

Share DashKit lifecycle and readiness behavior while keeping legacy renderer as default. Plugins own suppression of obsolete load completions and retained visual notifications during newer pending loads.

🤖 AI-generated

Merge order: #328, #331, #333, #334, #335, #329, then #337. Merge this preparation first.

Extract shared lifecycle, registration, ref and event methods while retaining the legacy root entry. Ignore no-op geometry changes, handle same-id widget type replacement, and invalidate mobile item ordering when config items change under a stable layout reference. Remove the redundant direct gulp-cli dependency and orphan lock entries. No GridStack dependency, public renderer subpath or nested schema is introduced in this PR.

onBeforeLoad() completion callbacks may be retained for visual updates after those updates commit. DashKit suppresses callbacks after unmount or item replacement. Plugins and wrappers must suppress superseded request completions and retained visual notifications while a newer load is pending. The zero-argument Item callback cannot distinguish an obsolete request from a valid later visual notification; it does not enforce pending-load suppression. The real Text plugin retains its request-generation checks. The wrapper and real Text regression covers pending-load suppression and post-commit notifications; it does not claim that a downstream application still fails this sequence.

Validation: readiness source ce2c22e7028d4cef207b19103b205a8eb346b282 passed 115 Jest tests in 13 suites, types and build under Node 22. The combined review head 33dcb4dbf33e08699c5a035bdbe1dd469fcce52b passed 30 focused Jest tests and TypeScript. Independent local AI review reported no Standards finding and one description/comment contract mismatch. The one-comment clarification caeea2902a6ef81248f585b34d6b32169a995a50 resolves that mismatch; the coordinator checked this bounded delta. Formatting and diff checks pass, and scoped lint adds no warning beyond the pre-existing no-explicit-any warning.

Published head efab67234495c3dcf64f6001a88531720942df45, based on 9c0fe0e655718a88b45df32e715fcdcd2f6b0e85. Exact-head GitHub checks observed at 2026-10-29T16:22:12 UTC: Verify Files, Tests (React 19), Build passed. React 18 was skipped by the release-only workflow guard, not runtime-tested. Workflow evidence: CI, PR Preview Build. GitHub reports APPROVED / CLEAN, with two submitted human approvals on this exact head. Existing readiness and dependency order remain unchanged; no merge or release is claimed.

@gravity-ui-bot

Copy link
Copy Markdown
Contributor

Preview is ready.

Comment thread src/components/Item/Item.tsx Resolved
Comment thread src/components/DashKit/DashKitBase.tsx Resolved
@daniil-filippov-dev
daniil-filippov-dev marked this pull request as draft October 26, 2026 15:34

@korvin89 korvin89 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 AI generated

This review was done with AI assistance. I validated every comment myself, but the wording — including the points I found myself — was written by the AI.

Severity legend

  • 🔴 blocker — should be fixed before merge.
  • 🟠 should-fix — a real problem; worth fixing before or right after merge. If you can't get to it now, please open an issue and leave a comment linking it.
  • 🔵 nit — minor; author's discretion.
  • ❓ question — I need more context; not necessarily a defect.

Comments not attached to the diff

🟠 should-fix — PR title. PRs land as squash commits titled after the PR (#326, #324). gravity-ui/release-action lists only feat/fix/perf in the changelog by default, so a refactor: commit gets no CHANGELOG entry and does not cut a release on its own. This PR changes user-visible behavior:

  • no-op geometry changes no longer emit change/onChange;
  • onBeforeLoad/onItemRender readiness semantics change, and readiness is now reported after commit;
  • Text no longer renders stale markdown;
  • compiled tests are no longer shipped in the npm package (10.5.2 contains build/*/__tests__/*.test.js).

Retitle to fix: … (or split the behavior changes out).

Comment thread src/components/Item/Item.tsx Resolved
Comment thread package.json Resolved
Comment thread src/components/Item/Item.tsx Resolved
Comment thread src/components/DashKit/DashKit.tsx Resolved
Comment thread src/components/DashKit/DashKitBase.tsx Resolved
@daniil-filippov-dev
daniil-filippov-dev marked this pull request as ready for review October 27, 2026 14:51
korvin89
korvin89 previously approved these changes Oct 27, 2026
@daniil-filippov-dev
daniil-filippov-dev marked this pull request as draft October 27, 2026 15:36
@daniil-filippov-dev daniil-filippov-dev changed the title refactor: prepare shared DashKit lifecycle for alternate layouts fix: preserve DashKit lifecycle and mobile item layouts Oct 27, 2026
@daniil-filippov-dev
daniil-filippov-dev marked this pull request as ready for review October 27, 2026 17:14
@daniil-filippov-dev
daniil-filippov-dev added this pull request to the merge queue Oct 30, 2026
Merged via the queue into main with commit b082f0b Oct 30, 2026
4 checks passed
@daniil-filippov-dev
daniil-filippov-dev deleted the daniil-filippov-dev/UXRFC-664-gridstack-preparation branch October 30, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants