summaryrefslogtreecommitdiff
path: root/makima/src/daemon/task/manager.rs
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-29 16:43:07 +0000
committersoryu <soryu@soryu.co>2026-01-29 17:23:03 +0000
commit4f1d67797dd56046665b772702b6b38fda9aa039 (patch)
tree09bd946399987742c06076862daa5204b4f13245 /makima/src/daemon/task/manager.rs
parentaef9c46c5608c8e455d49d31d790a4cc483706b9 (diff)
downloadsoryu-4f1d67797dd56046665b772702b6b38fda9aa039.tar.gz
soryu-4f1d67797dd56046665b772702b6b38fda9aa039.zip
Add autodetection of master for PR creation
Diffstat (limited to 'makima/src/daemon/task/manager.rs')
-rw-r--r--makima/src/daemon/task/manager.rs29
1 files changed, 27 insertions, 2 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,