Auto Gear Rules | Cine Power Planner

Auto Gear Rules Engine

Automate repetitive equipment additions to your projects with configurable automation rules.

Overview

The Auto Gear engine evaluates rules in an IF → THEN format whenever you generate gear for a project. Instead of manually adding batteries, media, matte boxes, or support every time you add a camera, define a rule once and it handles the rest.

Requirements

Functional Requirements

IDRequirementAcceptance CriteriaPrioritySource
REQ-AGR-001The system shall support IF → THEN rules whose triggers each carry their own logic operator (AND, OR, XOR, NOT)Add a second trigger → it gets a logic operator; evaluation runs left to right with no precedence, so the operator on trigger n joins it to the result so farMustautoGearTriggerMatcher.js
REQ-AGR-002The system shall group its trigger types into 5 categories: Project Context, Crew, Device Name, Device Property, Project RequirementsOpen the trigger picker → 5 categories; every entry in TRIGGER_TYPES belongs to one of themMustautoGearSchema.js
REQ-AGR-003The system shall offer per-trigger match modes drawn from MATCH_MODE_LABELS; the modes a trigger allows are declared on that triggerSelect a numeric trigger → threshold modes offered; select a boolean trigger → present/absent offeredMustautoGearSchema.js
REQ-AGR-004The system shall support Add Gear and Remove Gear actionsAction "Add Gear" → item added to list when rule fires; "Remove Gear" → item removed; undo availableMustuseAutoGearRules.js
REQ-AGR-005The system shall support computed (smart) actions that dynamically resolve devices from the catalog at runtimeSmart action with catalog query → resolves matching devices; catalog changes → action results update; no match → skippedMustautoGearComputed.js
REQ-AGR-006The system shall ship factory-default rules covering chargers, cables, camera-package sync and video villageReset to Factory → the stock rule set loads; every stock rule is editable, and deletable like any other ruleMustautoGearDefaults.js
REQ-AGR-007The system shall support global rules (all projects) and per-project rule overridesSet global rule → applies to all projects; override in project → project uses its rule; remove override → reverts to globalMustuseAutoGearRules.js
REQ-AGR-008The system shall support rule toggle on/off, ▲▼ reordering, duplicate, import/export JSON, and deleteToggle → rule active/inactive; ▲▼ → moves one position; duplicate → copy created; export → JSON downloads; delete → removedMustAutoGearRuleCard.jsx
REQ-AGR-009The system shall auto-generate rule names when the name field is left emptyLeave name empty → generateRuleName fills it from trigger + action on saveShouldautoGearNaming.js
REQ-AGR-010The system shall block a save that is missing a name, items, or valid dynamic blocks, and warn about triggers that cannot fireSave with no name → blocked; no items → blocked; no trigger conditions → "this rule will never fire" warningShouldautoGearSchema.js
REQ-AGR-011The system shall provide a dedicated Auto Gear rule editor tab within the project workspaceOpen project → Auto Gear tab → rule editor shows; add/edit/delete rules; rules apply immediately to gear listMustuseAutoGearTab.js

Non-Functional Requirements

IDRequirementMetricPriority
NFR-AUG-001Auto-gear rule evaluation shall complete within 200ms for ≤50 rulesEvaluation timeShould

Data Requirements

  • Global rules: stored in IndexedDB, cloud-synced via syncEngine. A pre-2026 localStorage copy is migrated into IndexedDB on first load and then removed — localStorage is the legacy seed, not the store.
  • Project rules: stored on the project object
  • Schema: v4. v2 introduced compound triggers, add/remove actions and per-trigger match modes; v3 added evaluatePerPackage; v4 added the explicit item mode discriminator (static, perCamera, perProjectArray, perCatalogMatch, perAccessoryCableMatch, derivedFrom, perLookupTable). Migrations run automatically — v1→v2 and v3→v4 both ship.
  • Required fields: a name, plus at least one device item — unless the rule is computed or dynamic, which supply their own items at evaluation time

