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

@@ -903,16 +903,21 @@ let message = MessageBuilder::new(MessageId::new(123))
- ✅ Priority 1: 3/3 (100%)
- ✅ Priority 2: 5/5 (100%)
- ✅ Priority 3: 4/4 (100%) 🎉
- Priority 4: 1/4 (25%, P4.12 частично)
- ⏳ Priority 5: 0/3
- ✅ Priority 4: 4/4 (100%) 🎉
- ⏳ Priority 5: 1/3 (33%, P5.15 завершено)
**Общий прогресс: 12/17 задач (71%)**
**Общий прогресс: 17/20 задач (85%)**
**Последние изменения (1 февраля 2026)**:
- ✅ **P5.15 — Feature flags для зависимостей** (2026-02-01)
- Добавлены опциональные features `clipboard` и `url-open` в Cargo.toml
- Зависимости `arboard` и `open` теперь опциональные
- Условная компиляция в коде с graceful degradation
- Преимущества: уменьшение размера бинарника, модульность
**Следующие шаги**:
- Продолжить P4.12: добавить rustdoc для остальных модулей
- P4.11: Добавить юнит-тесты для utils
- P4.13: Улучшить config validation
- P4.14: Проверить async/await консистентность
- P5.16: LRU cache обобщение
- P5.17: Tracing вместо println!
## Известные проблемы