* feat: introduce SectionHeader component
* fix: use ReactNode for label
* fix: adjust gap spacing in SectionHeader component
* fix: update text color classes in SectionHeader
* fix: label prop
* feat: move setup wizard to separate window (MPA) with rust backend command
* fix: Remove forced GDK_SCALE exports to respect system DPI scaling
- Remove GDK_SCALE and GDK_DPI_SCALE forced exports from wrapper.sh
These were forcing 1x scaling even on HiDPI displays with 2x scaling
- Add setup window closure handler to exit app if wizard not completed
- Fix TypeScript error with setInterval return type
- Update install.sh wrapper generation to match wrapper.sh changes
Fixes scaling issues on HiDPI displays (4K monitors with 2x scaling)
* chore: address code review comments
* chore: fix lint issues
* refactor: merge setup.html into index.html, fix race conditions and improve error handling
* feat: implement automatic history cleanup based on time intervals
- Add `cleanup_old_items` method to `ClipboardManager` to remove non-pinned items older than a specified interval.
- Update `UserSettings` to include `auto_delete_interval` and `auto_delete_unit`.
- Trigger cleanup in the background thread (every ~30 seconds) and immediately when the main window is toggled.
- Emit a `history-cleared` event when items are auto-deleted to keep the UI in sync.
* refactor: centralize auto-delete interval calculation in UserSettings
Extract the logic for converting auto-delete intervals (minutes, hours, days, weeks) into a dedicated method `auto_delete_interval_in_minutes` within the UserSettings struct.
This change:
- Removes duplicated logic in main.rs
- Improves code maintainability by centralizing the unit conversion
- Introduces safer numeric operations using saturating_mul
- Simplifies the interval check in the clipboard watcher background task
* feat: ensure clipboard history persistence and improve event handling
- Expose `save_history` in `ClipboardManager` to allow explicit persistence during cleanup.
- Trigger `save_history` in `main.rs` when old items are cleaned up to ensure the disk state matches the memory state before emitting events.
- Update `user_settings.rs` to treat unknown auto-delete units as unreachable for better error tracking.
- Enhance `useClipboardHistory.ts` by adding a `history-sync` listener and implementing mount guards to prevent memory leaks and state updates on unmounted components.
* feat: enhance focus handling for pinned items in HistoryItem component
* fix: update focus handling for pinned items in HistoryItem component
* fix: improve focus handling for toggling pin and prevent button focus on pointer down
* fix: enhance focus handling for currently selected items in HistoryItem component
* fix: improve focus handling and visual styles for HistoryItem component
* feat: improve pinning logic in clipboard history
* feat: sort clipboard history items with pinned items first
* feat: add configurable maximum clipboard history size
* chore: remove zero check
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: expose DEFAULT_MAX_HISTORY_SIZE
* feat: set default maximum history size from clipboard manager
* chore: make sort by key stable
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* chore: improve sort by consistense
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: ensure history is persisted only when trimmed items exceed configured limit
* feat: minimum and maximum history size constants
* fix: enforcey history limit already truncate history
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: enforce history limit considering pinned items
* feat: improve clipboard history synchronization
* feat: add logging for checking limits
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: enhance clipboard history updates with delta handling
* feat: improve max history size input handling to prevent accidental data loss
* fix: ajust typo
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* chore: improve comment
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* chore: improve history change detection
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: extract Kaomoji and Symbols feature
* style(lint & format): Improve code formatting and adjust whitespace
- Modified whitespace, blank lines, and prop alignment across ClipboardApp, KaomojiPicker, and user_settings.rs.
- Categorized as 'style' for cosmetic changes that enhance readability without altering any logic or functionality.
- Decision made to standardize prop indentation and remove unnecessary blank lines for consistent code style.
* chore: apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* chore: apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat(merge | expand-feature): add smart actions and setup wizard
* refactor: reorganize components and add minor features
* refactor: address review feedback and fix rich text rendering
- Enable rendering of `RichText` content in history items.
- Simplify `#[serde(default)]` usage in user settings.
- Improve regex error handling in clipboard search.
- Clean up imports, indentation, and redundant code in components.
- Enhance smart action regex and error logging.
* feat(clipboard): add history persistence and fixed related error (restart duplication)
- Implement JSON-based persistence for clipboard history
- Replace randomized DefaultHasher with deterministic FnvHasher to ensure stable hashing across restarts
- Initialize duplication checks from loaded history to prevent duplicate entries on startup
* feat(search): support RichText content
- Updated search logic in src/components/ClipboardTab.tsx.
- Categorized as 'feat' for adding new content type support to existing search capabilities.
- Introduced a `searchableText` variable to unify content extraction for filtering.
* refactor: centralize `BooleanSettingKey` type and enhance smart action URL detection and execution.
* refactor: restore the ability to execute smart actions using switch statements, handle errors, and log undefined actions of smartActions.
---------
Co-authored-by: Gustavo Carvalho <gustaavoribeeiro@hotmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: enhance capabilities and permissions for autostart and global shortcuts
* feat: implement desktop environment detection and global shortcut registration
* feat: add permission checker module for uinput access verification and configuration
* feat: add autostart and global shortcut plugins; integrate permission checker functions
* feat: add LXQt and LXDE support for global shortcuts
* feat: add permission_checker and shortcut_setup modules to the library
* feat: implement SetupWizard for first-run setup and autostart configuration
* feat: overhaul install script for improved distribution detection and installation methods
* feat: add autostart and global shortcut plugins to dependencies
* feat: enhance Makefile with improved installation and cleanup processes
* feat: enhance release workflow with version syncing and installation instructions
* docs: update contributing guidelines to include required dependencies
* docs: update README with Rust version, installation instructions, and new features
* feat: improve installation process for uinput module and udev rules
* feat: add support for AlmaLinux and improve WebKitGTK compatibility handling
* feat: enhance post-removal script to handle multiple module configuration filenames
* feat: add XDG_SESSION_CLASS to environment variables in wrapper script
* fix: improve error handling for MATE keybinding slots
* chore: remove xml formatting
* feat: ensure input group exists and add user only on live system during installation
* feat: add architecture detection for DEB and RPM packages
* fix: correct logic for uinput module configuration in post-installation script
* fix: improve error message for missing win11-clipboard-history binary
* feat: enhance permission fixing by checking for required commands
* fix: improve shortcut registration by ensuring thread completion
* style: shortcut registration formatting
* feat: add support for CachyOS
* feat: enhance distribution detection and installation process
* chore: update version to 0.4.0 in package.json, Cargo.toml, and tauri.conf.json
* chore: update version to 0.4.0 in package-lock.json
* fix: update Cloudsmith repository name to clipboard-manager
* feat: add PKGBUILD and installation script for win11-clipboard-history-bin
* chore: remove VERSION variable from Makefile
* fix: improve error message for binary not found in wrapper script
* feat: enhance installation process with Cloudsmith repository support
* fix: add tabIndex to various components for improved accessibility
* feat: enhance keyboard navigation and accessibility for emoji and GIF pickers
* fix: remove unnecessary tabIndex attributes
* feat: implement always-on-top behavior and focus handling
* feat: enhance TabBar component with keyboard navigation
* feat: refactor HistoryItem component to support forwardRef and focus handling
* feat: enhance Header component with focus handling for Clear All button
* feat: implement focus management and keyboard navigation for clipboard items
* feat: add Wayland support for window focus management and activation
* refactor: comment out Wayland focus configuration for stability
* feat: implement user settings management for theme and opacity preferences
* feat: add user settings management and settings window functionality
* feat: enhance command path resolution for global shortcuts
* feat: expose user settings module and manager in the library
* feat: update capabilities to include settings window support
* feat: update capability description and include settings window support
* feat: add --quiet option to application execution command
* feat: add settings window configuration to Tauri app
* feat: implement settings app for theme customization and opacity control
* feat: add --quiet option to application desktop entry
* feat: add dynamic background opacity settings for light and dark modes
* fix: remove --quiet option
* feat: update glass effect colors for dark and light modes
* fix: update Wayland & X11 support description
* fix: enhance acrylic background opacity in Tailwind configuration
* fix: correct directory name in contributing instructions
* chore: update glass effect background for improved visibility
* fix: update dependencies for global shortcut support and remove evdev
* fix: add missing icon file path for Debian package
* fix: remove unnecessary udev rules for global hotkey detection
* feat: add global shortcut permissions to desktop and linux schemas
* feat: implement global shortcut registration
* fix: improve error handling for global shortcut registration
* fix: remove error handling from global shortcut registration function
* chore: use install instead cp
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
---------
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>