Versions
agent-doc is alpha software. Expect breaking changes between minor versions.
Use BREAKING CHANGE: prefix in version entries to flag incompatible changes.
0.31.14
- Binding invariant enforcement (claim.rs): When target pane is already claimed by another document,
claimnow provisions a new pane instead of erroring. Enforces SPEC §8.5: "never commandeer another document's pane." - Sync auto-scaffold (sync.rs): Empty
.mdfiles in editor layout are automatically scaffolded with template frontmatter + status/exchange/pending components. Scaffold is saved as snapshot and committed to git immediately. - Transfer pending merge (extract.rs):
agent-doc transfernow automatically transfers thependingcomponent alongside the named component. Source pending is cleared after merge. - SPEC.md updates: §7.10 (claim provisions on occupied pane), §8.5 (empty file auto-scaffold in initialization step).
- Tests: 6 sync scaffold tests (positive + negative), 2 pending merge tests. 458 total.
- Runbook:
code-enforced-directives.md— behavioral invariants enforced by binary, not agent instructions.
0.31.13
- Diff-type classification (P1):
classify_diff()classifies user diffs into 7 types (Approval, SimpleQuestion, BoundaryArtifact, Annotation, StructuralChange, MultiTopic, ContentAddition). Wired into preflight JSON asdiff_type+diff_type_reason. 13 tests. - Annotated diff format (P3):
annotate_diff()transforms unified diffs into[agent]/[user+]/[user-]/[user~]format. Wired into preflight JSON asannotated_diff. 5 tests. - Content-source annotation sidecar (P4): New
agent-doc annotatecommand generates.agent-doc/annotations/<hash>.jsonmapping each line to agent/user source. SHA256 cache invalidation. GC integration. 6 tests. - Reproducible operation logs (P5): New
.agent-doc/logs/cycles.jsonlwith structured JSONL entries (op, file, timestamp, commit_hash, snapshot_hash, file_hash). Wired into all write paths + git commit. 2 tests. - Post-preflight eval diffs (P2): Moved
strip_commentstocomponent.rs(shared between binary and eval-runner). eval-runner preprocesses diffs with comment stripping. - Transfer-source metadata:
PatchBlocknow supportsattrsfield.<!-- patch:name key=value -->attributes parsed and preserved. 3 tests. - JB plugin Gson migration: Replaced hand-rolled JSON parser with
com.google.gson.JsonParser. Fixes\\nunescape ordering bug. Plugin v0.2.44. - SKILL.md enhancements: Diff-type routing (0b), multi-topic
---separators (0c), process discipline clarification. - Domain ontology: Interaction Model section in README.md (Directive, Cycle, Diff, Annotation).
directive.mdkernel node. - Module-harness: New
ontology-referencesrunbook for cross-referencing domain ontology in module specs.
0.31.12
- Refactor
ensure_initialized(): Split into 3 focused functions:ensure_session_uuid(),ensure_snapshot(),ensure_git_tracked(). Compositeensure_initialized()calls all three. - Rename
auto_start_no_wait()→provision_pane(): Aligns with domain ontology (Provisioning = creating a new pane + starting Claude). - Tests: 8 new tests for ensure_session_uuid (3), ensure_snapshot (2), ensure_initialized (1), plus 2 helpers.
0.31.11
- Sync auto-initialization:
ensure_initialized()now called in sync'sresolve_file. Files withagent_doc_formatbut no session UUID get one assigned automatically on editor navigation. Fixes: files created by skills (granola import) are no longer invisible to sync. - Binding invariant spec: SPEC.md section 8.5 documents the pane lifecycle invariant — document drives pane resolution, never commandeers another document's pane.
- Domain ontology: README.md now has Document Lifecycle, Pane Lifecycle, and Integration Layer ontology tables (Binding, Reconciliation, Provisioning, Initialization).
- Module docs: sync.rs, claim.rs, snapshot.rs, route.rs updated with ontology terminology.
0.31.10
- Auto-init for new documents:
ensure_initialized()insnapshot.rs— claim and preflight now auto-create snapshot + git baseline for files entering agent-doc. No more untracked files after import. - Cross-process typing detection: FFI exports
agent_doc_is_typing_via_fileandagent_doc_await_idle_via_filefor CLI tools running in separate processes.is_idleandawait_idlenow bridge to file-based indicator when untracked in-process. - Diff stability fix:
wait_for_stable_contentcounter now tracks consecutive stable reads across outer iterations (was resetting within each pass). - IPC error propagation:
ipc_socket::send_messagenow returns proper errors instead of swallowing connection/timeout failures asOk(None). - Template patch boundary fix: Improved boundary marker handling in
apply_patches_with_overrides. - CI/build:
make releasetarget, idempotent release workflows, version-sync check inmake check.
0.31.9
- Transfer-extract runbook: New bundled runbook for cross-file content moves (
agent-doc transfer/extract). Installed viaskill install. - Compact-exchange runbook update: Added note about preserving unanswered user input during compaction.
- SKILL.md Runbooks section: Added runbook links to SKILL.md so the skill knows about transfer/extract/compact procedures.
- Housekeeping: Gitignore
.cargo/config.toml, resolve clippy warnings, remove accidentally committed files.
0.31.8
- CI fix: Removed
path = "../tmux-router"override from Cargo.toml. CI runners don't have the local submodule; uses crates.io dependency exclusively.
0.31.7
- Stash-bounce fix: Removed
return_stashed_panes_bulk()from automaticprune()path. Active panes now stay in stash until the reconciler explicitly needs them, eliminating the stash→return→stash loop that caused visible pane bouncing. - Sync file lock: Added
flockon.agent-doc/sync.lockto serialize concurrent sync calls. Prevents race conditions when rapid tab switches fire overlapping syncs. - Route sync removal: Removed redundant
sync::run_layout_onlyfrom Route command dispatch andsync_after_claimfrom route.rs. The JB plugin'sEditorTabSyncListeneris now the sole authority for layout sync. - Diagnostic checkpoints: Added checkpoint logging in sync (
post-repair,post-prune,pre-tmux_router) to pinpoint pane state at key transitions.
0.31.6
- Debounce fix: Default mtime debounce increased from 500ms to 2000ms. Configurable per-document via
agent_doc_debouncefrontmatter field. - Structured logging: Added
tracing+tracing-subscriber+tracing-appender. SetAGENT_DOC_LOG=debugto log to.agent-doc/logs/debug.log.<date>. Zero overhead when unset. - Pre-response cleanup bug:
clear_pending()now deletes pre-response snapshots after successful writes. Previously accumulated indefinitely. - Lock file cleanup bug:
SnapshotLock::Dropnow deletes the lock file (not just unlocks). CRDT lock acquisition cleans stale locks (>1 hour old). agent-doc gcsubcommand: Garbage-collects orphaned files in.agent-doc/directories. Supports--dry-runand--rootflags.- Auto-GC on preflight: Runs GC once per day via
.agent-doc/gc.stamptimestamp check. - Cleanup runbook: New
runbooks/cleanup.mddocumenting.agent-doc/directory structure and cleanup rules. - Tracing instrumentation:
tracing::debug!at key decision points in sync, route, layout, and resync modules. - Source annotations for extract/transfer:
agent-doc extractandagent-doc transfernow wrap content with[EXTRACT from ...]or[TRANSFER from ...]blockquote annotations including timestamp. - Post-sync session health check: After every sync, verifies the tmux session still exists. Logs
CRITICALif session was destroyed. - Route cleanup on failure: When route fails, orphaned panes created during the attempt are killed before the error propagates.
0.31.5
- Commit on claim:
agent-doc claimnow commits the file after saving the initial snapshot. Ensures the first prompt appears as a diff against a committed baseline. - Auto-setup untracked files: Preflight auto-adds untracked files to git (snapshot +
git add), so/agent-docworks on new files without claiming first. - VCS refresh after commit:
agent-doc commitwrites a VCS refresh signal file, prompting IDEs to update their git status display. - Preflight
--diff-onlyflag: Omits the full document from preflight JSON output, reducing token usage by ~80% on subsequent cycles. - Skill-bundled runbooks:
agent-doc skill installnow installs runbooks alongside SKILL.md at.claude/skills/agent-doc/runbooks/. First runbook:compact-exchange.md. - JetBrains prompt button truncation: maxLabelLen reduced from 45 to 25 characters.
- Debounce module: New
src/debounce.rsfor reusable debounce logic.
0.31.4
- IPC reposition simplified: Removed file-based IPC fallback from
try_ipc_reposition_boundary. Boundary reposition now uses socket IPC exclusively (through FFI listener callback). Non-fatal on failure. - Inline
max_lines=Nattribute: Component tags supportmax_lines=Nto trim content to the last N lines after patching. Precedence: inline attr >components.toml> unlimited. Example:<!-- agent:exchange patch=append max_lines=50 -->. - Boundary-stripping in watch hash:
hash_content()strips boundary markers before hashing, preventing reactive-mode feedback loops where boundary repositions trigger infinite re-runs. - Console component scaffolding:
agent-doc claimnow scaffolds a<!-- agent:console -->component for template-mode documents. - HEAD marker cleanup:
git.rsstrips stray(HEAD)markers from working tree after commit (defensive cleanup). - StreamConfig max_lines:
agent_doc_stream.max_linesfrontmatter field limits console capture lines (default: 50). - Tests: 612 total. New: 4
max_lines_*tests in template.rs. - Docs: SPEC.md, README.md, CLAUDE.md updated for max_lines and socket-only IPC.
0.31.3
- Claim snapshot fix:
agent-doc claimnow saves the initial snapshot with empty exchange content. Existing user text in the exchange becomes a diff on the next run, preventing unresponded prompts from being absorbed into the baseline. - Tests: 608 total. New:
strip_exchange_content_removes_user_text,strip_exchange_content_preserves_no_exchange.
0.31.2
agent-doc dedupe: New command removes consecutive duplicate response blocks. Ignores boundary markers in comparison. Used to fix duplicate responses caused by watch daemon race conditions.- Write-origin tracing:
--originflag onagent-doc writelogs the write source (skill/watch/stream) to ops.log. Aids diagnosis when snapshot drift occurs. - Commit drift warning: Warns when
file_len - snap_len > 100bytes, indicating a possible out-of-band write that bypassed the snapshot pipeline. - Watch daemon busy guard: Skips files with active agent-doc operations (
is_busy()check), preventing the watch daemon from generating duplicate responses when competing with the skill. - PatchWatcher EDT fix: Patch computation moved outside
WriteCommandAction. No-op patches skip the write action entirely, eliminating EDT blocking and typing lag. - ClaimAction claim+sync:
Ctrl+Shift+Alt+Cnow callsagent-doc claimon the focused file before syncing, handling unclaimed/empty files. - Single-char truncation fix: Single characters are treated as potentially truncated in
looks_truncated(), requiring 1.5s stability check. Prevents partial typing (e.g., "S" from "Save as a draft.") from triggering premature runs. - SKILL.md: All write examples include
--origin skill. Version 0.31.2. - JetBrains plugin: Version 0.2.40.
- Tests: 606 total. New:
truncated_single_chars,dedupe_*(4 tests). - Docs: SPEC.md §7.22 (--origin), §7.23 (busy guard), §7.28 (dedupe). CLAUDE.md module layout.
0.31.1
- Declarative layout sync: Navigating to a file in a split editor now creates a tmux pane automatically. Files with session UUIDs are always treated as Registered by sync, even without a registry entry (reverses 0.31.0 Unmanaged guard). Auto-start phase also no longer requires registry entries.
- ClaimAction simplified: JetBrains ClaimAction (Ctrl+Shift+Alt+C) now delegates entirely to SyncLayoutAction — removed 200+ lines of position detection, pane ID extraction, and independent auto-start logic.
- Claim registry protection:
agent-doc claimrefuses to overwrite an existing live claim without--force, preventing silent pane corruption from fallback position detection. - HEAD marker duplicate fix:
add_head_markeruses occurrence counting instead of substring matching, correctly marking new headings even when the same heading text exists earlier in the document. - Busy guard removed: EditorTabSyncListener no longer blocks sync when any visible file has an active session. The binary's own concurrency guards (startup locks, registry locks) are sufficient.
- Build stamp: New
build.rsembeds a build timestamp. On sync, the binary compares against.agent-doc/build.stampand clears stale startup locks on new build detection. - Plugin binary resolution fix: EditorTabSyncListener and SyncLayoutAction now pass
basePathtoresolveAgentDoc(), correctly resolving.bin/agent-docinstead of falling through to~/.cargo/bin/agent-doc. - JetBrains plugin: Version 0.2.38. Requires uninstall→restart→install→restart (structural class changes).
- Tests: 602 total. New:
add_head_marker_duplicate_heading_text. - Docs: SPEC.md §7.10 (claim protection), §7.15 (occurrence counting), §7.20 (UUID-always-registered, build stamp). Ontology claim.md updated.
0.31.0
agent-doc sessionCLI: Show/set configured tmux session with pane migration (session_cmd.rs).- Stash pane safety:
purge_unregistered_stash_panesno longer kills agent processes (agent-doc, claude, node) in stash — only idle shells. Prevents loss of active Claude sessions when registry goes stale. - Session resolution consolidation:
resolve_target_session()extracts duplicated session-targeting logic from route.rs into a single function. Config.toml is the source of truth; claim/route no longer auto-overwrite it. - Stale UUID handling: Files with frontmatter session UUID but no registry entry are treated as Unmanaged by sync — prevents auto-starting sessions for unclaimed files.
- Unused variable cleanup: Fixed 8 warnings across route.rs and template.rs.
- Docs: SPEC.md §7.27 (session command), CLAUDE.md module layout updated.
- Tests: 601 total, 1 new (
purge_preserves_unregistered_agent_process_in_stash).
0.30.1
- FFI
agent_doc_is_idle: Non-blocking typing check for editor plugins to query idle state before boundary reposition. - JetBrains plugin typing debounce: Boundary reposition deferred until typing stops, using FFI idle check.
- VS Code koffi FFI bindings:
native.tswith koffi-based native bindings for the shared FFI library. - VS Code reposition boundary handling: Boundary reposition with typing debounce via FFI idle check.
- tmux_session config drift fix:
route.rsfollows pane session,claim.rsupdates config to match. - 2 new FFI tests: Coverage for
agent_doc_is_idleand related FFI surface. - Dependencies:
tmux-routerv0.3.8.
0.30.0
- Stale baseline guard (component-aware):
is_stale_baseline()now parses components and only checks append-mode (exchange, findings). Replace-mode components (status, pending) are skipped. Falls back to prefix check for inline docs. 11 new tests. - Busy pane guard:
SyncOptions.protect_panecallback in tmux-router DETACH phase +layout.rs. Prevents stashing panes with active agent-doc/claude sessions during layout changes. - Auto-start startup lock:
.agent-doc/starting/<hash>.lockwith 5s TTL prevents double-spawn when sync fires twice in quick succession. - Bug 2A fix: IPC snapshot save failure after successful write is now non-fatal with warning. Commit auto-recovers via divergence detection.
- Bug 2B fix: Removed commit-time divergence detection that was eating user edits into the snapshot.
- Hook system:
agent-doc hook fire/poll/listen/gcCLI. Cross-session event coordination viaagent-kithooks (v0.3).post_writeandpost_commitevents fired from write + commit paths. - HookTransport trait: Abstract delivery mechanism with
FileTransport,SocketTransport,ChainTransportimplementations. - Ops logging tests: 2 new tests for
.agent-doc/logs/ops.log. - Dependencies:
agent-kitv0.3 (hooks feature),tmux-routerv0.3.7 (SyncOptions). - Docs: SPEC.md §6.6/§7.9/§7.20/§9.5, README.md key features, CLAUDE.md module layout.
- Tests: 595 total (16 new), 0 failures.
0.29.0
- Links frontmatter: Renamed
related_docs→links(backward-compat alias). URL links (http:///https://) are fetched viaureq, converted HTML→markdown viahtmd(stripping script/style/nav/footer), cached in.agent-doc/links_cache/, and diffed on each preflight. Non-HTML content passes through unchanged. - Session logging: Persistent logs at
.agent-doc/logs/<session-uuid>.logwith timestamped events for session start, claude start/restart/exit, user quit, and session end. - Auto-trigger on restart: After
--continuerestart, background thread sends/agent-doc <file>viatmux send-keysafter 5s delay to re-trigger the skill workflow. - Security documentation: README.md top-level security notice + detailed Security section. SPEC.md Section 10 with threat model, known risks, and recommendations.
- New dependency:
htmdv0.5.3 (HTML-to-markdown, ~13 new crates from html5ever ecosystem, no HTTP server). - Tests: 7 new tests for URL detection, HTML conversion, boilerplate stripping, cache paths. 361 total, 0 failures.
0.28.3
- Write dedup boundary fix: Strip
<!-- agent:boundary:XXXXXXXX -->markers before dedup comparison. Boundary marker IDs change on each write, causing false negatives in the dedup check (content appeared different when only the boundary ID changed).
0.28.2
- Write dedup: All 4 write paths (
run,run_template,run_streamdisk,run_streamIPC) skip the write when merged content is identical to the current file. Dedup events logged to/tmp/agent-doc-write-dedup.logwith backtrace. - Pane ownership verification:
verify_pane_ownership()called at entry ofrun,run_template,run_stream. Rejects writes when a different tmux pane owns the session (lenient — passes silently when not in tmux or pane is indeterminate). - Column memory:
.agent-doc/last_layout.jsonsaves column→agent-doc mapping (carried from v0.28.1, now documented).
0.28.1
- Column memory:
.agent-doc/last_layout.jsonsaves column→agent-doc mapping. When a column has no agent doc, sync substitutes the last known agent doc from the state file. Preserves 2 tmux panes when one column switches to a non-agent file.
0.28.0
- Empty col_args filtering:
syncnow filters out empty strings fromcol_argsbefore processing. Fixes phantom empty columns sent by the JetBrains plugin during rapid editor split changes. - Sync debug logging: Added
/tmp/agent-doc-sync.logtrace logging at key sync decision points (col_args, repair_layout, auto-start, pre/post tmux_router::sync pane counts). - Post-auto_start stash removed: The explicit stash after auto-start is no longer needed —
tmux_router::syncalways runs the full reconcile path (no early exits), so excess panes are stashed during the DETACH phase. - tmux-router v0.3.6: Early exits removed from
sync— the full reconcile path now runs for 0, 1, or 2+ resolved panes uniformly. Previous early exits forresolved < 2bypassed the DETACH phase, leaving orphaned panes from previous layouts visible. - JetBrains plugin v0.2.36: Filter empty columns in SyncLayoutAction.kt
0.27.9
- tmux-router v0.3.5: Updated dependency — trace logging at key sync decision points + early-exit stash removal (preserves previous-column panes)
0.27.8
- tmux-router v0.3.4: Updated dependency — early-exit stash now derives session from pane via
pane_session()instead of deaddoc_tmux_sessionpath - VERSIONS.md backfill: Added entries for v0.23.2 through v0.26.6
0.27.7
- Sync path column-aware split:
auto_start_no_waitnow acceptscol_argsand computessplit_beforeviais_first_column(). Previously hardcodedsplit_before = false, causing new panes to always split alongside the rightmost pane regardless of column position. The sync path (editor tab switches) now matches the route path behavior.
0.27.6
- Bold-text pseudo-header fallback for
(HEAD)marker:add_head_marker()ingit.rsnow falls back to bold-text lines (**...**) when no markdown headings are found in new content.strip_head_markers()also handles stripping(HEAD)from bold-text lines. - SKILL.md header format guidance: Added "Response header format (template mode)" section instructing agents to use
### Re:headers. Bold-text pseudo-headers are supported as a fallback but real headings are preferred for outline visibility and sub-section nesting.
0.27.5
- Column-aware split target:
auto_start_in_sessionpicks the split target based on column position — first pane (leftmost) for left-column files, last pane (rightmost) for right-column files. Fixes 3-pane layout bug where new panes split the wrong existing pane. - Early-exit stash: Before the
resolved < 2early return intmux-router::sync, excess panes in the agent-doc window are now stashed. Previously, old panes from previous layouts stayed visible when only one file resolved. - tmux-router v0.3.3: Published with the early-exit stash fix.
0.27.4
- Rescue stashed panes in sync:
sync.rsnow rescues stashed panes back to the agent-doc window via swap-pane/join-pane before falling back to auto-start. Preserves Claude session context across editor tab switches.
0.27.3
- Revert auto-kill: Reverts v0.27.2 auto-kill of idle stashed Claude sessions. The
❯prompt is the normal state of a stashed session waiting to be rescued — not an orphan indicator.
0.27.2
- Auto-kill idle stashed Claude sessions: Added auto-cleanup in
return_stashed_panes_bulk()for stashed panes running agent-doc/claude at the❯prompt with no return target. (Reverted in v0.27.3 — too aggressive, killed active sessions.)
0.27.1
- Fix "externally modified" popup: Removed stale boundary disk write that caused spurious file modification notifications in editors.
0.27.0
- Fix stash rescue deregistration: Fixed pane deregistration during stash rescue operations.
- Socket IPC: Added
ipc_socketmodule using Unix domain sockets via theinterprocesscrate for direct binary-to-plugin communication. - Bulk resync:
return_stashed_panes_bulk()for batch stash rescue operations.
0.26.6
- FFI sync lock/debounce: Added
agent_doc_sync_try_lock/unlockFFI exports for cross-editor concurrency control. Addedagent_doc_sync_bump/check_generationfor cross-editor event coalescing. - Layout debounce fix:
LayoutChangeDetectoruses generation counter instead of spawning concurrent threads per event. - JetBrains plugin v0.2.35: Uses FFI sync primitives with local fallback.
0.26.5
- Skip no-op IPC reposition: IPC reposition signal skipped when boundary position is unchanged, eliminating ~64% of no-op PatchWatcher operations.
- Handle inotify overflow: PatchWatcher scans for missed files on inotify OVERFLOW events.
- CI: crates.io-only dependencies: All path dependencies (instruction-files, tmux-router, agent-kit, module-harness, existence) replaced with crates.io versions in CI workflows.
0.26.4
- Prompt detection for Claude Code v2.1+: Support numbered list format (
N. label) in prompt option parsing alongside bracket format ([N] label). - Auto-start PromptPoller: Plugin auto-starts PromptPoller on project open.
- JetBrains plugin v0.2.32: PromptPoller auto-start,
.bin/path resolution, diagnostic logging.
0.26.3
- Sync no longer auto-inits frontmatter: Sync returns
Unmanagedfor files without session UUIDs; onlyclaimadds frontmatter now. - Plugin mixed-layout sync: Uses focus-only when non-
.mdfiles are in editor splits, preventing stashing. - JetBrains plugin v0.2.25: Alt+Space popup, removed ActionPromoter (frees Alt+Enter for native JetBrains intentions).
0.26.2
- Route single exit point: Refactored route to
resolve_or_create_pane()eliminating propagation bugs.sync_after_claimnow runs on ALL route paths. - Response status signals: File-based status signals (
.agent-doc/status/<hash>) for cross-process visibility. FFI:set_status/get_status/is_busyfor in-process plugin checks. - Auto-init unclaimed files in sync: Sync writes session UUID for unclaimed files.
agent_doc_version()FFI export: Runtime version tracking for plugins.- JetBrains plugin v0.2.24:
is_busy()guard inEditorTabSyncListener+TerminalUtil.
0.26.1
- Sync layout authority:
sync_after_claimuses editor-providedcol_args, preventing 3-pane layout regression on file switch. - Clippy fixes:
doc_lazy_continuationfixes in sync.rs, upgrade.rs. Unused variable fix in tmux-routerbreak_pane_to_stash. - SPEC.md updates: Added sections on project config, IPC write verification, and sync layout authority.
0.26.0
- Kill pane safety:
kill_panerefuses to destroy a session's last window (tmux-router v0.3.0). - IPC verification: Content verification catches partial plugin application failures.
--force-diskcleans stale patches to prevent double-writes. - Module harness context: All 53+ modules annotated with Spec/Contracts/Evals doc comments (468 named evals, 68% coverage).
- Existence-lang ontology: 9 domain terms defined (Document, Session, Component, Boundary, Snapshot, Patch, Exchange, Route, Claim). Dev dependencies: existence v0.4.0, module-harness v0.2.0.
- README rewrite: Concise GitHub-facing guide.
0.25.15
- Sync layout repair: Added
repair_layout()to fix window index mismatches (agent-doc window not at index 0). Sync tests added for repair skip and move scenarios. - Blank line collapse on tmux_session strip: Collapsing 3+ consecutive newlines to 2 when stripping deprecated
tmux_sessionfrontmatter field.
0.25.14
- Sync pane repair: Window index repair, pane state reconciliation, effective window tracking.
- Resync enhancements: Enhanced dead pane detection and session validation.
- Route improvements: Improved command routing logic.
0.25.13
- Install script: Rewritten
install.shwith platform detection and improved install paths. - Homebrew formula: Added
Formula/agent-doc.rbfor macOS/Linux Homebrew installation. - Deprecate
tmux_sessionfrontmatter: Sync strips the field on encounter instead of repairing it. Routeauto_startno longer attempts repair.
0.25.12
- Sync swap-pane atomic reconcile:
context_sessionoverrides frontmattertmux_session, auto-repairs on mismatch. - Visible-window split: New panes split in the visible agent-doc window instead of stash.
- Resync report-only in sync:
resync --fixdisabled in sync path to preserve cross-session panes. - tmux-router v0.2.9: Swap-pane atomic transitions.
0.25.11
- Tmux-router swap-pane atomic transitions: Pane moves use
swap-panefor flicker-free layout changes. CI fix for path dependencies (agent-kit, tmux-router).
0.25.10
- Preflight mtime debounce: 500ms idle gate before computing diff.
- Unified diff context: Diff output uses unified format with 5-line context radius.
- Route
--debounceflag: Opt-in mtime polling for coalescing rapid editor triggers. is_trackedFFI export: For editor plugins to check file tracking status.- Sync no-wait auto-start:
auto_start_no_waitfor non-blocking session creation during sync. - JetBrains plugin v0.2.21: Sync logging improvements.
0.25.9
is_tracked()FFI export: Conservative debounce on untracked files (fallback to local tracking).- Untracked file debounce fix: Untracked files no longer bypass debounce.
- JetBrains plugin v0.2.20:
is_trackedbinding + FFI logging tags.
0.25.8
- Preflight debounce: Mtime-based 500ms idle gate before computing diff.
- Unified diff context: Switch diff output to unified format with 5-line context radius.
- Route
--debounce: New flag for opt-in mtime polling to coalesce rapid editor triggers. - Truncation detection fix: Smarter dot handling for domain fragments in
looks_truncated.
0.25.7
- Rename
submittorun:submit.rsrenamed torun.rs; all internal "submit" terminology updated to "run". - FFI debounce module:
document_changed()+await_idle()FFI exports for editor-side debounce. - Route sync fix: Route calls
sync::run_layout_only()to prevent auto-start race conditions. - JetBrains plugin v0.2.19: FFI debounce, conditional typing wait, layout-only sync.
0.25.6
- Route
--col/--focusargs: Declarative layout sync from the route command. PluginsendToTerminalpasses editor layout in a single CLI call. - Layout change detection:
LayoutChangeDetectorusingContainerListenerwith 5s fallback poll in the JetBrains plugin. - EDT-safe threading: Plugin uses
invokeLaterfor Swing reads, background thread for CLI calls. - JetBrains plugin v0.2.17.
0.25.5
- FFI boundary reposition: Export
agent_doc_reposition_boundary_to_end()for plugin use. - Boundary ID summaries: 8-char hex IDs with optional
:summarysuffix (filename stem).new_boundary_id_with_summary()wired into all write paths. - Snapshot boundary cleanup: Commit path uses
remove_all_boundaries(). Working tree cleaned viaclean_stale_boundaries_in_working_tree()on commit. - JetBrains plugin v0.2.14: FFI-first reposition with Kotlin fallback.
0.25.4
- Boundary accumulation fix: Plugin
repositionBoundaryToEndremoves ALL boundaries, not just the last one. - Short boundary IDs: 8 hex chars instead of full UUID (centralized in
lib.rs). - Autoclaim pruning: Validate file existence, prune stale entries on rename/delete.
- Sync stale pane detection: Detect alive panes with non-existent registered files (rename), kill stale pane and auto-start new session.
0.25.3
- Fix IPC boundary reposition for prompt ordering: All IPC write paths call
reposition_boundary_to_end()before extracting boundary IDs. Previously the stale boundary position caused responses to appear before the prompt.
0.25.2
- Fix skill install superproject root resolution: Added
resolve_root()to detect git superproject when CWD is in a submodule.skill install/checknow writes to the project root, not the submodule's.claude/skills/.
0.25.1
- IPC boundary reposition from commit: After committing, send an IPC reposition signal to the plugin so it moves the boundary marker to end-of-exchange in its Document buffer. Avoids writing to the working tree (which would lose user keystrokes).
0.25.0
agent-doc preflightcommand: Consolidated pre-agent command (recover + commit + claims + diff + document read) returning JSON for skill consumption.- Boundary reposition fix: Snapshot-only reposition prevents losing user input; no working tree writes during reposition.
- CRDT merge simplification: Removed
reorder_agent_before_human(), deterministic client IDs. - Pulldown-cmark outline: CommonMark-compliant heading parser for outline.
- Plugin boundary reposition via IPC:
reposition_boundary: trueflag in IPC payloads. - Stash window routing: Target largest pane, overflow to stash windows.
- JetBrains plugin v0.2.12: Plugin-side boundary reposition.
0.24.4
- Deterministic boundary re-insertion in
apply_patches: Binary handles boundary re-insertion after checkpoint writes, removing the need for SKILL.md to manually re-insert boundaries.
0.24.3
- Context session for auto_start: Pass context session to
auto_startto prevent routing to the wrong tmux session. Post-sync resync for consistency.
0.24.2
- SKILL.md step 3b: Added mandatory pending updates check each cycle.
plugin install --local: Install JetBrains/VS Code plugins from local build directory.- JetBrains plugin v0.2.10:
resync --fixon startup. - JetBrains plugin v0.2.9: VCS refresh signal fix (ENTRY_MODIFY event).
0.24.1
- SKILL.md heredoc examples: Updated bundled SKILL.md with heredoc examples for the write command.
0.24.0
agent-doc installcommand: System-level setup that checks prerequisites (tmux, claude) and detects/installs editor plugins.agent-doc initproject mode: No-arginitnow initializes a project (creates.agent-doc/directory structure, installs SKILL.md) instead of requiring a file argument.- SKILL.md content tests: CLI integration tests for skill install/check content verification.
- Sync pane guard: Pre-sync alive pane check prevents duplicate session creation.
0.23.3
- Cross-platform sync pane guard:
find_alive_pane_for_file()usesps(1)instead of/procfor Linux+macOS compatibility. Pre-sync auto-start checks alive panes before creating duplicates. - Clippy fixes: Fix
collapsible_ifwarnings in template.rs, git.rs, terminal.rs. Suppressdead_codewarnings for library-only boundary functions.
0.23.2
- Explicit patch boundary-aware insertion:
apply_patches_with_overrides()checks for boundary markers when applying explicit patch blocks in append mode, not just unmatched content. Prevents boundary markers from accumulating as orphans. - Version bump: Includes all v0.23.1 fixes (IPC snapshot, HEAD marker cleanup, boundary insertion).
0.23.1
- Boundary-aware insertion for unmatched content:
apply_patches_with_overrides()now uses boundary-aware insertion for both explicit append-mode patches and unmatched content routed toexchange/output. Previously only explicit patches used boundary markers; unmatched content used plain append. - IPC snapshot correctness:
try_ipc()now accepts acontent_oursparameter (baseline + response, without user concurrent edits). On IPC success the snapshot is saved fromcontent_oursinstead of re-reading the current file, preventing user edits typed after the boundary from being absorbed into the snapshot. - IPC synthesized exchange patch: When no explicit patches exist but unmatched content targets
exchange/outputand a boundary marker is present,try_ipc()synthesizes a boundary-aware component patch so the plugin inserts at the correct position. boundary.insert()cleans stale markers: Before inserting a new boundary marker,insert()strips all existing boundary markers from the document. Prevents orphaned markers accumulating across interrupted sessions.boundary::find_boundary_id_in_component(): New public function. Scans a pre-parsedComponentfor any boundary marker UUID, skipping matches inside code blocks. Used bytemplate.rsand external callers without re-parsing components.- Post-commit working tree cleanup: After
git.commit()succeeds,strip_head_markers()is applied to both the snapshot and the working tree file. Ensures(HEAD)markers never appear in the editor — they exist only in the committed version (creating the blue gutter diff).
0.23.0
- Boundary marker for response ordering: New
agent-doc boundary <FILE>command inserts<!-- agent:boundary:UUID -->at the end of append-mode component content. The marker acts as a physical anchor — responses are inserted at the marker position, ensuring correct ordering when the user types while a response is being generated. Replaces the fragile caret-offset approach. - Boundary-aware FFI: New
agent_doc_apply_patch_with_boundary()C ABI export. JetBrains plugin (NativeLib.kt,PatchWatcher.kt) uses boundary markers with priority over caret-aware insertion. - Component parser: boundary marker exclusion:
<!-- agent:boundary:* -->comments are now skipped by the component parser (no longer cause "invalid component name" errors). - IPC boundary_id: All IPC patch JSON payloads include
boundary_idwhen a boundary marker is present in the target component. - SKILL.md: boundary marker step: Updated bundled SKILL.md to call
agent-doc boundary <FILE>after reading the document (step 1b). - Claim auto-start: JetBrains plugin "Claim for Tmux Pane" action now auto-starts the agent session after successful claim.
- JetBrains plugin v0.2.8: Boundary-aware patching + claim auto-start.
0.22.2
- SKILL.md: immediate commit after write: Updated bundled SKILL.md to call
agent-doc commitright afteragent-doc write, replacing the old "Do NOT commit after writing" instruction. All sessions get the new behavior afteragent-doc skill install. - Plugin default modes:
exchangeandfindingscomponents now default toappendmode in the JetBrains plugin (matching the Rust binary'sdefault_mode()), so<!-- agent:exchange -->works without explicitpatch=append.
0.22.1
- Any-level HEAD markers:
(HEAD)marker now matches any heading level (#–######), not just###. Only root-level (shallowest) headings in the agent's appended content are marked. - Multi-heading markers: When the agent response has multiple sections, ALL new root headings get
(HEAD)markers (comparing snapshot vs git HEAD). - VCS refresh signal: After
agent-doc commit, writesvcs-refresh.signalto.agent-doc/patches/. Plugin watches for this and triggersVcsDirtyScopeManager.markEverythingDirty()+ VFS refresh so git gutter updates immediately. - JetBrains plugin v0.2.7: VCS refresh signal handling, cursor-aware FFI, VFS refresh before dirty scope.
0.22.0
agent-doc terminalsubcommand: Cross-platform terminal launch from editor plugins. Config-first (no hard-coded terminal list):[terminal] commandinconfig.tomlwith{tmux_command}placeholder. Fallback to$TERMINALenv var. Detects stale frontmatter sessions and scans registry for live panes.- Selective commit:
agent-doc commitstages only the snapshot content viagit hash-object+git update-index, leaving user edits in the working tree as uncommitted. Agent response → committed (no gutter). User input → uncommitted (green gutter). - HEAD marker: Committed version of the last
###heading gets(HEAD)suffix, creating a single modified-line gutter as a visual boundary and navigation point. - First-submit snapshot fix: When no snapshot exists and git HEAD content matches the current file, treat as first submit (entire file is the diff) instead of "no changes detected".
- Cursor-aware FFI:
agent_doc_apply_patch_with_caret()in shared library — inserts append-mode patches before the cursor position.Component::append_with_caret()incomponent.rs. JNA binding inNativeLib.kt. - JetBrains plugin v0.2.7: Cursor-aware append ordering via native FFI with Kotlin fallback. Captures caret offset from
TextEditorbeforeWriteCommandAction.
0.21.0
agent-doc parallelsubcommand: Fan-out parallel Claude sessions across isolated git worktrees. Each subtask gets its own worktree and tmux pane. Results collected as markdown with diffs.--no-worktreefor read-only tasks.- CRDT post-merge reorder: Agent content ordered before human content at append boundary using Yrs per-character attribution (
Text::diffwithYChange::identity). - README: Added parallel fan-out documentation section.
0.20.3
agent-doc claimssubcommand: Read, print, and truncate.agent-doc/claims.login a single binary call. Replaces the shell one-liner (cat + truncate) that was prone to zombie process accumulation when the Bash tool auto-backgrounded it.
0.20.2
- Fix: numeric session name ambiguity (tmux-router v0.2.8):
new_window()now appends:to session name (-t "0:"instead of-t "0"). Without the colon, tmux interprets numeric names as window indices, creating windows in the wrong session. Root cause of persistent session 1 bleedover bug.
0.20.1
- Session affinity enforcement: Route and auto_start bail with error instead of falling back to
current_tmux_session()whentmux_sessionis set in frontmatter. Prevents pane creation in wrong tmux session.
0.20.0
- CRDT conservative dedup (#15): Post-merge pass removes identical adjacent text blocks.
- CRDT frontmatter patches (#16):
patch:frontmatternow applied on disk write path (was IPC-only). - Binary-vs-agent responsibility documented in CLAUDE.md.
0.19.0
- ExecutionMode in config.toml:
execution_mode = "hybrid|parallel|sequential"in global config. - TmuxBatch: Command batching in tmux-router v0.2.7 — reduces flicker via
\;separator.select_pane()uses batch (2 → 1 invocation).
0.18.1
- Revert Gson: Hand-written JSON parser restored in JetBrains plugin (Gson causes ClassNotFoundException).
- H2 scaffolding:
claimscaffolds h2 headers before components for IDE code folding. - SKILL.md: Canonical pattern documented — h2 header before every component.
0.18.0
agent-doc undo: Restore document to pre-response state (one-deep).agent-doc extract: Move last exchange entry between documents.agent-doc transfer: Move entire component content between documents.- Pre-response snapshots: Saved before every write for undo support.
0.17.30
- Immutable session binding:
claimrefuses to overwritetmux_sessionunless--force. Prevents cross-session pane swapping.
0.17.29
- JNA FFI integration:
NativeLib.ktJNA bindings for JetBrains plugin with Kotlin fallback. agent_doc_merge_frontmatter(): New FFI export for frontmatter patching.agent-doc lib-path: Print path to shared library for plugin discovery.- VS Code prepend mode: Fixed missing
prependcase inapplyComponentPatch().
0.17.28
- Validate tmux_session before routing: Guard against routing to a non-existent tmux session.
0.17.27
- Plugin code-block fix: JetBrains and VS Code plugins skip component tags inside fenced code blocks. JB plugin 0.2.4, VSCode 0.2.2.
0.17.26
- PLUGIN-SPEC docs update: Document recent plugin features in PLUGIN-SPEC.
0.17.25
- Stash else-branch fix: Fix else-branch stash logic. Use
diff --waitfor truncation detection.
0.17.24
- Pulldown-cmark for code range detection: Replace hand-rolled code span/fence parser with
pulldown-cmarkin component parser. Stash overflow panes instead of creating new windows.
0.17.23
- Stash overflow fix: Overflow panes stashed instead of creating new tmux windows.
0.17.22
- UTF-8 corruption fix: Sanitize component tags in response content before writing to prevent UTF-8 corruption in
sanitize_component_tags.
0.17.21
- Indented fenced code blocks: Component parser skips markers inside indented fenced code blocks. Scaffold
agent:pendingin claim for template documents.
0.17.20
- BREAKING CHANGE: Rename
modetopatchfor inline component attributes (patch=append|replace).mode=accepted as backward-compatible alias.
0.17.19
- Split-window in auto_start: Use
split-windowinstead ofnew-windowfor auto-started Claude sessions. Resync tests added.
0.17.18
- Resync
--fixenhancements: Detect wrong-session panes and wrong-process registrations. Renamed--dangerously-set-permissionsto--dangerously-skip-permissions.
0.17.17
- Parse fix:
parse_option_linematches[N]bracket format only. Fixfind_registered_pane_in_sessionlookup.
0.17.16
- Cursor editor support: Add Cursor as a supported editor.
claude_argsfrontmatter field for custom CLI arguments. Tmux session routing fix. VS Code extension bumped to v0.2.1.
0.17.15
- Route/sync improvements: Routing and sync refinements for multi-session workflows.
0.17.14
- Plugin IPC fix: VS Code IPC parity with JetBrains. History command improvements. Documentation updates.
0.17.13
- Fix exchange append mode: Remove hardcoded replace override in
run_stream, allowing exchange component to use its configured patch mode.
0.17.12
- Inline component attributes:
<!-- agent:name mode=append -->— patch mode configurable directly on the component tag.
0.17.11
- History command:
agent-doc historyshows exchange version history from git with restore support. IPC-priority writes with--force-diskflag to bypass.
0.17.10
- Default component scaffolding: Auto-scaffold missing components on claim. Append-mode exchange default. Route flash notification via
tmux display-message.
0.17.9
- Fix CRDT character interleaving: Switch to line-level diffs to prevent character-level interleaving artifacts.
0.17.8
- Template parser code block awareness: Component markers inside fenced code blocks are now skipped by the template parser.
0.17.7
- Fix CWD drift: Recover and claim commands no longer drift from the project root working directory.
0.17.6
- Documentation update: Align docs with IPC-first write architecture from v0.17.5.
0.17.5
- IPC-first writes: All write paths (
run,stream,write) try IPC to the IDE plugin via.agent-doc/patches/before falling back to disk. Exit code 75 on IPC timeout.
0.17.4
- Tmux pane orientation fix: Arrange files side-by-side (horizontal split) instead of stacking vertically.
0.17.3
- Fix CRDT character-level interleaving bug: Resolve text corruption caused by character-level merge conflicts in CRDT state.
0.17.2
- Fix CRDT shared prefix duplication bug: Prevent duplicate content when CRDT documents share a common prefix.
0.17.1
- Fix stream snapshot: Use replace mode for exchange component in stream snapshot writes.
0.17.0
- BREAKING CHANGE:
agent_doc_format/agent_doc_writesplit: Replaceagent_doc_modewith separate format (inline|template) and write strategy (disk|crdt) fields. IPC write path for IDE plugins. Layout fix.
0.16.1
- Native compact for template/stream mode:
agent-doc compactnow works natively with template and stream mode documents.
0.16.0
- Reactive stream mode: CRDT-mode documents get zero-debounce reactive file-watching from the watch daemon. Truncation detection and CRDT stale base fix.
0.15.1
- Patch release: Version bump and minor fixes.
0.15.0
- CRDT-based stream mode: Real-time streaming output with CRDT conflict-free merge (
agent-doc stream). Chain-of-thought support with optionalthinking_targetrouting. Deferred commit workflow. Snapshot resolution prefers snapshot file over git.
0.14.9
- Multi-backtick code span support:
find_code_rangeshandles multi-backtick code spans (e.g.,``and```).
0.14.8
- Code-range awareness for strip_comments: Fix
<!-- -->stripping inside code spans and fenced blocks. Stash window purge for orphaned idle shells.
0.14.7
- Bidirectional convert:
agent-doc convertworks in both directions (inline <-> template). Autoclaim sync improvements.
0.14.6
- Auto-sync on lazy claim: Automatically sync tmux layout after lazy claim in route. Plugin autocomplete fixes for JetBrains.
0.14.5
agent-doc commandssubcommand: List available commands. Plugin autocomplete for JetBrains/VS Code. Remove auto-prune (moved to resync). Purge orphaned claude/stash tmux windows in resync.
0.14.4
- Claim pane focus: Focus the claimed pane after
agent-doc claim.converthandles documents with pre-set template mode.
0.14.3
- Autoclaim pane refresh: Refresh pane info during autoclaim. Template missing-component recovery on write.
0.14.2
- Skill reload via
--reloadflag: Compact and restart skill installation in a single command.
0.14.1
- SKILL.md workflow fix: Move git commit to after write step in the skill workflow to prevent committing stale content.
0.14.0
- Route focus fix + claim defaults to template mode: New documents claimed via
agent-doc claimdefault to template format.agent-doc modeCLI command for inspecting/changing document mode.
0.13.3
- Bump tmux-router to v0.2.4: Fix spare pane handling in tmux-router dependency.
0.13.2
- Sync registers claims:
agent-doc syncregisters claims for previously unregistered files in the layout.
0.13.1
- Sync updates registry file paths: Fix autoclaim file path tracking when sync moves files between panes.
0.13.0
- Autoclaim + git-based snapshot fallback: Automatic claim on route when no claim exists. Fall back to git for snapshot when snapshot file is missing.
0.12.2
- Exchange component defaults to append mode: The
exchangecomponent uses append patch mode by default instead of replace.
0.12.1
- Lazy claim fallback:
agent-doc claimwithout--panefalls back to the active tmux pane.
0.12.0
agent-doc convertcommand: Convert between inline and template document formats. Lazy claim support.agent-doc compactfor git history squashing. Exchange component as default template target.
0.11.2
- Strip trailing
## Userheading: Also strip trailing## Userheading from agent responses (complement to v0.11.1).
0.11.1
- Strip duplicate
## Assistantheading: Remove duplicate## Assistantheading from agent responses when already present in the document.
0.11.0
- Append-friendly merge strategy: Improved 3-way merge strategy optimized for append-style document workflows.
0.10.1
- Bundle template-mode instructions in SKILL.md: SKILL.md now includes template-mode workflow instructions for the Claude Code skill.
0.10.0
- BREAKING CHANGE: Rename
response_modetoagent_doc_mode: Frontmatter field renamed with backward-compatible aliases.
0.9.10
- Code-span parser fix: Component parser skips markers inside fenced code blocks and inline backticks. Template input/output component support.
0.9.9
- Template mode + compaction recovery: New template mode for in-place response documents using
<!-- agent:name -->components. Durable pending response store for crash recovery during compaction.
0.9.8
- Relocate advisory locks: Move document advisory locks from project root to
.agent-doc/locks/.
0.9.7
agent-doc writecommand: Atomic response write-back command for use by the Claude Code skill.
0.9.6
- Race condition mitigations: Stale snapshot recovery, atomic file writes, and various race condition fixes.
0.9.5
- Advisory file locking: Lock the session registry during writes. Stale claim auto-pruning.
0.9.4
- Bump tmux-router to v0.2: Update tmux-router dependency.
0.9.3
- Bump tmux-router to v0.1.3: Fix stash window handling in tmux-router.
0.9.2
agent-doc plugin installCLI: Install editor plugins from GitHub Releases. VS Code extension reaches feature parity with JetBrains.
0.9.1
- Stash window resize fix: Bump tmux-router to v0.1.2 to fix stash window resize issues.
0.9.0
- Dashboard-as-document: Component-based documents with
<!-- agent:name -->markers,agent-doc patchfor programmatic updates,agent-doc watchdaemon for auto-submit on file change.
0.8.1
- Auto-prune registry: Prune dead session entries before route/sync/claim operations.
0.8.0
- Tmux-router integration: Wire
tmux-routeras a dependency for pane management. Fixrouteauto_start bug.
0.7.2
- Attach-first reconciliation: Sync uses attach-first strategy with auto-register for untracked panes. Column-positional focus. Tmux session affinity.
0.7.1
- Additive reconciliation: Convergent reconciliation loop (max 3 attempts) with deferred eviction and reorder phase. Nuclear rebuild fallback.
0.7.0
- Snapshot-diff sync architecture: Rewrite sync to use snapshot-based diffing for tmux layout reconciliation. Dead window handling and column inversion fix.
0.6.6
--focuson sync:agent-doc syncaccepts--focusflag. Inline hint notification at cursor position in JetBrains plugin.
0.6.5
- Always use
sync --col: Single-file sync uses column mode. Break out unwanted panes. Plugin notification balloon for detected layout.
0.6.4
- Sync window filtering + layout equalization: Filter sync to target window only. Equalize pane sizes after layout.
0.6.3
- LayoutDetector fix: Skip non-splitter Container children in JetBrains plugin 3-column layout detection.
0.6.2
- Fire-and-forget Junie bridge: Junie bridge script resolved automatically. Plugin clipboard handoff for non-tmux editors.
0.6.1
- Junie agent backend: Add Junie as an agent backend with JetBrains plugin action support.
0.6.0
agent-doc synccommand: 2D columnar tmux layout synced to editor split arrangement. Dynamic pane groups.
0.5.6
- Commit message includes doc name:
agent-doc commitmessage format now includes the document filename.agent-doc outlinecommand for markdown section structure with token counts.
0.5.5
- Window-scoped routing: Route commands scoped to tmux window (not just session).
--pane/--windowflags. Layout safeguards. JetBrains plugin self-disabling Alt+Enter popup (removes ActionPromoter).
0.5.4
- Positional claim:
agent-doc claim <file>accepts file as positional argument. Editor plugin improvements and SPEC updates.
0.5.3
- Bundled SKILL.md with absolute snapshot paths: Snapshot paths use absolute paths for reliability. Resync subcommand and claims log documentation.
0.5.2
- Claim notifications + resync + plugin popup: Notification on claim.
agent-doc resyncvalidates sessions.json and removes dead panes. JetBrains and VS Code editor plugins added.
0.5.1
- Windows build fix: Cfg-gate unix-only exec in
start.rsfor cross-platform compilation.
0.5.0
agent-doc focusandagent-doc layout: Focus a tmux pane for a session document. Layout arranges tmux panes to mirror editor split arrangement.
0.4.4
- Rename SPECS.md to SPEC.md: Standardize specification filename.
0.4.3
- Commit CWD fix: Fix working directory for
agent-doc commit. SKILL.md prohibition rules.
0.4.2
- SPEC.md gaps filled: Document comment stripping as skill-level behavior (§4),
--root DIRflag for audit-docs (§7.6),agent-doc-versionfrontmatter field for auto-update detection (§7.12), and startup version check (warn_if_outdated). - Flaky test fix: Skill tests no longer use
std::env::set_current_dir. Refactoredinstall/checkto accept an explicit root path (install_at/check_at), eliminating CWD races in parallel test execution. - CLAUDE.md module layout updated: Added
claim.rs,prompt.rs,skill.rs,upgrade.rsto the documented module layout.
0.4.1
- SKILL.md: comment stripping for diff: Strip HTML comments (
<!-- ... -->) and link reference comments ([//]: # (...)) before comparing snapshot vs current content. Comments are a user scratchpad and no longer trigger agent responses. - SKILL.md: auto-update check: New
agent-doc-versionfrontmatter field enables pre-flight version comparison. If the installed binary is newer,agent-doc skill installruns automatically before proceeding. - PromptPanel: JDialog to JLayeredPane overlay: Replace
JDialogpopup with aJLayeredPaneoverlay in the JetBrains plugin, eliminating window-manager popup leaks.
0.4.0
agent-doc claim <file>: New subcommand — claim a document for the current tmux pane. Reads session UUID from frontmatter +$TMUX_PANE, updatessessions.json. Last-call-wins semantics. Also invokable as/agent-doc claim <file>via the Claude Code skill.agent-doc skill install: Install the bundled SKILL.md to.claude/skills/agent-doc/SKILL.mdin the current project. The skill content is embedded in the binary viainclude_str!, ensuring version sync.agent-doc skill check: Compare installed skill vs bundled version. Exit 0 if up to date, exit 1 if outdated or missing.- SKILL.md updated: Fixed stale
$()pattern →agent-doc commit <FILE>. Added/agent-doc claimsupport. - SPEC.md expanded: Added §7.7–7.13 (all commands), §8 Session Routing with use case table (U1–U11), §8.3 Claim Semantics.
0.3.0
- Multi-session prompt polling:
agent-doc prompt --allpolls all live sessions in one call, returns JSON array.SessionEntrynow includes afilefield for document path (backward-compatible). agent-doc commit <file>: New subcommand —git add -f+ commit with internally-generated timestamp. Replaces shell$()substitution in IDE/skill workflows.- Prompt detection:
agent-doc promptsubcommand added in v0.2.0 (unreleased). - send-keys fix: Literal text (
-l) + separate Enter,new-window -aappend flag (unreleased since v0.2.0).
0.1.4
agent-doc upgradeself-update: Downloads prebuilt binary from GitHub Releases as the primary upgrade strategy. Falls back tocargo install, thenpip install --upgrade, then manual instructions includingcurl | sh.
0.1.3
- Upgrade check: Queries crates.io for latest version with a 24h cache. Prints a one-line stderr warning on startup if outdated.
agent-doc upgrade: New subcommand triescargo installthenpip install --upgrade, or prints manual instructions.
0.1.2
- Language-agnostic audit-docs: Replace Cargo.toml-only root detection with 3-pass strategy (project markers → .git → CWD fallback). Scan 28 file extensions across 6 source dirs instead of .rs only.
- --root CLI flag: Override auto-detection of project root for audit-docs.
- Test coverage: Add unit tests for frontmatter, snapshot, and diff modules.
0.1.0
Initial release.
- Interactive document sessions: Edit a markdown document, run an AI agent, response appended back into the document.
- Session continuity: YAML frontmatter tracks session ID, agent backend, and model. Fork from current session on first run, resume on subsequent.
- Diff-based runs: Only changed content is sent as a diff, with the full document for context. Double-run guard via snapshots.
- Merge-safe writes: 3-way merge via
git merge-fileif the file is edited during agent response. Conflict markers written on merge failure. - Git integration: Pre-commit user changes before agent call, leave agent response uncommitted for editor diff gutters.
-bflag for auto-branch,--no-gitto skip. - Agent backends: Agent-agnostic core. Claude backend included. Custom backends configurable via
~/.config/agent-doc/config.toml. - Commands:
run,init,diff,reset,clean,audit-docs. - Editor integration: JetBrains External Tool, VS Code task, Vim/Neovim mapping.