Constraints & Limits

  • Available to all tiers (Free and Pro) — Auto Gear has no paywall gate
  • There is no cap on triggers per rule. This page listed a maximum of 10 until 2026-09-08; no such limit has ever been enforced anywhere in the app.
  • Computed actions are read-only (factory-defined functions)

Offline Behavior

  • Fully available offline — rule evaluation and gear generation are client-side
  • Rule changes sync to cloud when connectivity is restored

Dependencies

  • Requires: Device Library — auto-gear rules reference catalog items
  • Requires: Projects — rules applied within project context

Key Concepts

ConceptDescription
RuleAn IF → THEN automation that evaluates triggers and produces items
TriggerA condition that must be true to activate the rule
ActionWhether the rule will add or remove gear
Computed ActionA "smart" action that dynamically resolves items from the device catalog at runtime
Logic OperatorCarried by each trigger after the first — AND, OR, XOR or NOT — and applied left to right

How Rules Work (v4 Schema)

Each rule follows a 3-step structure, mirrored by the wizard editor:

Step 1 — Triggers

Triggers define when a rule fires. A rule can hold as many triggers as you need, and each trigger after the first carries its own logic operator:

OperatorMeaning
ANDBoth the result so far and this trigger must match
OREither the result so far or this trigger matches
XORExactly one of the two matches
NOTThe result so far matches and this trigger does not

Evaluation is strictly left to right, with no operator precedence. A AND B OR C is read as (A AND B) OR C, never as A AND (B OR C). If a rule needs the other grouping, split it in two.

The app defines 97 trigger types across five categories. The tables below name every type in the four smaller categories and the most-used ones in Project Requirements, which is by far the largest.

CategoryTypesTrigger types
Project Context9Always, Scenario, Shooting Days, Delivery Resolution, Provider, Provider Category, Has Sub-rental, Has Owned Gear, Has Rental Gear
Crew2Crew Member, Crew Role
Device Name12Camera Body, Monitor, Lens Control, Video Distribution, Wireless Video, Mattebox, Camera Handle, Viewfinder, Tripod Head, Tripod Bowl, Tripod Type, Camera Cage
Device Property16Battery Mount Type, Power Input Type, Video Output Type, Video Input Type, FIZ Connector Type, Camera Weight (kg), Media Slot Type, Monitor Size Category, Max/Min Lens Length, Max/Min Lens Weight, Lens Front Diameter, Lens Brand, Lens Mount, Lens Series
Project Requirements58Recording Resolution, Codec, Sensor Mode, Aspect Ratio, Base Frame Rate, Recording Frame Rate, Slow Motion Enabled, Lens, Filter, Storage Media, Camera Handle, Viewfinder Extension, Camera Support Type … plus 45 monitoring, overlay, vehicle and cart conditions

Match modes. Each trigger declares which of the ten modes it accepts, so the picker only ever offers the ones that make sense for that trigger:

ModeLabelTypical trigger
anyIf any matchScenario, Codec, Battery Mount Type
allIf all matchCamera Body, Lens, Storage Media
gtGreater thanCamera Weight, Recording Frame Rate
gteGreater than or equalLens length / weight bounds
ltLess thanCamera Weight, Shooting Days
lteLess than or equalLens length / weight bounds
eqEqual toLens length / weight bounds
everyEvery X DaysShooting Days
presentIs presentCrew Role, Slow Motion Enabled
absentIs absentCrew Member, Viewfinder Extension

Step 2 — Logic (Action)

Choose what the rule does when triggers match:

  • Add Gear — add devices to the gear list
  • Remove Gear — strip devices from the generated list

Step 3 — Devices

Select the items to add or remove. Each item has:

  • Name — device name (with search/autocomplete against the device catalog)
  • Quantity — how many to add
  • Category — organizational category (Cameras, Grip, Lighting, etc.)
  • Notes — free-text notes

