EcoPasteHub/EcoPaste
56.1
Adequate · 29 September 2026
38.1k
lines of production code
Rust
with TypeScript
2
measurements over time
What this system is
EcoPaste is a cross-platform desktop application built on Tauri and React that manages clipboard history across text, images, and files. It provides users with a searchable, grouped interface for viewing and organizing pasted content, alongside granular preferences for capture rules, retention, and application exclusions. The system handles platform-specific details such as administrator privileges, autostart reliability, and native window behaviors while maintaining data integrity through SQLite storage and encrypted backups.
How it got here
2024 — EcoPaste v1.1.0 framework migration
9 changes.
This period focused on migrating the application to Tauri v2 and React 19, accompanied by a rebrand to EcoPaste and a comprehensive frontend toolchain overhaul. The work established a stable foundation with hash-based routing, global internationalization, and robust utility modules for theming and platform detection. Additionally, critical backend improvements were implemented, including a rewritten autostart mechanism and Windows administrator launch support.
2025–2026 — UI overhaul and Trellis AI integration
16 changes.
This period focused on a comprehensive redesign of the user interface, restructuring the Preference, Clipboard, and Onboarding pages with new navigation, search, and grouping capabilities. Simultaneously, the project established the Trellis AI workflow automation system, introducing multi-platform CLI support and structured agent definitions to streamline development processes.
Features
Application initialization and global UI configuration
The application has been upgraded from a static placeholder to a fully initialized React application. This change introduces a router-based structure, global internationalization (i18n) support for English and Chinese, and a centralized theming system using Ant Design that respects user settings and system preferences. It also adds robust error handling for uncaught promise rejections and synchronous errors, ensuring better stability and logging in production environments.
src · high confidence
Introduce standardized UI component library
Added a suite of new React components to \src/components\ to standardize the user interface. This includes \AssetImage\ for rendering local files via Tauri, \ClipboardGroupIcon\ with SVG sanitization for secure custom icons, and \ClipboardGroupModal\ for creating and editing groups. Layout and interaction improvements are provided by \CustomIconButton\, \Dropdown\, \Popover\, \Tooltip\, and \ScrollArea\, while \Highlight\ enables text search visualization, \KeyHint\ manages keyboard shortcut hints, \LanguageSwitcher\ handles locale changes, \ShortcutRecorder\ manages global shortcut input, and \VirtuosoScroller\ integrates virtualization with custom scrollbars.
src/components · high confidence
Introduces Trellis AI workflow automation system
Adds the initial implementation of the Trellis workflow, including Claude Code skills for planning and bug analysis (brainstorm, break-loop, before-dev), agent definitions for implementation and code checking, and Python hooks to inject task context and workflow state into the AI session. This establishes the foundational tooling for structured, multi-agent development tasks within the repository.
(repo-wide) · high confidence
Introduces clipboard history database schema and preference/preview UI infrastructure
This change adds the initial SQLite migration (0001\_init.sql) defining the core data model for clipboard history, including tables for groups, source applications, and items with full-text search support. It also introduces the foundational infrastructure for the Preferences page, featuring a schema-driven settings service, internationalization utilities, and search logic, alongside the implementation of the system-level Clipboard Preview window, which includes content viewers, layout geometry, and motion animations.
(repo-wide) · high confidence
Introduction of hash-based routing for application navigation
The application now uses a dedicated router configuration file to manage navigation between key views, including the main clipboard interface, preferences, onboarding, context menus, preview, and update screens. This change implements hash-based routing using React Router, allowing these distinct pages to be accessed via specific URL paths (e.g., /preference, /onboarding) while maintaining compatibility with desktop app environments.
src/router · high confidence
New clipboard preview and context menu UI components
The application introduces dedicated React components for the clipboard preview and context menu interfaces. A new \useClipboardPreviewController\ hook and its supporting \previewController\ module manage the lifecycle of the preview window, handling hover and keyboard triggers, delay settings, and window visibility events. Additionally, a new \ContextMenu\ page component renders the custom context menu surface, handling item selection, submenu navigation, and communication with the clipboard window via Tauri events.
src/pages/Clipboard/hooks, src/pages/ContextMenu · high confidence
New custom React hooks for theme, clipboard, and window lifecycle management
Added several new custom hooks in src/hooks to handle core application logic: useAppTheme synchronizes the UI theme with Tauri's native window theme and system preferences; useClipboardItems implements a range-based caching strategy for efficiently loading and displaying clipboard history; useClipboardWindowEditableFocus stabilizes input focus behavior in the Windows clipboard window by temporarily allowing focus during editing; useKeyboardEvent provides cross-platform keyboard navigation support, handling handoffs between browser and Tauri events; useTauriListen simplifies subscribing to Tauri events with automatic cleanup; and useWindowLifecycle exposes the current window's lifecycle state for gating other features.
src/hooks · high confidence
New internal tooling for multi-platform CLI support and changelog validation
This change introduces new Python scripts to support the Trellis system: a CLI adapter that abstracts configuration and command-building differences across 16 AI coding platforms (including Claude, Cursor, Codex, and Copilot), a module for resolving session-scoped active tasks by detecting platform-specific session IDs and transcripts, and a validation script that checks structural parity between English and Chinese changelog sections. These additions enhance the underlying infrastructure for multi-platform compatibility and release documentation integrity.
python · high confidence
New standalone update window for automatic software updates
A new Update page has been added to handle the application's update lifecycle. This component provides a dedicated UI for checking for updates, displaying download progress, and managing the installation process. It integrates with the Tauri backend to perform version checks, download updates, and trigger installations, while also allowing users to view release notes or skip specific versions.
src/pages/Update · high confidence
New structured configuration schema for clipboard preferences
The application now uses a new \preferenceSchema.ts\ file to define the structure and UI controls for clipboard-related settings. This change introduces explicit configuration for capturing text, HTML, RTF, images, and files, including size limits and capture order. It also adds controls for source app exclusions and sensitive data handling (collecting and redacting secrets). Additionally, the schema defines settings for history retention, maximum item count, and cleanup intervals, providing a more granular and structured way for users to manage their clipboard history and capture behavior.
src/pages/Preference/config · high confidence
New type definitions for clipboard items, groups, and application settings
Added \src/types/clipboard.ts\ and \src/types/settings.ts\ to define the TypeScript interfaces and enums that mirror the Rust backend data models. The clipboard types (\ClipboardItem\, \ClipboardGroup\, \ClipboardItemQuery\, etc.) provide the structure for managing clipboard history, including support for text, images, and files, as well as grouping and querying capabilities. The settings types (\General\, \Appearance\, \Content\, \Capture\, etc.) define the configuration schema for user preferences, covering themes, languages, auto-paste behaviors, retention policies, and onboarding states.
src/types · high confidence
New utility modules for styling, platform detection, logging, and shortcuts
The application introduces a set of new utility modules in src/utils to standardize common functionality. The cn utility combines clsx and tailwind-merge for robust conditional class name handling. Platform detection (isMac, isWin) and development mode checks are now centralized in is.ts, leveraging Tauri's OS plugin. A unified logging system (log.ts) routes messages to both the Rust backend via tauri-plugin-log and the browser console in development, with safe error handling. Feedback mechanisms (feedback.ts) provide configurable access to Ant Design's message and modal APIs. Finally, shortcut.ts adds comprehensive support for parsing, normalizing, and displaying keyboard shortcuts with platform-specific symbols (e.g., Command vs. Ctrl).
src/utils · high confidence
Redesigned clipboard window interface with grouping, search, and quick actions
The clipboard window UI has been rebuilt with new components: a Header for search and window controls, a Group bar for filtering by type or custom groups, a virtualized List for history items, and a Footer showing stats and shortcuts. Items are displayed as Cards with type-specific rendering (Text, Image, Files) and support hover quick actions, notes, and keyboard shortcuts.
src/pages/Clipboard/components · high confidence
Redesigned preferences interface with new backup, clipboard group, and search capabilities
The preferences page has been rebuilt with a new sidebar navigation, global search, and granular section-based layout. Users can now export and import history backups with encrypted or plain modes, manage clipboard groups via a dedicated modal, and exclude specific source applications using a transfer control. The interface includes a new header with search results, section tabs, and status badges to indicate setting states.
src/pages/Preference/components · high confidence
Trellis workflow system updated to version 0.6.5
The .trellis directory has been updated to version 0.6.5, introducing a new Python-based workflow engine. This update adds a comprehensive set of scripts for managing developer sessions, including journaling, task tracking, and workspace initialization. It also introduces a new configuration system (config.yaml) to control session auto-committing, journal rotation, and channel worker limits. Additionally, the update standardizes agent definitions and skills across multiple AI platforms (Claude, Cursor, Codex, Gemini) and includes a custom YAML parser to eliminate external dependencies for configuration reading.
.trellis · high confidence
Windows administrator launch flow and improved autostart reliability
On Windows, the application now supports an administrator launch flow, allowing users to configure the app to run with elevated privileges via a scheduled task and a dedicated onboarding wizard. Additionally, the autostart mechanism has been rewritten to use the \auto-launch\ crate directly, bypassing upstream bugs in the previous Tauri plugin; this ensures reliable startup entry management on both Windows and macOS and prevents duplicate or missing autostart entries.
src-tauri/src · high confidence
Behavioural changes
Centralized constant definitions for clipboard actions, capture types, and Tauri integration
The application now uses a dedicated \src/constants\ directory to centralize configuration and metadata, replacing scattered literals. This includes definitions for clipboard item actions (such as paste, copy, pin, and star) with their associated icons and i18n labels, capture kind metadata (files, image, HTML, RTF, text), and Tauri command/event name mappings. It also standardizes window labels (clipboard, onboarding, preference, preview, update), language options, and URL references, ensuring consistent behavior and easier maintenance across the UI and backend integration layers.
src/constants · high confidence
Clipboard page stabilizes Windows input focus
The Clipboard page now applies a hook that stabilizes input focus for clipboard content on Windows, addressing issues where the input field might lose focus unexpectedly.
src/pages/Clipboard · medium confidence
New confirmation dialog for clearing clipboard history
The application now presents a confirmation modal when clearing clipboard history, allowing users to optionally delete favorite and pinned items alongside the general history. This change introduces a new \confirmClearClipboardItems\ command in the frontend command layer, which integrates with the existing modal API to provide a user-controlled choice before permanent deletion, enhancing safety against accidental data loss.
src/commands · high confidence
New global styles for dark mode and outline removal
A new global stylesheet (src/styles/global.scss) has been introduced to establish base styling rules. This includes support for dark mode via a .dark class on the html element, disables user image dragging, and removes default outlines from all elements within the body. Additionally, it customizes the appearance of the OS scrollbar handle using Ant Design color variables.
src/styles · high confidence
Platform-aware icon generation script
A new build script (scripts/buildIcon.ts) has been added to generate application icons using Tauri's icon tool. The script automatically detects the operating system (macOS vs. others) and selects the appropriate source image (logo-mac.png vs. logo.png) to ensure the correct icon dimensions and format are used for the target platform.
scripts · high confidence
Preference page restructured with new tab metadata and search capabilities
The Preference page has been reorganized to present settings based on user mental models rather than code modules. This change introduces a new constants file defining metadata (icons and active states) for preference tabs such as 'about', 'data', 'organize', 'record', 'reuse', 'shortcuts', and 'workflow'. The main component now supports tab-based navigation, section selection, and a search feature that allows users to find and highlight specific settings across these tabs. It also integrates with Tauri for storage management and backup import workflows.
src/pages/Preference · high confidence
Project rebrand to EcoPaste and frontend toolchain overhaul
The application has been rebranded from EcoCopy to EcoPaste, with the title, README, and documentation updated accordingly. The frontend build and styling toolchain has been significantly refactored: UnoCSS is now configured with the \presetWind4\ and a custom \presetAntdColors\ preset, replacing the previous \presetRemToPx\ setup; the \unplugin-auto-import\ plugin has been removed in favor of explicit imports; and the Vite configuration has been updated to use \fileURLToPath\ for alias resolution and adjusted HMR settings. Additionally, the project license has been changed to Apache License 2.0, and various configuration files (Biome, TypeScript, Git hooks) have been updated to align with these new standards.
(repo-wide) · high confidence
Redesigned onboarding experience with new steps and UI components
The onboarding flow has been completely rebuilt with a new multi-step interface featuring Welcome, Permissions, Shortcuts, Ignore Apps, Legacy Import, and Done screens. The UI now uses a shell with animated transitions, a progress indicator, and a language switcher. Users can now configure permissions and global shortcuts directly within the onboarding steps, exclude specific apps from tracking, and selectively import legacy data (normal items and favorites) with detection and import controls. The previous onboarding implementation has been replaced by this new structured wizard.
src/pages/Onboarding · high confidence
Dependencies
EcoPaste v1.1.0 major dependency and framework upgrade
The application has been upgraded to version 1.1.0, migrating the core framework from Tauri v1 to Tauri v2 (including the CLI and API). The frontend runtime has been upgraded from React 18 to React 19, and the UI library has been updated to Ant Design v6. Additional dependencies include the introduction of \react-router\ for navigation, \react-virtuoso\ for virtualized lists, and \dompurify\ for content sanitization. On the Rust side, the backend now utilizes Tauri v2 plugins (dialog, log, os, updater, global-shortcut, etc.) and integrates \sqlx\ for SQLite database management, replacing the previous clipboard plugin with \clipboard-rs\ v0.3.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 55 → 56 (+1.2)
- Rubric changed (rubric-2026.09.9 → rubric-2026.09.17) — scores are not directly comparable.
Lenses
- Code Health 82 → 81 (-0.8)
- Architecture 93 → 88 (-4.1)
- Maturity 58 → 58 (-0.2)
- Readiness 52 → 52 (+0.3)
- Security 56 → 63 (+7.1)
- Accessibility 51 → 51 (+0.0)
- Performance 100 (new)
Resolved (6)
- Hotspot: src-tauri/src/i18n/en_us/clipboard_menu.rs (src-tauri/src/i18n/en_us/clipboard_menu.rs)
- Hotspot: src-tauri/src/i18n/zh_cn/clipboard_menu.rs (src-tauri/src/i18n/zh_cn/clipboard_menu.rs)
- Hotspot: src-tauri/src/menu/clipboard_item.rs (src-tauri/src/menu/clipboard_item.rs)
- Hotspot: src/commands/index.ts (src/commands/index.ts)
- Hotspot: src/pages/Preference/components/PreferenceSection.tsx (src/pages/Preference/components/PreferenceSection.tsx)
- Hotspot: src/pages/Preference/components/PreferenceSettingRow.tsx (src/pages/Preference/components/PreferenceSettingRow.tsx)
New (98)
- Dependency hygiene PARTLY measured — Cargo dependencies read, dependency currency not (crates.io unreachable)
- Duplicated block (10 lines × 4) (.claude/hooks/session-start.py)
- Duplicated block (11 lines × 2) (.codex/hooks/session-start.py)
- Duplicated block (11 lines × 2) (.trellis/scripts/task.py)
- Duplicated block (11 lines × 3) (.claude/hooks/inject-subagent-context.py)
- Duplicated block (11 lines × 5) (.claude/hooks/inject-workflow-state.py)
- Duplicated block (11 lines × 8) (.claude/hooks/session-start.py)
- Duplicated block (12 lines × 3) (.claude/hooks/inject-subagent-context.py)
- Duplicated block (13 lines × 3) (.claude/hooks/inject-subagent-context.py)
- Duplicated block (13–15 lines × 2) (.trellis/scripts/common/cli_adapter.py)
- Duplicated block (14 lines × 6) (.claude/hooks/session-start.py)
- Duplicated block (15 lines × 2) (.trellis/scripts/common/cli_adapter.py)
- Duplicated block (15 lines × 3) (.claude/hooks/inject-subagent-context.py)
- Duplicated block (15 lines × 5) (.claude/hooks/inject-workflow-state.py)
- Duplicated block (15 lines × 6) (.claude/hooks/session-start.py)
- Duplicated block (15 lines × 6) (.claude/hooks/session-start.py)
- Duplicated block (16 lines × 3) (.trellis/scripts/common/task_store.py)
- Duplicated block (16 lines × 4) (.claude/hooks/session-start.py)
- Duplicated block (16 lines × 5) (.claude/hooks/inject-workflow-state.py)
- Duplicated block (16 lines × 6) (.claude/hooks/session-start.py)
- …and 78 more
Architecture
- Unchanged — 0 containers · 1 contexts · 0 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
EcoPasteHub/EcoPaste was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 29 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 5139d30b0f4c1309356a9b308c05092f1038bc9b — the exact code this score is about.
- Scored under rubric-2026.09.17 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-705631bb727e.