refactor: extract toolbar overlay lock helper

This commit is contained in:
lix-2026
2026-05-25 04:28:43 +08:00
parent 1e097a9597
commit aa293fec3f
5 changed files with 17 additions and 10 deletions
@@ -163,3 +163,5 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据
- 修改:`task487-local-folder-tree-live-consumer-smoke.js` 保持 RED smoke 退出 0 语义,增加 staged DOM 状态、PageTree/FileTree 外部创建/删除后的目标节点证据、navigation evidence 和更多截图路径。
- Worker 验证:`node --check scripts/task487-local-folder-tree-live-consumer-smoke.js`、限定 `git diff --check` 通过;因当时 3000 未启动,未运行真实浏览器 smoke。
- Codex 主控验证:`node --check scripts/task487-local-folder-tree-live-consumer-smoke.js``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task487-local-folder-tree-live-consumer-smoke.js`。结果仍为 RED`transport=local-folder-events`、PageTree/FileTree 外部变更阶段 `navigationEvents=0`,但 `treeLiveApplied` 仍为空,说明 live consumer 证据仍未收敛到 snapshot/resync。
- 2026-05-25Batch P Reasonix 派发失败并拒收:三个输出目录 `reasonix-2026-05-24T20-21-00-338Z-53f263c7` / `reasonix-2026-05-24T20-21-00-457Z-9384a1e5` / `reasonix-2026-05-24T20-21-00-569Z-8a3585e8` 均只有 `prompt.md` / `memory-recall.json` / `reasonix-transcript.jsonl`,没有 `result.json``process-handoff.md/json``final.md`;记录中的三个 worktree 目录当前不存在,Codex 未采纳任何 diff。后续 B/C/D 等实现 worker 必须在独立 worktree 产出候选 patch,再由 Codex 读取 Hindsight recall、handoff、diff 和验证证据后选择性合入。
- 2026-05-25Batch Q 未经主控批准再次自动启动 3 个 Reasonix runner`0525-q-worker-a/b/c-*`),超过当前 goal 的 2 worker 上限;Codex 已终止进程,删除本轮自动生成的 3 份 batch-q 草稿并移除空 worktree,不采纳任何结果。后续在修复 runner 自动派发前,不再让 Reasonix 直接负责多 worker 规划。
@@ -160,3 +160,7 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据
- 未迁:`drop_indicator_from_target`、拖拽 listener、Leptos signal、`editor_stage_element` / `editor_root_element` 查询和 block reorder 行为仍留在 shell。
- Worker 验证:`cargo fmt --manifest-path rust/Cargo.toml --all --check``git diff --check``rustfmt --edition 2021 --check rust/spikes/leptos-tiptap-spike/src/editor_runtime/block_dnd.rs` 通过;`cargo check -p leptos-tiptap-spike` 因包名不匹配失败,主控改用正确 manifest 复核。
- Codex 主控验证:`cargo fmt --manifest-path rust/Cargo.toml --all --check``cargo check --manifest-path rust/spikes/leptos-tiptap-spike/Cargo.toml`、wasm release build、`wasm-bindgen``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task489-block-menu-delete-undo-smoke.js``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task488-local-attachment-link-delete-undo-smoke.js`
- 2026-05-25Codex 主控完成 overlay 状态纯 helper 小切片:`toolbar_overlay_locked(turn_into_open, color_menu_open, more_menu_open)` 迁入 `editor_runtime/overlays.rs``lib.rs` 仍保留 runtime state/status payload、overlay sync、block menu signal 和 DOM 编排调用点。
- 修改:`rust/spikes/leptos-tiptap-spike/src/editor_runtime/overlays.rs``rust/spikes/leptos-tiptap-spike/src/lib.rs`、generated island wasm。
- 已验证:`cargo fmt --manifest-path rust/Cargo.toml --all --check``cargo check --manifest-path rust/spikes/leptos-tiptap-spike/Cargo.toml`、wasm release build、`wasm-bindgen``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task489-block-menu-delete-undo-smoke.js``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task488-local-attachment-link-delete-undo-smoke.js``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task479-local-folder-markdown-resource-lifecycle-smoke.js`
- 未迁:`try_sync_editor_overlay_state``on_selection_change` overlay 同步、`drop_indicator_from_target`、拖拽 listener 和 block reorder 行为。
@@ -77,6 +77,14 @@ pub(crate) fn sync_text_selection_overlay(
has_text_selection
}
pub(crate) fn toolbar_overlay_locked(
turn_into_open: bool,
color_menu_open: bool,
more_menu_open: bool,
) -> bool {
turn_into_open || color_menu_open || more_menu_open
}
#[allow(clippy::too_many_arguments)]
pub(crate) fn close_editor_floating_overlays(
set_slash_open: WriteSignal<bool>,
+3 -10
View File
@@ -42,8 +42,9 @@ use editor_runtime::editor_focus::{active_editor_stage, body_has_focus, schedule
use editor_runtime::overlays::{
close_editor_floating_overlays_if_escape, floating_toolbar_anchor_from_selection,
open_block_menu_overlay, open_image_toolbar_overlay, open_slash_menu_overlay,
sync_text_selection_overlay, try_close_block_menu_overlays, FloatingToolbarAnchor,
ImageToolbarAnchor, TableOverlayAnchor, TableSelectionKind, TableSelectionOverlayState,
sync_text_selection_overlay, toolbar_overlay_locked, try_close_block_menu_overlays,
FloatingToolbarAnchor, ImageToolbarAnchor, TableOverlayAnchor, TableSelectionKind,
TableSelectionOverlayState,
};
use editor_runtime::persistence::{
load_persisted_document, normalize_identity_value, persist_document_state,
@@ -5646,14 +5647,6 @@ fn replace_top_level_block_kind(
Ok(())
}
fn toolbar_overlay_locked(
turn_into_open: bool,
color_menu_open: bool,
more_menu_open: bool,
) -> bool {
turn_into_open || color_menu_open || more_menu_open
}
fn try_sync_editor_overlay_state(
set_editor_focused: WriteSignal<bool>,
set_text_selection_active: WriteSignal<bool>,