From 208503d7b155e72d0033784f930cff9cb57fa547 Mon Sep 17 00:00:00 2001 From: "jackson.zhou" Date: Thu, 17 Sep 2026 19:12:47 +0800 Subject: [PATCH 1/2] feat: add safe Markdown block reordering --- apps/electron-demo/electron/main.ts | 1 + apps/electron-demo/package.json | 1 + apps/electron-demo/src/renderer/app.ts | 5 + .../src/renderer/editor-shell.ts | 5 +- .../test/app-runtime-integration.test.ts | 18 + apps/electron-demo/test/editor-shell.test.ts | 26 + apps/electron-demo/tsconfig.json | 1 + apps/electron-demo/vite.config.ts | 4 + docs/plugins/native-plugin-api.zh.md | 7 + .../assets/after.png | Bin 0 -> 33194 bytes .../assets/dragging.png | Bin 0 -> 33531 bytes .../add-markdown-block-reordering/design.md | 61 ++ .../add-markdown-block-reordering/proposal.md | 33 + .../specs/block-reordering/spec.md | 95 +++ .../specs/editor-core/spec.md | 39 ++ .../add-markdown-block-reordering/tasks.md | 50 ++ .../validation.md | 75 +++ package.json | 7 +- packages/core/README.md | 28 + packages/core/src/index.ts | 1 + packages/core/src/live-preview-table.ts | 116 +++- packages/core/src/live-preview.ts | 5 +- packages/core/src/transaction-pipeline.ts | 29 +- packages/core/test/prepare-block-move.test.ts | 239 +++++++ .../core/test/transaction-pipeline.test.ts | 51 +- packages/plugin-block-drag/README.md | 95 +++ packages/plugin-block-drag/package.json | 34 + packages/plugin-block-drag/src/extension.ts | 631 ++++++++++++++++++ packages/plugin-block-drag/src/index.ts | 9 + packages/plugin-block-drag/src/model.ts | 189 ++++++ .../plugin-block-drag/src/runtime-plugin.ts | 79 +++ .../test/browser/electron-smoke.mjs | 106 +++ .../plugin-block-drag/test/browser/index.html | 23 + .../plugin-block-drag/test/browser/main.ts | 65 ++ .../plugin-block-drag/test/browser/smoke.mjs | 216 ++++++ .../plugin-block-drag/test/extension.test.ts | 335 ++++++++++ packages/plugin-block-drag/test/model.test.ts | 185 +++++ .../plugin-block-drag/test/runtime.test.ts | 235 +++++++ packages/plugin-block-drag/tsconfig.json | 4 + .../reference-plugins/api/public-consumer.ts | 1 + packages/reference-plugins/package.json | 1 + packages/reference-plugins/src/bundled.ts | 5 + .../reference-plugins/src/feature-flags.ts | 5 + .../test/feature-flags.test.ts | 21 +- packages/reference-plugins/vitest.config.ts | 1 + pnpm-lock.yaml | 60 ++ tsconfig.base.json | 1 + vitest.config.ts | 1 + 48 files changed, 3173 insertions(+), 26 deletions(-) create mode 100644 openspec/changes/add-markdown-block-reordering/assets/after.png create mode 100644 openspec/changes/add-markdown-block-reordering/assets/dragging.png create mode 100644 openspec/changes/add-markdown-block-reordering/design.md create mode 100644 openspec/changes/add-markdown-block-reordering/proposal.md create mode 100644 openspec/changes/add-markdown-block-reordering/specs/block-reordering/spec.md create mode 100644 openspec/changes/add-markdown-block-reordering/specs/editor-core/spec.md create mode 100644 openspec/changes/add-markdown-block-reordering/tasks.md create mode 100644 openspec/changes/add-markdown-block-reordering/validation.md create mode 100644 packages/core/test/prepare-block-move.test.ts create mode 100644 packages/plugin-block-drag/README.md create mode 100644 packages/plugin-block-drag/package.json create mode 100644 packages/plugin-block-drag/src/extension.ts create mode 100644 packages/plugin-block-drag/src/index.ts create mode 100644 packages/plugin-block-drag/src/model.ts create mode 100644 packages/plugin-block-drag/src/runtime-plugin.ts create mode 100644 packages/plugin-block-drag/test/browser/electron-smoke.mjs create mode 100644 packages/plugin-block-drag/test/browser/index.html create mode 100644 packages/plugin-block-drag/test/browser/main.ts create mode 100644 packages/plugin-block-drag/test/browser/smoke.mjs create mode 100644 packages/plugin-block-drag/test/extension.test.ts create mode 100644 packages/plugin-block-drag/test/model.test.ts create mode 100644 packages/plugin-block-drag/test/runtime.test.ts create mode 100644 packages/plugin-block-drag/tsconfig.json diff --git a/apps/electron-demo/electron/main.ts b/apps/electron-demo/electron/main.ts index 22126b17..6bb6af81 100644 --- a/apps/electron-demo/electron/main.ts +++ b/apps/electron-demo/electron/main.ts @@ -68,6 +68,7 @@ const MAIN_PLUGIN_PERMISSION_POLICIES = new Map ? bootPlan.runtimePlugins.some((Plugin) => bundledReferencePlugins.some((entry) => entry.Plugin === Plugin && entry.manifest.id === "wordcount")) : bootPlan.legacyUi.wordCount, + blockDrag: bootPlan.mode === "runtime" + ? bootPlan.runtimePlugins.some((Plugin) => + bundledReferencePlugins.some((entry) => entry.Plugin === Plugin && entry.manifest.id === "block-drag")) + : bootPlan.editorContributions.some((plugin) => plugin.name === "plugin-block-drag"), }, editorContributions: bootPlan.mode === "runtime" ? bootPlan.editorContributions diff --git a/apps/electron-demo/src/renderer/editor-shell.ts b/apps/electron-demo/src/renderer/editor-shell.ts index f63ec212..2638e047 100644 --- a/apps/electron-demo/src/renderer/editor-shell.ts +++ b/apps/electron-demo/src/renderer/editor-shell.ts @@ -6,6 +6,7 @@ import { type NexusPlugin, } from "@floatboat/nexus-core"; import { createGfmPreset } from "@floatboat/nexus-preset-gfm"; +import { createBlockDragPlugin } from "@floatboat/nexus-plugin-block-drag"; import { createHistoryPlugin } from "@floatboat/nexus-plugin-history"; import { createToolbarPlugin, @@ -66,6 +67,7 @@ export interface EditorShellOptions { toolbar: boolean; slashMenu: boolean; wordCount: boolean; + blockDrag?: boolean; }>; /** Extra static contributions selected by the host boot plan. */ editorContributions?: readonly NexusPlugin[]; @@ -93,7 +95,7 @@ export function createEditorShell(options: EditorShellOptions): EditorShell { resolveWikilink, suggestWikilinks, contributionMode = "legacy", - contributionFeatures = { toolbar: true, slashMenu: true, wordCount: true }, + contributionFeatures = { toolbar: true, slashMenu: true, wordCount: true, blockDrag: true }, editorContributions = [], } = options; const runtimeManaged = contributionMode === "runtime"; @@ -138,6 +140,7 @@ export function createEditorShell(options: EditorShellOptions): EditorShell { plugins: [ createGfmPreset(), createHistoryPlugin(), + ...(!runtimeManaged && contributionFeatures.blockDrag ? [createBlockDragPlugin()] : []), ...(!runtimeManaged && contributionFeatures.toolbar ? [createToolbarPlugin()] : []), createSearchPlugin(), wikilinksPlugin, diff --git a/apps/electron-demo/test/app-runtime-integration.test.ts b/apps/electron-demo/test/app-runtime-integration.test.ts index 5ecc7672..d18207c2 100644 --- a/apps/electron-demo/test/app-runtime-integration.test.ts +++ b/apps/electron-demo/test/app-runtime-integration.test.ts @@ -151,6 +151,21 @@ beforeEach(() => { }); describe("Electron renderer plugin runtime integration", () => { + it.each(["legacy", "runtime"] as const)("can disable block reordering in %s mode", async (mode) => { + const { boot } = await import("../src/renderer/app"); + installBridgeHarness(createBridgeHarness(), mode); + const app = await boot({ + root: document.getElementById("app")!, + featureFlags: { blockDrag: false }, + deferVaultRestore: false, + }); + + expect(document.querySelectorAll(".nexus-block-drag")).toHaveLength(0); + expect(app.runtime?.pluginManager.list().find((plugin) => + plugin.id === "block-drag" && plugin.state === "enabled")).toBeUndefined(); + await app.shutdown(); + }); + it("keeps the legacy path as the default and shuts it down once", async () => { const { boot } = await import("../src/renderer/app"); const harness = createBridgeHarness(); @@ -169,6 +184,7 @@ describe("Electron renderer plugin runtime integration", () => { expect(app.shell.slashMenu).not.toBeNull(); expect(app.shell.wordcount).not.toBeNull(); expect(document.querySelectorAll(".nexus-toolbar")).toHaveLength(1); + expect(document.querySelectorAll(".nexus-block-drag")).toHaveLength(1); app.state.activeFile = "/vault-note.md"; app.state.filePath = "/vault-note.md"; @@ -219,7 +235,9 @@ describe("Electron renderer plugin runtime integration", () => { "toolbar", "slash-menu", "wordcount", + "block-drag", ]); + expect(document.querySelectorAll(".nexus-block-drag")).toHaveLength(1); expect(app.slots["editor-toolbar"].querySelectorAll("[data-ui-action-id]")).toHaveLength(17); const slashCommandIds = app.shell.editor.getSlashCommands().map((command) => command.id); expect(slashCommandIds).toHaveLength(new Set(slashCommandIds).size); diff --git a/apps/electron-demo/test/editor-shell.test.ts b/apps/electron-demo/test/editor-shell.test.ts index bc762f32..9291939b 100644 --- a/apps/electron-demo/test/editor-shell.test.ts +++ b/apps/electron-demo/test/editor-shell.test.ts @@ -20,9 +20,34 @@ describe("createEditorShell", () => { }); expect(container.querySelector(".cm-editor")).not.toBeNull(); + expect(container.querySelectorAll(".nexus-block-drag")).toHaveLength(1); shell.destroy(); }); + it("moves blocks through the legacy keyboard binding and supports undo", () => { + const container = document.createElement("div"); + document.body.append(container); + const state = createState(); + state.content = "first\n\nsecond"; + const shell = createEditorShell({ + container, + state, + settings: defaultSettings(), + onStateChange: vi.fn(), + }); + + const event = new KeyboardEvent("keydown", { + key: "ArrowDown", altKey: true, shiftKey: true, bubbles: true, cancelable: true, + }); + container.querySelector(".cm-content")!.dispatchEvent(event); + expect(event.defaultPrevented).toBe(true); + expect(shell.editor.getDocument()).toBe("second\n\nfirst"); + expect(shell.editor.undo()).toBe(true); + expect(shell.editor.getDocument()).toBe("first\n\nsecond"); + shell.destroy(); + container.remove(); + }); + it("marks state dirty when the editor content changes", async () => { const container = document.createElement("div"); const state = createState(); @@ -80,6 +105,7 @@ describe("createEditorShell", () => { expect(shell.slashMenu).toBeNull(); expect(shell.wordcount).toBeNull(); expect(container.querySelectorAll(".nexus-toolbar")).toHaveLength(0); + expect(container.querySelectorAll(".nexus-block-drag")).toHaveLength(0); expect(document.body.querySelectorAll(".nexus-slash-menu")).toHaveLength(0); expect(container.querySelectorAll("[data-testid='nexus-wordcount-bar']")).toHaveLength(0); diff --git a/apps/electron-demo/tsconfig.json b/apps/electron-demo/tsconfig.json index 54bab0a9..22a17df9 100644 --- a/apps/electron-demo/tsconfig.json +++ b/apps/electron-demo/tsconfig.json @@ -5,6 +5,7 @@ "paths": { "@floatboat/nexus-core": ["packages/core/src/index.ts"], "@floatboat/nexus-plugin-api": ["packages/plugin-api/src/index.ts"], + "@floatboat/nexus-plugin-block-drag": ["packages/plugin-block-drag/src/index.ts"], "@floatboat/nexus-plugin-runtime": ["packages/plugin-runtime/src/index.ts"], "@floatboat/nexus-preset-gfm": ["packages/preset-gfm/src/index.ts"], "@floatboat/nexus-plugin-history": ["packages/plugin-history/src/index.ts"], diff --git a/apps/electron-demo/vite.config.ts b/apps/electron-demo/vite.config.ts index ab18c4aa..41130aab 100644 --- a/apps/electron-demo/vite.config.ts +++ b/apps/electron-demo/vite.config.ts @@ -36,6 +36,10 @@ export default defineConfig({ __dirname, "../../packages/core/src/index.ts" ), + "@floatboat/nexus-plugin-block-drag": path.resolve( + __dirname, + "../../packages/plugin-block-drag/src/index.ts" + ), "@floatboat/nexus-plugin-api": path.resolve( __dirname, "../../packages/plugin-api/src/index.ts" diff --git a/docs/plugins/native-plugin-api.zh.md b/docs/plugins/native-plugin-api.zh.md index 601cdde4..22b2af4a 100644 --- a/docs/plugins/native-plugin-api.zh.md +++ b/docs/plugins/native-plugin-api.zh.md @@ -157,6 +157,13 @@ Nexus 不把活动编辑器建模成全局单例。一个插件实例可以服 需要特定窗口、Workspace 或 editor capability 时,传入对应的 `CapabilityRequestContext`。不要缓存“当前编辑器”或从全局 DOM 推断活动 leaf。Workspace 的 focused leaf、active view/file 和 recent editor 是相互独立且都可能为空的查询。 +原生插件如通过 editor extension 重排文档块,必须在表格失焦前调用 core 的 +`prepareBlockMove(view)`,并在返回 `true` 后重新解析块位置。该调用可能提交表格的 +本地输入并改变文档、选区;组合输入、未结束的表格手势、过期位置、宿主拒绝或改写 +提交时返回 `false`,插件应取消移动并保留输入。它是已有 `EditorView` 上的扩展 API, +不新增 capability,也不提供全局活动编辑器查询。详见 +[core 表格提交契约](../../packages/core/README.md#preparing-document-block-moves)。 + ## 5. Manifest 字段速查 | 字段 | 必填 | 约束 | diff --git a/openspec/changes/add-markdown-block-reordering/assets/after.png b/openspec/changes/add-markdown-block-reordering/assets/after.png new file mode 100644 index 0000000000000000000000000000000000000000..57b9acefc8294d2dc78ffe2e4634365bfdb04f98 GIT binary patch literal 33194 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 literal 0 HcmV?d00001 diff --git a/openspec/changes/add-markdown-block-reordering/assets/dragging.png b/openspec/changes/add-markdown-block-reordering/assets/dragging.png new file mode 100644 index 0000000000000000000000000000000000000000..735a105de2d0c1029dec5412e9ea06d66b78b039 GIT binary patch literal 33531 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