Skip to content

v0.2.0

Pre-release
Pre-release

Choose a tag to compare

@KadenMc KadenMc released this 20 May 23:28
· 335 commits to main since this release
19636d9

work-buddy v0.2.0 — ~95 merged PRs since v0.1.0. This release relicenses work-buddy to GPL-3.0-only, redesigns the task pipeline around Getting Things Done, adds local model inference, migrates the knowledge store to a new file-per-unit substrate, and reworks the dashboard.

Pre-release. work-buddy remains pre-release software under active development; APIs may still change.

License

work-buddy is relicensed from MIT to the GNU General Public License v3.0 (GPL-3.0-only) as of this release; the 0.1.x line remains MIT. Copyleft keeps the runtime a shared resource — free to use, study, modify, and redistribute, with redistributed modifications staying free software. Contributions are now governed by a Developer Certificate of Origin (not a CLA): every commit is signed off, enforced by a required check. (#123, #124)

Task pipeline — a Getting Things Done redesign

The task pipeline was rebuilt around the five-phase structure of David Allen's Getting Things Done (GTD): Capture → Clarify → Organize → Reflect → Engage. Items are now captured without an immediate verdict, then processed through a structured Clarify decision tree (actionable or not? trash, reference, calendar, or task?) and routed to typed destinations rather than a single master list. Three deliberate extensions adapt GTD for AI-mediated work:

  • Outcome, next action, and definition-of-done as separate first-class fields — what you want apart from what you do, plus an explicit closure signal the agent can check. (#60)
  • An automation-tier model (0–4) formalizing where the agent acts autonomously vs. requires consent, grounded in a typed risk model. (#68)
  • Action contexts (@vault, @email_send, …) determining which tasks are executable in the current environment; /wb-task-me is a re-runnable "what can I do now" surface. (#69)

The Threads rework unified these into one FSM-governed entity: every captured item walks proposed → intent → context → action → execution, decomposable into sub-threads, with autonomy composed per-transition. (#74, #98) The weekly review is replaced by continuous, AI-assisted micro-review.

Task infrastructure

Independent of the GTD work, the task store was hardened and extended:

  • Hierarchical namespace tags#research/electricrag/experiments-style tags with embedding-backed suggestion and a dashboard tree. (#42)
  • Store hardening — a description column, atomic line mutations (closing the read-modify-write race), multi-effect post-write-uncertain recovery, cross-session consent inheritance. (#61)
  • task_read capability + shared read helper; projects/ made first-class; task_set_tags unified to manage #projects/*. (#45, #47, #92)

Local inference & embedding

Local model inference is new in this release — v0.1.x had none:

  • Local inference foundationllm_call / llm_submit / llm_with_tools running local models through LM Studio, with LM Link as the remote transport. Tool access is governed by a server-side capability ACL enforced at the work-buddy gateway, not in LM Studio config. (#29)
  • Unified LLM runner — one LLMRunner.call(tier, …) with semantic model tiers, a normalized response, an error taxonomy, and tier escalation, fed by a 13-source context pipeline. (#40)
  • Inference broker + embedding offload — priority-classed slot scheduling so one workload can't starve another; LM Studio added as an embedding provider, letting document-side bulk encoding be offloaded to a remote device via LM Link. (#52)

Knowledge store

  • File-per-unit substrate — every knowledge unit is now a single Markdown file (frontmatter + body) instead of packed JSON; editing a unit is editing its file. (#120)
  • Op registry + capability declarations — the executable callable is separated from the inert capability declaration; capability prose is editable as data. All ~199 capabilities migrated. (#119, #120)
  • 9-kind taxonomy — unit kinds evolved 5 → 9; 89 units reclassified. (#89)
  • Placeholders & retrieval<<wb:path>> cross-references with cycle detection; per-source multi-projection retrieval (BM25 + dense via RRF). (#17, #36)

Dashboard

  • Live event bus — the 30-second wholesale refresh is gone; server-pushed SSE mutates only the cards an event touches (morphdom-backed surgical DOM updates). (#66)
  • Settings, rebuilt — a unified control graph (domain→subsystem→component→requirement) backs a reworked Settings tab with a typed fix system (programmatic / input_required / agent_handoff) and diagnostic help agents. The Status tab was absorbed into Settings as sub-tabs and the Overview tab retired (Today is the new landing); cards became preference-gated via a registry; the fix-flow and scheduler runtime were hardened. (#44, #110, #112, #113)
  • New tabs — Jobs (user + system cron jobs), Chats (conversation search), Projects (relational temporal model, activity scoring), Memory (the entity registry). (#82, #103, #109, #122)
  • Agent launching — start or resume Claude Code sessions from the dashboard, desktop or mobile. (#22, #53)

Reliability, data safety & consent

  • Data-safety model — soft-delete (no DELETE in code), a versioned migration ladder (user_version + audit + AST-stable hash check + downgrade guard), off-machine backups to GitHub Releases on an hourly cron. (#100, #101, #102)
  • Artifact lifecycleArtifact = Storage × Lifecycle × Provenance, replacing ad-hoc per-module pruners. (#94)
  • MarkdownDB — a markdown-canonical two-way-sync abstraction (markdown is the source of truth; SQLite is a queryable projection). (#115)
  • Typed Obsidian exceptions — a typed error hierarchy and three-layer closure of the double-write hazard; vault writes that would clobber unsaved editor typing are refused. (#56, #50)
  • Consent hardening — call-stack-aware risk reduction, cross-session consent inheritance for sidecar replay, modal-consent routing. (#32, #61, #99)
  • Sidecar & scheduling — instance takeover on restart, bounded shutdown, user-authored cron jobs with parametric workflows, a filesystem watchdog, opt-in cron jitter. (#37, #82, #86)

Integrations

  • Thunderbird email triage — an email-provider abstraction and triage adapter; ships disabled by default (needs the companion add-on). (#63)
  • Multi-repo git context — context collection walks every repo under the repos root, attributing commits per project. (#51)
  • Vault-recon collector — a daily pass that surfaces recurring vault conventions via significance rules. (#84)
  • Entity registry — an authored store of people, places, projects, and concepts, with hierarchical tags and a federated entity_resolve across the entity and project registries. (#122)
  • Conversation observability — a durable, session-attributed activity DB (commits, file writes, topic summaries) derived from Claude Code session logs. (#109)
  • Tailscale — wired across all four health-system layers. (#91)

Breaking changes & retirements

  • Removed task surfaces — Review Queue, Daily Log, Engage, and Blocked-by-Context, and the clarify pool — all superseded by Threads. (#74, #95)
  • Status and Overview dashboard tabs retired. (#110)
  • _generated_capabilities.json and build.py removed; the JSON knowledge-store loading path is gone. (#120)
  • module knowledge-unit kind dropped (folded into reference). (#89)
  • /wb-dev-commit renamed /wb-dev-pr. (#93)

Companion repositories

work-buddy's two companion repositories also advanced this cycle:

  • obsidian-work-buddy (the Obsidian plugin, 0.1.0 → 0.1.1) — prepared for Obsidian community-plugin review (plugin-ID rename, manifest cleanup, lint compliance); an EditorConflict guard that auto-refreshes open editors and refuses changes that would clobber unsaved typing; a modal-consent message fix. Tracks the work-buddy-side bridge and consent work.
  • thunderbird-work-buddy (new) — an initial read-only Thunderbird bridge, created to pair with this release's email triage. The email integration ships disabled by default until this add-on is installed.

Full changelog: 0.1.0...0.2.0