Skip to content

fix(desktop): restore compact sidebar session-row density (38px → 26px rows)#138

Merged
OmarB97 merged 1 commit into
mainfrom
fix/sidebar-session-row-density
Jun 10, 2026
Merged

fix(desktop): restore compact sidebar session-row density (38px → 26px rows)#138
OmarB97 merged 1 commit into
mainfrom
fix/sidebar-session-row-density

Conversation

@OmarB97

@OmarB97 OmarB97 commented Jun 10, 2026

Copy link
Copy Markdown
Owner

Why

Fork commit 1dff62b ("consolidate sidebar, i18n, stale-build, session fixes") raised sidebar session rows from 26px to 38px min-height while fixing the timestamp overlap. Every single-line row now carries ~12px of dead air above and below its title, so the session list reads sparse and unpolished — the operator flagged it against Claude Desktop's compact list (~27pt row pitch). Upstream NousResearch/hermes-agent is still at 26px, so this is a fork-only regression; no upstream PR is needed.

What changed

  • apps/desktop/src/app/chat/sidebar/session-row.tsx — row container min-h-[2.375rem]min-h-[1.625rem] (38px → 26px, upstream's value); title button py-1py-0.5 (also upstream's value).
  • apps/desktop/src/app/chat/sidebar/virtual-session-list.tsxROW_ESTIMATE_PX 40 → 28 so the virtualizer's pre-measure estimate matches real row height again.

The fork-specific sidebar features from 1dff62b (always-visible age column, presence dot, hover slide-in actions menu) are untouched; this restores only the density tokens.

How to review

  1. Read the session-row.tsx diff: two className token changes, no structural edits.
  2. Confirm the trailing age/menu slot still centers vertically — it uses h-full/self-stretch driven by the same min-h, so it tracks the new height automatically.
  3. In virtual-session-list.tsx, ROW_ESTIMATE_PX only seeds the virtualizer; measureElement re-measures real rows, so the constant just needs to be close (28 = 26px row + ~2px).
  4. Cross-check upstream/main:apps/desktop/src/app/chat/sidebar/session-row.tsx — these are exactly upstream's density values.

Evidence

  • Upstream session-row.tsx uses min-h-[1.625rem] + py-0.5, and upstream virtual-session-list.tsx uses ROW_ESTIMATE_PX = 28; the fork diverged in commit 1dff62b (2026-06-09).
  • Pixel math from the operator's 2x screenshot: current fork row pitch is 39pt (38px row + 1px grid gap) vs ~27pt in Claude Desktop's session list; this PR lands at 27pt (26px + 1px gap).
  • Skeleton placeholder rows (min-h-7, 28px) already match the restored density — same pairing upstream ships.

Verification

  • npm run type-check (tsc -b): pass.
  • npx eslint on both changed files: pass, no warnings.
  • npx vitest run --environment jsdom: 456 passed / 9 failed — the identical 9 failures reproduce at baseline origin/main (ab33859) with this change stashed; baseline-red, none sidebar-related.
  • npm run build (production vite build): pass.
  • Live visual check (rebuild + swap /Applications/Hermes.app on ko-mac) runs immediately after merge as the deploy step; result will be posted on this PR.

Risks / gaps

  • Rows and their hover/selected backgrounds get visually tighter at 26px; this matches upstream's shipped density and is exactly the operator's request — low risk.
  • Click-target height shrinks from 38px to 26px; upstream ships the same 26px rows on all desktop platforms — accepted tradeoff.
  • Renderer vitest suite has 9 pre-existing failures on main unrelated to this diff — already tracked as baseline-red under the hermes-agent lane.

Collaborators

  • @OmarB97 (operator)
  • Claude Fable 5 (ko-mac.claude)

The sidebar consolidation commit (1dff62b) raised session rows from
26px to 38px min-height while fixing the timestamp overlap, leaving
~12px of dead air around each single-line title. Restore upstream's
density tokens (min-h 1.625rem, py-0.5, ROW_ESTIMATE_PX 28) and keep
the fork's always-visible age column and presence features.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔎 Lint report: fix/sidebar-session-row-density vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 10553 on HEAD, 10553 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 5543 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@OmarB97 OmarB97 merged commit 42ba4ea into main Jun 10, 2026
12 of 22 checks passed
@OmarB97 OmarB97 deleted the fix/sidebar-session-row-density branch June 10, 2026 16:05
@OmarB97

OmarB97 commented Jun 10, 2026

Copy link
Copy Markdown
Owner Author

Live verification on ko-mac (post-merge deploy): rebuilt packaged app from main @ 42ba4ea (hermes desktop --build-only --force-build), swapped /Applications/Hermes.app (install-stamp commit 42ba4ea), relaunched. Shipped renderer bundle contains the compact row class (min-h-[1.625rem] cursor-pointer grid-cols-[minmax(0,1fr)_auto]) and no session-row min-h-[2.375rem] (the one remaining 2.375rem hit is a different w-full component). Sidebar screenshot confirms row pitch now matches the nav rows (~27pt), same density as Claude Desktop's list. Operator-visible regression resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant