// Issue detail — human intent (gitea) on the left, machine-derived (pm-state) on the right function IssueScreen({ issue, onBack, onOpenIssue }) { const DS = window.CommiTeaDesignSystem_20e63b; const { Card, Tag, Badge, Button, Icon } = DS; const det = window.CT_DATA.issueDetail[issue.id] || { state: 'triage', assignee: 'Stephen', milestone: 'Beta', body: '', comments: [], lifecycle: [ { stage: 'Diagnosis', event: 'issue opened', when: 'Feb 4 · 10:20', icon: 'circle-dot', done: true }, { stage: 'Triage', event: 'labeled · milestoned Beta', when: 'Feb 5 · 09:12', icon: 'tag', done: true }, { stage: 'Work start', event: 'first branch or commit ref', when: 'pending', icon: 'git-commit-horizontal', done: false }, { stage: 'Deploy', event: 'PR merged', when: 'pending', icon: 'git-merge', done: false }, { stage: 'Complete', event: 'issue closed', when: 'pending', icon: 'circle-check', done: false }, ], forecast: { p80: 'starts wk of Feb 16', note: 'queue position from scheduler' }, blocks: [], blockedBy: [], note: null, }; const stateBadge = { steeping: { tone: 'warn', label: `steeping${issue.days || issue.steeping ? ' ' + (issue.days || issue.steeping) : ''}` }, triage: { tone: 'neutral', label: 'triage' }, review: { tone: 'info', label: 'in review' }, done: { tone: 'ok', label: 'done' }, }[det.state] || { tone: 'neutral', label: det.state }; return (
{/* breadcrumb + header */}

#{issue.id} · stephen/commitea

{issue.title}

{stateBadge.label} {(issue.labels || []).map((l) => )} {det.milestone} {det.assignee}
{/* left: human intent */}
{det.body ? (

{det.body}

) : (

No description was written. I have opinions about that, but I'll keep them warm.

)}
{det.comments.map((c, i) => (
{c.who.split(' ').map((w) => w[0]).join('')}
{c.who} {c.when}

{c.text}

))}
{det.note ? (

{det.note}

) : null}
{/* right: machine-derived sidecar */}
{/* lifecycle */}
{det.lifecycle.map((s, i) => (
{i < det.lifecycle.length - 1 ? : null}
{s.stage}
{s.event}
{s.when}
))}
{/* forecast */}
Forecast
80% {det.forecast.p80}
{det.forecast.note}
{/* dependencies */}
Dependencies
{det.blocks.length === 0 && det.blockedBy.length === 0 ? (
none
) : (
{det.blocks.length ? (
blocks {det.blocks.map((b) => ( ))}
) : null} {det.blockedBy.length ? (
blocked by {det.blockedBy.map((b) => #{b})}
) : null}
)}
{/* provenance note */}

Lives in pm-state. Your repo never sees any of it.

); } Object.assign(window, { IssueScreen });