Skip to content

Releases: juanje/buddy

Buddy v0.1.29

Choose a tag to compare

@github-actions github-actions released this 26 Aug 09:35

Expired tokens no longer fail silently

Buddy now detects expired OAuth tokens at launch and shows a clear re-login
option in Settings instead of leaving a dead credential in place. If a provider
rejects a request mid-session, an inline card appears in the chat pointing you
straight to Settings — no more silent failures or mysterious empty responses.

What you could see

  • An expired provider token made the session fail with no explanation. The
    stale credential stayed in the auth store, Settings showed it as configured,
    and prompts silently returned errors. Buddy now probes OAuth providers at boot
    and purges dead tokens automatically — Settings shows "Token expired — Sign in"
    so you can re-authenticate in one click.
  • A mid-session auth failure produced no visible feedback. If the provider
    rejected a prompt for auth reasons, the response simply never arrived. Now an
    inline error card appears immediately with a link to Settings.
  • Background reflect or consolidation auth failures were invisible. If a
    background task failed due to an expired token overnight, you had no way to
    know. The next session now surfaces those failures as an inline card before
    your first prompt.

What changed underneath

Model catalog updated: Claude 4.6 models replace earlier entries for the
balanced and powerful tiers; OpenAI Codex mapped to GPT-5.6 Luna/Terra/Sol.
The --force-model retry-reflect script flag was replaced with --fresh for
cleaner re-authentication. One test-only assertion was corrected after the
catalog change.

372 BDD scenarios and 1076 unit tests pass. The auth probes add one API call per
OAuth provider at boot — typically <200ms — and nothing changes for users whose
tokens are still valid.

Buddy v0.1.28

Choose a tag to compare

@github-actions github-actions released this 18 Aug 02:57

Smarter consolidation with worker pre-computation

Consolidation cycles now pre-compute structured data blocks before prompting the
model, making maintenance decisions faster, more accurate, and less dependent on
the model scanning files by itself. Daily runs detect coherence gaps between logs
and active context; weekly runs get observation hygiene, skill friction review,
and grouping candidates; monthly runs get brain metrics and staleness flags. The
scheduler also gained calendar fallbacks so cold instances eventually reach
deeper depths even with infrequent use.

What you could see

  • "Right now" items no longer vanish after a day of silence. Daily
    consolidation can now only add or update working-memory items — removal
    requires a full week of inactivity, evaluated at depth 2.
  • Stale inbox items are cleaned automatically. When a log mentions
    completing or parking a task, the coherence block flags the matching inbox
    entry for removal instead of leaving it to accumulate indefinitely.
  • Observations referencing deleted files are auto-removed. The worker
    strips entries whose linked paths no longer exist in the instance, without
    waiting for a model to notice.

What changed underneath

Six new worker modules (observation-hygiene, skill-usage-tracking,
consolidation-snapshot, daily-coherence, grouping-candidates,
monthly-metrics) inject pre-computed blocks into the consolidation prompt
header by depth. The consolidation skill was rewritten: step 9a splits
add/update (daily) from removal (weekly W5); step 10 reconciles inbox, deferred,
and Right now from a single coherence block; W1–W7 and M1–M4 replace the
previous thin depth extensions. Scheduler thresholds changed: depth 2 fires at
3 depth-1 runs or 7 calendar days; depth 3 at 4 depth-2 runs or 30 days.

367 BDD scenarios and 1056 unit tests pass. Existing consolidation behaviour is
unchanged for depth 1 daily synthesis; the deeper depths now do substantially
more useful work.

Buddy v0.1.27

Choose a tag to compare

@github-actions github-actions released this 16 Aug 19:21

Smarter guards and signed macOS builds

Buddy now surfaces problems instead of hiding them: the heading guard tells the model what went wrong instead of silently undoing writes, the deferred reminders stay visible while you chat, and the retry-reflect script explains why a retry failed. macOS installers are now signed and notarized through Apple Developer ID, so Gatekeeper stops complaining on first launch.

What you could see

  • Deferred reminders disappeared after scrolling down. The card was inside the chat scroll area, so a few messages pushed it out of view. It now floats above the chat and stays visible until you dismiss it — including when the heartbeat surfaces new items mid-session.

  • Edits to project files in agent_brain/ silently reverted. The heading guard protected all brain files, but most of them (projects, concepts, skills) need routine restructuring. Now only 15 stable files are guarded; edits to working documents go through normally.

  • "Success" then nothing changed. When the heading guard did revert a write, the model saw a success confirmation. It now sees exactly which headings were lost and is told to re-read before retrying.

What was one small change away from going wrong

  • Brain files could not be deleted or moved during sessions. The blanket block on agent_brain/ prevented legitimate cleanup (merging duplicates, deepening hierarchy). Now only identity files, indexes, and append-only logs are immutable; moves also rewrite inbound markdown links so references don't break.

What changed underneath

