Releases: rbcodelabs/obsidian-claude-threads
Releases · rbcodelabs/obsidian-claude-threads
Release list
v0.19.14
What's new
- Thread orchestrator support — a bundled skill that lets one thread supervise several peers: per-thread notes, proposed replies for human review, and event-driven wake-up (#310)
- Fix: scheduled wake-up indicator no longer stays hidden until an unrelated re-render forces it (#312)
- Fix: git-diff-bar button now correctly shows "View PR" when the thread already has an open PR (#315)
- Test infra: pinned the harness clock in bridge-aware/mobile screenshot specs, fixing baselines that silently drifted a day at a time (#301)
v0.19.13
Fixed
- Cron mutations are now durable. Disabling, updating, or deleting a scheduled task (
/loop, Settings → Scheduled Tasks) now waits for the change to be persisted to disk before returning. Previously the in-memory state updated immediately but the save to disk was fire-and-forget — if Obsidian reloaded (or crashed) in that window, the item reverted to its last-saved state on disk, silently resurrecting a task you'd just disabled or deleted. (#314) - Missed/overdue scheduled items now catch up with a staggered delay (5s, plus up to 30s more per additional overdue item) instead of all firing simultaneously on startup, and logs a warning when catching up more than one overdue item.
Also included
- Consecutive tool calls in a thread now group into a collapsible pill instead of rendering as a long flat list. (#313)
v0.19.12
What's New
- Mobile: answer AskUserQuestion prompts from your phone. Claude Threads mobile now renders
AskUserQuestiontool prompts as an interactive card — single-select, multi-select, and free-text "Other" support, matching desktop. Answers relay back to the desktop session in real time. (#308)
Fixes
- Fixed a flaky screenshot test baseline (
bridge-aware) that silently drifted a day at a time because its relative-timestamp text was computed against the real system clock instead of the fixture epoch. Test infra only — no product change.
Full Changelog: v0.19.11...v0.19.12
v0.19.11
Bug Fixes
- Fixed a bug where scheduled cron items (e.g. recurring monthly automations) could fire twice simultaneously and spawn runaway duplicate threads. This happened when a plugin reload occurred while the previous session was still shutting down: a brief window let the old scheduler's timers stay alive alongside a freshly constructed one, so both instances independently fired the same due item and kept re-arming themselves. The scheduler is now torn down synchronously as the very first step of shutdown, with two additional safety checks (a fencing check against on-disk state, and an in-process reentrancy guard) to prevent any recurrence even under unusual timing. (#306)
Full diff: v0.19.10...v0.19.11
v0.19.10
Skills Manager cleanup
- Fixed the Installed list not scrolling independently of its header (the search/count/action rows now stay fixed while the tree scrolls)
- Styled the previously-unstyled Import/Check-for-updates action buttons
- Replaced the "Check for updates" inline status text (which wrapped onto its own line and had a grammar bug) with a compact indicator dot + hover tooltip showing full status and last-checked time
- Added a draggable divider between the list and detail panels — drag to resize, double-click to reset, width persists across sessions
- Combined "Import Folder…" / "Import File (.skill)…" into a single Import menu
- Fixed "Check for updates" silently doing nothing on failure — the icon now spins while checking and a toast always reports the result, including why it failed
- Moved Import / Check for updates from full-width list rows into compact icon buttons in the tab bar, freeing up vertical space in the list panel
Full diff: v0.19.9...v0.19.10
v0.19.9
Fixes
- Plan Mode leak into subagents — approving a plan (via ExitPlanMode) now clears the SDK's real internal plan-mode flag, not just the UI state. Previously, subagents spawned after plan approval would keep getting a phantom "plan mode is active" restriction regenerated on every turn, since they read the same underlying session flag the parent never actually cleared.
- Worktree paths not canonicalized —
enter_worktreenow resolves the created worktree path withfs.realpathSync(). On macOS,os.tmpdir()-based paths resolve through a/var→/private/varsymlink; Bash tolerated the symlinked form but Edit/Write's sandbox check needed the canonical path, causing "Bash works, Edit/Write don't" failures in fresh worktree sessions. - Regenerated 3 screenshot baselines whose relative-time text had drifted against the real clock (text-only, no product change).
Full diff: v0.19.8...v0.19.9
v0.19.8
What's New in v0.19.8
Bug Fixes
- Stopped "Stream closed" errors on pending ExitPlanMode / AskUserQuestion / permission prompts — a follow-up to v0.19.7's #296 fix, addressing a different gap in the same release-gate logic. The gate that decides when it's safe to close the input stream had no awareness of a pending human-approval wait (ExitPlanMode, AskUserQuestion, or a regular tool permission prompt). If a background task's own result landed while you hadn't yet responded to one of these prompts, the stream could close prematurely — so your eventual response (e.g. approving a plan) failed with a "Stream closed" error, even though the session was still alive. Fixed with the same timer-free, event-driven approach as #296: the gate now also waits for any in-flight interactive callback to resolve before releasing the stream. (#298)
Notes
- No breaking changes or migration steps.
- If you're still seeing "Stream closed" errors after updating, please report it — the remaining architectural fix for this whole bug class (a long-lived query per thread, replacing the current per-turn heuristics) is tracked as a larger follow-up project, not yet started.
v0.19.7
What's New in v0.19.7
Features
- Persistent model-button indicator for escalated turns — the model switcher now stays accent-highlighted (with a gentle pulse, honoring
prefers-reduced-motion) for the whole duration of a turn routed via/escalate, so you always have a visible confirmation the escalation took effect instead of just a 3-second popover tip that's easy to miss. (#295) - Git diff bar + Create PR button — when a thread's working directory is a git repo on a feature branch, a bar now sits above the compose box showing the branch name and a live
+X -Ydiff stat (branch vs. base, including uncommitted changes, computed via localgitonly — no network). A split "Create PR" button offers Create PR, Create draft PR (both via the new/create-prslash command), or Manually create PR (opens GitHub's compare page directly). Desktop only. (#294)
Bug Fixes
- Threads no longer wedge on "Working" after a background task notification — since v0.19.5, a thread could finish its final assistant message (cost shown, todos complete) but the Working indicator would never clear, requiring a 10-minute timeout or a full Obsidian reload to recover. Root cause: an internal flag meant to keep the input channel open while a task-notification's reaction was still streaming wasn't cleared once that reaction actually arrived. The fix clears the flag as soon as assistant activity streams in after a notification, so the turn's final result can release normally. (#296)
Notes
- No breaking changes or migration steps.
v0.19.6
Fixes
/loopnow fires immediately instead of waiting a full interval for the first send (matches/goal)./loopreplaces, not stacks — starting a new loop on a thread stops any loop already running there instead of piling up multiple.- Fixed duplicate-tick pileup — if a loop tick arrives before the thread's previous turn has finished, it's retried shortly after rather than queuing a duplicate message.
- Added a loop status banner and Stop button, plus a matching footer pill, so an active loop is now visible and can be cancelled from the UI (previously only via
/loop stop).
Full diff: v0.19.5...v0.19.6
v0.19.5
Fixed
- Permission channel could die mid-conversation with "Stream closed" (#290): passing a plain string prompt to the Agent SDK set an internal flag that force-closed the CLI's stdin — the only channel for permission approvals,
AskUserQuestion, andExitPlanMode— at the very first response. Background tasks (now routine) kept the CLI running past that point, so every later permission request on such a turn failed instantly with "Stream closed," even though the session was still alive. Sessions now hold the input channel open until the CLI genuinely has no more pending work, verified against a live reproduction with the real CLI. - Fixed a related bug where an
ExitPlanModeapproval card could render into a detached part of the page and never become visible, appearing to hang forever.
Internal
- Thread sessions that outlive their first response (background task still running) are now tracked so a new message won't start a second process against the same session, and Stop still works while one is running.