    params.put("TrainingVersion", training_version)
    params.put("GitCommit", get_commit(default=""))
    params.put("GitBranch", get_short_branch(default=""))
    params.put("GitRemote", get_origin(default=""))
  
    # set dongle id
    reg_res = register(show_spinner=True)
    if reg_res:
      dongle_id = reg_res
    else:
 
</s> remove   new_version: bool = cur_hash != upstream_hash
 </s> add   new_version = cur_hash != upstream_hash </s> remove 
 </s> add   connect(uiState(), &UIState::offroadTransition, updateBtn, &QPushButton::setEnabled);

  branchSwitcherBtn = new ButtonControl(tr("Switch Branch"), tr("ENTER"));
  connect(branchSwitcherBtn, &ButtonControl::clicked, [=]() {
    QString branch = InputDialog::getText(tr("Enter name of new branch"), this);
    if (branch.isEmpty()) {
      params.remove("SwitchToBranch");
    } else {
      params.put("SwitchToBranch", branch.toStdString());
    }
    std::system("pkill -1 -f selfdrive.updated");
  });
  connect(uiState(), &UIState::offroadTransition, branchSwitcherBtn, &QPushButton::setEnabled);
  params.put_bool("IsTestedBranch", is_tested_branch())
    params.put("TrainingVersion", training_version)
    params.put("GitCommit", get_commit(default=""))
    params.put("GitBranch", get_short_branch(default=""))
    params.put("GitRemote", get_origin(default=""))
  params.put_bool("IsTestedBranch", is_tested_branch())
  
    # set dongle id
    reg_res = register(show_spinner=True)
    if reg_res:
      dongle_id = reg_res
    else:
keep keep keep add keep keep keep keep keep keep
 updated: add branch switching (#25200)

* switch param

* add to ui

* fix that

* fetch for new branch

Co-authored-by: Comma Device <device@comma.ai> 
selfdrive/manager/manager.py