Skip to content

feat(layout-v2): single-panel Linear-style sidebar#6188

Open
tsahimatsliah wants to merge 42 commits into
mainfrom
claude/objective-blackburn-47bee7
Open

feat(layout-v2): single-panel Linear-style sidebar#6188
tsahimatsliah wants to merge 42 commits into
mainfrom
claude/objective-blackburn-47bee7

Conversation

@tsahimatsliah

@tsahimatsliah tsahimatsliah commented Jun 13, 2026

Copy link
Copy Markdown
Member

What

A new take on the v2 sidebar: remove the icon rail entirely and put everything in one scrollable panel + list, inspired by Linear. Same daily.dev design language — just a single-column information architecture instead of the rail that swaps a context panel.

This builds on the work in #6177 (it ports those building blocks) but takes the opposite layout direction: where #6177 labels the rail icons, this folds the rail away.

Layout

  • Header — logo + daily.dev, a full-width search field (⌘K), a compose +, and the collapse toggle.
  • Primary rows (flat, no header — Linear's Inbox/My issues style): For You, Following, Explore, History, Happening Now, plus a small Notifications + Quests block (with unread / claimable badges).
  • Collapsible sections (reusing the existing flag-persisted Section): Pinned, Saved, Squads, Feeds, Recent.
  • Footer — pinned streak / cores / reputation strip + a profile menu (settings, analytics, jobs, billing, log out). Theme + support buttons alongside.
  • Settings pages take over the panel (force-expanded), same as today.

Collapse / peek

The whole panel slides off-screen when collapsed and the content reclaims the full width (no permanent rail). A left-edge hover zone peeks it back in as an overlay; a floating toggle reopens/pins it.

Reused from #6177

Explore folded into Home, RecentSection/PinnedSection, the recent-pages store, the Explore hub headers (/posts, /tags, /sources, /users, best-of), the profile menu, and the logout move into that menu. Dropped the rail-only pieces: hover-cards, compact mode, and the "More" overflow.

Testing

  • tsc clean on all changed files (both shared and webapp); eslint clean (--max-warnings 0).
  • Sidebar specs pass (21/21).
  • Not yet eyeballed in a running browserlayout_v2 is GrowthBook-gated and not easily forced locally. Please review on the preview deploy, especially the collapse/peek interaction and the footer popover anchoring.

🤖 Generated with Claude Code

Preview domain

https://claude-objective-blackburn-47bee.preview.app.daily.dev

Replaces the v2 icon-rail + context-panel with one scrollable panel
(inspired by Linear). Primary destinations (For You, Following, Explore,
Notifications, Quests) sit as flat rows; Pinned, Saved, Squads, Feeds and
Recent are collapsible sections; streak/cores/reputation + the profile menu
pin to the footer. Collapsing slides the whole panel off-screen and the
content reclaims the width, with a left-edge hover-peek and a floating
reopen toggle.

Reuses the building blocks introduced in #6177 (Explore folded into Home,
Recent/Pinned sections, recent-pages store, Explore hub headers, profile
menu, settings panel) but drops the rail, hover-cards, compact mode and
"More" overflow that the rail required.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
daily-webapp Ready Ready Preview Jun 16, 2026 9:18am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
storybook Ignored Ignored Jun 16, 2026 9:18am

Request Review

Wrap the panel body in a definite-height (h-dvh) overflow-hidden flex
column. Without it the panel grew past the viewport, pushing the footer
and collapse toggle off-screen and leaving the nav list unscrollable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Paint the sidebar with the exact V2 page background (the color-mix
  MainLayout uses) and drop the right border, so the sidebar and feed read
  as one continuous surface with the feed floating as a box on top.
- Collapsed peek now floats over the feed with a shadow + rounded free edge
  (no divider), and the reopen toggle is a subtle ghost button, matching
  Linear's clean collapsed UX.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Collapse the sidebar by dragging its right edge (Linear-style): the panel
  narrows live and closes when pulled past the threshold. Removes the
  always-visible collapse toggle.