Capture routing was reformulated across the prompt, design principles, and specs — from "will the user act / will the agent learn?" to an ownership test ("whose content is this?") with a bifurcation rule for dual-purpose information. The retry-reflect.ts script gained a --force-model flag for multi-provider sessions where model resolution fails, plus event diagnostics when output is empty. The CI workflow now signs and notarizes macOS builds when Apple Developer secrets are configured, falling back to ad-hoc signing for forks and PRs.

1032 unit tests and 349 scenarios.

Buddy v0.1.26

Choose a tag to compare

@github-actions github-actions released this 13 Aug 03:57

Faster boot after version upgrades

Buddy could crash on first launch after upgrading to a version with nested documentation files (like v0.1.25). The worker tried to write files into a subdirectory that didn't exist yet, and the process exited before the frontend could connect — showing "Worker exited (code 1)" with no useful explanation.

What you could see

  • "Worker exited (code 1)" on first launch after updating. The worker crashed while deploying new documentation files into ~/.buddy/docs/memory/. Pressing Restart usually worked because the directory had been partially created, but the experience was jarring. Now the worker creates intermediate directories before writing.

  • Slower startup on version upgrades. Documentation files were deployed before the RPC channel was ready, blocking the frontend connection. Now only prompts (needed for session creation) are deployed at boot; documentation is deployed after the channel is up, so the app window appears faster.

What changed underneath

Boot refresh is now split: bootRefreshIfNeeded deploys prompts only (4 small files, needed for system prompt assembly), and bootDeployDocs runs after the RPC channel connects. The deployMarkdownFiles function now creates parent directories for nested paths. A retry-reflect.ts script was also added for manually re-running a failed session-end reflect from its saved fork file.

1001 unit tests and 341 scenarios.

Buddy v0.1.25

Choose a tag to compare

@github-actions github-actions released this 13 Aug 01:57

Expanded and corrected self-documentation

Buddy's built-in documentation now covers memory internals in detail, with progressive disclosure — the basic pages stay simple, and deeper explanations are available when you ask.

What you could see

  • New "Going deeper" docs. Ask Buddy how its memory works in detail and it can now explain: how reflect and consolidation run (with the real depth/heartbeat model), how knowledge rises and fades (Hebbian scoring), where things live and why, how Buddy learns from observations to concepts to rules, and how git protects your data.
  • New wiki page. The second brain / wiki feature is now documented — what goes in, how pages connect, how maintenance works.
  • Corrected consolidation timing. The docs no longer claim maintenance runs "when you're not chatting" — they accurately describe the heartbeat model.
  • Corrected privacy description. The privacy page now explains that identity files and relevant memory are sent as context to the AI provider, not just "the conversation."
  • Corrected permission nuance. "Allow always" is clarified as covering reads only — writes outside the data folder always ask separately.

What changed underneath

  • New docs/memory/ directory with 5 detailed docs + index, plus docs/wiki.md at root level.
  • how-memory-works.md, capabilities.md, privacy.md, and cost-and-budget.md corrected for accuracy against the SPEC.
  • Dead code removed: WIKI_TAGS constant, wikiTagsPath, renderTagsFile, and regenerateTagsFile — tag search uses wiki_search on page frontmatter directly. SPEC updated to match.
  • WIKI_META_FILES no longer lists tags.md.

996 unit tests and 341 scenarios.

Buddy v0.1.24

Choose a tag to compare

@github-actions github-actions released this 12 Aug 01:14

Deferred items now respect the instance language

Reminders and decisions surfaced by consolidation are written in the language you chose during setup, not in English. Previously, the consolidation process relied on USER.md wording to detect the language — but reactive phrasings like "reply in the user's language" gave no signal to an autonomous process without a conversation. The runner now injects the language directly from your config, the same way the wiki already does.

What you could see

  • Reminders and decisions now appear in your language. If you chose Spanish (or any non-English language) at setup, deferred notifications are written in that language. Previously they could appear in English.

What changed underneath

buildConsolidationPrompt reads config.json → language (the setup wizard value) and prepends User language: Spanish to the prompt header. The consolidation skill references this header line instead of USER.md for language decisions. Journal entries benefit from the same fix.

998 unit tests and 341 scenarios.

Buddy v0.1.23

Choose a tag to compare

@github-actions github-actions released this 11 Aug 16:58

Prompt split and journal guardrail

Core instructions now live in agents-base.md, which updates with the app. Your AGENTS.md keeps only your personalized state — active context, navigation map, and instance-learned rules. Existing instances are migrated automatically on first boot, with a backup.

What changed

  • AGENTS.md / agents-base.md split. Capture rules, file metadata, the twelve core behavioral rules, and knowledge routing moved to agents-base.md. AGENTS.md is now instance state only: active context, where to find things, and rules your Buddy has learned from use. When an old-format AGENTS.md is detected on boot, it is migrated once — personalized sections are preserved, core instructions are removed, and the original is backed up to .buddy/migrations/.
  • Journal is read-only during chat. The journal entry in "Where to find things" now states explicitly that the journal is written by consolidation, never during conversation. This prevents the agent from writing daily entries mid-chat.
  • Navigation links point to index files. Projects, Concepts, and Ideas entries in the template link to their index.md rather than bare directory paths, which behave inconsistently across platforms.

