Skip to content

Releases: kytmanov/synto

v0.5.1

08 Jun 05:01
23ba588

Choose a tag to compare

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, and synto maintain no longer fail with OSError: [Errno 9] Bad file descriptor when the pipeline lock is probed on NFS. (#56, #58)
  • Draft lifecycle operations no longer race. synto verify and synto approve now refuse conflicting concurrent lifecycle mutations instead of interleaving over the same draft. (#63)

Medium

  • Large sources now honor configured concept limits. max_concepts_per_source and 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 divergent Phase II).md, and synto maintain --fix now 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: textbook now defaults to 25 concepts and source_type: paper to 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

03 Jun 18:02
a769df0

Choose a tag to compare

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 serve no 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

29 May 19:39
14ab46f

Choose a tag to compare

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

  • @PEKEW made their first contribution in #18

Full Changelog: v0.3.0...v0.4.0

v0.3.0

25 May 22:45
dbd1648

Choose a tag to compare

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 draftsdraft → verified → published. Mark a draft as reviewed without publishing it.
  • Alias-aware queriessynto query "ML" now finds the "Machine Learning" article.
  • Quality signals in frontmatter — every article records source_count, single_source, and source_quality at compile time.
  • Per-source-type ingest overrides — raise the concept limit for textbooks and papers without changing the global default.

Changes

  • list_articles over MCP defaults to status: published. Pass min_status="draft" to see drafts.
  • mcp library is now a required dependency. pip install synto ships a working synto serve out of the box.
  • Schema migrates from v14 to v15 automatically on first open (wiki_articles.is_draft becomes wiki_articles.status).

Fixes

  • JSON parser handles odd backslash runs before LaTeX commands.
  • Saved query answers no longer contain literal \n text.

Full Changelog: v0.2.2...v0.3.0

v0.2.2

22 May 02:31
e6deb2b

Choose a tag to compare

What's Changed

  • MCP server (synto serve) no longer emits INFO-level log lines on stdout, which
    corrupted the JSON-RPC protocol stream.
  • synto undo now 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

19 May 20:26
0562bd2

Choose a tag to compare

What's Changed

  • fix: escape Rich markup in synto review display by @kytmanov in #6
  • chore(release): prepare v0.2.1 by @kytmanov in #7

Full Changelog: v0.2.0...v0.2.1

v0.2.0

19 May 18:30
6bbbd90

Choose a tag to compare

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 canonical raw/*.md
    notes for the ingest pipeline. Use --type to specify the document type; --force to
    re-import; --extend-pack remains 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, plus unknown_text fallback are
    loaded during ingest analysis based on the declared source type, steering the fast model
    toward type-appropriate structure and terminology.
  • Compile lineage: compile_runs table records every compile job (models, token counts,
    timestamps). Published articles carry a lineage: 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_cache table stores SHA-256-keyed responses. synto maintain --clear-cache flushes all entries; --older-than N prunes entries older than N days.
  • Term extraction: extract_terms() and VaultReader.list_terms() added;
    concept_occurrences table (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 --force correctly replaces prior raw,
    asset, and import state instead of leaving stale artifacts behind.
  • synto status now counts imported on-disk raw notes before ingest, so synto add output
    shows up immediately as Raw: 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-pack no-op.

v0.1.1

18 May 03:01

Choose a tag to compare

Full Changelog: v0.1.0...v0.1.1

v0.1.0

16 May 23:26
5d65ac3

Choose a tag to compare