<?xml version='1.0' encoding='utf-8'?>
<ui version="4.0">
 <class>OpsAIConfig</class>
 <widget class="QWidget" name="OpsAIConfig">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>372</width>
    <height>604</height>
   </rect>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <property name="spacing">
    <number>3</number>
   </property>
   <property name="leftMargin">
    <number>3</number>
   </property>
   <property name="topMargin">
    <number>3</number>
   </property>
   <property name="rightMargin">
    <number>3</number>
   </property>
   <property name="bottomMargin">
    <number>3</number>
   </property>
   <item>
    <widget class="QGroupBox" name="aiGroupBox">
     <property name="title">
      <string>AI Guiding Configuration</string>
     </property>
     <property name="toolTip">
      <string>Settings for the experimental AI feed-forward guider. Select the AI algorithm in the Guide options and load a matching trained weights file to activate it.</string>
     </property>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <property name="spacing">
       <number>6</number>
      </property>
      <item>
       <widget class="QLabel" name="label">
        <property name="text">
         <string>AI Guiding configuration. To train the AI model or load trained weights for your mount, use the AI Guiding button (below Clear Calibration) on the main Guide tab.</string>
        </property>
        <property name="wordWrap">
         <bool>true</bool>
        </property>
       </widget>
      </item>
      <item><layout class="QHBoxLayout" name="horizontalLayout_weights"><item><widget class="QLabel" name="label_weights"><property name="text"><string>Weights File:</string></property><property name="toolTip"><string>Trained AI model weights (JSON). Generate them with the AI Guiding Assistant or via EkosLive Cloud training. The file must match your mount type and current guide settings (exposure, binning, gains) or it is rejected when guiding starts.</string></property></widget></item><item><widget class="KUrlRequester" name="kcfg_AIGuiderWeightsFile"><property name="toolTip"><string>Trained AI model weights (JSON). Generate them with the AI Guiding Assistant or via EkosLive Cloud training. The file must match your mount type and current guide settings (exposure, binning, gains) or it is rejected when guiding starts.</string></property></widget></item></layout></item>
      <item><layout class="QHBoxLayout" name="horizontalLayout_gain"><item><widget class="QLabel" name="label_gain"><property name="text"><string>AI Prediction Gain:</string></property><property name="toolTip"><string>How strongly the AI feed-forward prediction is blended into each guide pulse: 0.0 = AI ignored (standard guiding only), 1.0 = full AI prediction. Lower values are more conservative.</string></property></widget></item><item><widget class="QDoubleSpinBox" name="kcfg_AIPredictionGain"><property name="toolTip"><string>How strongly the AI feed-forward prediction is blended into each guide pulse: 0.0 = AI ignored (standard guiding only), 1.0 = full AI prediction. Lower values are more conservative.</string></property><property name="decimals"><number>2</number></property><property name="minimum"><double>0.0</double></property><property name="maximum"><double>1.0</double></property><property name="singleStep"><double>0.05</double></property></widget></item></layout></item>
      <item>
       <widget class="QCheckBox" name="kcfg_AIProportionalBackoff">
        <property name="text">
         <string>Scale Down Proportional Gain During AI Correction</string>
        </property>
        <property name="toolTip">
         <string>Dynamically reduce the standard P-controller response when the AI feed-forward is highly confident to prevent constructive interference and oscillation.</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QCheckBox" name="kcfg_AIShadowMode">
        <property name="visible">
         <bool>false</bool>
        </property>
        <property name="text">
         <string>Enable Shadow Mode (log AI predictions without applying them)</string>
        </property>
        <property name="toolTip">
         <string>Runs the AI model silently alongside the selected standard guiding algorithm. Predictions are logged to the AI debug CSV but never blended into guide pulses. Use this to evaluate AI model quality before enabling full AI guiding.</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QCheckBox" name="kcfg_AIPIDAutoTune">
        <property name="text">
         <string>PID Auto-Tune (Step-Response Gain Calibration)</string>
        </property>
        <property name="toolTip">
         <string>Sends known pulses at the start of the protocol and measures the mount's step response to derive a base RA/DEC guiding gain for any mount type. The measured gain is applied and locked for the rest of the session; the current gain is kept if the responses do not pass the consistency checks. Adds roughly 20 minutes to the protocol; enabled by default.</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QCheckBox" name="kcfg_AIDarkGuiding">
        <property name="text">
         <string>Enable Predictive Dark Guiding</string>
        </property>
        <property name="toolTip">
         <string>Allows the AI Guider to continue emitting feed-forward pulses during gaps in guide star measurements (e.g., during dither settling, autofocuser runs, or camera downloads) by extrapolating the physical periodic error forward in time.</string>
        </property>
       </widget>
      </item>
      <item>
       <layout class="QHBoxLayout" name="horizontalLayout_darkGuidingInterval">
        <item>
         <widget class="QLabel" name="label_darkGuidingInterval">
          <property name="text">
           <string>Dark Guiding Interval (s):</string>
          </property>
          <property name="toolTip">
           <string>Seconds between predicted feed-forward pulses when there is no guide-star measurement (dither settling, autofocus runs, camera downloads). Only used when Predictive Dark Guiding is enabled.</string>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QDoubleSpinBox" name="kcfg_AIDarkGuidingInterval">
          <property name="toolTip">
           <string>Seconds between predicted feed-forward pulses when there is no guide-star measurement (dither settling, autofocus runs, camera downloads). Only used when Predictive Dark Guiding is enabled.</string>
          </property>
          <property name="decimals">
           <number>1</number>
          </property>
          <property name="minimum">
           <double>0.1</double>
          </property>
          <property name="maximum">
           <double>10.0</double>
          </property>
          <property name="singleStep">
           <double>0.1</double>
          </property>
         </widget>
        </item>
       </layout>
      </item>
      <item>
       <spacer name="verticalSpacer">
        <property name="orientation">
         <enum>Qt::Vertical</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
          <height>40</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources />
 <connections />
<customwidgets><customwidget><class>KUrlRequester</class><extends>QWidget</extends><header>kurlrequester.h</header></customwidget></customwidgets></ui>