Skip to content

Releases: mickyarun/bodhiorchard

## Pluggable AI provider — Claude, GitHub Copilot, or OpenAI Codex

Choose a tag to compare

@mickyarun mickyarun released this 02 Jul 09:42
052c593

Pluggable AI provider — Claude, GitHub Copilot, or OpenAI Codex

Each organization now chooses which agent CLI runs its codebase-aware work. Pick your provider in the setup wizard and Settings → AI Configuration; every agent task — specs, chat, design, estimation, scans, triage — runs on it.

Highlights

  • Three providers, one selector. Claude Code, GitHub Copilot, or OpenAI Codex, switchable per org. All reach the same BUD/code-graph tools through the built-in MCP bridge.
  • Flexible auth per provider. Hybrid mode inherits your host login (claude login, gh/Copilot, or codex login) so agents run on your existing subscription — or paste an API key/token, stored encrypted (Fernet AES-128).
  • In-wizard connection test for the selected provider before you commit.
  • Provider-native repo setup. The first scan writes the right config for your provider — Claude → .claude/, Codex → .codex/hooks.json + config.toml, Copilot → .github/hooks/, plus AGENTS.md — all wired to the same dev-activity / BUD-todo hooks so tracking works everywhere.
  • Live progress for Codex & Copilot — runs now stream tool activity instead of showing a static spinner.
  • Provider-aware Agent Prompts. Model/effort dropdowns reflect the active provider (Copilot runs on auto-selected models).

Notes

  • Claude behavior is unchanged; existing orgs keep running exactly as before.
  • Ollama (local models) is next on the roadmap.

v1.3.3

Choose a tag to compare

@mickyarun mickyarun released this 20 Jun 07:18
bbbdca8

What's Changed

  • fix(minigames): bound submitted score to each game's own max by @mickyarun in #258
  • feat(minigames): make all three games server-authoritative via Colyseus by @mickyarun in #259
  • chore(frontend): enable npm-merge-driver in .gitattributes by @mickyarun in #260
  • fix(minigames): score fishing hook from the client's in-cast time by @mickyarun in #261
  • fix(minigames): show fishing result instantly, stop snapping the bobber by @mickyarun in #262
  • fix(minigames): match optimistic fishing score to the reported instant by @mickyarun in #263
  • feat(minigames): ramp Pollen Pop — faster, denser, more varied over time by @mickyarun in #270
  • feat(race): dynamic pack-framing spectator camera by @mickyarun in #271
  • fix(minigames): cap Pollen Pop end density, speed it up, jitter the cadence by @mickyarun in #272
  • feat(minigames): randomise the Lake Fishing bobber per cast by @mickyarun in #273
  • feat(minigames): lives + escalating levels for Fishing and Pollen Pop by @mickyarun in #274
  • feat(minigames): firefly anti-bot guards + clear inflated leaderboard scores by @mickyarun in #275
  • feat(buds,bugs): unblock PM/manager workflows and add bug numbers by @mickyarun in #276
  • feat(sp): rework Skill Points to credit the people who did the work by @mickyarun in #277

Full Changelog: v1.3.2...v1.3.3

v1.3.2 — Podman-friendly frontend DNS

Choose a tag to compare

@mickyarun mickyarun released this 15 Jun 04:57
453b513

Fixes

Self-hosting on Podman now works out of the box. The frontend nginx container previously hardcoded Docker's embedded-DNS address (127.0.0.11) for resolving the backend upstream. Under Podman that resolver lives on the network gateway instead, so every /api/* request failed with 502 Bad Gateway and the setup screen couldn't reach the backend.

nginx now auto-detects the container's DNS resolver from /etc/resolv.conf at startup, so the same image runs unchanged on Docker, Podman, and rootless Podman — no manual config edits. The runtime DNS re-resolution that keeps nginx pointed at the right backend after a --force-recreate is preserved.

Full diff: #257

