diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index d7bff5f..8c88745 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -6,7 +6,7 @@ "plugins": [ { "name": "simulator", - "version": "2.4.0", + "version": "2.4.1", "source": { "source": "local", "path": "./plugins/simulator" diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 4179577..16ef33a 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,7 @@ "name": "simulator", "source": "./plugins/simulator", "description": "Simulator.Company platform assistant. Exposes the Simulator REST API as an MCP server and provides skills for managing actors, forms, graph structures, and financial accounts.", - "version": "2.4.0", + "version": "2.4.1", "author": { "name": "Simulator.Company", "url": "https://simulator.company" diff --git a/CHANGELOG.md b/CHANGELOG.md index e1ef795..d0cf4e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## [2.4.1] + +### Fixed +- **`pushSmartForm` failed on Windows when creating files in a new subfolder (e.g. a new Smart Form page `pages//config`).** Phase 2 mapped the server's create response back to local paths using `filepath.Dir`, which yields backslash-separated paths on Windows and misses the slash-keyed folder map — so the push aborted with "server did not return id for created file …" even though the server had already created the folder and files (a subsequent `pullSmartForm` showed them). The response mapping now reuses `resolveParentID` (the same `ToSlash`-normalized lookup used when POSTing), keeping the key consistent across OSes. macOS/Linux behaviour is unchanged (`ToSlash` is a no-op there). + ## [2.4.0] ### Added diff --git a/POWER.md b/POWER.md index 261fbf3..70e9d6c 100644 --- a/POWER.md +++ b/POWER.md @@ -1,7 +1,7 @@ --- name: simulator displayName: Simulator.Company -version: 2.4.0 +version: 2.4.1 description: BPM, graph, and financial-tracking toolkit for the Simulator.Company platform. Exposes the Simulator REST API as MCP tools plus 16 skills covering actors, forms, graphs, layers, accounts, transactions, transfers, charts, smart forms, meetings, reactions, and attachments. author: name: Simulator.Company diff --git a/plugins/simulator/.claude-plugin/plugin.json b/plugins/simulator/.claude-plugin/plugin.json index fc8c0bb..84a14ab 100644 --- a/plugins/simulator/.claude-plugin/plugin.json +++ b/plugins/simulator/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "simulator", - "version": "2.4.0", + "version": "2.4.1", "description": "Simulator.Company platform assistant. Exposes the Simulator REST API as an MCP server and provides skills for managing actors, forms, graph structures, and financial accounts.", "author": { "name": "Simulator.Company", diff --git a/plugins/simulator/.codex-plugin/plugin.json b/plugins/simulator/.codex-plugin/plugin.json index fc8c0bb..84a14ab 100644 --- a/plugins/simulator/.codex-plugin/plugin.json +++ b/plugins/simulator/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "simulator", - "version": "2.4.0", + "version": "2.4.1", "description": "Simulator.Company platform assistant. Exposes the Simulator REST API as an MCP server and provides skills for managing actors, forms, graph structures, and financial accounts.", "author": { "name": "Simulator.Company", diff --git a/plugins/simulator/.kiro-plugin/plugin.json b/plugins/simulator/.kiro-plugin/plugin.json index 246e9ac..4d8b26a 100644 --- a/plugins/simulator/.kiro-plugin/plugin.json +++ b/plugins/simulator/.kiro-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "simulator", - "version": "2.4.0", + "version": "2.4.1", "description": "Simulator.Company platform assistant. Exposes the Simulator REST API as an MCP server and provides skills for managing actors, forms, graph structures, and financial accounts.", "author": { "name": "Simulator.Company", diff --git a/plugins/simulator/mcp-server/internal/engines/smartform/push.go b/plugins/simulator/mcp-server/internal/engines/smartform/push.go index 7851610..eb85401 100644 --- a/plugins/simulator/mcp-server/internal/engines/smartform/push.go +++ b/plugins/simulator/mcp-server/internal/engines/smartform/push.go @@ -242,10 +242,11 @@ func handlePushSmartForm(ctx context.Context, req mcp.CallToolRequest) (*mcp.Cal byKey[fmt.Sprintf("%d/%s", c.FolderID, c.Title)] = c } for _, relPath := range newFilePaths { - parentID := manifest.Folders[filepath.Dir(relPath)] - if filepath.Dir(relPath) == "." { - parentID = manifest.EnvRootFolderID - } + // Reuse resolveParentID (with ToSlash) so the lookup key matches the + // parentID actually POSTed above. Computing filepath.Dir inline here + // breaks on Windows, where it yields backslash-separated paths that + // miss the slash-keyed manifest.Folders map. + parentID, _ := resolveParentID(relPath, manifest.Folders, manifest.EnvRootFolderID) key := fmt.Sprintf("%d/%s", parentID, filepath.Base(relPath)) c, ok := byKey[key] if !ok {