* 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: move pasted item to top
* chore: avoid moving item if its correct position
---------
Co-authored-by: gustavosett <gustavosett@debian.myguest.virtualbox.org>
* 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: implement COSMIC shortcut handling with RON format support
* chore: ajusts from copilot review
* feat: add RON string escaping
* chore: enhance COSMIC shortcut normalization
* 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>