v1.3.1 This release introduces the Company Quiz Game — a daily, AI-generated knowledge game built from your own product data — plus timezone-aware mini-game nudges, org-wide high-score shout-outs, and two garden reliability fixes.

@mickyarun mickyarun released this 14 Jun 13:53
1d11833

✨ Highlights
🧠 Company Quiz Game (#252)
A daily knowledge game that tests how well your team understands what you've built:

AI-drafted, human-approved — questions are generated from your feature registry into a review queue; admins edit/approve/reject, and only approved questions ever go live. No unreviewed AI output reaches the team.
Three formats — multiple-choice, scramble, and fill-in-the-blank, auto-rotating so it stays fresh.
Runs on your schedule — opens on admin-selected weekdays (default Mon & Fri) at a set time in your org's timezone, with a live countdown and an answer-+-explanation reveal when the window closes.
Competitive & rewarding — accuracy + speed scoring, a monthly leaderboard, and the month's top scorer earns SP (a genuine tie splits the prize). Slack DMs announce when a quiz opens (with the SP prize on the line) and post the standings at reveal.
Surfaced right on the dashboard garden, alongside the mini-games. Configure it under Settings → Quiz Game.
🎮 Mini-games
Daily Slack nudge now fires at 09:00 in each org's own timezone (#248)
New high scores are broadcast to the whole org on Slack (#250)
🐛 Fixes
Garden: self-heal invisible repo trees caused by a corrupt IndexedDB cache (#249)
Garden: stop canvas input from bleeding through open dialogs (#251)
📝 Upgrade notes
The Company Quiz Game adds new database tables; the Alembic migration runs automatically on backend startup. It's enabled by default and can be turned off per-org in Settings → Quiz Game.
Full Changelog: v1.3.0...v1.3.1

v1.3.0 — Living Garden & Race Day 🌳🏁

Choose a tag to compare

@mickyarun mickyarun released this 13 Jun 04:53
27d7c26

This release is all about the 3D world coming alive: a top-to-bottom performance and visual rewrite of the Living Garden, a brand-new mini-games arcade with leaderboards, a richer racing experience, and a refreshed public landing site + docs.

🌳 Living Garden — rewritten for speed and beauty
A ground-up overhaul of the PlayCanvas dashboard world (#247):

Much faster. Hardware instancing, smarter draw-call batching, a parallelized scene build, and incremental updates — a single repo change now regrows just that one tree instead of rebuilding the whole world. Holds 60fps even at 24+ repos.
Prettier. New single-source color theme, spring-morning lighting, camera post-processing, grass that sways in the wind, drifting pollen, and a dense painterly grass field.
A world worth visiting. Natural wood-bark trees, a teak-plank swimming pool, a packed-earth village with a campfire, benches, yards, and a washing line.
🎮 Mini-games arcade (new!)
A new way to take a break in the garden (#247):

Two games — Lake Fishing and Pollen Pop — with a daily play streak.
Per-game leaderboards, now first-class tabs on the Leaderboard page right next to XP and the race circuits.
A daily Slack nudge to keep your streak alive and call out who's leading.
Games are pure fun: they never award XP — XP stays reserved for real development work.
🏁 Racing
Invite colleagues by Slack DM to race, with a reusable member picker and a more robust test setup (#235).
Boost pads and hurdles added to tracks — with knockdowns, jumps, and speed-scaled launch arcs (#236).
A new circular/organic-loop track with laps, a roadside village, and AI dev bots to race against (#242).
🌐 Landing site & docs
The cramped single-page landing is now a 6-page SEO marketing site with animation (#240).
README restructured as a proper landing page, with reference docs moved into docs/ (#243), refreshed promo imagery and screenshots (#244), and shipped features (Slack bot, GitHub webhook, test-gen, CI/CD) now marked Live today (#246).
🐛 Fixes
Vuetify components now correctly inherit the Hallmark body font (#239).
Full changelog: v1.2.0...v1.3.0

🌿 v1.2.0 — A fresh coat of paint, and a starting gun 🏁

Choose a tag to compare

@mickyarun mickyarun released this 10 Jun 10:44
d7954d5

This release reskins Bodhiorchard end-to-end around a new forest design system, adds automatic light/dark theming, and ships Racing v2.

🎨 A whole new look — the Forest design system

Every screen redesigned around a "living garden" visual language.

  • Forest palette — a deep-forest dark canvas, one disciplined leaf-green accent, and a reserved harvest-gold for reward moments (XP, shipped BUDs, the leaderboard podium).
  • New typography — Bricolage Grotesque for headings & the wordmark, Geist for the UI, JetBrains Mono for code.
  • Light & Dark, automatically — the app now follows your OS colour scheme and switches live (e.g. at sunset). Prefer a fixed mode? Pick Auto · Light · Dark in the user menu and it's remembered.

Highlights

  • BUD detail keeps the phase tabs and section toolbar pinned as you scroll a long document.
  • Leaderboard gets a gold podium for #1 and a focused, readable ranking.
  • Design Systems cards now render the extracted palette as real colour swatches.
  • Methodology is now a polished, cinematic landing page.
  • Consistent passes across the BUD board, Dashboard, Features, Bugs, Skills, Members, and Settings, plus accessibility touches (visible focus rings, reduced-motion support, theme-aware tooltips & scrollbars).

🏁 Racing v2

Race your teammates through the 3D garden.

  • Lobby → track → podium — invite racers, line up in the lobby, race, and see podium results.
  • Stamina mechanic — manage stamina across the race, with a quick intro and a live stamina bar.
  • Invite flow — invite one or more colleagues, with live invite toasts and a watch banner for spectators.
  • A finish banner, proximity hotkeys, and a per-distance race leaderboard.

👥 Teams

  • Group org members into teams and map them to the repositories they own, so new work auto-routes to the right squad based on which repos a BUD touches.

🛠 Under the hood

  • Priority-aware smart BUD assignment with a yield-offer flow.
  • Numerous light-theme correctness fixes and component cleanups.

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 09 Jun 12:06
87c6c26

1.1.0 (2026-06-09)

Features

  • cli: add npx installer that pulls images and runs the stack (#226) (da8eaae)

v1.0.1 - Teams: route work to the squad that owns the code

Choose a tag to compare

@mickyarun mickyarun released this 09 Jun 09:10
05f2a6d

Auto-assignment now narrows to the team that owns a BUD's impacted repos
before applying the existing capacity, skill, recency, and round-robin
scoring. Plus async background jobs for the Danger Zone skill rerun and
proper navigation feedback when opening a BUD.

Highlights

  • Teams as a first-class concept (Members → Teams). A team is a
    named set of org members mapped to one or more repos. Three new
    tables with composite FKs that make cross-org membership a DB-level
    impossibility.
  • Team-scoped auto-assignment. The role picker intersects with team
    membership when a BUD has impacted_repos. Falls back to org-wide
    with a banner warning when no team owns the impacted repo — never
    stalls silently.
  • Per-repo TODO splitting at DEVELOPMENT entry. Multi-repo BUDs
    now distribute TODOs across each repo's team developers instead of
    dumping every TODO on the lead.
  • Members page consolidated into two tabs (People / Teams);
    /settings/teams redirects so old bookmarks keep working.
  • BUD board Team filter alongside the existing assignee / priority
    filters.
  • Danger Zone skill rerun moved to the async-job pattern — no more
    axios client-side timeouts on 20-repo orgs.
  • Opening a BUD shows immediate feedback via a layout-level route
    progress bar + a page-shaped skeleton loader.

Migration

One new migration runs on backend start; no data backfill required.
Existing orgs get empty Teams — admins create them via Members → Teams.

Tenant safety

The three new Teams join tables enforce tenant alignment via composite
FKs back to teams, org_to_user, and tracked_repositories.
Cross-org membership or repo ownership is rejected at the database
layer regardless of application bugs.

What's Changed

  • fix(skills): run Danger Zone skill rerun as a background job by @mickyarun in #218
  • fix(buds): add navigation feedback so opening a BUD never feels stuck by @mickyarun in #224
  • feat(teams): team-scoped BUD auto-assignment + Members → Teams tab by @mickyarun in #225

Stable Initial Version

Choose a tag to compare

@mickyarun mickyarun released this 08 Jun 16:55
f05bfa5

What's Changed

  • Relicense AGPL-3.0 → Apache 2.0 + add IP-independence NOTICE by @mickyarun in #48
  • Public-launch follow-ups: BUD canonicalization, public-readiness docs, landing page by @mickyarun in #49
  • README polish: move independence note to footer, mark Anthropic direct API as supported by @mickyarun in #50
  • README + landing-page narrative restructure: How It Runs, AI Engines, Manifesto, FAQ, JSON-LD schema by @mickyarun in #51
  • Position as Agent-Driven Development methodology (not agentic SDLC) by @mickyarun in #52
  • feat: MCP-ify BUD design read/write + cascade reassignment to TODOs by @mickyarun in #53
  • feat: surface BUD ↔ Feature links in Requirements tab + audit timeline by @mickyarun in #54
  • fix+feat: BUD design wireframe preview, linked-features UI, PM agent grounding by @mickyarun in #55
  • prompt: wireframes are plain HTML — drop Vue/Vuetify, retire v-app autowrap by @mickyarun in #56
  • feat: BUD ↔ Feature links UI, wireframe preview fixes, todo regen on chat edit by @mickyarun in #57
  • refactor: regenerate BUD todos only at DEVELOPMENT-phase transition by @mickyarun in #58
  • scan: domain-overlap guard + compound-bigram cluster labels by @mickyarun in #60
  • chore: replace customer-specific placeholders with generic ones by @mickyarun in #61
  • feat(buds): Notion-style TODO board + agent-driven generation via job queue by @mickyarun in #59
  • removed the deployment file by @tanu-atoa in #62
  • chore(backend): clear all mypy --strict errors + open-source PR gates by @mickyarun in #63
  • fix(ci): unblock Dependabot PRs (hatchling pin + DCO bot exemption) by @mickyarun in #90
  • chore(deps)(deps): update tzdata requirement from >=2024.1 to >=2026.2 in /backend by @dependabot[bot] in #84
  • chore(deps)(deps): update python-dotenv requirement from >=1.0.0 to >=1.2.2 in /backend by @dependabot[bot] in #81
  • chore(ci)(deps): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #64
  • chore(ci)(deps): bump googleapis/release-please-action from 4 to 5 by @dependabot[bot] in #66
  • chore(deps)(deps): update bcrypt requirement from <4.1 to <5.1 in /backend by @dependabot[bot] in #77
  • chore(deps)(deps): bump the multiplayer-minor-patch group across 1 directory with 2 updates by @dependabot[bot] in #70
  • chore(deps)(deps): bump the frontend-minor-patch group across 1 directory with 8 updates by @dependabot[bot] in #74
  • perf(design): real --resume + iteration_model + no-link fallback by @mickyarun in #89
  • chore(ci)(deps): bump amannn/action-semantic-pull-request from 5 to 6 by @dependabot[bot] in #65
  • chore(ci)(deps): bump github/codeql-action from 3 to 4 by @dependabot[bot] in #67
  • chore(ci)(deps): bump actions/setup-python from 5 to 6 by @dependabot[bot] in #69
  • chore(ci)(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #68
  • feat(security): layered defense for --dangerously-skip-permissions claude subprocess by @mickyarun in #92
  • fix(claude-guard): post-merge bug fixes — MCP unblock, NPROC, env-exfil by @mickyarun in #93
  • chore(ci): drop CodeQL quality queries, keep security-extended by @mickyarun in #94
  • fix(security): block partial-SSRF in GitHub install-repo client by @mickyarun in #95
  • refactor(bud-detail): split into focused subcomponents + composables by @mickyarun in #97
  • feat(bud): phase-gated section edits + role fallback chain by @mickyarun in #98
  • feat(bud-chat): session resume for all states + log-leak + concurrency + design auto-trigger fix by @mickyarun in #99
  • fix(security): truncate password input to 72 bytes before bcrypt by @mickyarun in #100
  • fix(bud-design): per-design cancel, per-repo banners, tracker loop fixes by @mickyarun in #101
  • feat(bud-chat): durable resume, cancel, and restart recovery for AI Editor chats by @mickyarun in #102
  • feat(pr-merge,features): phase 5 Redis-stream redesign + lineage UI by @mickyarun in #103
  • feat(skills): custom skills per agent type, per-BUD stage overrides, override-aware resolver by @mickyarun in #104
  • fix(skills): prune orphan agent_skills rows mis-tagged by step-4 fallback by @mickyarun in #105
  • feat(scan,pr-merge): route subsequent scans through the diff-based engine by @mickyarun in #106
  • fix(rbac): manager team:manage + developer buds:edit seed by @mickyarun in #107
  • feat(design-systems): user customisations preserved across re-extraction by @mickyarun in #120
  • fix(scan): include .bodhiorchard/mcp_bridge.py in bootstrap PR by @mickyarun in #121
  • fix(nginx): proxy /mcp/ to backend for example-repo bridges by @mickyarun in #122
  • fix(hooks): resolve tracked repo by basename when laptop path misses by @mickyarun in #123
  • fix(xp): resolve PR author to BUD assignee when github_username misses by @mickyarun in #124
  • feat(xp): stage-gated XP awards split among BUD contributors by @mickyarun in #125
  • feat(code-review): classify git-auth failures + retry-once + explicit cwd by @mickyarun in #126
  • fix(rbac): grant QA role buds:test for evidence upload + result entry by @mickyarun in #127
  • fix(github): preserve valid inline review comments on 422 by @mickyarun in #128
  • fix(github): post code-review on every re-run, not just the first by @mickyarun in #129
  • fix(storage): surface S3 errors as FileStorageError + bump success log by @mickyarun in #133
  • feat(qa-evidence): pydantic-settings storage
  • feat: external-LLM mode + remote MCP endpoint + per-phase auto-generate by @mickyarun in #136
  • fix(mcp-connect): show full URL when VITE_API_BASE_URL is a bare path by @mickyarun in #137
  • feat(mcp): write-side BYO-AI tools + append-only BUD edit history by @mickyarun in #138
  • fix(webhook): use webhook_event= kwarg to avoid structlog event collision by @mickyarun in #132
  • fix(bud-assignment): phase-scope continuity to stop cross-phase bleed by @mickyarun in #135
  • fix(security): safe_join helper + targeted path-injection guards by @mickyarun in #142
  • fix(qa-evidence): always-visible delete button on evidence tile by @mickyarun in #140
  • feat(qa): allow reverting manual result to pending by @mickyarun in #141
  • feat(tech-spec): figma URL on Design tab + local-Claude tech-spec generation by @mickyarun in #143
  • feat(figma-tech-spec): add figma URL field and make tech spec sections universal by @mickyarun in #146
  • feat(mcp): accept bud_number on get_bud_by_id by @mickyarun in #147
  • fix(narrow-synthesis): containment tier + deactivate filter prevent wrong-deactivation by @mickyarun in #148
  • fix(dev): add missing dev-start.sh referenced by package.json by @mickyarun in #149
  • feat(bud-board): add title and assignee filters to kanban header by @mickyarun in #150
  • feat(slack): feature Q&A + harden triage duplicate det...
Read more