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
statuscommand displaysMode: OSSandDeployment: Public libraries onlyfor 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
--debugflag — Adds always-on file logging to~/.config/dosu-cli/debug.logwith automatic 1 MB size rotation. A global--debugflag enables verbose output to the file. A newdosu logssubcommand 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
runSetupwith a specific deployment (via--deploymentor interactive selection) would leave a stalemode: ossin the saved config, causing the MCP URL to be generated incorrectly.cfg.modeis now explicitly cleared toundefinedwhenever 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
summaryLinkfrontmatter 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_githubpreviously usedrequest.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 usestarget_data_source.repository_idfrom the database, ensuring correct serialization. (Apr 6, PR #9918) -
Add retry logic to Supabase Auth
get_usercalls — Both synchronous and asynchronousget_usercalls now retry up to 3 times with exponential backoff (1–10 s) onAuthRetryableError, 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 newhttpx.AsyncBaseTransportsubclass that creates a separateAsyncHTTPTransport(and connection pool) per running event loop. This resolvesRuntimeError: ... is bound to a different event looperrors 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:buildscript now clearsVERCELandNEXT_ADAPTER_PATHenvironment 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.pyinto dedicatedpublish_confluence.py,publish_github.py, andpublish_notion.pymodules. 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_batchcall. Theblocksfield is no longer fetched or stored during sync;markdown_contentis 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-filterfrom v3 to v4 — Updates thedorny/paths-filterGitHub Action acrosscd-staging.yml,cd.yml,ci.yml, andcrowdin.ymlworkflows. No workflow filter definitions were changed. (Apr 6, PR #9921)