Skip to content

An immediate write cancels a node's pending debounced content write #3036

Closed

Description

@malibio

Overview

An immediate-mode write for a node cancels that node's still-debounced write, and the cancelled write's changes are never sent. The typical trigger is typing in a task and then, within the debounce window (~500 ms), changing a typed field such as clicking its checkbox or changing its status. The typed write goes out; the typed text is dropped. The UI still shows the text, so nothing looks wrong until the node is reloaded.

Details

  • SimplePersistenceCoordinator.persist() calls cancelPending(nodeId, …) when a new write for a node arrives while none is executing. This cancels a pending debounced operation regardless of its kind.
  • A generic updateNode() content write captures only the fields it changed, so the write that cancelled it does not carry the content.
  • Typed writes are protected against the reverse case: staged typed fields are flushed by whichever write for the node runs next. Generic debounced writes have no such protection.

Acceptance Criteria

  • A debounced content write that is cancelled by an immediate write for the same node still reaches the server, either sent by the cancelling write or flushed ahead of it
  • Regression test: type in a task, then change its status before the debounce fires; after both settle, the server holds both changes

Related

Activity

  1. added a commit that references this issue on Sep 25, 2026
    b382365
  2. malibio commented on Sep 25, 2026

    @malibio
    CollaboratorAuthor

    Fixed in #3033 (commit b382365): an immediate write now promotes a node's still-debounced write instead of cancelling it. Regression test: update-typed-node.test.ts › an immediate typed write does not discard a still-debounced content edit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingui

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions