feat: Additive merge of webui branch with PyQt GUI support

- Add abogen/pyqt/ package with full PyQt6 desktop GUI
- Restore PyQt GUI files (gui.py, book_handler.py, queue_manager_gui.py, voice_formula_gui.py, conversion.py)
- Add new shared modules from webui: book_parser.py, subtitle_utils.py, spacy_utils.py
- Add Linux libraries (libxcb-cursor) for Qt platform plugin support
- Add new epub parsing tests from webui branch
- Update pyproject.toml with dual entry points:
  - abogen: PyQt6 desktop GUI
  - abogen-web: Flask Web UI
- Add PyQt6 to dependencies
- Re-export PyQt classes from root modules for backwards compatibility
- Merge CHANGELOG.md entries (1.2.0-1.2.5 from webui)
- Update README.md with dual interface documentation

Implements #26 - shared core with separate UI folders
This commit is contained in:
JB
2025-12-22 05:51:21 -08:00
parent ede5343e0c
commit e2b2f610a6
32 changed files with 14863 additions and 38 deletions
+17 -1
View File
@@ -9,6 +9,17 @@ Abogen is a web-first text-to-speech workstation. Drop in an EPUB, PDF, Markdown
- LLM-assisted text normalization with live previews and configurable prompts
- Runs well in Docker, ships a REST-style JSON API, and works across macOS, Linux, and Windows
## Interfaces
Abogen offers **two interfaces** to suit different workflows:
| Command | Interface | Best for |
|---------|-----------|----------|
| `abogen` | PyQt6 Desktop GUI | Local desktop use on Windows/macOS/Linux |
| `abogen-web` | Flask Web UI | Docker, headless servers, remote access |
Both interfaces share the same core processing engine and produce identical output.
## Quick start
Abogen supports Python 3.103.12.
@@ -19,11 +30,16 @@ source .venv/bin/activate # On Windows use: .venv\Scripts\activate
pip install abogen
```
### Launch the web app
### Launch the desktop app (PyQt6)
```bash
abogen
```
### Launch the web app (Flask)
```bash
abogen-web
```
Then open http://localhost:8808 and drag in your documents. Jobs run in the background worker and the browser updates automatically.
> **Tip:** Keep the terminal open while the server is running. Use `Ctrl+C` to stop it.