paseo-follow-up 0.3.5 → 0.3.6

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.
@@ -38,7 +38,7 @@ export function PrRow({ pr, theme, onOpen, compact, workspace, browserReady }: {
38
38
  return <View style={{ paddingVertical: compact ? 6 : 5, gap: 3, borderTopWidth: 1, borderColor: theme.colors.border }}><View style={{ flexDirection: "row", alignItems: "center" }}><Pressable accessibilityRole="link" accessibilityLabel={`Open ${pr.repo} pull request ${pr.number} in Graphite: ${s?.title ?? pr.stack}, ${status}`} onPress={() => onOpen(graphitePrUrl(pr))} style={({ pressed }) => ({ flex: 1, backgroundColor: pressed ? theme.colors.surface1 : "transparent", minHeight: compact ? 44 : 36, justifyContent: "center" })}>
39
39
  <View style={{ flexDirection: "row", alignItems: "flex-start", gap: 8 }}><View style={{ width: 88, gap: 2 }}><View style={{ flexDirection: "row", alignItems: "center", gap: 5 }}><Icon name={s?.state === "MERGED" ? "GitMerge" : "GitPullRequest"} size={14} color={color} /><Text style={{ color: theme.colors.foregroundMuted, fontSize: 12, lineHeight: 16 }}>#{pr.number}</Text></View><Text style={{ fontSize: 11, lineHeight: 16, color }}>{status}</Text></View><Text numberOfLines={details ? undefined : 2} style={{ color: theme.colors.foreground, fontSize: 13, lineHeight: 18, flex: 1 }}>{s?.title ?? `${pr.repo} pull request`}</Text></View>
40
40
  </Pressable><Pressable accessibilityRole="button" accessibilityLabel={`${details ? "Hide" : "Show"} details for PR ${pr.number}`} aria-expanded={details} accessibilityState={{ expanded: details }} onPress={() => setDetails(!details)} style={{ minHeight: compact ? 44 : 36, width: compact ? 44 : 36, justifyContent: "center", alignItems: "center" }}><Icon name={details ? "ChevronUp" : "ChevronDown"} size={12} color={theme.colors.foregroundMuted} /></Pressable></View>
41
- {details && <View style={{ gap: 4 }}><Text style={{ fontSize: 12, color: theme.colors.foregroundMuted }}>{pr.repo} · {s?.state === "MERGED" ? "Merged" : status}</Text>{pr.error && <Text style={{ fontSize: 12, color: theme.colors.statusWarning }}>{pr.error}</Text>}{!!s?.failedChecks.length && <Text style={{ fontSize: 12, lineHeight: 18, color: theme.colors.statusWarning }}>Required checks failed: {s.failedChecks.join(", ")}</Text>}{!!s?.otherFailedChecks?.length && <Text style={{ fontSize: 12, lineHeight: 18, color: theme.colors.statusWarning }}>Other checks failed: {s.otherFailedChecks.join(", ")}</Text>}{s?.reviewers?.complete && [...s.reviewers.requested, ...s.reviewers.teams, ...s.reviewers.reviewed].length > 0 && <Text style={{ fontSize: 12, lineHeight: 18, color: theme.colors.foregroundMuted }}>Reviewers: {[...new Set([...s.reviewers.requested, ...s.reviewers.teams.map(team => `team/${team}`), ...s.reviewers.reviewed])].join(", ")}</Text>}{s?.deployment && <Text style={{ fontSize: 12, lineHeight: 18, color: theme.colors.foregroundMuted }}>{s.deployment.evidence}</Text>}</View>}
41
+ {details && <View style={{ gap: 4 }}><Text style={{ fontSize: 12, color: theme.colors.foregroundMuted }}>{pr.repo} · {s?.state === "MERGED" ? "Merged" : status}</Text>{pr.error && <Text style={{ fontSize: 12, color: theme.colors.statusWarning }}>{pr.error}</Text>}{!!s?.failedChecks.length && <Text style={{ fontSize: 12, lineHeight: 18, color: theme.colors.statusWarning }}>Required checks failed: {s.failedChecks.join(", ")}</Text>}{!!s?.otherFailedChecks?.length && <Text style={{ fontSize: 12, lineHeight: 18, color: theme.colors.statusWarning }}>Optional checks failed (not required for merge): {s.otherFailedChecks.join(", ")}</Text>}{s?.reviewers?.complete && [...s.reviewers.requested, ...s.reviewers.teams, ...s.reviewers.reviewed].length > 0 && <Text style={{ fontSize: 12, lineHeight: 18, color: theme.colors.foregroundMuted }}>Reviewers: {[...new Set([...s.reviewers.requested, ...s.reviewers.teams.map(team => `team/${team}`), ...s.reviewers.reviewed])].join(", ")}</Text>}{s?.deployment && <Text style={{ fontSize: 12, lineHeight: 18, color: theme.colors.foregroundMuted }}>{s.deployment.evidence}</Text>}</View>}
42
42
  {s?.state === "OPEN" && <PrControls browserReady={browserReady} pr={pr} workspace={workspace} theme={theme} compact={compact} />}
43
43
  </View>;
44
44
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "paseo-follow-up",
3
3
  "private": false,
4
- "version": "0.3.5",
4
+ "version": "0.3.6",
5
5
  "description": "Track workspace pull requests, queue follow-up work, and verify completion in Paseo.",
6
6
  "type": "module",
7
7
  "files": [
@@ -10,7 +10,8 @@ export function prPresentation(pr: Pr): { label: string; tone: "merged" | "appro
10
10
  if (s.state === "CLOSED") return { label: "Closed", tone: "neutral" };
11
11
  if (s.conflict) return { label: "Conflicts", tone: "warning" };
12
12
  if (s.threads.length) return { label: `${s.threads.length} review threads`, tone: "warning" };
13
- if (s.failedChecks.length || s.otherFailedChecks?.length) return { label: "Checks failed", tone: "warning" };
13
+ if (s.failedChecks.length) return { label: "Checks failed", tone: "warning" };
14
+ if (s.otherFailedChecks?.length) return { label: s.otherFailedChecks.length === 1 ? "Optional check failed" : "Optional checks failed", tone: "warning" };
14
15
  if (s.draft) return { label: "Draft", tone: "neutral" };
15
16
  if (s.checksPending) return { label: "Checks running", tone: "neutral" };
16
17
  return s.reviewDecision === "APPROVED" ? { label: "Approved", tone: "approved" } : { label: "In review", tone: "neutral" };