Skip to content

v1.2.0 - Synthadoc Community Edition

Latest

Choose a tag to compare

@william-Johnason william-Johnason released this 07 Aug 21:07
· 1 commit to main since this release
f79182f

Synthadoc Community Edition v1.2.0 Release Notes

Synthadoc Community Edition v1.2.0 is released.
Release Type: Feature release — two major capabilities


What's New in v1.2.0

1. Content Snapshots & Rollback

Every wiki page now carries a full audit trail of its content, not just who changed its lifecycle state, but exactly what the page said at each transition point. Snapshots are captured automatically; nothing needs to be configured.

When a snapshot is recorded:

Trigger Example
Manual lifecycle transition via CLI, Obsidian, API, or MCP synthadoc lifecycle activate alan-turing
Lint-driven state change — promotion, stale detection, contradiction resolution synthadoc lint run --auto-resolve
Manual page edit in Obsidian (2-second debounce, only when content changed) Editwiki/ada-lovelace.md and save

CLI: browsing history and rolling back:

# List the full snapshot history for a page
synthadoc lifecycle history alan-turing -w my-wiki

# Preview a specific snapshot's content
synthadoc lifecycle history alan-turing --index 2 --show-content -w my-wiki

# Roll back to snapshot 2 (current body is saved first — always undoable)
synthadoc lifecycle rollback alan-turing --index 2  --reason "restoring activation body" -w my-wiki

Obsidian plugin: Content Snapshots tab:

The Manage Page Lifecycle modal now includes a Content Snapshots tab. It shows the complete snapshot history across all pages with the triggering state transition, the actor (lint, cli, api, MANUAL_EDIT), timestamp, and content size. Filter by slug to focus on one page.

  • View: opens an inline line-by-line diff (added lines green, removed lines red) of the snapshot against the current file, with YAML frontmatter stripped so the diff shows only content.
  • Rollback: restores the page body to that snapshot in one click; the current body is auto-saved first, so every rollback is immediately undoable by rolling back to index 1.

Business Value:

  • Recover content overwritten by an accidental edit or a failed re-ingest
  • Audit exactly what a page contained when it first went live
  • Satisfy compliance requirements ("when was this page reviewed and what did it say?") without maintaining any separate record
  • Every rollback is non-destructive: the pre-rollback body is always preserved as snapshot index 1

For the full walkthrough including diff commands and Obsidian screenshots, see Snapshots and content recovery in the Quick-Start Guide.


2. Agentic Maintenance Workflows

Wiki maintenance can now be driven entirely from the chat interface — no terminal, no commands. Type a maintenance request in plain English; the system asks for confirmation, re-ingests pages, runs lint, and reports back, all in a single conversation turn.

Two built-in workflows:

Workflow Trigger phrase What it does
Stale-pages bulk reingest "re-ingest stale pages" Finds every stale page, confirms the list with you, force-re-ingests each one in sequence, runs a full lint pass, and summarises every outcome
Page-by-slug reingest "re-ingest the alan-turing page" Looks up the source path for any named page (regardless of state), confirms, force-re-ingests it, runs lint, and summarises

How it works:

Each workflow runs as a tool-call loop driven by the action agent:

  1. Discover — find_stale_pages or find_page_source(slug)
  2. Confirm — a confirmation card appears in the chat with Yes / No buttons; nothing runs until you approve
  3. Ingest — ingest_source force-ingests each page and waits for the job to finish (one at a time, partial failures do not abort the rest)
  4. Lint — run_lint queues a full lint pass
  5. Poll — poll_job waits for lint to reach a terminal state
  6. Summarise — a plain-text summary of every re-ingest outcome and the lint result (pass/fail)

Real-time tool_progress events stream inline in the chat so you see each step as it happens. Declining the confirmation card exits cleanly with a cancellation message.

Maintenance chips in the graph sidebar:

Open the Graph tab in the web UI and click any node. A Maintenance section appears at the bottom of the node panel with two chips:

  • ⚑ Check this page for issues — sends "Check the [slug] page for issues" to chat
  • ↻ Re-ingest this page — triggers Workflow B for that slug directly from the graph

Supported surfaces: web chat UI and the Obsidian plugin query modal.

Value:

  • Zero-terminal wiki maintenance: useful for team members who don't have the CLI installed
  • Confirmation-gated: the agent never touches pages without explicit approval
  • Full lint cycle is included: pages land in the correct lifecycle state after reingest, not just re-ingested to draft
  • Agentic framework is extensible: new workflow plugins can be added without modifying the core engine

For the demo walkthrough and full protocol specification, see Step 26 — Agentic Maintenance Workflows in the Quick-Start Guide, and the Agentic Maintenance Workflows section in the Design Doc.


Installation & Upgrade

New Installation

pip install synthadoc
synthadoc --version   # should print 1.2.0
synthadoc install history-of-computing --target ~/wikis --demo

Consult the Quick-Start Guide to launch the engine and explore the new features.

Upgrading from v1.1.x

pip install synthadoc --upgrade
synthadoc plugin upgrade
synthadoc demo sync --force

synthadoc demo sync --force refreshes the History of Computing demo wiki to v1.2.0 templates, including the konrad-zuse page used in the Content Snapshots and Agentic Workflows walkthroughs. Your own ingested pages, .synthadoc/ config, and audit data are never modified.


Other Enhancements & Fixes

Reliability — File I/O:

  • All wiki page writes are now atomic (write to .tmp, then rename) to prevent partial-write corruption if the process is interrupted mid-save
  • JSON writes (schedules.json and all configuration files) use the same atomic pattern
  • Line endings are consistently \n across all file write paths, fixing subtle diff noise on Windows

API & Lifecycle:

  • Pagination limit parameter no longer has an upper bound — callers can request as many records as needed in a single call
  • /lifecycle/events now uses the database total count directly instead of re-counting the filtered result, fixing incorrect pagination totals
  • /provenance/citations now fetches up to 100,000 rows to compute the accurate total before applying limit/offset
  • Audit log entries are now recorded for pages bootstrapped from archived frontmatter

Session Skill:

  • Large conversation files (100+ turns) are now chunked in 30-turn batches before ingest, preventing provider token-limit errors
  • Unknown session formats fall back to Codex-style parsing silently rather than logging a warning

Scheduler:

  • Scheduled operations with spaces in arguments are now parsed with shlex.split instead of naïve str.split, fixing commands that include quoted paths
  • schedules.json is written atomically; a crash during a schedule update no longer corrupts the file

Web UI:

  • Recent-sessions navigation from the left sidebar now correctly loads the session when the Knowledge Graph panel is active
  • Default query timeout raised from 90 s to 300 s to accommodate agentic workflow round-trips

Obsidian Plugin:

  • Dialog backdrop now correctly blocks Escape key and outside-click dismissal for lifecycle modals

MCP Integration:

  • mcp moved to required dependencies — fresh installs no longer fail with ModuleNotFoundError: No module named 'mcp.server.fastmcp'
  • Duplicate snapshot entries triggered via MCP write_page calls are suppressed

Knowledge Graph:

  • Concurrent graph builds no longer race: a lock prevents duplicate simultaneous computations

Security:

  • Domain-block filter now correctly matches www.-prefixed variants of blocked domains

Acknowledgements

Built and maintained by the Synthadoc team.