// Home (Recent) — feed of sessions across tools/hosts const HomeScreen = () => { const { go, cursor, setCursor } = useRouter(); const [filters, setFilters] = React.useState({ tool: 'any', host: 'any', since: '30d', }); const [activeFilters, setActiveFilters] = React.useState(['tool', 'host', 'since']); const removeFilter = (k) => setActiveFilters(fs => fs.filter(f => f !== k)); const addFilter = (k) => setActiveFilters(fs => fs.includes(k) ? fs : [...fs, k]); const setF = (k, v) => setFilters(f => ({ ...f, [k]: v })); const rows = SESSIONS.filter(s => { if (filters.tool !== 'any' && activeFilters.includes('tool') && s.tool !== filters.tool) return false; if (filters.host !== 'any' && activeFilters.includes('host') && s.host !== filters.host) return false; return true; }); const cols = '120px 110px 70px 1fr 50px 60px 90px'; return ( <>
{activeFilters.map(k => ( setF(k, v)} onRemove={() => removeFilter(k)} /> ))} !activeFilters.includes(d))} onAdd={addFilter} /> turns/day 2,138 · 30d
whentoolhostsession · cwd turnstokturns/h
{rows.length === 0 ? ( ) : rows.map((s, i) => (
go({ name: 'session', id: s.id })}> {s.when} {s.q} { e.stopPropagation(); go({ name: 'project', cwd: s.cwd }); }}> {s.cwd} {s.turns} {s.tok}
))}
); }; Object.assign(window, { HomeScreen });