claude-teammate 0.1.201 → 0.1.202

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-teammate",
3
- "version": "0.1.201",
3
+ "version": "0.1.202",
4
4
  "description": "CLI bootstrapper for Claude Teammate.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1682,9 +1682,9 @@ tr.clickable:hover td { background:var(--sky-bg) !important; }
1682
1682
  <div class="card">
1683
1683
  <div class="table-wrap">
1684
1684
  <table>
1685
- <thead><tr><th>Repository</th><th>Branch</th><th>Issues</th><th>PRs</th></tr></thead>
1685
+ <thead><tr><th>Repository</th><th>Working Branch</th><th>PR Target</th><th>Epics</th><th>Issues</th><th>PRs</th></tr></thead>
1686
1686
  <tbody id="repos-tbody">
1687
- <tr><td colspan="4"><div class="empty"><div class="empty-text">Loading…</div></div></td></tr>
1687
+ <tr><td colspan="6"><div class="empty"><div class="empty-text">Loading…</div></div></td></tr>
1688
1688
  </tbody>
1689
1689
  </table>
1690
1690
  </div>
@@ -2278,28 +2278,39 @@ function renderRepos() {
2278
2278
  const draftPrs = cachedStatus.state?.draftPrs || [];
2279
2279
 
2280
2280
  const repoMap = new Map();
2281
+ function getOrCreate(url) {
2282
+ if (!repoMap.has(url)) repoMap.set(url, { url, workingBranch: "", prTarget: false, epicKeys: new Set(), issues: [], prs: [] });
2283
+ return repoMap.get(url);
2284
+ }
2285
+
2281
2286
  issues.forEach(i => {
2282
- (i.repoUrls || []).forEach(url => {
2283
- if (!repoMap.has(url)) repoMap.set(url, { url, issues: [], prs: [] });
2284
- repoMap.get(url).issues.push(i);
2287
+ const configs = (i.repoConfigs && i.repoConfigs.length > 0)
2288
+ ? i.repoConfigs
2289
+ : (i.repoUrls || []).map(url => ({ url, working_branch: "" }));
2290
+ configs.forEach(cfg => {
2291
+ const entry = getOrCreate(cfg.url);
2292
+ if (cfg.working_branch) entry.workingBranch = cfg.working_branch;
2293
+ if (i.prRepoUrl && i.prRepoUrl === cfg.url) entry.prTarget = true;
2294
+ entry.epicKeys.add(i.epicKey || i.key);
2295
+ entry.issues.push(i);
2285
2296
  });
2286
2297
  });
2287
2298
  draftPrs.forEach(p => {
2288
- if (!repoMap.has(p.repoUrl)) repoMap.set(p.repoUrl, { url: p.repoUrl, issues: [], prs: [] });
2289
- repoMap.get(p.repoUrl).prs.push(p);
2299
+ const entry = getOrCreate(p.repoUrl);
2300
+ entry.prs.push(p);
2290
2301
  });
2291
2302
 
2292
2303
  if (!repoMap.size) {
2293
- tbody.innerHTML = `<tr><td colspan="4"><div class="empty"><div class="empty-text">No repositories</div></div></td></tr>`;
2304
+ tbody.innerHTML = `<tr><td colspan="6"><div class="empty"><div class="empty-text">No repositories</div></div></td></tr>`;
2294
2305
  return;
2295
2306
  }
2296
2307
 
2297
2308
  tbody.innerHTML = [...repoMap.values()].map(r => `
2298
2309
  <tr>
2299
- <td><a href="${esc(r.url)}" target="_blank" style="font-family:var(--f-mono);font-size:.78rem">${esc(r.url.replace("https://github.com/",""))}</a></td>
2300
- <td style="font-family:var(--f-mono);font-size:.72rem;color:var(--ink-3)">
2301
- ${r.prs.map(p => esc(p.branchName)).filter(Boolean).join("<br>") || "—"}
2302
- </td>
2310
+ <td><a href="${esc(r.url)}" target="_blank" style="font-family:var(--f-mono);font-size:.78rem">${esc(r.url.replace("https://github.com/","").replace("https://gitlab.com/",""))}</a></td>
2311
+ <td style="font-family:var(--f-mono);font-size:.72rem;color:var(--ink-3)">${r.workingBranch ? esc(r.workingBranch) : "—"}</td>
2312
+ <td style="text-align:center;font-size:.85rem">${r.prTarget ? "" : "—"}</td>
2313
+ <td style="font-size:.72rem">${[...r.epicKeys].map(k => `<span style="background:var(--surface-2);border-radius:4px;padding:1px 5px;font-family:var(--f-mono);white-space:nowrap">${esc(k)}</span>`).join(" ")}</td>
2303
2314
  <td style="font-family:var(--f-mono);font-size:.75rem">${r.issues.length}</td>
2304
2315
  <td>${r.prs.map(p => `<a href="${esc(p.pullRequestUrl)}" target="_blank" style="font-family:var(--f-mono);font-size:.75rem">#${p.pullRequestNumber}</a>`).join(" ") || "—"}</td>
2305
2316
  </tr>
@@ -41,6 +41,7 @@ export function buildIssueState(issue, epicMemory, issueMemory, claudeDecision,
41
41
 
42
42
  return {
43
43
  key: issue.key,
44
+ epicKey: epicMemory.jira_key || issue.key,
44
45
  status: issue.status,
45
46
  labels: normalizeLabels(issue.labels),
46
47
  projectKey: issue.projectKey,
@@ -49,6 +50,11 @@ export function buildIssueState(issue, epicMemory, issueMemory, claudeDecision,
49
50
  nextAction: live.nextAction,
50
51
  repoCount: epicMemory.repos.length,
51
52
  repoUrls,
53
+ repoConfigs: epicMemory.repos.map((repo) => ({
54
+ url: repo.url,
55
+ working_branch: repo.working_branch || ""
56
+ })),
57
+ prRepoUrl: epicMemory.pr_repo_url || "",
52
58
  localRepoPaths,
53
59
  githubIssueUrls,
54
60
  claudeDecision,