What changed underneath

Boot migration logic (migrateAgentsMdIfNeeded) joins the existing ensureUserMdSectionsOnDisk in session-boot.ts. Core rule detection uses bold-keyword prefix matching against a frozen list; unrecognized rules are preserved as instance rules. Consolidation Step 8 now tells the agent that core rules are already in the system prompt and must not be duplicated — instance rules go to AGENTS.md only.

998 unit tests and 341 scenarios.

Buddy v0.1.22

Choose a tag to compare

@github-actions github-actions released this 11 Aug 04:22

Wiki synthesis and production hardening

The wiki grows on its own: a background task discovers implicit concepts and creates synthesis pages. Six production bugs are fixed, and the wiki is now fully self-maintaining.

What changed

  • Wiki synthesis (FR-WIKI-06). A heartbeat task detects tag clusters, co-occurrence patterns, and disconnected page groups, then creates synthesis pages that tie them together. Capped at 3 pages per run, gated by page-count growth and a 7-day cooldown. Runs on the fast model tier with its own session, independent of consolidation.
  • Connection label preservation. WikiConnection now stores the original link label from markdown. Backlink additions, health repairs, and page rewrites preserve human-readable titles instead of normalizing them to filename slugs.
  • Section boundary fix. replaceConnectionsSection stops at the last connection bullet when no following H2 exists, instead of absorbing everything to EOF. Content after the connections block (e.g. ## Fuentes) survives repair cycles.
  • Broken link repair improved. findPageBySlug falls back to hyphen-boundary suffix matching, resolving article-prefix mismatches (el-zapato-como-micro-entornozapato-como-micro-entorno). Links to files outside user/wiki/ that exist on disk are no longer flagged as broken.
  • Consolidation excluded from wiki. installMaintenanceGate blocks all file tools on user/wiki/ during consolidation sessions. The wiki and consolidation are fully decoupled.
  • Local timestamps. All production timestamps use local ISO format instead of UTC.
  • First synthesis initialization. When synthesis state is null, the system sets a baseline page count without running, preventing an immediate synthesis on an established wiki.

989 unit tests and 334 scenarios.

Buddy v0.1.21

Choose a tag to compare

@github-actions github-actions released this 11 Aug 00:53

Self-healing wiki

The wiki now monitors its own health. After every filing and on periodic background checks, Buddy detects and repairs structural issues — broken links, orphan pages, missing backlinks — automatically.

What changed

  • Post-write health check. Every wiki_file call runs a deterministic audit after filing: orphan pages, ghost index entries, broken links, missing backlinks, frontmatter integrity, thin pages, and connectivity stats. Resolvable issues (missing backlinks, slug-matchable broken links, stale indexes) are repaired immediately. Remaining warnings are logged.
  • Heartbeat wiki audit. A background task checks for external edits (user renames, manual page edits) via path-scoped git log since the last check. When changes are found, the same check-and-repair cycle runs and commits fixes independently of consolidation.
  • Independent of consolidation. Wiki health runs on its own cycle. A wiki check failure does not block consolidation, and consolidation failures do not affect the wiki. They are separate background tasks with separate state.
  • Wiki state tracking. .buddy/wiki-state.json persists lastHealthCheck and pagesAtLastCheck across sessions, so the heartbeat knows when to skip (no changes) or run (new commits).

952 unit tests and 326 scenarios.

Buddy v0.1.20

Choose a tag to compare

@github-actions github-actions released this 10 Aug 23:52

Your personal wiki

Buddy now builds a personal knowledge base for you. When you share ideas, concepts, or reflections worth keeping, Buddy files them into interconnected wiki pages — structured, tagged, and cross-linked so they grow more useful over time.

What you can do now

  • Save knowledge from conversation. Say "add this to the wiki" or "save this concept" and Buddy creates a wiki page with key points, examples, tags, and connections to related pages. No setup needed — the wiki bootstraps on first use.
  • Search your wiki. Ask about something you've saved before and Buddy searches your pages by title, content, or tags. It reads matched pages before answering, so your accumulated knowledge informs its responses.
  • Wiki in your language. Page headings and content are written in your instance language (Spanish or English). Section parsing is positional, so enrichment and cross-links work regardless of heading language.

What changed underneath

  • wiki_search finds pages by title, tags, or body content and returns metadata the agent uses to decide what to read.
  • wiki_file creates or enriches interconnected markdown pages with frontmatter (tags, summary, sources, dates) and bidirectional backlinks.
  • Connection paths from the LLM are normalized to page-relative links, so clicking a connection in the file viewer navigates correctly.
  • The glossary (glossary.md) uses the first complete sentence of each summary — no more truncated definitions. tags.md is no longer regenerated on every filing; tag search is handled by wiki_search directly.
  • The wiki is always on — no setting to enable. It bootstraps when you first file something.

932 unit tests and 323 scenarios.