pull over new features from dev#340
Conversation
… keyboard input, closer visual design (#329) * fix: allow quitting with Cmd+Q when "warn before quitting" is disabled Replace the "Force Quit App" menu item with a standard Cmd+Q that routes through showQuitDialog(). When "warn before quitting" is off, return .terminateNow immediately to avoid a deadlock in applicationShouldTerminate. * fix: prevent keyboard/mouse interaction with WebView while dialog is open and improve quit dialog design Resign WebView as first responder when a dialog appears so Enter/Escape reach dialog buttons. Disable hit testing on the WebView during dialog display. Add an NSEvent monitor to block Tab key and play the system beep. Update quit dialog copy and icon size. Add customIcon support to DialogButton with a KeycapLabel view for text-based shortcut hints. Simplify duplicate left-button branch in DialogFooter. * chore: trim verbose comments to match project style * fix: address review feedback on dialog focus and actor isolation Remove overly narrow WKWebView type check when resigning first responder. Drop unnecessary nonisolated(unsafe) from tabKeyMonitor. --------- Co-authored-by: AllDaGearNoIdea <AllDaGear@No.Idea>
…anizer, settings redesign Major additive contribution with new features and improvements — no upstream features removed. Content Blocker System: - AdvancedBlockingEngine with SafariConverterLib pipeline - Site-specific scripts (Facebook, YouTube) - Filter list management with EasyList integration Extension System Overhaul: - Split ExtensionManager into focused modules (Delegate, Installation, Diagnostics, ExternallyConnectable, TabNotifications) - New Extension Library panel UI - Bitwarden biometric unlock support - Native messaging handler SponsorBlock: - Built-in YouTube sponsor segment skipping - SponsorBlock API integration with category options Air Traffic Control: - SiteRoutingManager for domain-based tab routing rules - Settings UI for managing routing rules Tab Organizer: - Local LLM-powered tab organization via mlx-swift-lm - Organization preview and apply workflow Settings Redesign: - New NavigationSplitView sidebar layout - Dedicated tabs for Ad Blocker, SponsorBlock, ATC Core Improvements: - Tab: favicon lazy loading, URL sanitization, crash tracking - TabManager: N+1 query elimination, pre-fetch optimization - HoverTrackingView replacing SwiftUI .onHover across UI - PageLoadingProgressBar, EditPinnedURLDialog, View+GlassEffect - Remove dead code (8 unused files) - Add .superpowers to gitignore New SPM dependencies: mlx-swift-lm, SafariConverterLib
… flash Replace the two separate SpacesSideBarView containers (HStack layout and SidebarHoverOverlayView) with a single instance rendered as an overlay. A Color.clear spacer animates width to push web content when pinned. The floating sidebar slides in/out via offset instead of being conditionally created/destroyed, preserving view identity and state. - Delete SidebarHoverOverlayView.swift (logic moved to WindowView) - Increase toggleSidebar animation from 0.1s to 0.2s for smoother transition - Animate hover dismissal when sidebar becomes pinned Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace branching if/else HStack with fixed-order ZStack layout so WebContent keeps stable view identity when swapping sidebar sides. Sidebar and AI panels slide under web content (zIndex layering) during the swap animation. When unpinned, sidebar floats above as before. - Add peekOverlay to HoverSidebarManager so the floating sidebar briefly appears on its new side for 2s after a position swap - Use layoutDirection environment to flip SidebarMenu tab placement - Wrap all position setters (context menu, settings) in withAnimation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Matches Arc-style instant snap when pinning the sidebar while preserving the smooth ease-out animation when unpinning. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…sible Animate sidebar toggle in both directions (pin and unpin). When the floating sidebar is already showing via hover, pinning is instant since the sidebar is already visually present. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…debar animation Use each tab's pageBackgroundColor instead of windowBackgroundColor for webview and split pane backgrounds. Switch sidebar pin/unpin animation to .smooth(duration: 0.1) for a snappier feel. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ssary hover publishes Replace .environment(\.layoutDirection) override with explicit child ordering to prevent SF Symbols and text from being mirrored. Guard isMouseInsideSidebar updates to only publish when the value changes.
* refactor: unify sidebar into single view instance to eliminate redraw flash Replace the two separate SpacesSideBarView containers (HStack layout and SidebarHoverOverlayView) with a single instance rendered as an overlay. A Color.clear spacer animates width to push web content when pinned. The floating sidebar slides in/out via offset instead of being conditionally created/destroyed, preserving view identity and state. - Delete SidebarHoverOverlayView.swift (logic moved to WindowView) - Increase toggleSidebar animation from 0.1s to 0.2s for smoother transition - Animate hover dismissal when sidebar becomes pinned Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: smooth animated sidebar position swap Replace branching if/else HStack with fixed-order ZStack layout so WebContent keeps stable view identity when swapping sidebar sides. Sidebar and AI panels slide under web content (zIndex layering) during the swap animation. When unpinned, sidebar floats above as before. - Add peekOverlay to HoverSidebarManager so the floating sidebar briefly appears on its new side for 2s after a position swap - Use layoutDirection environment to flip SidebarMenu tab placement - Wrap all position setters (context menu, settings) in withAnimation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: remove animation when pinning sidebar, keep it when unpinning Matches Arc-style instant snap when pinning the sidebar while preserving the smooth ease-out animation when unpinning. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: restore pinning animation, skip when floating sidebar already visible Animate sidebar toggle in both directions (pin and unpin). When the floating sidebar is already showing via hover, pinning is instant since the sidebar is already visually present. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use page background color for webview containers and speed up sidebar animation Use each tab's pageBackgroundColor instead of windowBackgroundColor for webview and split pane backgrounds. Switch sidebar pin/unpin animation to .smooth(duration: 0.1) for a snappier feel. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: avoid layoutDirection mirroring in SidebarMenu and reduce unnecessary hover publishes Replace .environment(\.layoutDirection) override with explicit child ordering to prevent SF Symbols and text from being mirrored. Guard isMouseInsideSidebar updates to only publish when the value changes. * Quit Fixes: correct quitting behaviour when 'warn' is false, improved keyboard input, closer visual design (#329) * fix: allow quitting with Cmd+Q when "warn before quitting" is disabled Replace the "Force Quit App" menu item with a standard Cmd+Q that routes through showQuitDialog(). When "warn before quitting" is off, return .terminateNow immediately to avoid a deadlock in applicationShouldTerminate. * fix: prevent keyboard/mouse interaction with WebView while dialog is open and improve quit dialog design Resign WebView as first responder when a dialog appears so Enter/Escape reach dialog buttons. Disable hit testing on the WebView during dialog display. Add an NSEvent monitor to block Tab key and play the system beep. Update quit dialog copy and icon size. Add customIcon support to DialogButton with a KeycapLabel view for text-based shortcut hints. Simplify duplicate left-button branch in DialogFooter. * chore: trim verbose comments to match project style * fix: address review feedback on dialog focus and actor isolation Remove overly narrow WKWebView type check when resigning first responder. Drop unnecessary nonisolated(unsafe) from tabKeyMonitor. --------- Co-authored-by: AllDaGearNoIdea <AllDaGear@No.Idea> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Maciej Baginski <baginskimaciek08@gmail.com>
feat: content blocker, extension overhaul, SponsorBlock, ATC, tab organizer, settings redesign
|
Important Review skippedToo many files! This PR contains 156 files, which is 6 over the limit of 150. To get a review, narrow the scope: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (156)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 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 |
No description provided.