Documents
Changelog: April 6–12, 2026
Changelog: April 6–12, 2026
Type
Changelog
Status
Published
Created
Apr 13, 2026
Updated
Apr 13, 2026
Created by
Dosu Bot
Updated by
Dosu Bot

dosu-cli#

Features#

  • OSS mode support across all MCP providers and CLI paths — All MCP providers (Cursor, Codex, Copilot, MCPorter, Manual) now use the base MCP URL when running in OSS mode, removing the requirement for a deployment ID. The status command displays Mode: OSS and Deployment: Public libraries only for OSS users. The deployment-required guard is bypassed in OSS mode, and the setup flow detects MCP target changes (mode, deployment, or API key) and reinstalls previously configured tools automatically. (Apr 8, PR #42)

  • Persistent debug logging and --debug flag — Adds always-on file logging to ~/.config/dosu-cli/debug.log with automatic 1 MB size rotation. A global --debug flag enables verbose output to the file. A new dosu logs subcommand provides log management: print the log file path (no flags), view the last N lines (--tail [n], default 50), or delete the log file (--clear). The OAuth callback server, auth flow, and setup wizard are instrumented with diagnostic logging to aid debugging of intermittent redirect failures. (Apr 10, PR #46)

  • TUI: multiselect deselection flow for Remove MCP — Reworks the "Remove MCP" entry in the TUI to use a multiselect flow showing only currently configured tools; users deselect entries to remove them. The TUI exits directly after removal rather than returning to the main menu. (Apr 8, PR #45)

  • OSS mode post-setup prompt refinement — Refines the OSS mode "try it out" prompt to suggest exploring an open source library related to the project rather than asking about Dosu MCP architecture, making it more generically useful in OSS mode. (Apr 8, PR #43)

Bug Fixes#

  • Clear OSS mode when a deployment is selected during setup — Fixes a bug where re-running runSetup with a specific deployment (via --deployment or interactive selection) would leave a stale mode: oss in the saved config, causing the MCP URL to be generated incorrectly. cfg.mode is now explicitly cleared to undefined whenever a deployment is chosen. (Apr 8, PR #41)

Improvements#

  • TUI: consolidate "Choose MCP" and "Add MCP" into a single "Setup" entry — Replaces two separate TUI menu options with a single "Setup" item that runs the full end-to-end setup flow (auth → deployment → API key → tool detection → configure), removing redundant navigation paths. (Apr 8, PR #44)

  • Rename "deployment" to "MCP" in select prompts — Updates user-facing prompt text in the setup flow and TUI from "Select a deployment" / "Choose Deployment" to "Select an MCP" / "Choose MCP". Underlying values and config fields are unchanged. (Apr 8, PR #39)

  • Improve setup guidance prompts — Updates the post-setup "try it out" prompts for both OSS and non-OSS modes to request more actionable onboarding information: main components, request flow, and where to start. (Apr 8, PR #40)


dosu#

Features#

  • Add agentic infrastructure panel recap blog post — Publishes a new MDX blog post recapping the agentic infrastructure panel with LanceDB, CodeRabbit, and CrewAI. Adds multi-author support to blog post pages and listing cards so all credited authors are shown. Adds an optional inline CTA link in post summary callouts via a new summaryLink frontmatter field. (Apr 6, PR #9890)

Bug Fixes#

  • Fix GitHub sync-back advisory lock to use DB-sourced repository ID — The advisory lock key in publish_to_github previously used request.target_repository_id, which could differ from the actual DB-resolved repository ID, allowing concurrent publishes for the same page/repo context. The lock key now uses target_data_source.repository_id from the database, ensuring correct serialization. (Apr 6, PR #9918)

  • Add retry logic to Supabase Auth get_user calls — Both synchronous and asynchronous get_user calls now retry up to 3 times with exponential backoff (1–10 s) on AuthRetryableError, reducing failures caused by transient network issues or upstream instability. (Apr 6, PR #9919)

  • Isolate httpx connection pools per event loop to prevent cross-loop errors — Introduces PerEventLoopTransport, a new httpx.AsyncBaseTransport subclass that creates a separate AsyncHTTPTransport (and connection pool) per running event loop. This resolves RuntimeError: ... is bound to a different event loop errors that occurred when a shared transport was reused across worker threads. (Apr 6, PR #9914)

  • Fix CI post-build hook in email build — The email:build script now clears VERCEL and NEXT_ADAPTER_PATH environment variables before running, preventing the email build tool from detecting a Vercel/Next adapter context and triggering unwanted post-build hooks in CI. (Apr 6, PR #9916)

  • Fix weekly digest email arrow alignment — Refactors the "Activity Summary" section in the weekly digest email template from a dedicated arrow column to a unified three-cell-per-row table structure for both "Team Activity" and "Dosu Activity" columns, ensuring arrows align consistently regardless of font rendering or row height differences. (Apr 6, PR #9819)

Improvements#

  • Modularize sync-back publishers — Extracts platform-specific publishing logic for Confluence, GitHub, and Notion out of sync_back/router.py into dedicated publish_confluence.py, publish_github.py, and publish_notion.py modules. The router now only orchestrates publisher selection and delegates all platform-specific behavior to the appropriate module. (Apr 6, PR #9917)

  • Refactor Notion sync to use markdown as source of truth — Replaces the two-pass sync pipeline (metadata pass + blocks/markdown pass) with a single-pass upsert_pages_metadata_and_markdown_batch call. The blocks field is no longer fetched or stored during sync; markdown_content is now the primary persisted representation. Downstream block fallback logic is removed from index batch and page import workflows. (Apr 6, PR #9714)

Dependencies#

  • Bump dorny/paths-filter from v3 to v4 — Updates the dorny/paths-filter GitHub Action across cd-staging.yml, cd.yml, ci.yml, and crowdin.yml workflows. No workflow filter definitions were changed. (Apr 6, PR #9921)