Skip to content

feature: task-dnd-ux (1/3) - #24

Closed
myk1yt wants to merge 19 commits into
mainfrom
pr/b08-task-persistence-v2
Closed

feature: task-dnd-ux (1/3)#24
myk1yt wants to merge 19 commits into
mainfrom
pr/b08-task-persistence-v2

Conversation

@myk1yt

@myk1yt myk1yt commented Aug 2, 2026

Copy link
Copy Markdown
Owner

Stack Position

  • Feature Branch: feature/task-dnd-ux
  • Stage: 1/3
  • Depends on: None

Description

Full Feature Description

  • Feature Branch: feature/task-dnd-ux
  • Feature Name: Task Organization and Drag-and-Drop UX
  • Purpose: Resolves the problem where, as history grows, finding related tasks and maintaining priority becomes difficult, and manual organization state can get mixed across workspaces or disappear as UI-only state. Preserves manual folders, pins, root/subtask grouping, and stable ordering in workspace-scoped storage, and exposes them through a drag-and-drop UI that supports both pointer and keyboard interaction.
  • Full Change Description: B08 implements the folder/pin/membership/order contract with atomic persistence, revision conflict handling, and corrupt-file recovery. B09 receives create/rename/move/pin/reorder/delete requests as typed webview messages, passes them to the store, and publishes authoritative extension state. B10 implements history grouping, dialog, pin control, DnD surface/hook, optimistic update with rollback, empty/error state, and locale and visual coverage.
  • Impact Scope: Affects task-organization.ts, TaskOrganizationStore.ts, safeWriteJson.ts, taskOrganizationMessageHandler.ts, ClineProvider.ts, HistoryView.tsx, ExtensionStateContext.tsx.
  • Errors and Edge Cases: Writes are serialized with read-modify-write inside a lock and atomic replacement, returning revision mismatch as a retryable conflict. Future schemas are not overwritten. Folders and pins from workspace A must not appear in workspace B. Stale task IDs and stale drag sources are treated as recoverable no-ops. Pointer cancel restores the previous order, and optimistic UI reconciles with extension-confirmed state. Keyboard users must also be able to perform drag, drop, and cancel.
  • Testing Method: Run B08's schema/default/workspace isolation/atomic write/concurrency/future-version tests, B09's typed request/validation/write-failure/state-refresh tests, and B10's component/context/DnD/accessibility/locale/visual tests. Manually perform folder creation, pointer and keyboard move, cancel, pin, rename, delete, and view reopen, verifying that two workspaces' states do not mix.

Why Split Into 17 PRs

Instead of submitting this feature as a single unified PR, it was split into individual PRs because as code size grows, safely reviewing a PR becomes very difficult. The feature was broken into mutually exclusive individual PRs so that each can be reviewed independently.

What This PR Specifically Changes

Adds folder/pin/membership/order schema, workspace-scoped aggregate, atomic write, lock/revision conflict, future-schema protection, and corrupt-file recovery. Does not include IPC or UI.

Included Files

  • packages/types/src/task-organization.ts
  • src/core/task-persistence/TaskOrganizationStore.ts
  • src/utils/safeWriteJson.ts
  • packages/types/src/__tests__/task-organization.spec.ts
  • src/core/task-persistence/__tests__/TaskOrganizationStore.spec.ts

Exclusion Scope

  • Webview message routing
  • History UI and DnD implementation
  • Extension state UI wiring
  • All items in the common removal rules

@myk1yt myk1yt changed the title B08: Task Persistence v2 feature: task-dnd-ux (1/3) Aug 3, 2026
@myk1yt myk1yt mentioned this pull request Aug 3, 2026
@myk1yt
myk1yt force-pushed the pr/b08-task-persistence-v2 branch 3 times, most recently from 3c27bda to 312713d Compare August 6, 2026 08:45
Zoo (VP) added 6 commits August 7, 2026 01:15
… resolution

The squash merge used --theirs for eslint-suppressions.json, which kept
stale suppression entries that no longer match any code. ESLint's
--prune-suppressions removed 13 dead entries, resolving the CI lint failure.
Patch coverage checks were blocking 10+ PRs with 80%/70% thresholds.
Changed to informational: true so patch coverage is reported but not
a required status check.
@myk1yt
myk1yt force-pushed the pr/b08-task-persistence-v2 branch from ef13c98 to c43fdf3 Compare August 6, 2026 16:15
@myk1yt myk1yt closed this Aug 7, 2026
@myk1yt
myk1yt deleted the pr/b08-task-persistence-v2 branch August 7, 2026 13:06
@myk1yt
myk1yt restored the pr/b08-task-persistence-v2 branch August 7, 2026 13:31
@myk1yt myk1yt reopened this Aug 8, 2026
Zoo (VP) and others added 6 commits August 8, 2026 14:47
…Org#1122)

CI failure: E2E Tests (Mocked) run 31228470325 failed with '404 No fixture matched'
because task-organization.test.ts calls startNewTask with probe tags
ORG_E2E_TASK_A/B/C but no fixture existed.
Run: https://github.com/Zoo-Code-Org/Zoo-Code/actions/runs/31228470325
…ames (Zoo-Code-Org#1073)

* fix(telemetry): record tool usage once centrally, sanitize raw tool names

* fix(telemetry): defer native MCP usage recording until validation passes

* fix(telemetry): narrow UseMcpToolTool callback, harden test mocks, close coverage gaps

* test(telemetry): complete native MCP mock so validateToolExists runs the real path
Co-authored-by: Roomote <roomote@roomote.dev>
Co-authored-by: Roomote <roomote@roomote.dev>
Co-authored-by: Roomote <roomote@roomote.dev>
@myk1yt

myk1yt commented Aug 10, 2026

Copy link
Copy Markdown
Owner Author

Closing to recreate with main as target base branch. This PR had stale base branch references after fork sync.

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.

2 participants