summaryrefslogtreecommitdiff
path: root/makima/src/daemon
diff options
context:
space:
mode:
Diffstat (limited to 'makima/src/daemon')
-rw-r--r--makima/src/daemon/task/manager.rs29
-rw-r--r--makima/src/daemon/ws/protocol.rs4
2 files changed, 29 insertions, 4 deletions
diff --git a/makima/src/daemon/task/manager.rs b/makima/src/daemon/task/manager.rs
index 1e05978..dd133a2 100644
--- a/makima/src/daemon/task/manager.rs
+++ b/makima/src/daemon/task/manager.rs
@@ -2021,7 +2021,7 @@ impl TaskManager {
tracing::info!(
task_id = %task_id,
title = %title,
- base_branch = %base_branch,
+ base_branch = ?base_branch,
branch = %branch,
"Creating pull request"
);
@@ -3136,7 +3136,7 @@ impl TaskManager {
task_id: Uuid,
title: String,
body: Option<String>,
- base_branch: String,
+ base_branch: Option<String>,
branch: String,
) -> Result<(), DaemonError> {
// Get worktree path - this works even for completed tasks by scanning worktrees directory
@@ -3156,6 +3156,31 @@ impl TaskManager {
}
};
+ // Detect base branch if not provided
+ let base_branch = match base_branch {
+ Some(b) => b,
+ None => {
+ match self.worktree_manager.detect_default_branch(&worktree_path).await {
+ Ok(detected) => {
+ tracing::info!(task_id = %task_id, detected_branch = %detected, "Auto-detected base branch");
+ detected
+ }
+ Err(e) => {
+ tracing::error!(task_id = %task_id, error = %e, "Failed to detect default branch");
+ let msg = DaemonMessage::PRCreated {
+ task_id,
+ success: false,
+ message: format!("Failed to detect default branch: {}", e),
+ pr_url: None,
+ pr_number: None,
+ };
+ let _ = self.ws_tx.send(msg).await;
+ return Ok(());
+ }
+ }
+ }
+ };
+
tracing::info!(
task_id = %task_id,
base_branch = %base_branch,
diff --git a/makima/src/daemon/ws/protocol.rs b/makima/src/daemon/ws/protocol.rs
index e971798..c396961 100644
--- a/makima/src/daemon/ws/protocol.rs
+++ b/makima/src/daemon/ws/protocol.rs
@@ -693,9 +693,9 @@ pub enum DaemonCommand {
task_id: Uuid,
title: String,
body: Option<String>,
- /// Base branch for the PR.
+ /// Base branch for the PR. If None, will be auto-detected from the repo.
#[serde(rename = "baseBranch")]
- base_branch: String,
+ base_branch: Option<String>,
/// Source branch name to push and create PR from.
branch: String,
},