feat(plugin): add performance monitoring and enhanced plugin details#224
feat(plugin): add performance monitoring and enhanced plugin details#224TalexDreamSoul merged 24 commits intomasterfrom
Conversation
…management - Add performance metrics tracking with load time measurement - Implement plugin manifest editing with save/reload functionality - Add file explorer integration for plugin directories - Create new performance SDK module for plugin performance monitoring - Enhance PluginDetails UI with editable dev settings and performance data - Add comprehensive API endpoints for plugin management operations
- Add colorful prop to TuffIcon component in PluginInfo.vue - Update touch-translation plugin to use new feature API (feature.pushItems/clearItems) - Enhance manifest.json with author, keywords, priorities, and accepted input types - Add screenshot translation feature with OCR support - Replace deprecated $box.hide() with box.hide()
…ling - add core-box:focus-window IPC channel for programmatic window focusing - refactor useClipboard with modular auto-fill logic and improved cleanup - extract resize logic into dedicated useResize hook - introduce useFocus hook for centralized input/window focus management - streamline useVisibility with structured options and cleaner lifecycle - replace inline resize debounce in useSearch with useResize integration - update CoreBox.vue to use new focus utilities and handle provider deactivation with focus restore
- add `isTextType` helper to handle both text and HTML content types - auto-fill text content when search input is empty - trigger auto-fill on clipboard change detection - trigger resize on loading state change
Adds cleanup logic to remove plugin-specific items from BoxItemManager when plugins are deactivated, ensuring proper state management and preventing stale data from lingering in the system.
- introduce TuffContainerLayout DSL with list/grid modes - add BoxGrid/BoxGridItem components for grid rendering - enhance keyboard navigation for grid mode (arrow keys, wrapping) - recommendation engine returns grid layout by default - search core normalizes query text and passes layout config - update useSearch to apply backend layout configuration - add pinned and recommendation metadata to TuffMeta
…S apps - add localized display name support for macOS apps (e.g., "微信" for WeChat) - reduce verbose debug logs to clean up console output - adjust search scoring to prioritize frequency over recency for better UX - move history recording to explicit user execution (Enter key) in preview provider - remove redundant console logs from item rebuilder and IPC manager
… file existence checks - implement 3-minute grace period and 2-scan minimum before deleting missing apps - add pending deletion tracking with miss count and timestamp metadata - verify file existence on disk before marking apps for deletion - restore apps to active state if they reappear during grace period - enhance logging to show deletion status, elapsed time, and miss counts - add system action to open main window via search
…nge highlighting - integrate fuzzyMatch algorithm from @talex-touch/utils for typo-tolerant search - add calculateFuzzyHighlights function with configurable error threshold - implement multi-range highlighting support in BoxItem.vue with range merging - enhance search-processing-service to use fuzzyMatch with 0.4 score threshold - add multi-word query matching in search processing (each word matches in order) - increase frequency
refactor search logic to extract input building into dedicated function, enabling consistent handling of clipboard images, files, and text/html across empty and non-empty queries
- Deleted AiGlowBorder.vue component - Added new GradientBorder.vue component with improved styling - Updated PreviewResultCard to use GradientBorder wrapper - Refined card styling: rounded corners, removed border/shadow - Added "Powered by TuffIntelligence" branding watermark - Auto-updated components.d.ts with new component registration
… support - Implement Command+D to detach items to DivisionBox windows - Add Command+Shift+D flow selector for transferring data between plugins - Create FlowBus module for managing inter-plugin data flow - Add FlowSelector component for target plugin selection - Prevent auto-fill on clipboard updates when CoreBox is pinned but inactive - Include animation improvements for item rendering with staggered fade-in effects
Add explicit dock show/hide behavior when hideDock is disabled to ensure consistent dock visibility. Also adds comments clarifying the dock management logic for better code maintainability. feat(i18n): add keyboard shortcut labels for AI assistant and flow operations Add localized shortcut labels for: - AI assistant quick call - Flow detach to division box - Flow transfer to plugin Available in both English and Chinese locales.
…UI and filtering - Add section-based layout with intelligence metadata for smart recommendations - Implement file filtering to exclude file-type items from recommendations - Update grid layout to support up to 8 columns with improved spacing - Add rainbow border animation for intelligent recommendation sections - Enhance grid item styling with rounded corners and hover effects - Include section titles and metadata in container layout structure
…base operations - Add readStartSilentConfig() method to check silent start mode before window creation - Refactor download-center to use direct database operations instead of databaseService wrapper - Update tray-manager to use typed config access via getConfig(StorageList.APP_SETTING) - Remove unused migration-related code from download module since migrations are handled centrally - Add proper database schema imports for downloadHistory and downloadChunks
…ations and improved plugin integration - Add clipboard read/write IPC channels (clipboard:write, clipboard:read, clipboard:read-image, clipboard:read-files, clipboard:clear) - Implement clipboard:copy-and-paste channel for unified write-and-paste operations - Add shouldForwardClipboardChange() method to WindowManager for type-based clipboard event filtering - Enhance clipboard change forwarding to respect plugin's allowed clipboar
… improved navigation - Add Guide/Dev section tabs with icons to DocsSidebar for better organization - Implement locale-based filtering to show only current language content - Refactor section rendering to support both nested and flat file structures - Update DocSection styling with rounded corners, improved hover states, and better spacing - Remove /docs/tips directory and all automation/FAQ content (en/zh) - Add activeTopSection
…fety - Add browser language detection as fallback for first-time visitors - Refactor useUserLocale composable to be SSR-safe with dynamic Clerk access - Move i18n config to root level and restructure locale loading - Fix license agreement formatting in locale files - Optimize Clerk session loading UI for better performance
Removes the conditional check that was skipping locale suffix for English documentation paths, ensuring consistent URL structure across all languages.
|
Caution Review failedThe pull request is closed. WalkthroughThis PR introduces Flow Transfer, a plugin-to-plugin data exchange system with FlowBus infrastructure, session management, and IPC handling. Additionally, it adds a container layout system supporting grid-based rendering, expands clipboard operations with new channels, refactors app management with graceful deletion handling, and enhances search with fuzzy matching and multi-range highlighting. Changes
Sequence Diagram(s)sequenceDiagram
actor User
participant CoreBox as CoreBox UI
participant FlowSelector as FlowSelector Panel
participant FlowBus as FlowBus
participant TargetReg as FlowTargetRegistry
participant TargetPlugin as Target Plugin
participant IPC as Electron IPC
User->>CoreBox: Cmd+Shift+D (Transfer Flow)
CoreBox->>FlowSelector: Show with payload
User->>FlowSelector: Select target
FlowSelector->>FlowBus: dispatch(payload, targetId)
FlowBus->>TargetReg: Validate target eligibility
TargetReg-->>FlowBus: Target info
FlowBus->>FlowBus: Create session, state=DELIVERING
FlowBus->>IPC: Send via plugin-specific handler
IPC->>TargetPlugin: Receive flow query + payload
TargetPlugin->>TargetPlugin: Process payload
TargetPlugin->>FlowBus: acknowledge(sessionId, ackPayload)
FlowBus->>FlowBus: Update session state=DELIVERED
FlowBus-->>CoreBox: Session update
CoreBox->>User: Display result/confirmation
sequenceDiagram
participant Provider as Search Provider
participant Engine as Recommendation Engine
participant SearchCore as Search Core
participant Renderer as CoreBox Renderer
Provider->>Engine: Get recommendations
Engine->>Engine: Build item list
Engine->>Engine: buildContainerLayout(layoutMode=grid)
Engine-->>Provider: Result + containerLayout
Provider->>SearchCore: Return search result
SearchCore->>SearchCore: Set result.containerLayout
SearchCore-->>Renderer: TuffSearchResult with layout
Renderer->>Renderer: Compute isGridMode
alt Grid Mode
Renderer->>Renderer: Render BoxGrid
Note over Renderer: Column-aware navigation
else List Mode
Renderer->>Renderer: Render CoreBoxRender
Note over Renderer: Traditional list nav
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60–90 minutes Key areas requiring careful review:
Possibly related PRs
Poem
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro ⛔ Files ignored due to path filters (7)
📒 Files selected for processing (84)
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 |
Summary by CodeRabbit
Release Notes
New Features
Bug Fixes
Documentation
Refactor
✏️ Tip: You can customize this high-level summary in your review settings.