Items are reordered with the ▲ / ▼ buttons on each row. There is no drag-and-drop here — this page described one until 2026-09-08.

Computed (Smart) Actions

Some factory rules use computed actions — functions that query the device catalog at runtime to suggest gear. There are 33 of them; the table lists the general-purpose ones. Twelve more build individual video-village stations (Director 7″/15″, Gaffer 7″, DoP 7″/15″, Combo 15″, iOS, DIT Loop, Sound 5-7″, PIX-E5, PIX-E7) and nine mirror camera-package and project selections into the gear list (syncCameraPackage*, syncProject*).

Computed ActionWhat It Does
suggestChargersMatches charger to battery mount type and count
suggestPowerCablesFinds the correct power cables for each device's power input, with a D-Tap fallback
suggestMonitorCablesMatches SDI/HDMI video cables between camera outputs and monitor inputs, plus power cables and rigging
suggestFizCablesResolves FIZ motor-to-controller data cables including ARRI-specific LBUS/connector logic
suggestPowerPlatesAdds monitoring power plates where they are needed
suggestFocusMonitorSuggests a focus monitor based on the camera and wireless setup
suggestMonitorSunhoodsAdds one sun hood per monitor on the gear list, naming the source monitor in the notes
suggestVideoVillageBatteryPlatesAdds a V-Mount/Gold-Mount plate per video distribution monitor and the focus monitor
suggestMediaReadersSuggests two compatible card readers per recording-media format in the project
suggestDiopterFrame138mmAdds the ARRI K2.0013740 138 mm diopter frame when a 138 mm in-tray diopter is requested
suggestTransportationCarsMirrors the configured vehicles into the Carts and Transportation category

Computed rules show a ⚡ Smart Action badge in the editor and skip the devices step.

suggestBatteries, suggestCameraSupport and suggestVideoDistributionMonitors are gone. This page listed all three until 2026-09-08. Battery counts moved to the dynamic-block rule Smart Power: Batteries (Dynamic); camera support became per-brand logic rules (factory-support-*); the third never existed.

Creating a Rule

  1. Navigate to Settings → Workflow → Auto Gear (for global rules) or open a project's Auto Gear tab (for project-specific rules)
  2. Click Create Rule
  3. Step 1 (Triggers): Select trigger type, choose values, optionally add more triggers and set each one's logic operator
  4. Step 2 (Logic): Choose Add or Remove
  5. Step 3 (Devices): Search the device catalog, add items with quantities
  6. Click Save

💡 Auto-naming: If you leave the rule name empty, it will be auto-generated from the trigger type and action (e.g., "Camera → Add").

🛟 Leaving a part-built rule asks first: once you have edited anything, Escape, the header ×, the backdrop and Cancel all raise a "Discard changes?" confirm rather than throwing the draft away. "Keep editing" returns you to the step you were on with the work intact. A wizard you have not touched still closes straight away.

Dynamic Logic Blocks

Rules can include dynamic logic blocks — conditional IF/THEN statements within a rule's action step that resolve devices at runtime based on project context:

  • Example: IF monitors < 7", add Small Monitor Preferred Battery; IF monitors ≥ 7", add Large Monitor Preferred Battery
  • Visual builder: The Rule Editor wizard (Step 2 — Logic) provides a UI to create and edit dynamic conditions without writing code
  • Smart Power Defaults: The Camera Package editor includes a dedicated section to define preferred batteries for small (< 7") and large (≥ 7") monitors, which dynamic rules reference at evaluation time
  • Contextual labels: In multi-camera setups, dynamically resolved items include the camera package name (e.g., "V-Mount Battery (Cam A)") for clarity

Rule Scope: Global vs Project

ScopeWhere to manageApplies to
GlobalSettings → Workflow → Auto GearAll projects; stored in IndexedDB + cloud synced
Project-specificProject workspace → Auto Gear tabOnly the owning project; stored on the project object
  • Projects inherit global rules by default
  • Switching to project-specific rules overrides globals for that project
  • You can revert a project back to global rules at any time

