PAP-57: IA Phase 2 — rename user-facing "Issues" → "Tasks" copy

Copy-only sweep across ui/src: nav (sidebar + mobile), Tasks list page
(headings, breadcrumbs, buttons, empty states, filters, column headers,
toasts, aria-labels), task detail, dialogs, command palette, inbox,
search, dashboards, project/agent/workspace pages, recovery/blocked
notices, and design-guide demos.

Routes stay at /issues; internal symbols (Issue, issueId, queryKeys,
kind: "issue"), API fields, and backend-matched protocol strings
(successful-run-handoff notice bodies) are unchanged. Tests updated to
match the new copy. Developer-only *UxLab/*Perf harness pages left as-is.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
committed 2026-06-05 15:13:29 -07:00
1 parent b0ca1bebc0
commit 59f2c8fc32
76 files changed
+309 -309

No files matched your search

+2 -2
View File
@@ -181,7 +181,7 @@ function formatIssueReferenceLabel(reference: ActivityIssueReference): string {
if (reference.identifier) return reference.identifier;
if (reference.title) return reference.title;
if (reference.id) return reference.id.slice(0, 8);
return "issue";
return "task";
}
function formatChangedEntityLabel(
@@ -276,7 +276,7 @@ function formatIssueUpdatedAction(details: ActivityDetails, options: ActivityFor
}
if (details.assigneeAgentId !== undefined || details.assigneeUserId !== undefined) {
const assigneeName = formatAssigneeName(details, options);
parts.push(assigneeName ? `assigned the issue to ${assigneeName}` : "unassigned the issue");
parts.push(assigneeName ? `assigned the task to ${assigneeName}` : "unassigned the task");
}
if (details.title !== undefined) parts.push("updated the title");
if (details.description !== undefined) parts.push("updated the description");
+1 -1
View File
@@ -1274,7 +1274,7 @@ describe("inbox helpers", () => {
expect(groupInboxWorkItems(items, "none")).toEqual([{ key: "__all", label: null, items }]);
expect(groupInboxWorkItems(items, "type")).toEqual([
{ key: "issue", label: "Issues", items: [items[1], items[2]] },
{ key: "issue", label: "Tasks", items: [items[1], items[2]] },
{ key: "approval", label: "Approvals", items: [items[0]] },
{ key: "failed_run", label: "Failed runs", items: [items[3]] },
{ key: "join_request", label: "Join requests", items: [items[4]] },
+1 -1
View File
@@ -821,7 +821,7 @@ const inboxWorkItemKindOrder: InboxWorkItem["kind"][] = [
];
const inboxWorkItemKindLabels: Record<InboxWorkItem["kind"], string> = {
issue: "Issues",
issue: "Tasks",
approval: "Approvals",
failed_run: "Failed runs",
join_request: "Join requests",
+2 -2
View File
@@ -125,13 +125,13 @@ function inferIssueDetailSource(
if (isIssueDetailSource(state?.issueDetailSource)) return state.issueDetailSource;
if (!breadcrumb) return null;
if (breadcrumb.label === "Inbox" || breadcrumb.href.includes("/inbox")) return "inbox";
if (breadcrumb.label === "Issues" || breadcrumb.href.includes("/issues")) return "issues";
if (breadcrumb.label === "Tasks" || breadcrumb.href.includes("/issues")) return "issues";
return null;
}
function breadcrumbForSource(source: IssueDetailSource): IssueDetailBreadcrumb {
if (source === "inbox") return { label: "Inbox", href: "/inbox" };
return { label: "Issues", href: "/issues" };
return { label: "Tasks", href: "/issues" };
}
export function createIssueDetailLocationState(
+1 -1
View File
@@ -20,7 +20,7 @@ export type RunRetryStateSummary = {
const RETRY_REASON_LABELS: Record<string, string> = {
transient_failure: "Transient failure",
missing_issue_comment: "Missing issue comment",
missing_issue_comment: "Missing task comment",
process_lost: "Process lost",
assignment_recovery: "Assignment recovery",
issue_continuation_needed: "Continuation needed",
+2 -2
View File
@@ -37,11 +37,11 @@ function mapMetadataRow(
case "issue_link": {
const identifier = row.identifier ?? null;
if (!identifier) {
return { kind: "text", label: metadataRowText(row, "Issue"), value: row.title ?? "unknown" };
return { kind: "text", label: metadataRowText(row, "Task"), value: row.title ?? "unknown" };
}
return {
kind: "issue",
label: metadataRowText(row, "Issue"),
label: metadataRowText(row, "Task"),
identifier,
href: `/issues/${identifier}`,
title: row.title ?? undefined,