Skip to content

feat(overview): add experimental ribbon window animations - #120

Merged
qeude merged 11 commits into
mainfrom
t3code/overview-zoom-performance
Oct 5, 2026
Merged

qeude merged 11 commits into
mainfrom
t3code/overview-zoom-performance

Conversation

@qeude

@qeude qeude commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Add opt-in experimental ribbon animations for window representations and Overview surface transitions.
  • Extend Overview navigation, layout editing, preview capture, and native frame commits to support animated transitions with fallbacks.
  • Document experimental settings, capture behavior, and resource limits; add configuration, runtime, and desktop coverage.

Testing

  • Not run (change request content only).

Review in cubic

Note

Add experimental ribbon window animations and opt-in surface transitions to Overview

  • Adds opt-in experimental surface-transition and window-representation flags. When enabled, Overview opens by animating captured window surfaces into panels and closes by animating them back, falling back to the existing show/hide path when conditions are not met (OverviewPanel.swift, OverviewController.swift).
  • Adds horizontal ribbon animations: single-monitor command animations can plan a shared logical horizontal path, align participating windows to a common offset, and compute a latency-derived minimum duration capped at 0.4 seconds (FrameCommit.swift, MacOSPlatform+FrameApplication.swift).
  • Overview selection and exit now defer native layout application until frame readiness is confirmed, tracked by session generation. Keyboard navigation adds workspace, first/last-column, and layout-command actions, and Escape routes through a new cancel callback that bypasses busy navigation (HotKeyModels.swift, DaemonOverview.swift).
  • ScreenCaptureKit captures now share one process-wide limiter, honor a byte budget, cap preview sizes at 1024x768, and stop permanently after user authorization denial. Memory pressure pauses surface, idle-preview, and ribbon work and resumes on recovery (OverviewPreviewCapture.swift).
  • Behavioral Change: both experimental flags default to false; enabling surface transitions requires window previews or config validation throws. Overview selection and layout commands now keep the overview open until native frames are ready, and animated size deferral no longer triggers solely from same-display horizontal movement. See shouldDeferAnimatedSizeUntilMovementCompletes in FrameCommit.swift and Config.validation in Config.swift.

Macroscope summarized acdb42f.

Comment thread Sources/DefiMacOS/MacOSPlatform.swift Outdated
Comment thread Sources/DefiMacOS/OverviewController.swift
Comment thread Sources/DefiDaemon/DaemonOverview.swift Outdated
@greptile-apps

greptile-apps Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

[Medium risk] Adds experimental window animation features to the overview.

The PR appears safe to merge; no new blocking issue was found.

What we checked:

  • Capture resumes after recovery: Recovery requests a daemon refresh. The daemon passes current settings to update when Overview is open and to prepare when closed.
  • Recovery preserves displayed layers: Capture preparation creates a separate replacement layer. The opening scene keeps its attached layer, so refreshing the capture cache does not replace its displayed screenshot.
Summary

This PR adds opt-in screenshot-based ribbon and Overview animations, with native-window fallbacks. The latest change delays surface preparation during memory pressure and resumes it after recovery.

  • No new actionable issues found in the changes since the previous review.
  • The earlier memory-pressure finding is fixed: update checks !isUnderMemoryPressure before calling surfaceRequests.
  • The other previous threads remain addressed by the permission, cancellation, session, geometry, throttle, and monitor checks.
  • No previous threads supplied comment numbers, so previousFindings is empty.
  • Runtime tests and visual checks were not run here; the workspace is Linux and the changed UI requires macOS.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Memory pressure] --> B[Stop capture and mark preparation pending]
  C[Settings change] --> D{Memory pressure active?}
  D -->|Yes| E[Keep preparation pending]
  D -->|No| F[Prepare with current settings]
  B --> G[Memory returns to normal]
  G --> H[Request daemon refresh]
  H --> I{Overview open?}
  I -->|Yes| J[Update consumes pending preparation]
  I -->|No| K[Idle preparation consumes pending work]
  J --> F
  K --> F
Loading

Reviews (7) · Last reviewed commit: "fix: defer live overview preparation und..."

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

