From 56143cb208ee9558503dd6369dad193b29fb6c86 Mon Sep 17 00:00:00 2001 From: Lauren ten Hoor Date: Tue, 10 Feb 2026 01:11:56 +0800 Subject: [PATCH] feat: include ticket URL in task pickup announcements (#22) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add issue URL to announcement in dispatch.ts - Add issueUrl field to workerStart notification event - Update notification message to include URL - Both automated notifications and manual announcements now show full ticket URL Example output: šŸ”§ Spawning DEV (medior) for #7: Create TODO.md... šŸ”— https://github.com/laurentenhoor/devclaw/issues/7 --- lib/dispatch.ts | 2 +- lib/notify.ts | 3 ++- lib/tools/task-pickup.ts | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/dispatch.ts b/lib/dispatch.ts index 62c6cdc..374f254 100644 --- a/lib/dispatch.ts +++ b/lib/dispatch.ts @@ -266,7 +266,7 @@ export async function dispatchTask( ? "šŸ”" : "šŸ”§"; const actionVerb = sessionAction === "spawn" ? "Spawning" : "Sending"; - const announcement = `${emoji} ${actionVerb} ${role.toUpperCase()} (${modelAlias}) for #${issueId}: ${issueTitle}`; + const announcement = `${emoji} ${actionVerb} ${role.toUpperCase()} (${modelAlias}) for #${issueId}: ${issueTitle}\nšŸ”— ${issueUrl}`; return { sessionAction, diff --git a/lib/notify.ts b/lib/notify.ts index 57624a0..4f6ab05 100644 --- a/lib/notify.ts +++ b/lib/notify.ts @@ -31,6 +31,7 @@ export type NotifyEvent = groupId: string; issueId: number; issueTitle: string; + issueUrl: string; role: "dev" | "qa"; model: string; sessionAction: "spawn" | "send"; @@ -66,7 +67,7 @@ function buildMessage(event: NotifyEvent): string { switch (event.type) { case "workerStart": { const action = event.sessionAction === "spawn" ? "šŸš€ Started" : "ā–¶ļø Resumed"; - return `${action} ${event.role.toUpperCase()} (${event.model}) on #${event.issueId}: ${event.issueTitle}`; + return `${action} ${event.role.toUpperCase()} (${event.model}) on #${event.issueId}: ${event.issueTitle}\nšŸ”— ${event.issueUrl}`; } case "workerComplete": { diff --git a/lib/tools/task-pickup.ts b/lib/tools/task-pickup.ts index fc74897..02468e7 100644 --- a/lib/tools/task-pickup.ts +++ b/lib/tools/task-pickup.ts @@ -322,6 +322,7 @@ export function createTaskPickupTool(api: OpenClawPluginApi) { groupId, issueId: issue.iid, issueTitle: issue.title, + issueUrl: issue.web_url, role, model: dispatchResult.modelAlias, sessionAction: dispatchResult.sessionAction,