You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: multi-provider models, smarter TUI, and an output-quality overhaul
Model hosts & routing:
- providers.py registry: 17 OpenAI-compatible hosts (OpenRouter default + DeepSeek,
OpenAI, Gemini, xAI, Groq, Ollama/LM Studio local, custom, ...) + aliases; /provider
switches with lazy credentials. /model list shows a curated popular-model catalog and
the completer suggests slugs. New `provider` setting; BOOK_AGENT_PROVIDER env.
TUI & input:
- /features is an interactive prompt_toolkit toggle grid; /help grouped by category.
- Forgiving input everywhere: fuzzy project lookup (excerpts/typos -> numbered picker),
slang-tolerant yes/no, fuzzy /theme /mode /model /set /provider /skill. Chat /use
guardrail: a hallucinated/junk project id never clobbers the active project.
Export & save location:
- export takes one format, a list, or 'all' (+ plain-English parsing: "pdf, epub and
word"); one failing format never aborts the others.
- /path sets where exports are saved (global default + per-project, with a move flow);
export_dir resolution keeps base_dir intact so images/diagrams still resolve.
Output quality:
- polish.py: references end-only, dated, influence-scored (0-100) and ranked high->low;
inline [N] stripping (strip_inline_citations); mid-article reference-dump removal;
figure de-duplication. Wired into assembly + a `polish` command / repolish_manuscript()
that re-fixes an existing manuscript deterministically (no LLM).
- ARTICLE_WRITER_SYS forbids model-drawn figures/mermaid/self-numbered Figure/Listing -
the producer owns figures.
- diagram: `auto` now uses the compact, overlap-free built-in engine (D2 is opt-in, it
rendered very wide); comparison edge-labels de-duped so repeated relations don't stack.
New settings: provider, strip_inline_citations, rank_references, export_dir.
305 tests pass; ruff clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
| `export` | Render the manuscript: pdf · epub · html · docx · txt · md |
530
+
| `export [fmt ... \| all]` | Render the manuscript: pdf · epub · html · docx · txt · md. Takes one format, a list (`export pdf epub`), or **`all`**; one failing format never aborts the rest (§16.5) |
0 commit comments