Spool/session sharing plan#1
Open
xinyao27 wants to merge 72 commits into
Open
Conversation
Session refs are catalog-revision bound, so carrying rows into a new revision exposed aliases the owner had already invalidated. Tailnet discovery also waited for every peer probe, letting offline nodes block healthy desktops.
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
Migrate all 24 shadcn UI wrappers from radix-ui to @base-ui/react@1.6.0 and sweep every consumer call site. Style is new-york-v4 (no Base golden counterpart), so wrappers were transformed in place keeping exact classes; only primitives, part names, data-attribute/CSS-var hooks, and call-site props changed. Remove the radix-ui dependency. - Wrappers: accordion, collapsible, tabs, toggle, toggle-group, button (real Base Button primitive), badge/button-group (useRender), label (native <label>), separator, progress, scroll-area, checkbox, slider, tooltip, popover (+ anchor bridge), hover-card (preview-card), dialog, sheet, dropdown-menu/context-menu (Menu), select, command (Dialog only; cmdk untouched). - Consumers: 512 asChild->render (ts-morph codemod) + 33 hand-migrated; VisuallyHidden->sr-only (5 files); ~220 semantic prop fixes across 134 files (delay/openDelay, onOpenAutoFocus->initialFocus, type+value arrays, onSelect->onClick, position->alignItemWithTrigger, etc.). - Menu/select item highlight focus:*->data-highlighted:* (Base UI items don't take DOM focus); PopoverAnchor bridged to Positioner anchor prop. Behavior deltas flagged in .migration/: tabs manual activation, menu checkbox/radio no close-on-select, a few dropped non-forwarded positioner props, and ResourceUsageStatusSegment tooltip delays. tsc (node+cli+web), build:web, and oxlint all pass.
Two Radix->Base UI gaps that type-check but break at runtime (found in QA):
- Menu labels crashed the menu on open. Base UI Menu.GroupLabel /
ContextMenu.GroupLabel throw ("MenuGroupContext is missing") unless nested
in a Group, but shadcn labels are free-floating section headers (as Radix
allowed) — right-clicking the sidebar threw. Render DropdownMenuLabel /
ContextMenuLabel as a plain styled <div> instead.
- Menu item onSelect silently stopped firing. Base UI Menu.Item activates via
onClick, not onSelect (which now maps to the native DOM handler and
type-checks), so the typecheck-driven sweep missed it. Convert 286 menu-item
sites onSelect->onClick (DropdownMenuItem/ContextMenuItem/CheckboxItem/
RadioItem + the Item alias), adding closeOnClick={false} where the handler
used preventDefault (Radix keep-open). cmdk CommandItem.onSelect and custom
components' own onSelect props are untouched.
Merge duplicate onClick where items had both onSelect and onClick.
tsc (node+cli+web) and build:web pass.
Per-component .migration/*.md (changes, left-alone, behavior deltas, manual QA) plus project.md summarizing the whole-project migration, behavior deltas, and the post-QA runtime fixes (menu GroupLabel crash, menu-item onSelect->onClick).
Drop the separate 4px workspace-column drag/spacer strip and its WORKSPACE_COLUMN_DRAG_REGION_CLASS_NAME export; instead set the shared WorkspacePaneFrame tab strip to h-[36px] so the middle column's top band matches the 36px titlebar/sidebar header directly (no spacer element). The strip keeps its data-terminal-focus-release-surface (window drag + terminal focus release).
Session refs are catalog-revision bound, so carrying rows into a new revision exposed aliases the owner had already invalidated. Tailnet discovery also waited for every peer probe, letting offline nodes block healthy desktops.
Migrate all 24 shadcn UI wrappers from radix-ui to @base-ui/react@1.6.0 and sweep every consumer call site. Style is new-york-v4 (no Base golden counterpart), so wrappers were transformed in place keeping exact classes; only primitives, part names, data-attribute/CSS-var hooks, and call-site props changed. Remove the radix-ui dependency. - Wrappers: accordion, collapsible, tabs, toggle, toggle-group, button (real Base Button primitive), badge/button-group (useRender), label (native <label>), separator, progress, scroll-area, checkbox, slider, tooltip, popover (+ anchor bridge), hover-card (preview-card), dialog, sheet, dropdown-menu/context-menu (Menu), select, command (Dialog only; cmdk untouched). - Consumers: 512 asChild->render (ts-morph codemod) + 33 hand-migrated; VisuallyHidden->sr-only (5 files); ~220 semantic prop fixes across 134 files (delay/openDelay, onOpenAutoFocus->initialFocus, type+value arrays, onSelect->onClick, position->alignItemWithTrigger, etc.). - Menu/select item highlight focus:*->data-highlighted:* (Base UI items don't take DOM focus); PopoverAnchor bridged to Positioner anchor prop. Behavior deltas flagged in .migration/: tabs manual activation, menu checkbox/radio no close-on-select, a few dropped non-forwarded positioner props, and ResourceUsageStatusSegment tooltip delays. tsc (node+cli+web), build:web, and oxlint all pass.
Two Radix->Base UI gaps that type-check but break at runtime (found in QA):
- Menu labels crashed the menu on open. Base UI Menu.GroupLabel /
ContextMenu.GroupLabel throw ("MenuGroupContext is missing") unless nested
in a Group, but shadcn labels are free-floating section headers (as Radix
allowed) — right-clicking the sidebar threw. Render DropdownMenuLabel /
ContextMenuLabel as a plain styled <div> instead.
- Menu item onSelect silently stopped firing. Base UI Menu.Item activates via
onClick, not onSelect (which now maps to the native DOM handler and
type-checks), so the typecheck-driven sweep missed it. Convert 286 menu-item
sites onSelect->onClick (DropdownMenuItem/ContextMenuItem/CheckboxItem/
RadioItem + the Item alias), adding closeOnClick={false} where the handler
used preventDefault (Radix keep-open). cmdk CommandItem.onSelect and custom
components' own onSelect props are untouched.
Merge duplicate onClick where items had both onSelect and onClick.
tsc (node+cli+web) and build:web pass.
Per-component .migration/*.md (changes, left-alone, behavior deltas, manual QA) plus project.md summarizing the whole-project migration, behavior deltas, and the post-QA runtime fixes (menu GroupLabel crash, menu-item onSelect->onClick).
Drop the separate 4px workspace-column drag/spacer strip and its WORKSPACE_COLUMN_DRAG_REGION_CLASS_NAME export; instead set the shared WorkspacePaneFrame tab strip to h-[36px] so the middle column's top band matches the 36px titlebar/sidebar header directly (no spacer element). The strip keeps its data-terminal-focus-release-surface (window drag + terminal focus release).
… spool/session-sharing-plan
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Describe the user-visible change.
Screenshots
No visual change.Testing
pnpm lintpnpm typecheckpnpm testpnpm buildAI Review Report
Summarize the code review you ran with your AI coding agent. Include the main risks it checked, what it flagged, and what you changed or verified as a result.
Confirm that the review explicitly checked cross-platform compatibility for macOS, Linux, and Windows, including shortcuts, labels, paths, shell behavior, and any Electron-specific platform differences touched by this PR.
Security Audit
Provide a basic security audit summary from your AI coding agent. Call out any input handling, command execution, path handling, auth, secrets, dependency, or IPC risks that were reviewed, plus any follow-up needed.
Notes
Call out any platform-specific behavior, risks, or follow-up work.