Repository navigation
feat: add support for window tabs - #287
Conversation
|
Too many files changed for review. ( Bypass the limit by tagging |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedToo many files! This PR contains 362 files, which is 62 over the limit of 300. To get a review, narrow the scope: Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (95)
📒 Files selected for processing (362)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
React Doctor found 24 new issues in 3 files · 23 errors & 1 warning · score 81 / 100 (Needs work) · 8 fixed · vs Errors
1 warning
Reviewed by React Doctor for commit |
| return undefined; | ||
| } | ||
| const factory = eventSourceFactory ?? defaultEventSourceFactory; | ||
| if (!eventSourceFactory && typeof EventSource === "undefined") return undefined; | ||
| setStatus("connecting"); | ||
| setStreamStatus("connecting"); |
There was a problem hiding this comment.
React Doctor · react-hooks-js/set-state-in-effect (warning)
This synchronous effect update causes an extra render: Calling setState synchronously within an effect can trigger cascading renders. Prefer deriving or initializing the value before render. If the effect must read a browser API after mount, treat this as advisory or suppress it with // react-doctor-disable-next-line react-hooks-js/set-state-in-effect.
Fix → Effects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:
- Update external systems with the latest state from React.
- Subscribe for updates from some external system, calling setState in a callback function when external state changes.
Calling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).
| aria-label="Open tabs" | ||
| className="no-scrollbar flex min-w-0 items-end gap-0.5 overflow-x-auto" | ||
| > | ||
| {frame.members.map((member, index) => { |
There was a problem hiding this comment.
React Doctor · react-hooks-js/refs (error)
This component misses React Compiler's automatic memoization & re-renders more than it should: Cannot access refs during render. Rewrite the flagged code so the compiler can optimize it.
Fix → React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the current property) during render can cause your component not to update as expected (https://react.dev/reference/react/useRef).
| aria-label="New tab (⌘T)" | ||
| data-slot="os-window-tab-add" | ||
| className="mb-[calc((var(--height-deck-tab)-var(--size-deck-add))/2)] grid size-deck-add shrink-0 place-items-center rounded-menubar-control text-subtle transition-colors duration-base hover:bg-btn-default-fill hover:text-fg-strong focus-visible:shadow-focus-ring focus-visible:outline-none" | ||
| onClick={deck.openNewTab} |
There was a problem hiding this comment.
React Doctor · react-hooks-js/refs (error)
This component misses React Compiler's automatic memoization & re-renders more than it should: Cannot access refs during render. Rewrite the flagged code so the compiler can optimize it.
Fix → React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the current property) during render can cause your component not to update as expected (https://react.dev/reference/react/useRef).
|
|
||
| return ( | ||
| <Rnd | ||
| ref={rndRef} | ||
| ref={model.rndRef} |
There was a problem hiding this comment.
React Doctor · react-hooks-js/refs (error)
This component misses React Compiler's automatic memoization & re-renders more than it should: Cannot access refs during render. Rewrite the flagged code so the compiler can optimize it.
Fix → React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the current property) during render can cause your component not to update as expected (https://react.dev/reference/react/useRef).
| className={compact ? "absolute inset-0" : undefined} | ||
| position={compact ? { x: 0, y: 0 } : { x: rect.x, y: rect.y }} | ||
| size={compact ? { width: "100%", height: "100%" } : { width: rect.w, height: rect.h }} | ||
| position={compact ? { x: 0, y: 0 } : { x: model.rect.x, y: model.rect.y }} |
There was a problem hiding this comment.
React Doctor · react-hooks-js/refs (error)
This component misses React Compiler's automatic memoization & re-renders more than it should: Cannot access refs during render. Rewrite the flagged code so the compiler can optimize it.
Fix → React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the current property) during render can cause your component not to update as expected (https://react.dev/reference/react/useRef).
| data-dragging={dragging ? "" : undefined} | ||
| data-testid={`os-window-frame-${frame.id}`} | ||
| data-frame-kind={frame.kind} | ||
| onPointerEnter={model.handlePointerEnter} |
There was a problem hiding this comment.
React Doctor · react-hooks-js/refs (error)
This component misses React Compiler's automatic memoization & re-renders more than it should: Cannot access refs during render. Rewrite the flagged code so the compiler can optimize it.
Fix → React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the current property) during render can cause your component not to update as expected (https://react.dev/reference/react/useRef).
| data-testid={`os-window-frame-${frame.id}`} | ||
| data-frame-kind={frame.kind} | ||
| onPointerEnter={model.handlePointerEnter} | ||
| onPointerDownCapture={model.handlePointerDownCapture} |
There was a problem hiding this comment.
React Doctor · react-hooks-js/refs (error)
This component misses React Compiler's automatic memoization & re-renders more than it should: Cannot access refs during render. Rewrite the flagged code so the compiler can optimize it.
Fix → React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the current property) during render can cause your component not to update as expected (https://react.dev/reference/react/useRef).
| data-frame-kind={frame.kind} | ||
| onPointerEnter={model.handlePointerEnter} | ||
| onPointerDownCapture={model.handlePointerDownCapture} | ||
| onFocusCapture={model.handleFocusCapture} |
There was a problem hiding this comment.
React Doctor · react-hooks-js/refs (error)
This component misses React Compiler's automatic memoization & re-renders more than it should: Cannot access refs during render. Rewrite the flagged code so the compiler can optimize it.
Fix → React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the current property) during render can cause your component not to update as expected (https://react.dev/reference/react/useRef).
| <OsWindowDeck | ||
| frame={frame} | ||
| slotStores={slotStores} | ||
| onTrafficLight={model.handleTrafficLight} |
There was a problem hiding this comment.
React Doctor · react-hooks-js/refs (error)
This component misses React Compiler's automatic memoization & re-renders more than it should: Cannot access refs during render. Rewrite the flagged code so the compiler can optimize it.
Fix → React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the current property) during render can cause your component not to update as expected (https://react.dev/reference/react/useRef).
| onTrafficLight={model.handleTrafficLight} | ||
| /> | ||
| ))} | ||
| {merge.mergeTargeted ? ( |
There was a problem hiding this comment.
React Doctor · react-hooks-js/refs (error)
This component misses React Compiler's automatic memoization & re-renders more than it should: Cannot access refs during render. Rewrite the flagged code so the compiler can optimize it.
Fix → React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the current property) during render can cause your component not to update as expected (https://react.dev/reference/react/useRef).
Summary
Verification
make gate: full escalation passed; current evidence is recorded bymake gate-status-racedocs/qa/reports/2026-08-01-window-tabs.mddocs/qa/evidence/2026-08-01-window-tabs/"clean": truewith zero survivorsQA fix found during dogfooding
compozy config set window_manager.*now uses the canonical Settings section endpoint. A live Window Manager apply projects only that section over the active snapshot, so unrelated restart-required drift stays pending and remains truthful incompozy status.Compozy Impact Audit
window_layoutresource projection across extensions, bundles, registries, SDK contracts, and catalog introspection. Preview, rejected, pointer-only, and client-local focus operations remain hook-silent. Config lifecycle adds live Window Manager keys and section-scoped application.workspace_id; client presentation remains separately fenced. Cross-workspace reads/mutations and foreign client IDs are covered by runtime/API/E2E parity checks.skills/compozy/references/window-management.mdfor layout v3, tab operations, navigation, pins, reopen, resources, hooks, and dynamic tool discovery; no fixed tool-count assumption remains.Web / Docs Impact