mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-11 13:24:55 +01:00
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:
1 parent
b0ca1bebc0
commit
59f2c8fc32
76 files changed
+309
-309
No files matched your search
@@ -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");
|
||||
|
||||
@@ -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
@@ -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",
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user