@@ -647,13 +647,55 @@ fn handle_selection_request(&self, event: SelectionRequestEvent, data: &str) -> |
| 647 | 647 | |
| 648 | 648 | --- |
| 649 | 649 | |
| 650 | | -## Open Questions |
| 650 | +## Progress & TODO |
| 651 | + |
| 652 | +### Phase 1: Foundation (COMPLETE) |
| 653 | +- [x] Project scaffolding (workspace, Cargo.toml) |
| 654 | +- [x] Error types |
| 655 | +- [x] X11 atom interning |
| 656 | +- [x] Selection ownership management |
| 657 | +- [x] Data transfer (request/response) |
| 658 | +- [x] Clipboard entry types (text + images) |
| 659 | +- [x] History storage with persistence |
| 660 | +- [x] Clipboard manager |
| 661 | +- [x] Configuration (TOML) |
| 662 | +- [x] IPC protocol (JSON over Unix socket) |
| 663 | +- [x] IPC server/client |
| 664 | +- [x] Daemon state machine |
| 665 | +- [x] CLI entry point |
| 666 | +- [x] garclipctl control tool |
| 667 | + |
| 668 | +### Phase 2: Daemon Command Handler (IN PROGRESS) |
| 669 | +- [ ] Refactor client handler to use channels for daemon state access |
| 670 | +- [ ] Proper async message passing between IPC and daemon loop |
| 671 | +- [ ] Handle all commands through the daemon (currently stubbed) |
| 672 | + |
| 673 | +### Phase 3: Selection Monitoring |
| 674 | +- [ ] XFixes extension for event-driven clipboard monitoring |
| 675 | +- [ ] Claim ownership when original owner releases |
| 676 | +- [ ] Reduce polling overhead |
| 677 | + |
| 678 | +### Phase 4: Filtering |
| 679 | +- [ ] Regex patterns to ignore content |
| 680 | +- [ ] Window class filtering (ignore password managers, etc.) |
| 681 | +- [ ] Configurable min/max content length enforcement |
| 682 | + |
| 683 | +### Phase 5: Signals & Lifecycle |
| 684 | +- [ ] SIGHUP for config reload |
| 685 | +- [ ] Graceful SIGTERM handling |
| 686 | +- [ ] PID file for single-instance enforcement |
| 687 | + |
| 688 | +### Phase 6: Integration |
| 689 | +- [ ] Query gar IPC for focused window class (source tracking) |
| 690 | +- [ ] Optional garlaunch integration for history picker UI |
| 691 | +- [ ] Systemd user service file |
| 692 | + |
| 693 | +--- |
| 651 | 694 | |
| 652 | | -1. **Image support** - Should we support images in Phase 1, or text-only first? |
| 653 | | - - Recommendation: Text-only first, images later |
| 695 | +## Open Questions |
| 654 | 696 | |
| 655 | | -2. **Encryption** - Should sensitive clipboard data be encrypted at rest? |
| 697 | +1. **Encryption** - Should sensitive clipboard data be encrypted at rest? |
| 656 | 698 | - Recommendation: Optional, not in initial implementation |
| 657 | 699 | |
| 658 | | -3. **Popup UI** - Should garclip have its own history picker UI, or rely on garlaunch? |
| 700 | +2. **Popup UI** - Should garclip have its own history picker UI, or rely on garlaunch? |
| 659 | 701 | - Recommendation: Defer UI to later, CLI-first approach |