Files
PaperClipAI/ui
scotttongandClaude Fable 5 111f7bac6a fix(ui): task-chat phase 2e follow-ups — kill outer main scrollbar, restore pane-tab underline, conditional Plan/Artifacts tabs
Flag-gated (enableTaskChatRedesign), flag OFF unchanged:

- Extra scrollbar: with the flag ON the page content used a fixed
  calc(100dvh - 8rem) thread height inside the padded outer <main>
  (overflow-auto), so main itself also scrolled. The IssueDetail root now
  fills main exactly (h-full flex column) and the chain down to the thread
  is flexed with min-h-0, so the thread's internal viewport is the only
  scroll surface. TaskChatThread's dvh height token still applies on
  mobile, where main has no fixed height (flex-basis falls back to it).
- Pane-tab underline: the portal into the pane header bar kept React
  context but broke the DOM ancestry that Tailwind's
  group-data-[orientation]/tabs selectors need, so the active-tab
  underline never applied. A display:contents group/tabs wrapper inside
  the portal restores it.
- Conditional tabs: Plan/Artifacts triggers render only when the issue
  has a plan document/accepted decompositions or attachments (same query
  keys as the tab bodies — shared cache). With neither, the header bar
  shows a plain "Properties" title and the pane body is the plain
  properties stack. Tabs are controlled with a fallback to Properties if
  the selected tab's content disappears.

Verified on :3093 light+dark via Playwright: main scrollHeight ==
clientHeight (923/923) on //; underline opacity 1 on
active portaled tab; Properties|Plan on , all three on ,
title-only on ; portaled tab clicks switch content; flag-off run
scrolls the legacy page (4454px) with no redesign testids. ui tsc clean;
issue-properties/task-chat/IssueDetail/IssueChatThread tests pass (1
pre-existing TZ flake in IssueProperties monitor row, fails on base).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 16:55:49 -07:00
..

@paperclipai/ui

Published static assets for the Paperclip board UI.

What gets published

The npm package contains the production build under dist/. It does not ship the UI source tree or workspace-only dependencies.

Storybook

Storybook config, stories, and fixtures live under ui/storybook/.

pnpm --filter @paperclipai/ui storybook
pnpm --filter @paperclipai/ui build-storybook

Typical use

Install the package, then serve or copy the built files from node_modules/@paperclipai/ui/dist.