feat: add optional feature flags for clipboard and url-open (P5.15)

Implemented feature flags to make dependencies optional:
- clipboard feature: controls arboard dependency
- url-open feature: controls open dependency
- Both enabled by default for backward compatibility

Changes:
- Cargo.toml: Added [features] section with optional deps
- src/input/main_input.rs: Conditional compilation for open::that() and copy_to_clipboard()
- tests/copy.rs: Clipboard tests only compile with feature enabled
- Graceful degradation: user-friendly error messages when features disabled

Benefits:
- Smaller binary size when features disabled
- Modular functionality
- Better platform compatibility

Progress: Priority 5: 1/3 tasks, Total: 17/20 (85%)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Mikhail Kilin
2026-02-01 02:23:17 +03:00
parent 38b18e35ea
commit 56bddabbe1
5 changed files with 63 additions and 22 deletions

View File

@@ -696,7 +696,7 @@ async fn load_messages() {
## Приоритет 5: Опциональные улучшения
### 15. Feature flags для зависимостей
### 15. Feature flags для зависимостей ✅ ЗАВЕРШЕНО
**Проблема**: Все зависимости всегда включены.
@@ -706,11 +706,25 @@ async fn load_messages() {
default = ["clipboard", "url-open"]
clipboard = ["dep:arboard"]
url-open = ["dep:open"]
[dependencies]
arboard = { version = "3.4", optional = true }
open = { version = "5.0", optional = true }
```
**Реализовано**:
- ✅ Добавлены feature flags в Cargo.toml
- ✅ Зависимости `arboard` и `open` сделаны опциональными
- ✅ Условная компиляция в `src/input/main_input.rs`:
- `#[cfg(feature = "url-open")]` для `open::that()`
- `#[cfg(feature = "clipboard")]` / `#[cfg(not(feature = "clipboard"))]` для `copy_to_clipboard()`
- ✅ Условная компиляция в `tests/copy.rs`:
- `#[cfg(all(test, feature = "clipboard"))]` для clipboard тестов
**Преимущества**:
- Уменьшение размера бинарника
- Опциональная функциональность
- Уменьшение размера бинарника
- Опциональная функциональность
- ✅ Graceful degradation при отключении фич
---
@@ -767,9 +781,10 @@ tracing-subscriber = "0.3"
- [x] P4.12 — Rustdoc ✅
- [x] P4.13 — Config validation ✅
- [x] P4.14 — Async/await consistency ✅
- [ ] Priority 5: 0/3 задач
- [ ] Priority 5: 1/3 задач
- [x] P5.15 — Feature flags ✅
**Всего**: 16/17 задач (94%)
**Всего**: 17/20 задач (85%)
---