Skip to content

Implement move_projects folder moves#50

Merged
deverman merged 11 commits into
masterfrom
issue-35-move-projects
Jun 2, 2026
Merged

Implement move_projects folder moves#50
deverman merged 11 commits into
masterfrom
issue-35-move-projects

Conversation

@deverman

@deverman deverman commented Jun 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds CLI and MCP surfaces for move_projects / focusrelay move-projects.
  • Supports homogeneous project moves to a folder by ID or to the root library when destinationID is omitted.
  • Implements bridge execution with documented Omni Automation section APIs: flattenedProjects, flattenedFolders, moveSections, folder.beginning/ending, and library.beginning/ending.
  • Tightens move validation so task moves cannot target folders and project moves cannot target projects/parent tasks/inbox.

Stack / merge order

Depends on PR #49. Merge this after #49, then continue to the final docs/AI guidance issue.

Validation

  • node --check Plugin/FocusRelayBridge.omnijs/Resources/BridgeLibrary.js
  • swift test
  • ./scripts/install-plugin.sh
  • Restarted OmniFocus
  • focusrelay move-projects --help
  • Live preview against temp project + Travel folder: accepted valid folder, rejected invalid folder
  • Live mutation against temp project: moved to Travel with verify, moved back to root library with verify, deleted temp project and confirmed deletion

Refs #35

@deverman

deverman commented Jun 1, 2026

Copy link
Copy Markdown
Owner Author

Stack note: this PR is intentionally based on #49 (issue-47-mutation-dispatch-reliability). Merge #49 first, then #50. After #50, continue with the docs/AI guidance issue.

@deverman

deverman commented Jun 1, 2026

Copy link
Copy Markdown
Owner Author

Stack note update: #51 (issue #48 bridge mutation helper refactor) is now stacked on this PR. Merge #49 first, then #50, then #51.

@deverman deverman changed the base branch from issue-47-mutation-dispatch-reliability to master June 2, 2026 03:56
@deverman

deverman commented Jun 2, 2026

Copy link
Copy Markdown
Owner Author

Validation update after rebasing onto current master:

  • node --check Plugin/FocusRelayBridge.omnijs/Resources/BridgeLibrary.js passed.
  • swift test passed: 95 Swift Testing tests.
  • Reinstalled the OmniFocus plugin with ./scripts/install-plugin.sh and fully restarted OmniFocus.
  • ./.build/debug/focusrelay bridge-health-check returned ok.
  • ./.build/debug/focusrelay move-projects --help exposes the expected CLI surface.
  • Live UAT used temporary OmniFocus data only:
    • created temporary project nqM8hf6yzMn and temporary folder b9ecB_0FfLP
    • previewed move to folder successfully
    • previewed invalid folder ID and got per-item failure: Destination folder ID not found.
    • moved temporary project to temporary folder with --verify
    • moved temporary project back to root library with --verify
    • deleted the temporary project/folder and confirmed both no longer exist

Final PR diff against master is scoped to move_projects: bridge implementation, CLI/MCP entry points, shared validation, and parser/model tests.

@deverman deverman marked this pull request as ready for review June 2, 2026 03:57
@deverman deverman merged commit 709aa32 into master Jun 2, 2026
1 check passed
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.

1 participant