This is a comprehensive refactoring that transforms the dictation service from a complex multi-mode application into two clean, focused features: 1. Voice dictation with system tray icon 2. On-demand read-aloud via Ctrl+middle-click ## Key Changes ### Dictation Service Enhancements - Add GTK/AppIndicator3 system tray icon for visual status - Remove all notification spam (dictation start/stop/status) - Icon states: microphone-muted (OFF) → microphone-high (ON) - Click tray icon to toggle dictation (same as Alt+D) - Simplify ai_dictation_simple.py by removing conversation mode ### Read-Aloud Service Redesign - Replace automatic clipboard reader with on-demand Ctrl+middle-click - New middle_click_reader.py service - Works anywhere: highlight text, Ctrl+middle-click to read - Uses Edge-TTS (Christopher voice) with mpv playback - Lock file prevents feedback with dictation service ### Conversation Mode Removed - Delete all VLLM/conversation code (VLLMClient, ConversationManager, TTS) - Archive 5 old implementations to archive/old_implementations/ - Remove conversation-related scripts and services - Clean separation of concerns for future reintegration if needed ### Dependencies Cleanup - Remove: openai, aiohttp, pyttsx3, requests (conversation deps) - Keep: PyGObject, pynput, sounddevice, vosk, numpy, edge-tts - Net reduction: 4 packages removed, 6 core packages retained ### Testing Improvements - Add test_dictation_service.py (8 tests) ✅ - Add test_middle_click.py (11 tests) ✅ - Fix test_run.py to use correct model path - Total: 19 unit tests passing - Delete obsolete test files (test_suite, test_vllm_integration, etc.) ### Documentation - Add CHANGES.md with complete changelog - Add docs/MIGRATION_GUIDE.md for upgrading - Add README.md with quick start guide - Update docs/README.md with current features only - Add justfile for common tasks ### New Services & Scripts - Add middle-click-reader.service (systemd) - Add scripts/setup-middle-click-reader.sh - Add desktop files for autostart - Remove toggle-conversation.sh (obsolete) ## Impact **Code Quality** - Net change: -6,007 lines (596 added, 6,603 deleted) - Simpler architecture, easier maintenance - Better test coverage (19 tests vs mixed before) - Cleaner separation of concerns **User Experience** - No notification spam during dictation - Clean visual status via tray icon - Full control over read-aloud (no unwanted readings) - Better performance (fewer background processes) **Privacy** - No conversation data stored - No VLLM connection needed - All processing local except Edge-TTS text ## Migration Notes Users upgrading should: 1. Run `uv sync` to update dependencies 2. Restart dictation.service to get tray icon 3. Run scripts/setup-middle-click-reader.sh for new read-aloud 4. Remove old read-aloud.service if present See docs/MIGRATION_GUIDE.md for details. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
42 lines
890 B
Makefile
42 lines
890 B
Makefile
# Justfile for Dictation Service
|
|
|
|
# Show available commands
|
|
default:
|
|
@just --list
|
|
|
|
# Install dependencies and setup read-aloud service
|
|
setup:
|
|
./scripts/setup-read-aloud.sh
|
|
|
|
# Run unit tests for read-aloud service
|
|
test:
|
|
.venv/bin/python tests/test_read_aloud.py
|
|
|
|
# Check service status
|
|
status:
|
|
systemctl --user status read-aloud.service
|
|
|
|
# View service logs (live follow)
|
|
logs:
|
|
journalctl --user -u read-aloud.service -f
|
|
|
|
# Start the read-aloud service
|
|
start:
|
|
systemctl --user start read-aloud.service
|
|
|
|
# Stop the read-aloud service
|
|
stop:
|
|
systemctl --user stop read-aloud.service
|
|
|
|
# Restart the read-aloud service
|
|
restart:
|
|
systemctl --user restart read-aloud.service
|
|
|
|
# Run all project tests (including existing ones)
|
|
test-all:
|
|
cd tests && ./run_all_tests.sh
|
|
|
|
# Toggle dictation mode (Alt+D equivalent)
|
|
toggle-dictation:
|
|
./scripts/toggle-dictation.sh
|