All reported issues were addressed across 55 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread Sources/DefiMacOS/FrameCommit.swift Outdated
Comment thread Tests/DefiRuntimeTests/OverviewRuntimeTests.swift
Comment thread docs/adr/0003-keep-overview-independent-from-capture.md Outdated
Comment thread Sources/DefiCore/Overview.swift
Comment thread Sources/DefiMacOS/OverviewPreviewCapture.swift Outdated
Comment thread Sources/DefiDaemon/DaemonCommands.swift
Comment thread CONFIGURATION.md
Comment thread Tests/DefiMacOSTests/FrameCommitTests.swift
Comment thread Sources/DefiMacOS/ExperimentalRibbonRenderer.swift Outdated
Comment thread Sources/DefiMacOS/ExperimentalRibbonRenderer.swift
Comment thread Sources/DefiMacOS/ExperimentalRibbonRenderer.swift Outdated
Comment thread Sources/DefiMacOS/OverviewController.swift Outdated
Comment thread Sources/DefiDaemon/DaemonOverview.swift Outdated
Comment thread Sources/DefiMacOS/OverviewSurfaceCapture.swift
@macroscopeapp

macroscopeapp Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR introduces substantial new ScreenCaptureKit/AVFoundation rendering and native window-animation behavior across Overview, layout commands, and Accessibility coordination. Despite opt-in defaults and fallbacks, its sensitive screen-content handling, resource implications, and broad runtime changes warrant human review.

You can add or adjust custom eligibility rules. Learn more.

Comment thread Sources/DefiMacOS/OverviewController.swift
Comment thread Sources/DefiDaemon/DaemonOverview.swift Outdated
Comment thread Sources/DefiMacOS/OverviewSurfaceScene.swift
Comment thread Sources/DefiDaemon/DaemonCommands.swift Outdated
Comment thread Sources/DefiDaemon/DaemonOverview.swift

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

All reported issues were addressed across 28 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread Sources/DefiDaemon/DaemonOverview.swift Outdated
Comment thread Sources/DefiMacOS/MacOSPlatform.swift Outdated
Comment thread Sources/DefiDaemon/DaemonCommands.swift Outdated

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

All reported issues were addressed across 28 files (changes from recent commits).

Requires human review: Auto-approval blocked because this review re-detected 1 unresolved issue already reported by Cubic.
Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread Sources/DefiDaemon/DaemonOverview.swift
Comment thread Tests/DefiMacOSTests/DesktopE2ETests.swift
Comment thread docs/research/macos-window-surface-transitions.md
Comment thread Sources/DefiMacOS/OverviewSurfaceCapture.swift
Comment thread Sources/DefiMacOS/OverviewController.swift
Comment thread Sources/DefiMacOS/OverviewController.swift
Comment thread Sources/DefiDaemon/DaemonCommands.swift Outdated
Comment thread Sources/DefiMacOS/ExperimentalRibbonRenderer.swift Outdated

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

2 issues found across 9 files (changes from recent commits).

Confidence score: 3/5

  • OverviewController.swift: Enabling ribbon representations while Overview is already open leaves ribbon animations unavailable until Overview is reopened. Prepare the renderer and capture contexts when the setting changes.
  • OverviewSurfaceCapture.swift: A surface can remain warming without a retry if the desired list changes away from and back to it while capture is in flight. Ensure completion schedules another capture when the request is still desired.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="Sources/DefiMacOS/OverviewController.swift">

<violation number="1" location="Sources/DefiMacOS/OverviewController.swift:581">
P2: Enabling ribbon representations while Overview is already open only changes this flag; the renderer and capture contexts are prepared only by `prepare()`, so ribbon animations remain unavailable until Overview is reopened. Refresh the renderer preparation when this setting changes.</violation>
</file>

<file name="Sources/DefiMacOS/OverviewSurfaceCapture.swift">

<violation number="1" location="Sources/DefiMacOS/OverviewSurfaceCapture.swift:182">
P2: A request skipped here can remain uncaptured if the desired list changes away and returns to `requested` before this task finishes: `prepare` then cancels the queued retry, and completion leaves the set warming without another attempt. Re-queue skipped work when its request becomes desired again.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread Sources/DefiMacOS/OverviewController.swift
Comment thread Sources/DefiMacOS/OverviewSurfaceCapture.swift
Comment thread Sources/DefiMacOS/OverviewController.swift
@qeude
qeude merged commit 3562126 into main Oct 5, 2026
5 of 6 checks passed
@qeude
qeude deleted the t3code/overview-zoom-performance branch October 5, 2026 19:07
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