diff --git a/.stoneforge/.dashboard-opened b/.stoneforge/.dashboard-opened index 7815607..1314f96 100644 --- a/.stoneforge/.dashboard-opened +++ b/.stoneforge/.dashboard-opened @@ -1,2 +1,2 @@ -130078 -1779618546909 +262629 +1779624255076 diff --git a/.stoneforge/sync/elements.jsonl b/.stoneforge/sync/elements.jsonl index fe00060..f3529db 100644 --- a/.stoneforge/sync/elements.jsonl +++ b/.stoneforge/sync/elements.jsonl @@ -1,14 +1,18 @@ {"id":"el-0000","type":"entity","createdAt":"2026-05-24T09:34:02.845Z","updatedAt":"2026-05-24T09:34:02.845Z","createdBy":"el-0000","tags":[],"metadata":{},"name":"operator","entityType":"human"} -{"id":"el-2jua","type":"entity","createdAt":"2026-05-24T09:44:24.375Z","updatedAt":"2026-05-24T10:16:57.542Z","createdBy":"el-0000","tags":[],"metadata":{"agent":{"agentRole":"director","sessionStatus":"running","provider":"opencode","model":"openai/gpt-5.5","channelId":"el-2vpd","lastActivityAt":"2026-05-24T10:16:57.540Z","sessionHistory":[{"id":"session-mpjlz79g-0001-9tz4","providerSessionId":"ses_1a689e409ffea1AaKRRY2e7GYP","status":"terminated","workingDirectory":"/home/alex/projects/headquarter","startedAt":"2026-05-24T10:02:20.170Z","endedAt":"2026-05-24T10:16:54.212Z"},{"id":"session-mpjlckjf-0001-cifg","status":"terminated","workingDirectory":"/home/alex/projects/headquarter","startedAt":"2026-05-24T09:44:44.286Z","endedAt":"2026-05-24T09:47:52.845Z"}]}},"name":"director","entityType":"agent"} -{"id":"el-5x1t","type":"entity","createdAt":"2026-05-24T09:44:28.369Z","updatedAt":"2026-05-24T09:44:28.369Z","createdBy":"el-0000","tags":[],"metadata":{"agent":{"agentRole":"worker","workerMode":"ephemeral","sessionStatus":"idle","provider":"opencode","model":"moonshotai/kimi-k2.6","channelId":"el-1x51"}},"name":"e-worker-1","entityType":"agent"} -{"id":"el-7z8w","type":"entity","createdAt":"2026-05-24T09:44:33.965Z","updatedAt":"2026-05-24T10:09:33.794Z","createdBy":"el-0000","tags":[],"metadata":{"agent":{"agentRole":"worker","workerMode":"ephemeral","sessionStatus":"idle","provider":"opencode","model":"moonshotai/kimi-k2.6","channelId":"el-4uqv","lastActivityAt":"2026-05-24T10:09:33.793Z","sessionHistory":[{"id":"session-mpjm8gr8-0006-siku","providerSessionId":"ses_1a689e409ffea1AaKRRY2e7GYP","status":"terminated","workingDirectory":"/home/alex/projects/headquarter","startedAt":"2026-05-24T10:09:33.183Z","endedAt":"2026-05-24T10:09:33.794Z"},{"id":"session-mpjm82gt-0005-5mkq","providerSessionId":"ses_1a68a2c40ffevEmnFz7bp7IxCo","status":"terminated","workingDirectory":"/home/alex/projects/headquarter","startedAt":"2026-05-24T10:09:14.696Z","endedAt":"2026-05-24T10:09:15.313Z"},{"id":"session-mpjm3g7e-0004-65qz","providerSessionId":"ses_1a69abe62ffe3VhShFnsV1mp1b","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T10:05:38.734Z","endedAt":"2026-05-24T10:05:40.357Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjm3byo-0003-i7md","providerSessionId":"ses_1a69abe62ffe3VhShFnsV1mp1b","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T10:05:33.735Z","endedAt":"2026-05-24T10:05:37.855Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjm36ik-0002-0oqz","providerSessionId":"ses_1a69abe62ffe3VhShFnsV1mp1b","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T10:05:26.689Z","endedAt":"2026-05-24T10:05:30.342Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjlycat-0009-04ss","providerSessionId":"ses_1a69abe62ffe3VhShFnsV1mp1b","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T10:01:40.882Z","endedAt":"2026-05-24T10:01:44.511Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjly8fj-0008-vacl","providerSessionId":"ses_1a69abe62ffe3VhShFnsV1mp1b","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T10:01:35.851Z","endedAt":"2026-05-24T10:01:40.884Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjly4kq-0007-y15i","providerSessionId":"ses_1a69abe62ffe3VhShFnsV1mp1b","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T10:01:30.861Z","endedAt":"2026-05-24T10:01:35.493Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjll5q9-0006-51uj","providerSessionId":"ses_1a69abe62ffe3VhShFnsV1mp1b","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T09:51:25.805Z","endedAt":"2026-05-24T09:51:29.476Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjll1vs-0005-zvvm","providerSessionId":"ses_1a69abe62ffe3VhShFnsV1mp1b","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T09:51:20.806Z","endedAt":"2026-05-24T09:51:25.807Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjlky0l-0004-ou7e","providerSessionId":"ses_1a69abe62ffe3VhShFnsV1mp1b","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T09:51:15.818Z","endedAt":"2026-05-24T09:51:20.807Z","terminationReason":"Process no longer alive (PID check)"},{"id":"session-mpjlkqcm-0003-sv67","providerSessionId":"ses_1a69abe62ffe3VhShFnsV1mp1b","status":"terminated","workingDirectory":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T09:51:08.709Z","endedAt":"2026-05-24T09:51:15.831Z","terminationReason":"Process no longer alive (PID check)"}],"sessionId":"ses_1a689e409ffea1AaKRRY2e7GYP"}},"name":"e-worker-2","entityType":"agent"} -{"id":"el-2xvj","type":"entity","createdAt":"2026-05-24T09:44:41.128Z","updatedAt":"2026-05-24T09:44:41.129Z","createdBy":"el-0000","tags":[],"metadata":{"agent":{"agentRole":"steward","stewardFocus":"merge","sessionStatus":"idle","provider":"opencode","model":"moonshotai/kimi-k2.6","channelId":"el-54u7"}},"name":"m-steward-1","entityType":"agent"} +{"id":"el-2jua","type":"entity","createdAt":"2026-05-24T09:44:24.375Z","updatedAt":"2026-05-24T10:29:09.942Z","createdBy":"el-0000","tags":[],"metadata":{"agent":{"agentRole":"director","sessionStatus":"running","provider":"opencode","model":"openai/gpt-5.5","channelId":"el-2vpd","lastActivityAt":"2026-05-24T10:29:09.939Z","sessionHistory":[{"id":"session-mpjlz79g-0001-9tz4","providerSessionId":"ses_1a689e409ffea1AaKRRY2e7GYP","status":"terminated","workingDirectory":"/home/alex/projects/headquarter","startedAt":"2026-05-24T10:02:20.170Z","endedAt":"2026-05-24T10:16:54.212Z"},{"id":"session-mpjlckjf-0001-cifg","status":"terminated","workingDirectory":"/home/alex/projects/headquarter","startedAt":"2026-05-24T09:44:44.286Z","endedAt":"2026-05-24T09:47:52.845Z"}]}},"name":"director","entityType":"agent"} +{"id":"el-4350","type":"entity","createdAt":"2026-05-24T12:03:32.237Z","updatedAt":"2026-05-24T12:03:32.238Z","createdBy":"el-0000","tags":[],"metadata":{"agent":{"agentRole":"steward","stewardFocus":"merge","sessionStatus":"idle","provider":"opencode","model":"kimi-for-coding/k2p6","channelId":"el-5mta"}},"name":"m-steward-1","entityType":"agent"} +{"id":"el-13ju","type":"entity","createdAt":"2026-05-24T12:03:36.368Z","updatedAt":"2026-05-24T12:03:36.368Z","createdBy":"el-0000","tags":[],"metadata":{"agent":{"agentRole":"steward","stewardFocus":"docs","sessionStatus":"idle","provider":"opencode","model":"kimi-for-coding/k2p6","channelId":"el-5j1i"}},"name":"d-steward-1","entityType":"agent"} +{"id":"el-51a8","type":"entity","createdAt":"2026-05-24T12:03:40.486Z","updatedAt":"2026-05-24T12:03:40.487Z","createdBy":"el-0000","tags":[],"metadata":{"agent":{"agentRole":"worker","workerMode":"ephemeral","sessionStatus":"idle","provider":"opencode","model":"kimi-for-coding/k2p6","channelId":"el-9amf"}},"name":"e-worker-1","entityType":"agent"} +{"id":"el-2i1s","type":"entity","createdAt":"2026-05-24T12:03:42.204Z","updatedAt":"2026-05-24T12:03:42.223Z","createdBy":"el-0000","tags":[],"metadata":{"agent":{"agentRole":"worker","workerMode":"ephemeral","sessionStatus":"idle","provider":"opencode","model":"kimi-for-coding/k2p6","channelId":"el-1na8"}},"name":"e-worker-2","entityType":"agent"} {"id":"el-1of","type":"document","createdAt":"2026-05-24T09:44:58.758Z","updatedAt":"2026-05-24T09:44:58.759Z","createdBy":"el-2jua","tags":[],"metadata":{"purpose":"document-directory"},"title":"Documentation Directory","contentType":"markdown","content":"# Documentation Directory\n\nIndex of all workspace documents. Start with this document to navigate workspace knowledge.\n\n## Specs\n\n(none yet)\n\n## References\n\n| ID | Title |\n|----|-------|\n| el-1of | Documentation Directory (this document) |\n\n## How-To Guides\n\n(none yet)\n\n## Explanations\n\n(none yet)\n\n## Decision Logs\n\n(none yet)","version":2,"previousVersionId":"el-1of","category":"reference","status":"active","immutable":false} {"id":"el-1io7","type":"document","createdAt":"2026-05-24T09:51:08.711Z","updatedAt":"2026-05-24T09:51:08.711Z","createdBy":"el-7z8w","tags":["dispatch-notification","task-assignment"],"metadata":{"dispatchNotification":true},"contentType":"text","content":"Task assigned: Remove tunnel functionality and ui elements from terminal sessions [Priority: 3]","version":1,"previousVersionId":null,"category":"other","status":"active","immutable":false} -{"id":"el-18lc","type":"task","createdAt":"2026-05-24T10:07:25.455Z","updatedAt":"2026-05-24T10:09:13.314Z","createdBy":"el-0000","tags":[],"metadata":{"orchestrator":{"assignedAgent":"el-7z8w","branch":"agent/e-worker-2/el-18lc-remove-tunnel-functionality-an","worktree":".stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","startedAt":"2026-05-24T10:09:13.314Z"}},"title":"Remove tunnel functionality and ui from terminal sessions","status":"open","priority":3,"complexity":3,"taskType":"task","assignee":"el-7z8w"} +{"id":"el-1jhy","type":"document","createdAt":"2026-05-24T11:00:44.885Z","updatedAt":"2026-05-24T11:00:44.885Z","createdBy":"el-7z8w","tags":["dispatch-notification","task-assignment"],"metadata":{"dispatchNotification":true},"contentType":"text","content":"Task assigned: Remove tunnel functionality and ui from terminal sessions [Priority: 3]","version":1,"previousVersionId":null,"category":"other","status":"active","immutable":false} +{"id":"el-18lc","type":"task","createdAt":"2026-05-24T10:07:25.455Z","updatedAt":"2026-05-24T12:03:51.474Z","createdBy":"el-0000","tags":[],"metadata":{"orchestrator":{"sessionHistory":[{"sessionId":"session-mpjo295o-0006-yuk4","providerSessionId":"ses_1a65b0534ffe1MQoY6emHeY9Qn","agentId":"el-7z8w","agentName":"e-worker-2","agentRole":"worker","startedAt":"2026-05-24T11:00:44.888Z"},{"sessionId":"session-mpjo2cw8-0007-3wjj","providerSessionId":"ses_1a65b0534ffe1MQoY6emHeY9Qn","agentId":"el-7z8w","agentName":"e-worker-2","agentRole":"worker","startedAt":"2026-05-24T11:00:47.467Z"},{"sessionId":"session-mpjo2grm-0008-7b8r","providerSessionId":"ses_1a65b0534ffe1MQoY6emHeY9Qn","agentId":"el-7z8w","agentName":"e-worker-2","agentRole":"worker","startedAt":"2026-05-24T11:00:52.495Z"},{"sessionId":"session-mpjo2km9-0009-n1vf","providerSessionId":"ses_1a65b0534ffe1MQoY6emHeY9Qn","agentId":"el-7z8w","agentName":"e-worker-2","agentRole":"worker","startedAt":"2026-05-24T11:00:57.468Z"}],"owningDirector":"el-2jua","resumeCount":3,"reconciliationCount":1}},"title":"Remove tunnel functionality and ui from terminal sessions","status":"open","priority":3,"complexity":3,"taskType":"task"} {"id":"el-2afn","type":"message","createdAt":"2026-05-24T09:51:08.713Z","updatedAt":"2026-05-24T09:51:08.713Z","createdBy":"el-7z8w","tags":["dispatch-notification","task-assignment"],"metadata":{"type":"task-assignment","taskId":"el-3y4w","priority":3,"branch":"agent/e-worker-2/el-3y4w-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","sessionId":"ses_1a69abe62ffe3VhShFnsV1mp1b","dispatchedAt":"2026-05-24T09:51:08.710Z","suppressInbox":true},"channelId":"el-4uqv","sender":"el-7z8w","contentRef":"el-1io7","attachments":[],"threadId":null} +{"id":"el-5lta","type":"message","createdAt":"2026-05-24T11:00:44.887Z","updatedAt":"2026-05-24T11:00:44.887Z","createdBy":"el-7z8w","tags":["dispatch-notification","task-assignment"],"metadata":{"type":"task-assignment","taskId":"el-18lc","priority":3,"branch":"agent/e-worker-2/el-18lc-remove-tunnel-functionality-an","worktree":"/home/alex/projects/headquarter/.stoneforge/.worktrees/e-worker-2-remove-tunnel-functionality-an","sessionId":"ses_1a65b0534ffe1MQoY6emHeY9Qn","dispatchedAt":"2026-05-24T11:00:44.884Z","suppressInbox":true},"channelId":"el-4uqv","sender":"el-7z8w","contentRef":"el-1jhy","attachments":[],"threadId":null} {"id":"el-2vpd","type":"channel","createdAt":"2026-05-24T09:44:24.377Z","updatedAt":"2026-05-24T09:44:24.377Z","createdBy":"el-0000","tags":["agent-channel"],"metadata":{"agentId":"el-2jua","agentName":"director","purpose":"Agent direct messaging channel"},"name":"director:operator","description":null,"channelType":"direct","members":["el-0000","el-2jua"],"permissions":{"visibility":"private","joinPolicy":"invite-only","modifyMembers":[]}} -{"id":"el-1x51","type":"channel","createdAt":"2026-05-24T09:44:28.369Z","updatedAt":"2026-05-24T09:44:28.369Z","createdBy":"el-0000","tags":["agent-channel"],"metadata":{"agentId":"el-5x1t","agentName":"e-worker-1","purpose":"Agent direct messaging channel"},"name":"e-worker-1:operator","description":null,"channelType":"direct","members":["el-0000","el-5x1t"],"permissions":{"visibility":"private","joinPolicy":"invite-only","modifyMembers":[]}} -{"id":"el-4uqv","type":"channel","createdAt":"2026-05-24T09:44:33.966Z","updatedAt":"2026-05-24T09:44:33.966Z","createdBy":"el-0000","tags":["agent-channel"],"metadata":{"agentId":"el-7z8w","agentName":"e-worker-2","purpose":"Agent direct messaging channel"},"name":"e-worker-2:operator","description":null,"channelType":"direct","members":["el-0000","el-7z8w"],"permissions":{"visibility":"private","joinPolicy":"invite-only","modifyMembers":[]}} -{"id":"el-54u7","type":"channel","createdAt":"2026-05-24T09:44:41.129Z","updatedAt":"2026-05-24T09:44:41.129Z","createdBy":"el-0000","tags":["agent-channel"],"metadata":{"agentId":"el-2xvj","agentName":"m-steward-1","purpose":"Agent direct messaging channel"},"name":"m-steward-1:operator","description":null,"channelType":"direct","members":["el-0000","el-2xvj"],"permissions":{"visibility":"private","joinPolicy":"invite-only","modifyMembers":[]}} +{"id":"el-5mta","type":"channel","createdAt":"2026-05-24T12:03:32.238Z","updatedAt":"2026-05-24T12:03:32.238Z","createdBy":"el-0000","tags":["agent-channel"],"metadata":{"agentId":"el-4350","agentName":"m-steward-1","purpose":"Agent direct messaging channel"},"name":"m-steward-1:operator","description":null,"channelType":"direct","members":["el-0000","el-4350"],"permissions":{"visibility":"private","joinPolicy":"invite-only","modifyMembers":[]}} +{"id":"el-5j1i","type":"channel","createdAt":"2026-05-24T12:03:36.368Z","updatedAt":"2026-05-24T12:03:36.368Z","createdBy":"el-0000","tags":["agent-channel"],"metadata":{"agentId":"el-13ju","agentName":"d-steward-1","purpose":"Agent direct messaging channel"},"name":"d-steward-1:operator","description":null,"channelType":"direct","members":["el-0000","el-13ju"],"permissions":{"visibility":"private","joinPolicy":"invite-only","modifyMembers":[]}} +{"id":"el-9amf","type":"channel","createdAt":"2026-05-24T12:03:40.487Z","updatedAt":"2026-05-24T12:03:40.487Z","createdBy":"el-0000","tags":["agent-channel"],"metadata":{"agentId":"el-51a8","agentName":"e-worker-1","purpose":"Agent direct messaging channel"},"name":"e-worker-1:operator","description":null,"channelType":"direct","members":["el-0000","el-51a8"],"permissions":{"visibility":"private","joinPolicy":"invite-only","modifyMembers":[]}} +{"id":"el-1na8","type":"channel","createdAt":"2026-05-24T12:03:42.222Z","updatedAt":"2026-05-24T12:03:42.222Z","createdBy":"el-0000","tags":["agent-channel"],"metadata":{"agentId":"el-2i1s","agentName":"e-worker-2","purpose":"Agent direct messaging channel"},"name":"e-worker-2:operator","description":null,"channelType":"direct","members":["el-0000","el-2i1s"],"permissions":{"visibility":"private","joinPolicy":"invite-only","modifyMembers":[]}} {"id":"el-258","type":"library","createdAt":"2026-05-24T09:44:58.748Z","updatedAt":"2026-05-24T09:44:58.748Z","createdBy":"el-2jua","tags":[],"metadata":{},"name":"Documentation"} diff --git a/apps/web/src/components/session-card.tsx b/apps/web/src/components/session-card.tsx index a84686e..00aa0c3 100644 --- a/apps/web/src/components/session-card.tsx +++ b/apps/web/src/components/session-card.tsx @@ -110,7 +110,6 @@ export function SessionCard({

)} - {session.created_at && (

Created: {new Date(session.created_at).toLocaleDateString()} diff --git a/apps/web/src/pages/dashboard.tsx b/apps/web/src/pages/dashboard.tsx index 199eb36..3071d1f 100644 --- a/apps/web/src/pages/dashboard.tsx +++ b/apps/web/src/pages/dashboard.tsx @@ -11,7 +11,6 @@ import type { Project } from "../types"; import { Icon } from "../components/icon"; import { CreateSessionForm } from "../components/create-session-form"; import { SessionList } from "../components/session-list"; -import { SessionCard } from "../components/session-card"; type HomeStatus = "loading" | "ready" | "error"; @@ -125,11 +124,6 @@ export const HomePage = () => { [safeSessions] ); - const recentSessions = useMemo( - () => safeSessions.filter((session) => ["stopped", "error"].includes(session.status)).slice(0, 5), - [safeSessions] - ); - const handleCreateSuccess = async (instance: { id: string }) => { await updateUserConfig({ last_session_id: instance.id }); setSelectedProject(""); diff --git a/apps/web/src/pages/sessions.tsx b/apps/web/src/pages/sessions.tsx index 3f4a88a..11dba2a 100644 --- a/apps/web/src/pages/sessions.tsx +++ b/apps/web/src/pages/sessions.tsx @@ -238,15 +238,6 @@ export const SessionsPage = () => { } }; - const handleResumeLast = async () => { - if (!lastSession) return; - // Find the project and repo IDs - const project = projects.find((p) => p.name === lastSession.project_name); - if (project) { - navigate(`/projects/${project.id}`); - } - }; - return (

diff --git a/apps/web/src/styles.css b/apps/web/src/styles.css index 3ab60b6..346f07a 100644 --- a/apps/web/src/styles.css +++ b/apps/web/src/styles.css @@ -2743,6 +2743,115 @@ a.nav-item, gap: var(--space-2); } +/* Session Card - Unified Component */ +.session-card-content { + flex: 1; +} + +.session-card-header { + display: flex; + flex-direction: column; + gap: var(--space-2); +} + +.session-card-title { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: var(--space-2); +} + +.session-card-title h4 { + margin: 0; + font-size: 1rem; + font-weight: 600; +} + +.session-card-status-badges { + display: flex; + gap: var(--space-1); + flex-wrap: wrap; +} + +.session-card-meta { + font-size: 0.85rem; + margin: 0; +} + +.session-card-meta .icon { + margin-right: var(--space-1); + vertical-align: text-bottom; +} + +.session-card-url { + margin: var(--space-1) 0; + font-size: 0.8rem; + word-break: break-all; +} + +.session-card-url a { + color: var(--color-primary); + text-decoration: none; +} + +.session-card-url a:hover { + text-decoration: underline; +} + +.session-card-actions { + display: flex; + gap: var(--space-2); + flex-wrap: wrap; + margin-top: var(--space-2); + padding-top: var(--space-3); + border-top: 1px solid var(--color-border); +} + +/* Session List - Unified Component */ +.session-list { + display: flex; + flex-direction: column; + gap: var(--space-6); +} + +.session-group { + display: flex; + flex-direction: column; + gap: var(--space-3); +} + +.session-group-header { + display: flex; + align-items: center; + gap: var(--space-2); +} + +.session-group-header h3 { + margin: 0; + font-size: 1.1rem; + font-weight: 600; +} + +/* Action labels - hidden on mobile */ +.action-label { + margin-left: var(--space-1); +} + +@media (max-width: 640px) { + .action-label { + display: none; + } + + .session-card-actions { + gap: var(--space-1); + } + + .session-card-actions button, + .session-card-actions a { + padding: var(--space-1); + } +} + .recent-sessions-section { margin-bottom: var(--space-6); } diff --git a/openspec/changes/session-list-overhaul/tasks.md b/openspec/changes/session-list-overhaul/tasks.md index 03bc163..7418a0e 100644 --- a/openspec/changes/session-list-overhaul/tasks.md +++ b/openspec/changes/session-list-overhaul/tasks.md @@ -35,10 +35,10 @@ ## 5. Styles and Polish -- [ ] 5.1 Add CSS styles for SessionCard layout (responsive grid) -- [ ] 5.2 Add CSS styles for action buttons (icon vs text based on viewport) -- [ ] 5.3 Style status indicators and badges -- [ ] 5.4 Ensure consistent spacing and typography +- [x] 5.1 Add CSS styles for SessionCard layout (responsive grid) +- [x] 5.2 Add CSS styles for action buttons (icon vs text based on viewport) +- [x] 5.3 Style status indicators and badges +- [x] 5.4 Ensure consistent spacing and typography - [ ] 5.5 Test responsive layout on mobile viewport ## 6. Testing and Verification @@ -49,5 +49,5 @@ - [ ] 6.4 Test confirmation dialogs - [ ] 6.5 Test empty states - [ ] 6.6 Test responsive layout -- [ ] 6.7 Run TypeScript compilation -- [ ] 6.8 Run ESLint +- [x] 6.7 Run TypeScript compilation +- [x] 6.8 Run ESLint