Example Rules

TriggerOperatorActionItemsUse Case
Camera Body: ARRI Alexa 35Add4× V-Mount Battery, 2× CFexpressStandard camera kit
Scenario: any of [Dolly, Slider, Crane]AddDana Dolly, Slider 3-ft, Sandbags ×4Precision movement
Camera Body: Sony FX6 AND Slow Motion: presentANDAdd4× CFexpress Type A 640GBHigh-speed media
Crew Role: DITAddDIT Cart, Thunderbolt Dock, SSD ShuttleDIT station
Camera Weight > 10 kgAddHeavy-duty Tripod, High-hatHeavy rig support

Presets

The Auto Gear system features a Preset System that lets you save, organize, and load collections of rules (e.g., specific setups for Documentary, Commercial, or Interview shoots).

  • Save Current Rules: Save your current workspace rules as a reusable preset.
  • Load Presets: Apply a saved preset to your current project. This will replace the existing rules with the ones defined in the preset.
  • Manage Presets: Rename, duplicate, or delete your custom presets.
  • Storage: Presets live in your browser's local storage, obfuscated at rest, and sync across your devices via the cloud when sync is enabled.

Use presets to instantly load complex automation rules tailored to your specific workflows instead of rebuilding them from scratch.

Factory Defaults

The platform ships 112 factory rules. The headline ones:

  • ⚡ Smart Charger Suggestion — computed charger matching based on battery mount
  • Smart Power: Batteries (Dynamic) — a dynamic-block rule, not a computed action: 4 batteries per camera, 3 per small monitor, 4 per large monitor, resolved against your Smart Power Defaults
  • ⚡ Smart Power Cable Suggestion — computed cable matching based on device power inputs
  • ⚡ Smart Monitor Cable Suggestion — computed SDI/HDMI video cables for camera ↔ monitor with strict port matching, plus the monitor's power cables and rigging
  • ⚡ Smart FIZ Cable Suggestion — computed motor-to-controller data cables
  • ⚡ Smart Power Plate Suggestion — computed battery plates for accessories
  • Camera support — ~20 per-brand rules (factory-support-*) covering bridge plates, dovetails and heads for Sachtler, Ronford-Baby, O'Connor and the standard/short tripod sets
  • Weather protection — CapIT sets, rain covers, shower caps, Magliner rain cover, Easyup
  • ⚡ Sync rules — mirror the camera package (body, cage, FIZ, batteries, wireless, monitor, hotswap) and the project's filter, media and lens selections into the gear list

You can disable factory defaults at any time in Settings → Workflow → Auto Gear without affecting your custom rules.

Managing Rules

  • Toggle on/off without deleting — useful for seasonal or client-specific setups
  • Reorder with ▲ / ▼ — execution order matches display order. The buttons are hidden while a rule search filter is active, because the visible order is not the stored order then
  • Run Now (▶ on the rule card) — run that single rule against the current project immediately
  • Duplicate a rule as a starting point for a similar setup
  • Import / Export rules as JSON for backup or sharing with colleagues
  • Delete rules you no longer need — factory rules included
  • Reset to Factory to restore original configurations

On a phone or tablet the header keeps only New Rule; Stock Rules, Export, Import and Presets move into the … More button beside it. On a desktop-width screen (1280px and up) all five stay on the row. Settings → Workflow → Auto Gear folds the same way — there Save as Preset, Presets, Reset Defaults, Export and Import are the ones behind … More.

Run Now — running one rule on demand

The ▶ button on a rule card runs only that rule, without generating from every other rule in the list. It always reports what happened: how many items it added, whether everything it adds was already in the gear list, or that it produced nothing.

