superproductivity-mcp 1.2.6.dev8__tar.gz → 1.2.6.dev10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/PKG-INFO +1 -1
  2. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/plugin/manifest.json +1 -1
  3. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/plugin/plugin.js +26 -3
  4. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/pyproject.toml +1 -1
  5. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/.github/workflows/build.yml +0 -0
  6. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/.github/workflows/publish-dev.yml +0 -0
  7. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/.github/workflows/publish.yml +0 -0
  8. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/.github/workflows/release.yml +0 -0
  9. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/.github/workflows/version-gate.yml +0 -0
  10. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/.gitignore +0 -0
  11. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/.mcp.json.example +0 -0
  12. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/.mise.toml +0 -0
  13. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/LICENSE.txt +0 -0
  14. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/README.md +0 -0
  15. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/build-plugin.sh +0 -0
  16. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/docs/superpowers/plans/2026-04-29-packaging-distribution.md +0 -0
  17. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/docs/superpowers/plans/2026-04-30-gitflow-ci.md +0 -0
  18. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/docs/superpowers/specs/2026-04-29-gitflow-ci-design.md +0 -0
  19. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/docs/superpowers/specs/2026-04-29-packaging-distribution-design.md +0 -0
  20. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/plugin/index.html +0 -0
  21. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/src/superproductivity_mcp/__init__.py +0 -0
  22. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/src/superproductivity_mcp/__main__.py +0 -0
  23. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/src/superproductivity_mcp/server.py +0 -0
  24. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/tests/__init__.py +0 -0
  25. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/tests/test_mcp_logic.py +0 -0
  26. {superproductivity_mcp-1.2.6.dev8 → superproductivity_mcp-1.2.6.dev10}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superproductivity-mcp
3
- Version: 1.2.6.dev8
3
+ Version: 1.2.6.dev10
4
4
  Summary: Super Productivity MCP server for Claude Desktop integration
5
5
  Project-URL: Homepage, https://github.com/ben-elliot-nice/superproductivity-mcp
6
6
  License-File: LICENSE.txt
@@ -2,7 +2,7 @@
2
2
  "id": "sp-mcp-bridge",
3
3
  "name": "MCP Bridge",
4
4
  "description": "Bridge between Super Productivity and MCP (Model Context Protocol) servers for Claude Desktop integration",
5
- "version": "1.2.6.dev8",
5
+ "version": "1.2.6.dev10",
6
6
  "manifestVersion": 1,
7
7
  "author": "Super Productivity Team",
8
8
  "homepage": "https://github.com/johannesjo/super-productivity",
@@ -543,16 +543,39 @@ class MCPBridgePlugin {
543
543
  }
544
544
  }
545
545
 
546
- // For each parent, do ONE update with ALL missing children at once to avoid race conditions
546
+ // Step 1: For each parent, add ALL missing children to subTaskIds in one update
547
547
  for (const [parentId, missingIds] of missingFromParent) {
548
548
  const parent = taskMap.get(parentId);
549
549
  try {
550
550
  const updated = [...(parent.subTaskIds || []), ...missingIds];
551
551
  await PluginAPI.updateTask(parentId, { subTaskIds: updated });
552
552
  const childTitles = [...missingIds].map(id => taskMap.get(id)?.title || id);
553
- fixes.push(`added ${missingIds.size} missing children to "${parent.title}": ${childTitles.join(', ')}`);
553
+ fixes.push(`subTaskIds: added ${missingIds.size} children to "${parent.title}"`);
554
554
  } catch (e) {
555
- errors.push(`failed to fix parent "${parent?.title}": ${e.message}`);
555
+ errors.push(`failed to fix subTaskIds for "${taskMap.get(parentId)?.title}": ${e.message}`);
556
+ }
557
+ }
558
+
559
+ // Step 2: Build authoritative set of all task IDs that are subtasks of anything.
560
+ // Use subTaskIds scan (not parentId) — more reliable since parentId may be stale/missing.
561
+ const knownSubtaskIds = new Set(
562
+ allTasks.flatMap(t => t.subTaskIds || [])
563
+ );
564
+
565
+ // Remove any task from project.taskIds that is a known subtask.
566
+ // Tasks created without parentId get added to project.taskIds by SP; later
567
+ // parentId/subTaskIds updates don't remove them, causing double-display.
568
+ const projects = await PluginAPI.getAllProjects();
569
+ for (const project of projects) {
570
+ const wronglyInProject = (project.taskIds || []).filter(id => knownSubtaskIds.has(id));
571
+ if (wronglyInProject.length > 0) {
572
+ try {
573
+ const cleaned = (project.taskIds || []).filter(id => !knownSubtaskIds.has(id));
574
+ await PluginAPI.updateProject(project.id, { taskIds: cleaned });
575
+ fixes.push(`project "${project.title}": removed ${wronglyInProject.length} subtasks from root list`);
576
+ } catch (e) {
577
+ errors.push(`failed to clean project "${project.title}": ${e.message}`);
578
+ }
556
579
  }
557
580
  }
558
581
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superproductivity-mcp"
3
- version = "1.2.6.dev8"
3
+ version = "1.2.6.dev10"
4
4
  description = "Super Productivity MCP server for Claude Desktop integration"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"