feat(ui): project details panel + compact/responsive cards; rename Sentinel→Yerin (red); migrate research_notes

- Project card expands to show description + status + dates (was only the research stub)
- Cards compacted + responsive (actions wrap on narrow)
- Sentinel renamed Yerin everywhere (#/yerin, red 'Sage of the Endless Sword' theme + red sidebar dot)
- void1 importer now carries research_notes/last_researched_at (was dropped)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
root
2026-06-05 00:19:16 +10:00
parent bf58b624a3
commit dbf84559de
7 changed files with 60 additions and 7 deletions

View File

@@ -51,6 +51,24 @@ export function projectCard(p, o) {
if (open) {
const panel = el('div', { class: 'proj-panel' });
// ---- Details ----
panel.appendChild(el('div', { class: 'proj-section-h' }, 'Details'));
const det = el('div', { class: 'proj-details' });
det.appendChild(p.description
? el('div', { class: 'proj-detail-desc' }, p.description)
: el('div', { class: 'muted', style: { fontSize: '12px' } }, 'No description yet — Edit to add one.'));
const dl = el('dl', { class: 'proj-dl' });
const addDL = (k, v) => { if (v) { dl.appendChild(el('dt', {}, k)); dl.appendChild(el('dd', {}, v)); } };
addDL('Status', p.status);
addDL('Created', p.created_at ? new Date(p.created_at).toLocaleDateString() : null);
addDL('Updated', p.updated_at ? `${new Date(p.updated_at).toLocaleDateString()} (${ago(p.updated_at)})` : null);
if (p.started_at) addDL('Started', new Date(p.started_at).toLocaleDateString());
if (p.completed_at) addDL('Completed', new Date(p.completed_at).toLocaleDateString());
det.appendChild(dl);
panel.appendChild(det);
// ---- Eithan research ----
panel.appendChild(el('div', { class: 'proj-section-h' }, 'Eithan research' + (p.last_researched_at ? ` · ${ago(p.last_researched_at)}` : '')));
if (busy) panel.appendChild(el('div', { class: 'muted' }, "Queued for Eithan — he'll fill this in once the agent ships."));
else if (p.research_notes) { const n = el('div', { class: 'md-preview' }); n.innerHTML = renderMarkdown(p.research_notes); panel.appendChild(n); }

View File

@@ -90,7 +90,7 @@ export function renderSidebar(root) {
),
el('div', { class: 'sb-section' },
el('div', { class: 'sb-title' }, 'Agents'),
navItem('Sentinel', '/sentinel', { dot: 'ok' }),
navItem('Yerin', '/yerin', { dot: 'yerin' }),
navItem('Little Blue', '/little-blue', { dot: 'lb' })
),
el('div', { class: 'sb-section' },