Skip to content

feat: invisible panel-edge resize handles - #50

Merged
bgultekin merged 5 commits into
mainfrom
panel-edge-resize
May 12, 2026
Merged

bgultekin merged 5 commits into
mainfrom
panel-edge-resize

Conversation

@bgultekin

@bgultekin bgultekin commented May 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Removed the two 6pt resize-handle strips that sat in the layout between/beside panels
  • Overlaid the resize zones on each panel's visible edge (terminal pane left edge resizes terminal; terminal-list left edge resizes list)
  • Stripped the hover tint and backing layer from `ResizeHandle` so the resize area is fully invisible — only the cursor change signals it
  • Dropped `terminalChrome` / `sessionListChrome` / `sessionListLeadingPad` to 0 since handles no longer consume layout space

Test plan

  • Hover the visible left edge of the terminal pane → cursor switches to ↔, drag resizes the terminal pane
  • Hover the visible left edge of the terminal list → cursor switches to ↔, drag resizes the list
  • No visible handle artifact at rest or on hover
  • Vertical (height) resize at the bottom of the terminal pane still works
  • Drawer width updates correctly as panels resize

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • UI Improvements
    • Optimized panel layout spacing for better screen real estate usage
    • Refined resize handle positioning and interaction behavior
    • Enhanced visual styling for marked sessions in the list
    • Improved animation effects during transitions

Review Change Stack

bgultekin and others added 2 commits May 12, 2026 09:48
Move horizontal resize zones from sibling strips in the HStack onto
the visible edges of the terminal and terminal-list panels via
.overlay, and strip the hover tint + background layer from
ResizeHandle so the resize area has zero visual footprint. Cursor
still switches to resize on edge hover; drag resizes the panel
whose edge was grabbed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented May 12, 2026 •

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 96e02296-7816-45b5-bda3-e1f3cf9a1dd7

📥 Commits

Reviewing files that changed from the base of the PR and between e12ebe5 and bdcf5b6.

📒 Files selected for processing (5)
  • macos/Sources/Ocak/Models/PanelSizeStore.swift
  • macos/Sources/Ocak/Views/DrawerView.swift
  • macos/Sources/Ocak/Views/EmberDot.swift
  • macos/Sources/Ocak/Views/ResizeHandle.swift
  • macos/Sources/Ocak/Views/SessionListRowView.swift
💤 Files with no reviewable changes (1)
  • macos/Sources/Ocak/Views/ResizeHandle.swift

📝 Walkthrough

Walkthrough

Five files across the Ocak macOS app are modified: panel sizing constants are zeroed, resize handles transition from conditional insertion to overlays with edge-dependent padding, unused appearance update calls are removed from the resize handle lifecycle, session list rows apply marked-state conditional styling, and an animation opacity modifier is repositioned to an inner visual layer.

Changes

UI Layout and Interaction Refinements

Layer / File(s) Summary
Panel sizing and resize handle overlay layout
macos/Sources/Ocak/Models/PanelSizeStore.swift, macos/Sources/Ocak/Views/DrawerView.swift
Chrome constants (sessionListLeadingPad, terminalChrome, sessionListChrome) are reset to 0; terminal and session resize handles are moved from conditional insertion to overlays with edge-dependent alignment and padding.
Resize handle interaction cleanup
macos/Sources/Ocak/Views/ResizeHandle.swift
updateAppearance() calls are removed from mouse hover and drag stop lifecycle, simplifying the handle's interaction state management.
Session list marked styling
macos/Sources/Ocak/Views/SessionListRowView.swift
Display text foreground color and padding are now conditional on session.isMarked, applying distinct styling for marked and unmarked sessions.
Animation layer adjustment
macos/Sources/Ocak/Views/EmberDot.swift
Opacity animation modifier is relocated to the inner filled circle, changing which layer fades in response to motion reduction and phase updates.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • bgultekin/ocak#49: Both PRs directly modify PanelSizeStore chrome constants and DrawerView resize-handle padding and layout, with PR#49 introducing the structure that PR#50 now refactors.

Poem

🐰 The drawer's handles dance anew,
No chrome to spare—the layout's true,
Mark your sessions, glow inside,
Cleaner code with grace and pride! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and directly summarizes the main objective: making panel-edge resize handles invisible by moving them to overlay positions and removing visual elements.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch panel-edge-resize

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

bgultekin and others added 3 commits May 12, 2026 09:54
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ckground

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Shift the badge 3pt left so the text inside starts at the same
horizontal position as unmarked terminal names.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@bgultekin
bgultekin marked this pull request as ready for review May 12, 2026 08:13
@bgultekin
bgultekin merged commit 213fffe into main May 12, 2026
2 checks passed
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