Repository navigation
fix: allow resizing maximized internal windows - #589
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (4)
📒 Files selected for processing (6)
Included review availability: Your plan provides up to 8 included reviews per hour; 7 remain after this review. WalkthroughZoomed internal windows are now resizable on all edges. Resizing ends zoom. The zoom control displays a restore label, icon, title, and pressed state. Tests verify both behaviors. ChangesZoomed window behavior
Estimated code review effort: 2 (Simple) | ~10 minutes Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to Maximized internal windows can now be resized and restored with matching controls and accessibility state. The supplied tests and verification are consistent with the intended behavior, so this change is mergeable. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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 1 new issue in 1 file · 1 warning · score 93 / 100 (Great) · 1 fixed · vs 1 warning
Reviewed by React Doctor for commit |
|
| Filename | Overview |
|---|---|
| web/src/systems/os/lib/group-projection.ts | Projects zoomed frames across the work area with all resize edges enabled. |
| web/src/systems/os/components/os-traffic-lights.tsx | Adds maximize/restore icons and state-specific accessible labels and tooltips. |
| web/e2e/tests/os-shell.spec.ts | Adds direct coverage for maximized tiled resize geometry, persistence, repeated zoom cycles, and peer-window stability. |
| COPY.md | Establishes the canonical Zoom window and Restore window wording and explains their behavior. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Maximized internal window] --> B{User action}
B -->|Restore control| C[window.zoom toggle]
C --> D[Restore saved placement]
B -->|Resize handle| E[window.resize]
E --> F[End zoom]
F --> G[Persist resized tiled zone]
Reviews (3): Last reviewed commit: "docs: define internal window control lab..." | Re-trigger Greptile
Problem and root cause
Closes #585.
Internal windows became impossible to resize after maximizing. Zoom structurally places the window into its own full-size tiled island, even when it started floating; the saved return anchor is separate from the active resize zone. The daemon already supports ending zoom atomically through
window.resize, andwindow.zoomalready saves/restores the original placement, but the shared frontend disabled access to that behavior twice:group-projection.tsreplaced every zoomed frame's resizable edges withfalse, andOsWindowindependently disabled react-rnd resizing wheneverframe.zoomedwas true. The zoom control also kept an empty glyph and the label “Zoom window” when its action was actually restore.Resulting behavior
window.resizecommand, ends zoom, and persists the resized tiled zone on the current desktop.Verification
bunx turbo run test --filter=./web -- ...passed the four affected projection/window/frame/zoom-menu suites: 32 tests.bunx turbo run build --filter=./webpassed, including Web typecheck.os-shell.spec.ts: two floating maximize/restore cycles; southeast-corner and west-edge resizing during zoom; subsequent maximize/restore/reload cycles; persisted geometry and unchanged peer-window records. Passed in 5.1s, including exact normalized x/y/width/height derived from the pointer deltas on Tasks' own tiled group.make gate: passed; Web lane reports 771 files / 7,117 tests passed, with lint reporting 0 warnings / 0 errors.make gate-statusconfirmsjs-webisCURRENT-PASSafter commit.Local E2E commands used the repository's installed Playwright CLI with
--config web/playwright.config.ts os-shell.spec.ts --grep ..., under the shared machine lock and withCOMPOZY_TEST_DAEMON_BINpointing at the worktree binary. The test subprocess omitted the host-inheritedCOMPOZY_INTERNAL_RESTART_OPERATION_ID; otherwise its fresh isolated database cannot resolve that host restart operation. Initial test setup also needed to bring Tasks forward via the dock and wait for desktop animation stability before dragging. No production failures or assertions were suppressed.Cross-surface and compatibility impact
Audit follows
docs/_memory/change-impact.md:window.resize; restoring still useswindow.zoom.COPY.md, and both affected QA scenarios. No public compatibility removal or internal consumer was left behind.Limits
Linux and Electron were not run locally; local real-run evidence is macOS with Chromium against the shared Web bundle. The Web build emits pre-existing CSS
::highlightand large-chunk warnings outside this change. React Doctor reports one maintainability warning on the existingOsWindowcontrol-flow complexity (93/100); this patch removes one condition from that function and introduces no new branching there. Required PR CI is tracked on this PR; local build/test diagnostic output outside the changed behavior was not suppressed.