Releases: kytmanov/synto
v0.5.1
v0.5.1 focuses on portability, stability, review-state correctness, and ingest/link cleanup.
High
- Vault portability across operating systems. Vaults now move cleanly between Windows, macOS, and Linux without path-separator breakage causing notes to be treated as duplicates or source-summary links to resolve incorrectly. (#55, #57, #64, #37)
- NFS-backed vaults no longer crash at the end of commands.
synto status,synto run, andsynto maintainno longer fail withOSError: [Errno 9] Bad file descriptorwhen the pipeline lock is probed on NFS. (#56, #58) - Draft lifecycle operations no longer race.
synto verifyandsynto approvenow refuse conflicting concurrent lifecycle mutations instead of interleaving over the same draft. (#63)
Medium
- Large sources now honor configured concept limits.
max_concepts_per_sourceand per-source-type overrides are now respected for multi-chunk sources instead of silently falling back to the per-call limit of 8. Named references are no longer truncated to 8 during merge either. (#52, #59) - Unbalanced punctuation no longer creates stray duplicate pages. A title or link target like
Phase II)no longer turns into a divergentPhase II).md, andsynto maintain --fixnow repairs the affected dangling links more reliably. (#53, #62) - Speculative same-run wikilinks are no longer emitted as real links. Draft/article output now keeps
[[wikilinks]]only when the target already resolves in the vault, preventing phantom links to concepts that have not actually materialized yet. (#65)
Low
- Long-form source types get better defaults.
source_type: textbooknow defaults to 25 concepts andsource_type: paperto 15, without requiring a config override. - Supporting polish. This release also includes smaller fixes around Windows path normalization in lint output, released POSIX lock-file handling, compare soft caps for local providers, and resolved-provider reporting.
Thanks
Issue reports: @JohnJuice, @yoderj, @wlewis55
Full Changelog: v0.5.0...v0.5.1
v0.5.0
What's Changed
Per-role providers. Run each model where it makes sense — fast model on local Ollama, heavy writing model on a cloud endpoint. Each role gets its own provider, connection, and key.
synto setup walks you through it. (#24)
Rename a concept. synto concept rename OLD NEW moves the article, repoints every inbound link, and migrates the state DB. Use --dry-run to preview. (#29)
Per-model knobs. Set context size, temperature, and thinking on/off per role. Thinking models (Qwen 3.5, DeepSeek-R1) no longer time out on ingest — the fast role defaults to
thinking off. (#31)
Anthropic-compatible API. Point any role at Kimi and similar endpoints, on top of the existing OpenAI-compatible providers. (#22)
Fixes
synto serveno longer looks stuck on startup — it prints a ready line and keeps the stdout JSON-RPC stream clean. (#30)- OpenRouter free-tier errors (sent with a 200 status) no longer crash ingest/compile. You see the real error and the run continues. (#25)
- No more crash on the ✓/✗ glyphs on legacy Windows consoles. (#23)
- Wikilinks with backslashes or mixed path separators now resolve correctly. (#26, #27, #38, #45)
Thanks
Code from @PEKEW (Anthropic API support, wikilink escaping) and @charles-openclaw (wikilink fix). Bug reports from @yoderj, @wlewis55, @antongulin, and @giusepperavasio.
Full Changelog: v0.4.0...v0.5.0
v0.4.0
What's Changed
-
MCP agents can fetch your sources word-for-word. Four new tools (read_source_segment, search_source_segments, get_source_passages, list_segments) let Claude and other AI clients pull exact paragraphs from your imported PDFs and web pages — not just the wiki summary, but the raw evidence. Your vault is now a queryable library, not just a compressed index.
-
Every concept is now linked to the exact paragraphs that support it. Ingest analyses sources in paragraph-aligned chunks and records which segments produced each concept — automatically, at no extra LLM cost. Run synto ingest --force once to backfill your existing vault. The result: every article knows its sources at the paragraph level.
-
synto doctor --backlog shows you what your wiki is missing. A coverage report mined from real usage: zero-result queries, single-source concepts that may be thin, and questions users keep asking but your vault can't answer. It's a personal editor flagging where your notes need depth.
-
Raw source access has a privacy gate. New [mcp.source_access] config: permissive_only (filters by license), all, or deny. On upgrade, synto warns loudly if sources lack declared licenses — so you can lock it down before any client reads a word.
New Contributors
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's new
- MCP server with 8 tools — Claude Code, Cursor, and any MCP client can search, read, look up concepts, and query your wiki directly.
- Three-state drafts —
draft → verified → published. Mark a draft as reviewed without publishing it. - Alias-aware queries —
synto query "ML"now finds the "Machine Learning" article. - Quality signals in frontmatter — every article records
source_count,single_source, andsource_qualityat compile time. - Per-source-type ingest overrides — raise the concept limit for textbooks and papers without changing the global default.
Changes
list_articlesover MCP defaults tostatus: published. Passmin_status="draft"to see drafts.mcplibrary is now a required dependency.pip install syntoships a workingsynto serveout of the box.- Schema migrates from v14 to v15 automatically on first open (
wiki_articles.is_draftbecomeswiki_articles.status).
Fixes
- JSON parser handles odd backslash runs before LaTeX commands.
- Saved query answers no longer contain literal
\ntext.
Full Changelog: v0.2.2...v0.3.0
v0.2.2
What's Changed
- MCP server (
synto serve) no longer emits INFO-level log lines on stdout, which
corrupted the JSON-RPC protocol stream. synto undonow exits with a clear error when the working tree has uncommitted
changes to tracked files, instead of silently returning nothing. Untracked files
(e.g..gitignore) are correctly ignored.- test: smoke test overhaul, agent-usability refactor, and git_undo guard
Full Changelog: v0.2.1...v0.2.2
v0.2.1
v0.2.0
What's Changed
Added
synto add SOURCE— import PDF, Markdown, and text files as tracked source documents.
The original is archived in.synto/sources/<id>/. For PDF files, segments are
extracted immediately into heading-aware chunks and assembled into canonicalraw/*.md
notes for the ingest pipeline. Use--typeto specify the document type;--forceto
re-import;--extend-packremains reserved and is currently a safe no-op.- Source-type prompt system: built-in prompts for
notes,textbook,paper,spec,
api_docs,web_article,corp_docs,transcript, plusunknown_textfallback are
loaded during ingest analysis based on the declared source type, steering the fast model
toward type-appropriate structure and terminology. - Compile lineage:
compile_runstable records every compile job (models, token counts,
timestamps). Published articles carry alineage:frontmatter field listing their
contributing sources and run ID.synto trace article <name>prints the full compile
history for any article. - LLM response cache:
llm_cachetable stores SHA-256-keyed responses.synto maintain --clear-cacheflushes all entries;--older-than Nprunes entries older than N days. - Term extraction:
extract_terms()andVaultReader.list_terms()added;
concept_occurrencestable (schema v13) links concepts to the source segments they
appear in.
Fixed
- PDF import now preserves ToC preamble text, surfaces bibliographic metadata into raw-note
frontmatter, closes extractor resources correctly, and detects duplicate imports by content
hash instead of filename alone. - File-based imports are now atomic, and
synto add --forcecorrectly replaces prior raw,
asset, and import state instead of leaving stale artifacts behind. synto statusnow counts imported on-disk raw notes before ingest, sosynto addoutput
shows up immediately asRaw: new.- Structured-output recovery now repairs malformed JSON escapes more aggressively, fixing
live compile failures caused by invalid backslash and malformed\u...sequences. - Compile cleanup now strips stray
[[wikilinks]...placeholder artifacts from generated
article bodies before draft write. - Ingest invalidation now respects source-type prompt changes, and imported
### Media
blocks are stripped before article synthesis. - Smoke coverage now matches current runtime behavior, including LM Studio model-id
resolution and the intentional--extend-packno-op.
v0.1.1
Full Changelog: v0.1.0...v0.1.1
v0.1.0
Full Changelog: https://github.com/kytmanov/synto/commits/v0.1.0
Full Changelog: https://github.com/kytmanov/synto/commits/v0.1.0