fix: use issue shortname (identifier) in activity feed instead of title
Activity feed and dashboard now display issue identifiers like PAP-32 instead of issue titles for entity names. Also uses identifier-based URLs for issue links in the activity feed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -66,9 +66,9 @@ function formatVerb(action: string, details?: Record<string, unknown> | null): s
|
|||||||
return ACTION_VERBS[action] ?? action.replace(/[._]/g, " ");
|
return ACTION_VERBS[action] ?? action.replace(/[._]/g, " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
function entityLink(entityType: string, entityId: string): string | null {
|
function entityLink(entityType: string, entityId: string, name?: string | null): string | null {
|
||||||
switch (entityType) {
|
switch (entityType) {
|
||||||
case "issue": return `/issues/${entityId}`;
|
case "issue": return `/issues/${name ?? entityId}`;
|
||||||
case "agent": return `/agents/${entityId}`;
|
case "agent": return `/agents/${entityId}`;
|
||||||
case "project": return `/projects/${entityId}`;
|
case "project": return `/projects/${entityId}`;
|
||||||
case "goal": return `/goals/${entityId}`;
|
case "goal": return `/goals/${entityId}`;
|
||||||
@@ -100,7 +100,7 @@ export function ActivityRow({ event, agentMap, entityNameMap, className }: Activ
|
|||||||
|
|
||||||
const link = isHeartbeatEvent && heartbeatAgentId
|
const link = isHeartbeatEvent && heartbeatAgentId
|
||||||
? `/agents/${heartbeatAgentId}/runs/${event.entityId}`
|
? `/agents/${heartbeatAgentId}/runs/${event.entityId}`
|
||||||
: entityLink(event.entityType, event.entityId);
|
: entityLink(event.entityType, event.entityId, name);
|
||||||
|
|
||||||
const actor = event.actorType === "agent" ? agentMap.get(event.actorId) : null;
|
const actor = event.actorType === "agent" ? agentMap.get(event.actorId) : null;
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ export function Activity() {
|
|||||||
|
|
||||||
const entityNameMap = useMemo(() => {
|
const entityNameMap = useMemo(() => {
|
||||||
const map = new Map<string, string>();
|
const map = new Map<string, string>();
|
||||||
for (const i of issues ?? []) map.set(`issue:${i.id}`, i.title);
|
for (const i of issues ?? []) map.set(`issue:${i.id}`, i.identifier ?? i.id.slice(0, 8));
|
||||||
for (const a of agents ?? []) map.set(`agent:${a.id}`, a.name);
|
for (const a of agents ?? []) map.set(`agent:${a.id}`, a.name);
|
||||||
for (const p of projects ?? []) map.set(`project:${p.id}`, p.name);
|
for (const p of projects ?? []) map.set(`project:${p.id}`, p.name);
|
||||||
for (const g of goals ?? []) map.set(`goal:${g.id}`, g.title);
|
for (const g of goals ?? []) map.set(`goal:${g.id}`, g.title);
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ export function Dashboard() {
|
|||||||
|
|
||||||
const entityNameMap = useMemo(() => {
|
const entityNameMap = useMemo(() => {
|
||||||
const map = new Map<string, string>();
|
const map = new Map<string, string>();
|
||||||
for (const i of issues ?? []) map.set(`issue:${i.id}`, i.title);
|
for (const i of issues ?? []) map.set(`issue:${i.id}`, i.identifier ?? i.id.slice(0, 8));
|
||||||
for (const a of agents ?? []) map.set(`agent:${a.id}`, a.name);
|
for (const a of agents ?? []) map.set(`agent:${a.id}`, a.name);
|
||||||
for (const p of projects ?? []) map.set(`project:${p.id}`, p.name);
|
for (const p of projects ?? []) map.set(`project:${p.id}`, p.name);
|
||||||
return map;
|
return map;
|
||||||
|
|||||||
Reference in New Issue
Block a user