Skip to content

ENG-2410 Settings layout polish: max width, cut-off placeholder, tooltip cursor, search highlight - #1558

Open
trangdoan982 wants to merge 0 commit into
roam-setting-overhaulfrom
eng-2410-settings-layout-polish-max-width-cut-off-placeholder-tooltip
Open

trangdoan982 wants to merge 0 commit into
roam-setting-overhaulfrom
eng-2410-settings-layout-polish-max-width-cut-off-placeholder-tooltip

Conversation

@trangdoan982

@trangdoan982 trangdoan982 commented Oct 17, 2026 •

Copy link
Copy Markdown
Member

Stacked on #1525 (roam-setting-overhaul). Merge that first.

Reviewer brief

  • Result: settings rows cap at 720px on wide windows, the Personal override and Discourse tool keyboard shortcut placeholders fit their boxes, the scope icon shows the default cursor, and the search highlight holds for 900ms in bg-gray-200.
  • Review focus: the 720px cap applies only to row pages. Six tabs get panelClassName="dg-settings-row-panel" in apps/roam/src/components/settings/Settings.tsx, and the node config page gets dg-settings-node-config in NodeConfig.tsx. Relations, Admin and the node index keep full width because they hold wide tables, and so does the node page section holding the specification query editor (its condition row needs about 750px). The rule lives in settingsStyles.css because Roam's global Tailwind 2 has no child selectors or arbitrary values.
  • Risk or follow-up: on a wide window, the Specification "Enabled" toggle still sits far from its label, because its section is uncapped so the query editor fits (raised in the Devin review thread). Capping that row alone would need a change inside DiscourseNodeSpecification. Separately, the same cut-off placeholder bug exists outside this ticket: the canvas shortcut override inputs ("(no sho…") and "Click to set trigger" in DiscourseNodeSearchMenu.tsx when that field is empty. NodeMenuTriggerComponent also renders in the legacy panel in createSettingsPanel.ts, so "Set trigger" shows there too.

Each fix is a small change on the path that produced the reported problem:

flowchart LR
  subgraph Before
    A1["Wide window: row spans full panel<br/>control 1065px from label"]
    B1["'Click to set trigger'<br/>168px text in 130px box"]
    C1["Scope icon inherits<br/>label's cursor-pointer"]
    D1["Search flash<br/>600ms, bg-gray-100"]
  end
  subgraph After
    A2[".dg-settings-row-panel > *<br/>max-width: 720px"]
    B2["'Set trigger'<br/>92px, fits"]
    C2["cursor-default<br/>on SettingScopeIndicator"]
    D2["FLASH_HOLD_MS = 900<br/>bg-gray-200"]
  end
  A1 --> A2
  B1 --> B2
  C1 --> C2
  D1 --> D2
Loading

Verification

Ran a Playwright scenario in a 1920×1080 window against the dev build, before and after the change (dg-roam-load-extension, slot 1).

Scenario Input Expected Actual Pass
Max width, General tab 1920px window, Personal override row Control sits near its label Row width 1222 → 713px; label-to-control gap 1065 → 556px ✅
Max width, node page Grammar › Nodes › Claim Page capped Page width 720px ✅
Wide tables stay wide Relations tab Full width Table spans the panel ✅
Specification editor Enable a node specification, 1920px No horizontal scroll Before the fix: 716px content in a 713px box. After: editor 1226px wide, no overflow; other rows still 720px ✅
Placeholder Empty Personal override Full text visible Text 168px in 130px box → 92px, fits ✅
Discourse tool shortcut placeholder Empty field on the Canvas tab Full text visible "Click to set single key" cut off → "Set single key", 118px text in 130px box ✅
Scope icon cursor Hover the person icon default cursor, tooltip opens pointer → default; tooltip opens ✅
Search highlight Search "Canvas Page Format", select result Fill holds ~900ms, darker 603ms bg-gray-100 → 894ms bg-gray-200 ✅

Screenshots (1920×1080, before and after):

Scenario Screenshot
Max width: before (1920px window) Max width: before (1920px window)
Max width: after Max width: after
Max width: node page after Max width: node page after
Relations tab stays full width Relations tab stays full width
Placeholder: before Placeholder: before
Placeholder: after Placeholder: after
Discourse tool shortcut placeholder: before Discourse tool shortcut placeholder: before
Discourse tool shortcut placeholder: after Discourse tool shortcut placeholder: after
Scope tooltip: before Scope tooltip: before
Scope tooltip: after Scope tooltip: after
Search highlight at 450ms: before (bg-gray-100) Search highlight at 450ms: before (bg-gray-100)
Search highlight at 450ms: after (bg-gray-200) Search highlight at 450ms: after (bg-gray-200)

pnpm ci:validate passes on 7ed3eda2. No unit tests added: the change has no new logic.

Not verified: the cursor change through a screenshot (screenshots omit the cursor; the computed style is the evidence). Dark theme and narrow windows were not exercised.

Loom video

Pending.

Scope check

  • Ran $scope-check against ENG-2410 and the final diff.
  • Scope beyond Done When: shortened the Canvas tab's "Discourse tool keyboard shortcut" placeholder from "Click to set single key" to "Set single key" (apps/roam/src/components/settings/CanvasSettings.tsx).
  • Required now: same cut-off placeholder bug in the same settings dialog and the same w-40 keycap input; a one-line copy change, requested by the PR author during verification.
  • Anyone affected or consulted: Not documented
  • Decision: Not documented

Standards check

  • Ran $dg-pr-adherence-check against the final diff and PR metadata.

Local delegated full review

  • Ran a comprehensive review of the entire final diff in a subagent with a fresh context. Use $dg-delegated-full-review when no other full-review workflow is available.

No findings.

🤖 Generated with Claude Code

trangdoan982 and others added 2 commits October 17, 2026 10:30
…tip cursor, search highlight

Cap row-based settings tabs and the node config page at 720px, shorten the
personal override placeholder, give the scope icon the default cursor, and
hold the search highlight longer and darker.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M554BHSAE38GC59P1EMYHPDT
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M554JBZZDFSA925YKC6ER68J
@vercel

vercel Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated
discourse-graph Skipped Skipped Oct 20, 2026 11:20pm UTC

Request Review

@supabase

supabase Bot commented Oct 17, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project zytfjzqyijgagqxrzbmz because there are no changes detected in packages/database/supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@linear-code

linear-code Bot commented Oct 17, 2026

Copy link
Copy Markdown

ENG-2410

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 1 potential issue.

Devin Review

Comment thread apps/roam/src/components/settings/NodeConfig.tsx
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M555JFG5EAQMHRA22JEYA7XN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M5DSV3RANEN2ZF9HZA81HWBS

This branch was previously deployed

1 inactive deployment
Preview — 7ed3eda2 Deployed Oct 20, 2026 by vercel[bot]
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