Skip to content

feat(design): redesign part 6#1145

Merged
cjroth merged 3 commits into
mainfrom
cjroth/redesign-6
Jul 26, 2026
Merged

feat(design): redesign part 6#1145
cjroth merged 3 commits into
mainfrom
cjroth/redesign-6

Conversation

@cjroth

@cjroth cjroth commented Jul 26, 2026

Copy link
Copy Markdown
Member

No description provided.

cjroth and others added 2 commits July 26, 2026 00:04
- unify mobile drawer, keyboard, focus, and long-press interactions
- refine skills, sidebar, sources, and task workflows across breakpoints
- align settings surfaces, device cards, and signup layouts

Co-authored-by: Cursor <cursoragent@cursor.com>
- Consolidate the identical vertical-axis dnd-kit modifiers from
  reorder-panel and tasks into src/lib/dnd.ts with a single test
- Extract the repeated onOpenAutoFocus + collapse-selection wrapper
  (dialog, alert-dialog, sheet, responsive-modal) into
  withCollapsedAutoFocusSelection in src/lib/focus.ts
- Share one CreateItemLoadingPanel between the create-item host's
  Suspense fallback and the skill panel's edit-loading state, and
  source the Edit Skill title from a single constant
- Hoist the duplicated RenameChatDialog and menu open-change handler
  out of ChatListItem's mobile/desktop branches and drop the dead
  !isMobile guards inside the desktop-only return
- Extract DeviceBadge and an isMutatingDevice helper in devices
  settings to remove repeated pill markup and per-device pending checks
- Replace the duplicated settings-list body offset class string with
  settingsListBodyRowsClass (models list, agents page)
- Inline the trivial handleSignInClick wrapper in the sidebar footer

Co-authored-by: Cursor <cursoragent@cursor.com>
@cjroth cjroth changed the title feat(design) - redesign part 6 feat(design): redesign part 6 Jul 26, 2026
Make the skill list the only scrollable region and collapse redundant
safe-area padding while the software keyboard is visible.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown

Semgrep Security Scan

No security issues found.

@github-actions

github-actions Bot commented Jul 26, 2026

Copy link
Copy Markdown

Preview environment destroyed 🧹

Stack preview-pr-1145 and its Cloudflare subdomain have been cleaned up.

@github-actions

Copy link
Copy Markdown

PR Metrics

Metric Value
Lines changed (prod code) +1193 / -609
JS bundle size (gzipped) 🟢 576.6 KB → 577.2 KB (+577 B, +0.1%)
Test coverage 🟢 81.07% → 81.27% (+0.2%)
Performance (preview) Preview not ready — Render deploy may have timed out
Accessibility
Best Practices
SEO

Updated Sun, 26 Jul 2026 04:32:09 GMT · run #2457

@cjroth
cjroth merged commit 7840df6 into main Jul 26, 2026
31 checks passed
@cjroth
cjroth deleted the cjroth/redesign-6 branch July 26, 2026 04:32

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔭 thunder-deep-review (advisory)

Complements the other bots — surfaces only what they did not flag. Never approves, never requests changes, never gates merge.
head: 1b74c101738b · mode: deep · deferred 0 item(s) already reported by other bots (best-effort dedup)

{...mobileLongPressHandlers}
data-long-press=""
onClick={() => {
if (longPressFiredRef.current) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 Blocking — The long-press "ghost click" guard can get stuck and swallow the next real tap

Heads up — the mobile row sets longPressFiredRef.current = true when the long-press fires, and the only place it gets reset back to false is inside the row's own onClick. That assumes a synthetic click always lands on the row right after the long press. But once the long press opens the MobileCardMenu drawer over the row, the follow-up click may hit the drawer/backdrop instead (and on platforms that emit contextmenu the click can be suppressed entirely). If that click never reaches the row, the ref stays true, so the next genuine tap on that chat is swallowed and the chat won't open until the user taps a second time. Could we clear the flag on a more reliable signal (e.g. when the menu opens/closes, or via a short timeout) rather than relying on a ghost click reaching the trigger?

ref={ref}
value={displayValue}
className={cn('text-sm', showIcon ? 'pl-9' : '', hasValue ? 'pr-9' : '', className)}
className={cn(showIcon ? 'pl-9' : '', hasValue ? 'pr-9' : '', className)}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Convention — Dropping text-sm changes the font size of every SearchInput, not just the skills bar

I noticed this hunk removes the hard-coded text-sm from the shared SearchInput. The base Input falls back to text-[length:var(--font-size-body)], so this quietly bumps the font size up on all five call sites — the sidebar chat search, the Tasks/PageSearch input, and the skills-bar search — not only the skills popover this PR is reworking. If the intent was just to let the skills-bar search use the mobile touch size, that broader shift on desktop search fields might be unintended. Worth a quick confirm that growing every search input to body size is what you want here.

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