- When collapsed, the sidebar takes zero width and the feed reclaims it; an
  'Open sidebar' icon appears at the left of the feed-area headers (shared
  PageHeader + the Explore/feed/tag/squad-directory header strips) to reopen
  it. Self-gating so it only shows for a collapsed v2 sidebar.
- Drops the hover-peek + floating reopen button in favor of this explicit
  drag-to-close / header-to-open model.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Drag the sidebar's right edge and the feed area resizes in lockstep
(Figma/Linear-style): both the sidebar width and the content's left padding
read a shared --sidebar-width CSS variable that's updated imperatively during
the drag, with transitions suppressed on the resizable panes so they track
the cursor 1:1. On release the new width is persisted (sidebarWidth flag) and
restored on reload; pulling past the collapse threshold closes it instead.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…tings back

- Search is now an icon in the top bar (Linear-style) instead of a full-width
  field; Support moves up to the top bar too.
- Profile dropdown shows the Reputation + Cores wallet strip (as in #6177).
- Streak moves onto the profile row next to the avatar; the stats strip is gone.
- Settings/inner pages get a Back control at the top of the panel.
- Listing rows + section headers are compact (Linear sizing: 13px text,
  16px icons, 32px rows, 12px headers), scoped to v2 via a "compact" prop
  threaded through Section/SidebarItem (no context hooks in shared primitives).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tsahimatsliah and others added 2 commits June 13, 2026 21:29
…menu

- Profile (avatar + name + @username) is now the top switcher with the streak
  beside it; the daily.dev logo moves to the footer (bottom-right) and Support
  to the bottom-left, Linear-style.
- Search and compose are reduced to 16px glyphs in 32px buttons to match the
  compact list icons.
- Theme (light/dark) toggle moved into the profile dropdown; the standalone
  theme icon is removed from the sidebar.
- Profile menu opens from the top, Support menu from the bottom, to match
  their new positions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Primary nav is now an explicit v2 order: For You, Following, Notifications,
  Quests, Explore, Happening Now, History. Built inline (not via the shared
  MainSection) so the v1 sidebar order is unaffected.
- Resize handle straddles the sidebar/feed boundary and reveals a short,
  vertically-centered grip on hover/drag (Claude-style) so it's discoverable
  without a permanent divider.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tsahimatsliah and others added 4 commits June 13, 2026 21:45
Drop the three-dots icon (the whole row already opens the dropdown) and the
@username handle (the dropdown header already shows it).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ze grip

- Tighten compact rows to Linear's density: 28px height (was 32px), 24px icon
  box (was 28px), 8px item margin (was 12px), 8px radius, and shorter
  left-aligned section headers.
- Resize grip is now a rounded rectangle (rounded-4) instead of a pill.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add ⌘/Ctrl+Shift+L to collapse/expand the sidebar (matching Linear),
  ignored while typing in inputs.
- Hovering the resize handle now shows a tooltip ("Drag to resize" + the
  toggle shortcut), and the collapsed-state "Open sidebar" control's tooltip
  shows the shortcut too.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Remove the Recent section and its now-unused plumbing (RecentSection,
  useRecentPages, recentPages store, MainLayout recorder, RecentExpanded flag).
- Footer bar: daily.dev logo + name on the left (links home), with the theme
  toggle and Support center on the right. Theme moves out of the profile
  dropdown back to this strip.
- Streak popover opens downward now that the streak sits in the header (was
  growing up off-screen).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
New ComposeIcon (outline + filled variants) replaces the plus glyph on the
sidebar's New post button.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The section-header collapse arrow (Pinned/Squads/Saved/Feeds) is now smaller
and only shows while hovering or focusing within the section (header or its
items), keeping the list clean — like Linear. Scoped to the compact v2
sidebar; v1 sections keep the always-visible chevron.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tsahimatsliah and others added 2 commits June 13, 2026 22:43
- The chevron rendered at 20px because the Icon wrapper's default size class
  beat the h-2 w-2 className; size it via the size prop (XXSmall, 12px) instead.
- Drop group-focus-within (a focused nav link kept it stuck visible) so it
  shows only while hovering the section and disappears on mouse-out; keyboard
  focus on the toggle still reveals it via group-focus-visible.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The squad avatar is an <img>, so the compact [&_svg] size rule didn't apply —
it stayed 20px and ran into the label. Match images to icons ([&_img]:size-4,
16px, centered) and add a small right margin so every item has a consistent
icon→text gap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Footer: add a top separator border, shrink the daily.dev logo (20→16px) to
  match the icon scale, and render the brand as a muted footnote so it reads
  as a footer rather than competing with the nav.
- Collapse/expand shortcut is now the plain "[" key (ignored with modifiers so
  ⌘/Ctrl+[ stays browser back, and while typing). Tooltips updated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…divider)

Show the short, vertically-centered grip indicator by default at the resize
boundary instead of a full-height divider line; it grows + darkens on
hover/drag.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…hover tint

Match the reference resize-divider: the always-visible grip is now a rounded
rectangle in a light color that turns blue (accent-blueCheese) on hover/drag,
and the full-height strip tints top-to-bottom on hover too.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Grip is 2px by default and grows to 4px (plus the blue tint) on hover/drag.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
New HelpIcon (question-mark circle, outline + filled) replaces FeedbackIcon on
the sidebar's support/help-center button.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…yle)

Collapsing no longer hides the sidebar — it shows a persistent 4rem icon rail:
nav items, sections (as dividers + icons), search, compose, profile avatar,
theme and support all stay visible as centered icons with tooltips. Content
pads by the rail width (pl-16). Hovering the rail still peeks the full panel
open as an overlay (labels return) without shifting content.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tsahimatsliah and others added 2 commits June 16, 2026 10:36
…rail

- Hovering the collapsed rail no longer opens the panel (removed hover-peek).
- Rail icons are centered (row + icon centering when labels are hidden).
- The resize grip now also shows on the collapsed rail and acts as the
  open control there (click to expand); on the open panel it still drags to
  resize/collapse.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tsahimatsliah and others added 2 commits June 16, 2026 10:56
- Reduce collapsed rail to w-14 (MainLayout pl-14 to match)
- Square 1:1 rail buttons (size-8), centered icons throughout
- Show reading streak in the rail below the avatar
- Move daily.dev logo to the bottom of the rail, below support
- Grip drags the rail open (not just click) with a smooth transition;
  width grows from the rail and the panel floats over the feed mid-drag

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Center the icon in each square rail button (the label's flex-1 was
  eating space and pushing the glyph left); label now fades in on open
- Lower the rail drag-to-open threshold to ~2x the rail width so a small
  pull opens it, then snaps to the stored/min width
- Collapsed-rail streak shows only a small flame (no count) so a long
  streak number can't overflow the 32px square

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tsahimatsliah and others added 2 commits June 16, 2026 11:26
Dragging the rail grip now previews the full open panel as soon as the
pointer moves: the layout switches to open (icons stay left-aligned,
labels fade in) and the bar animates to its open width — the rail no
longer grows with centered icons. Releasing commits the open state;
dragging back over the rail cancels. A "Release to open" hint appears
during the drag, and the grip stays blue throughout. Split the open-
panel resize into its own handler so each gesture is unambiguous.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The rail grip now opens the panel by drag or click, so the redundant
expand control in the feed/explore/tags/squads headers is gone. Deletes
SidebarExpandButton and its four usages.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tsahimatsliah and others added 2 commits June 16, 2026 11:39
Bring the streak count back in the collapsed rail: a small flame on the
left followed by the number (caption sizing keeps it inside the rail),
instead of the flame-only chip.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Darken the pill to blueCheese-bolder and bold the text so the white
label reads clearly against the blue.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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