If the rule's conditions do not match this project — or the rule is switched off — it cannot fire on its own, so the app asks first and then runs it anyway on confirmation. That is the intended way to pull in a rule's kit for a shoot that does not technically meet its triggers. Items land in the gear list exactly as a normal generation would place them, tagged with the rule that added them, so Undo Auto Gear still removes them.

When a rule is marked Context Changed, the same button turns into a rerun (↻): the project changed under a rule that already fired, and re-running brings its output back in line.

Validation & Warnings

Saving is blocked when:

  • The rule has no name — and note this is rarely seen, because an empty name is auto-filled from the trigger and action on save
  • There are no device items — unless the rule is computed or dynamic, which produce their own
  • A dynamic rule has no logic blocks, or a block is missing its source, target or a multiplier > 0
  • A device item has no name

You are warned, but not blocked, when:

  • No trigger conditions are set — "this rule will never fire"
  • A numeric trigger has no threshold value
  • A trigger has no values selected

There is no duplicate-action check and no circular-dependency check. This page promised both until 2026-09-08. Validation runs against one rule at a time, so it cannot see what other rules add, and triggers read project context rather than other rules — a rule cannot trigger a rule.

Data Architecture (Developer Reference)

app/src/data/auto-gear/
├── autoGearSchema.js              # v4 schema: TRIGGER_TYPES, TRIGGER_CATEGORIES, MATCH_MODE_LABELS,
│                                  #   LOGIC_OPERATORS, ITEM_MODES, validation, v1→v2 / v3→v4 migration
├── autoGearSchemaMigration.js     # Migration helpers, split out to avoid an import cycle
├── autoGearEngine.js              # buildProjectContext(), evaluateRules()
├── autoGearEngineExtractors.js    # Context extractors for multi-camera package rule evaluation
├── autoGearTriggerMatcher.js      # matchesTrigger() / matchesRule() — the logic-operator walk
├── autoGearComputed.js            # COMPUTED_ACTIONS registry + runComputedAction()
├── autoGearComputedCables.js      # Monitor, FIZ and power cable suggestions
├── autoGearComputedPower.js       # Power plate suggestions
├── autoGearComputedMattebox.js    # Matte box and filter tray suggestions
├── autoGearComputedMedia.js       # Recording media suggestions
├── autoGearComputedMediaCount.js  # Media quantity from record time
├── autoGearComputedMonitors.js    # Focus monitor and sun hood suggestions
├── autoGearComputedSync.js        # Camera-package and project sync actions
├── autoGearComputedTransportation.js  # Vehicle mirroring
├── autoGearComputedVideoVillage.js    # The twelve video-village station actions
├── autoGearDefaults.js            # getFactoryRules() — composes the three submodules below
├── autoGearDefaultsCatalogHelpers.js  # Catalog extraction helpers + the r() rule builder
├── autoGearDefaultsContext.js     # Context, scenario and weather rules
├── autoGearDefaultsSupport.js     # Tripod, support, device and recording-media rules
├── autoGearDefaultsComputed.js    # Computed and sync rules
├── autoGearDefaultsLabels.js      # COMPUTED_ACTION_LABELS — the UI copy for each smart action
├── autoGearDynamicBlocks.js       # Dynamic logic block evaluation
├── autoGearDynamicBlockAuthoring.js   # v4 block authoring + validation
├── autoGearDeviceOptions.js       # Device name extraction for editor checkbox grids
├── autoGearCategoryMap.js         # Item → gear-list category mapping
├── autoGearCategoryOrder.js       # Category ordering, global and per-project
├── autoGearItemExpansion.js       # Expands an emitted item into its parts
├── autoGearNaming.js              # generateRuleName()
├── autoGearVocabulary.js          # Shared term lists used by matching
├── hardwareDefaults.js            # Smart Power Defaults resolution
├── globalRulesStore.js            # Global rules store (IndexedDB + cloud sync via syncEngine)
└── presetStore.js                 # Preset CRUD (obfuscated localStorage, cloud-synced)

app/src/features/projects/components/workspace/auto-gear/
├── AutoGearTab.jsx                # Thin render shell (rule list, toolbar, actions)
├── useAutoGearTab.js              # Tab state: editing, import/export, presets, confirm dialogs
├── useAutoGearRuleSearch.js       # Rule list search/filter
├── AutoGearRuleCard.jsx           # Rule card: trigger summary, action badge, items, ▲▼, Run Now
├── AutoGearRuleEditor.jsx         # Wizard modal (portal to body)
├── AutoGearRuleSearchInput.jsx    # Search box above the rule list
├── AutoGearHighlight.jsx          # "⚡ RuleName" badge shown on auto-added items in gear list
├── AutoGearPowerDefaults.jsx      # Smart Power Defaults editor
├── AutoGearDefaultCategory.jsx    # Default category picker
├── AutoGearCameraPackageCategories.jsx  # Per-package category assignment
├── ProjectAutoGearCategoryOrder.jsx     # Per-project category order override
├── FactoryRuleCatalog.jsx         # Stock rule browser
├── PresetManagerModal.jsx         # CRUD interface for user-created presets
├── PresetLoadDialog.jsx           # Dialog to select and apply a preset
├── autoGearLabelI18n.js           # Trigger/action label translation
├── components/
│   ├── AutoGearHeaderActions.jsx  # Title row: full button row ≥1280px, "… More" menu below
│   ├── AutoGearBanners.jsx        # Scope and context-changed banners
│   ├── AutoGearExclusions.jsx     # Excluded-item management
│   ├── AutoGearLastGeneration.jsx # Last generation summary
│   └── GenerationSummaryDialog.jsx
└── editor/
    ├── useAutoGearRuleEditor.js   # Wizard state machine (draft, step navigation, CRUD)
    ├── useAutoGearRuleEditorDismiss.js  # Dirty guard: one requestClose behind every exit (#588)
    ├── RuleEditorStepIndicator.jsx      # Step strip (Triggers → Logic → Devices)
    ├── RuleEditorTestResult.jsx         # "Test Rule" outcome banner
    ├── RuleEditorFooter.jsx             # Back/Cancel, Enabled, Test Rule, Next/Save
    ├── QuickAddRuleEditor.jsx     # Single-screen editor for simple rules
    ├── StepTrigger.jsx            # Step 1: compound trigger builder + logic operators
    ├── StepLogic.jsx              # Step 2: action selector + trigger summary
    ├── StepDevices.jsx            # Step 3: item search, selection, ▲▼ reorder
    ├── TriggerRow.jsx             # Single trigger condition row
    ├── CheckboxGrid.jsx           # Multi-select grid with search filter
    ├── LogicBlocksBuilder.jsx     # Dynamic logic block builder
    └── blocks/                    # v4 block editors (simple, advanced, source, target)

app/src/features/projects/hooks/features/
├── useAutoGear.js                 # Core hook: dual-scope (global + per-project), evaluate, generate
├── useAutoGear/useAutoGearRules.js  # Rule CRUD, scope switching, moveRule
└── useRuleManager.js              # Delete/duplicate confirmation flows

app/src/features/settings/
├── SettingsWorkflowTab.jsx        # The Workflow tab that hosts the Auto Gear section
└── SettingsAutoGear.jsx           # Global rules management in Settings

Tips & Best Practices

  1. Start with factory defaults — they cover smart cable and charger matching out of the box
  2. Use compound triggers — combine device + property triggers (e.g., "ARRI AND V-Mount") for precise rules
  3. Mind the left-to-right order — there is no precedence, so put the trigger you want evaluated first, first
  4. Keep rules focused — one trigger → one logical group of items
  5. Test with Generate — use the "Generate Gear" button to preview what rules produce without committing
  6. Export before resetting — rebuilding a complex rule set from scratch is tedious
  7. Share rule sets — export JSON and share with colleagues using the same camera systems

Last Updated: 2026-09-08 Version: 0.790.2