From 2f50cae87322225193a3bfe3920962b47b638dec Mon Sep 17 00:00:00 2001 From: Suleiman Shahbari Date: Sat, 25 Jul 2026 14:51:26 +0300 Subject: [PATCH 1/2] fix(dashboard): name what "New" makes, and keep the session list titled when empty "New" did not say new what. It starts a session, so it says so, in all three of its forms (start here, pick a project, add one first). The list below it is titled "Recent sessions" and keeps its heading when there is nothing in it, so "No sessions yet." reads as the state of that list rather than a lonely line in the sidebar. Closes #1147 --- .../components/RunHistory.test.tsx | 8 +++--- .../components/RunHistory.tsx | 28 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/framework-dashboard/components/RunHistory.test.tsx b/packages/framework-dashboard/components/RunHistory.test.tsx index 9bc4275b..3230e69b 100644 --- a/packages/framework-dashboard/components/RunHistory.test.tsx +++ b/packages/framework-dashboard/components/RunHistory.test.tsx @@ -67,7 +67,7 @@ describe('RunHistory (#785)', () => { , ) const rows = [...container.querySelectorAll('button')] - const home = rows.find(row => row.textContent?.trim() === 'New') + const home = rows.find(row => row.textContent?.trim() === 'New session') const starting = rows.find(row => row.textContent?.includes('starting…')) expect(starting?.className).toContain('bg-accent') expect(home?.className).not.toContain('bg-accent') @@ -106,7 +106,7 @@ describe('RunHistory rows', () => { // the New launcher rather than vanishing. test('with no project and no recents it still renders New and an empty hint', () => { renderRail( {}} />) - expect(screen.getByText('New')).toBeTruthy() + expect(screen.getByText('New session')).toBeTruthy() expect(screen.getByText('No sessions yet.')).toBeTruthy() }) @@ -150,7 +150,7 @@ describe('RunHistory New button (#new-button)', () => { onSelect={() => {}} />, ) - fireEvent.click(screen.getByText('New')) + fireEvent.click(screen.getByText('New session')) expect(started).toBe('p1') }) @@ -166,7 +166,7 @@ describe('RunHistory New button (#new-button)', () => { onSelect={() => {}} />, ) - fireEvent.click(screen.getByText('New')) + fireEvent.click(screen.getByText('New session')) expect(started).toBe('p9') }) diff --git a/packages/framework-dashboard/components/RunHistory.tsx b/packages/framework-dashboard/components/RunHistory.tsx index 3d301ebb..667cceb8 100644 --- a/packages/framework-dashboard/components/RunHistory.tsx +++ b/packages/framework-dashboard/components/RunHistory.tsx @@ -161,7 +161,7 @@ export function RunHistory({ {/* The mark + wordmark, the way home (#909), now that there is no navbar to hold them. A clear gap below it pushes New down; then New/Overview/Projects stack tight as one nav group (gap-0.5), with a little space again below the group (the header's pb-2) before - Recents. */} + the session list. */}
@@ -196,16 +196,16 @@ export function RunHistory({ {/* pr-3 keeps the rows (and the active card) clear of the overlaid scrollbar (w-2.5). */} {/* The label sticks to the top of the scroll; the gradient strip under it (also sticky) - fades the rows into the background as they scroll up beneath the label. */} - {hasRecents && ( -
- Recents - {/* Absolute (hanging just below the label) so it does not push the first row down; it - still overlays the rows scrolling up under it. `rail-fade` keeps it invisible at - the top of the scroll (so it never dims the first row) and fades it in on scroll. */} -
-
- )} + fades the rows into the background as they scroll up beneath the label. Shown even + when the list is empty (#1147): the heading is what makes "No sessions yet." read as + the state of this list rather than a lonely line in the sidebar. */} +
+ Recent sessions + {/* Absolute (hanging just below the label) so it does not push the first row down; it + still overlays the rows scrolling up under it. `rail-fade` keeps it invisible at + the top of the scroll (so it never dims the first row) and fades it in on scroll. */} +
+
{/* A just-started run, before its run.json exists — highlighted while following it. */} @@ -393,7 +393,7 @@ function NewButton({ return ( ) } @@ -404,7 +404,7 @@ function NewButton({ <> {adding && onProjectAdded?.()} onClose={() => setAdding(false)} />} @@ -416,7 +416,7 @@ function NewButton({ - New + New session From a8155ae1a0499cdd7415819d09988eabcb4dd8cc Mon Sep 17 00:00:00 2001 From: Suleiman Shahbari Date: Sat, 25 Jul 2026 14:51:43 +0300 Subject: [PATCH 2/2] chore: changeset for the New session label --- .changeset/new-session-label.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/new-session-label.md diff --git a/.changeset/new-session-label.md b/.changeset/new-session-label.md new file mode 100644 index 00000000..13ea4d09 --- /dev/null +++ b/.changeset/new-session-label.md @@ -0,0 +1,5 @@ +--- +'@gemstack/the-framework': patch +--- + +Name what the sidebar's "New" makes: it reads "New session". The session list below it is titled "Recent sessions" and keeps its heading when empty, so "No sessions yet." reads as the state of that list.