flutterflow-mcp 0.2.1 → 0.2.2

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.
@@ -726,7 +726,112 @@ trueAction:
726
726
 
727
727
  ## Disabled Actions
728
728
 
729
- Actions can be conditionally disabled using a `disableAction` wrapper. When the condition evaluates to true, the wrapped action executes; the chain terminates otherwise.
729
+ FlutterFlow uses `disableAction` to mark actions or conditionals as disabled. There are three distinct patterns depending on what is being disabled.
730
+
731
+ ### Pattern 1: Disabling a Leaf Action (Unconditional)
732
+
733
+ To fully disable a single action (navigate, database, revenueCat, etc.), wrap the action content in `disableAction` at the **action file level**. The trigger chain continues to reference the same key — FlutterFlow reads the file, sees `disableAction`, and skips execution.
734
+
735
+ ```yaml
736
+ # Action file: id-epxy2a0w.yaml
737
+ key: epxy2a0w
738
+ disableAction:
739
+ actionNode:
740
+ key: gm8dis03 # Internal node key (can be any unique key)
741
+ action:
742
+ navigate:
743
+ allowBack: false
744
+ passedParameters:
745
+ widgetClassNodeKeyRef:
746
+ key: Scaffold_tydsj8ql
747
+ isNavigateBack: false
748
+ transition:
749
+ transitionType: FADE_IN
750
+ durationMillis: 500
751
+ pageNodeKeyRef:
752
+ key: Scaffold_tydsj8ql
753
+ key: epxy2a0w # Must match the outer key
754
+ ```
755
+
756
+ | Field | Description |
757
+ |-------|-------------|
758
+ | `key` (outer) | The action's original key — chain references this |
759
+ | `disableAction.actionNode.key` | Internal node key (any unique value) |
760
+ | `disableAction.actionNode.action` | The original action content, preserved for re-enabling |
761
+ | `disableAction.actionNode.action.key` | Must match the outer `key` |
762
+
763
+ **Important:** Disabling a leaf action at the file level does NOT disable `followUpAction` chains defined in the trigger YAML. If the trigger chain has a `followUpAction` after this action reference, that follow-up will still execute.
764
+
765
+ ### Pattern 2: Disabling a Conditional Node
766
+
767
+ To disable an entire `conditionActions` block in the trigger chain, two changes are required:
768
+
769
+ **Step 1 — Create a new action file** that wraps the full conditional in `disableAction.actionNode.conditionActions`. Leaf actions within the conditional are inlined (not file references) with their own `disableAction` wrappers:
770
+
771
+ ```yaml
772
+ # Action file: id-ds8cnd01.yaml (new file)
773
+ key: ds8cnd01
774
+ disableAction:
775
+ actionNode:
776
+ key: f441awwi # Original conditional node key from the chain
777
+ conditionActions:
778
+ falseAction:
779
+ key: wkklfcpy
780
+ action:
781
+ key: epxy2a0w
782
+ disableAction: # Leaf action inlined with its own disable
783
+ actionNode:
784
+ key: gm8dis03
785
+ action:
786
+ navigate:
787
+ allowBack: false
788
+ pageNodeKeyRef:
789
+ key: Scaffold_tydsj8ql
790
+ key: epxy2a0w
791
+ trueActions:
792
+ - condition:
793
+ revenueCatEntitlementResponse: {}
794
+ trueAction:
795
+ key: 5uq5p5vt
796
+ action:
797
+ key: bgxsmj4b
798
+ disableAction: # Another leaf action inlined
799
+ actionNode:
800
+ key: gm8dis04
801
+ action:
802
+ navigate:
803
+ allowBack: false
804
+ pageNodeKeyRef:
805
+ key: Scaffold_91ca3wwv
806
+ key: bgxsmj4b
807
+ hasMultiConditions: false
808
+ key: ev7ush66
809
+ ```
810
+
811
+ **Step 2 — Update the trigger chain YAML.** Replace the `conditionActions` block with an `action` reference to a noop key (a key with no corresponding action file):
812
+
813
+ ```yaml
814
+ # Before (in trigger chain):
815
+ followUpAction:
816
+ key: f441awwi
817
+ conditionActions:
818
+ falseAction: ...
819
+ trueActions: ...
820
+ hasMultiConditions: false
821
+ key: ev7ush66
822
+
823
+ # After (in trigger chain):
824
+ followUpAction:
825
+ key: f441awwi
826
+ action:
827
+ key: np8noop1 # Noop key — no action file exists for this key
828
+ ```
829
+
830
+ **Note:** The noop key has no corresponding action file. When pushed via the UI, FlutterFlow handles this internally. When pushed via the API, you may need to create the action file with the disabled conditional content under the noop key itself (see API Limitations).
831
+
832
+ ### Pattern 3: Conditionally Disabled Action
833
+
834
+ Actions can be conditionally disabled using `disableAction` with a condition. When the condition evaluates to true, the wrapped action executes; otherwise it is skipped.
730
835
 
731
836
  ```yaml
732
837
  key: hfzr0kmk
@@ -763,7 +868,12 @@ disableAction:
763
868
  key: xsa3loej
764
869
  ```
765
870
 
766
- Note: In `disableAction`, the action body can be inlined directly rather than referenced by key.
871
+ ### Key Rules
872
+
873
+ - `disableAction` is only valid in **action files**, never in the trigger chain YAML directly
874
+ - Leaf actions inlined inside `disableAction` use the full action body, not key references
875
+ - The original action content is preserved inside the wrapper for easy re-enabling
876
+ - Disabling a leaf action does NOT prevent `followUpAction` chains in the trigger from continuing
767
877
 
768
878
  ---
769
879
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flutterflow-mcp",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "MCP server for the FlutterFlow Project API — AI-assisted FlutterFlow development through Claude and other MCP-compatible clients",
5
5
  "type": "module",
6
6
  "main": "build/index.js",