feat: rebrand fork as DCode#2
Conversation
…e upstream autoupdate
|
Warning Review limit reached
Next review available in: 19 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughChangesThe repository is rebranded from OpenCode to DCode across packaging, installation, CLI, TUI behavior, integrations, documentation, and release automation. Legacy automation and localized README content are removed, while a manual DCode release workflow is added. DCode distribution and packaging
Estimated code review effort: 5 (Critical) | ~120 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Thanks for updating your PR! It now meets our contributing guidelines. 👍 |
There was a problem hiding this comment.
Actionable comments posted: 5
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
github/action.yml (1)
25-25: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winUpdate "OpenCode" reference in
use_github_tokendescription.Line 25 still says "OpenCode App token exchange" while the rest of the action has been rebranded to DCode. This should read "DCode App token exchange" for consistency.
✏️ Proposed fix
- description: "Use GITHUB_TOKEN directly instead of OpenCode App token exchange. When true, skips OIDC and uses the GITHUB_TOKEN env var." + description: "Use GITHUB_TOKEN directly instead of DCode App token exchange. When true, skips OIDC and uses the GITHUB_TOKEN env var."🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@github/action.yml` at line 25, Update the description for the use_github_token configuration to replace the stale “OpenCode App token exchange” wording with “DCode App token exchange,” preserving the rest of the description unchanged.packages/opencode/src/mcp/index.ts (1)
354-354: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
BUN_BE_BUNenv check doesn't match the newdcodebinary name.Line 354 checks
cmd === "opencode"to setBUN_BE_BUN=1for MCP servers that invoke the opencode/dcode binary. Now that the binary is renamed todcode, users configuring MCP servers withcommand: ["dcode", ...]won't get this env var set, potentially causing unexpected behavior under Bun. This check should match both names or be updated to"dcode".🔧 Proposed fix
- ...(cmd === "opencode" ? { BUN_BE_BUN: "1" } : {}), + ...(cmd === "opencode" || cmd === "dcode" ? { BUN_BE_BUN: "1" } : {}),🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/opencode/src/mcp/index.ts` at line 354, Update the command check in the MCP environment construction to recognize the renamed “dcode” binary as well as the existing “opencode” name, ensuring BUN_BE_BUN is set for either command.
🧹 Nitpick comments (1)
.github/workflows/release.yml (1)
20-22: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick winSet
persist-credentials: falseon the checkout step.No git push operations occur in this workflow — all release operations use the
ghCLI with an explicitGH_TOKEN. Disabling credential persistence prevents the defaultGITHUB_TOKENfrom being stored in.git/config, reducing artipacked risk if any future step inadvertently uploads repo contents.🔒️ Proposed fix
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: fetch-depth: 0 + persist-credentials: false🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.github/workflows/release.yml around lines 20 - 22, Update the actions/checkout step to set persist-credentials to false in its with configuration, while preserving the existing fetch-depth setting.Source: Linters/SAST tools
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/opencode/src/cli/cmd/github.handler.ts`:
- Around line 364-365: Update the GitHub Actions step named “Run DCode” to
replace the mutable `CreatorGhost/TheCode/github@dev${envStr}` reference with an
immutable commit SHA or release tag, while preserving the existing action
configuration and environment suffix behavior as applicable.
In `@packages/opencode/src/cli/cmd/pr.ts`:
- Line 79: Update the user-facing message in the session-reporting flow to
replace “OpenCode-hosted” with “DCode-hosted”, while preserving the existing
sessionUrl interpolation and output behavior.
In `@packages/opencode/src/cli/cmd/run/permission.shared.ts`:
- Around line 128-132: Update the downstream expectations in the permission
message tests near the shared permission formatting coverage to use the new
“DCode” branding instead of “OpenCode” for both messages, while preserving the
existing message structure and assertions.
In `@packages/opencode/src/cli/cmd/run/splash.ts`:
- Line 197: Update the exit-screen continuation command in the splash rendering
flow to use the DCode CLI branding and executable instead of the stale opencode
command, while preserving the existing options and arguments.
In `@packages/opencode/src/cli/cmd/serve.ts`:
- Line 9: Update the runtime listening message in the serve command to use
“DCode” instead of “opencode,” matching the command description and preserving
the existing URL output.
---
Outside diff comments:
In `@github/action.yml`:
- Line 25: Update the description for the use_github_token configuration to
replace the stale “OpenCode App token exchange” wording with “DCode App token
exchange,” preserving the rest of the description unchanged.
In `@packages/opencode/src/mcp/index.ts`:
- Line 354: Update the command check in the MCP environment construction to
recognize the renamed “dcode” binary as well as the existing “opencode” name,
ensuring BUN_BE_BUN is set for either command.
---
Nitpick comments:
In @.github/workflows/release.yml:
- Around line 20-22: Update the actions/checkout step to set persist-credentials
to false in its with configuration, while preserving the existing fetch-depth
setting.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 519647e6-dcf1-4b53-8f7f-b2bfd3b8a6fe
⛔ Files ignored due to path filters (2)
bun.lockis excluded by!**/*.lockpackages/opencode/test/cli/help/__snapshots__/help-snapshots.test.ts.snapis excluded by!**/*.snap
📒 Files selected for processing (97)
.github/ISSUE_TEMPLATE/bug-report.yml.github/ISSUE_TEMPLATE/config.yml.github/workflows/beta.yml.github/workflows/containers.yml.github/workflows/deploy.yml.github/workflows/docs-locale-sync.yml.github/workflows/docs-update.yml.github/workflows/duplicate-issues.yml.github/workflows/nix-hashes.yml.github/workflows/notify-discord.yml.github/workflows/opencode.yml.github/workflows/pr-management.yml.github/workflows/pr-standards.yml.github/workflows/publish-github-action.yml.github/workflows/publish-vscode.yml.github/workflows/publish.yml.github/workflows/release-github-action.yml.github/workflows/release.yml.github/workflows/review.yml.github/workflows/stats.yml.github/workflows/triage.ymlREADME.ar.mdREADME.bn.mdREADME.br.mdREADME.bs.mdREADME.da.mdREADME.de.mdREADME.es.mdREADME.fr.mdREADME.gr.mdREADME.it.mdREADME.ja.mdREADME.ko.mdREADME.mdREADME.no.mdREADME.pl.mdREADME.ru.mdREADME.th.mdREADME.tr.mdREADME.uk.mdREADME.vi.mdREADME.zh.mdREADME.zht.mdSECURITY.mdflake.nixgithub/action.ymlinstallnix/opencode.nixpackage.jsonpackages/opencode/Dockerfilepackages/opencode/bin/dcodepackages/opencode/package.jsonpackages/opencode/script/build.tspackages/opencode/script/postinstall.mjspackages/opencode/script/publish.tspackages/opencode/src/acp/service.tspackages/opencode/src/cli/cmd/attach.tspackages/opencode/src/cli/cmd/debug/index.tspackages/opencode/src/cli/cmd/github.handler.tspackages/opencode/src/cli/cmd/mcp.tspackages/opencode/src/cli/cmd/pr.tspackages/opencode/src/cli/cmd/providers.tspackages/opencode/src/cli/cmd/run.tspackages/opencode/src/cli/cmd/run/permission.shared.tspackages/opencode/src/cli/cmd/run/splash.tspackages/opencode/src/cli/cmd/serve.tspackages/opencode/src/cli/cmd/tui.tspackages/opencode/src/cli/cmd/uninstall.tspackages/opencode/src/cli/cmd/upgrade.tspackages/opencode/src/cli/cmd/web.tspackages/opencode/src/cli/error.tspackages/opencode/src/cli/upgrade.tspackages/opencode/src/index.tspackages/opencode/src/installation/index.tspackages/opencode/src/mcp/index.tspackages/opencode/src/plugin/digitalocean.tspackages/opencode/src/plugin/snowflake-cortex.tspackages/opencode/src/provider/error.tspackages/opencode/src/provider/provider.tspackages/opencode/src/temporary.tspackages/opencode/test/cli/acp/initialize-auth.test.tspackages/opencode/test/cli/help/help-snapshots.test.tspackages/opencode/test/installation/installation.test.tspackages/opencode/test/server/httpapi-global.test.tspackages/tui/src/app.tsxpackages/tui/src/attention.tspackages/tui/src/component/dialog-status.tsxpackages/tui/src/component/error-component.tsxpackages/tui/src/feature-plugins/home/tips-view.tsxpackages/tui/src/feature-plugins/sidebar/footer.tsxpackages/tui/src/logo.tspackages/tui/src/routes/session/permission.tsxpackages/tui/src/util/error.tspackages/tui/src/util/presentation.tspackages/tui/test/app-lifecycle.test.tsxpackages/tui/test/util/presentation.test.tsscript/publish.ts
💤 Files with no reviewable changes (41)
- README.tr.md
- README.th.md
- README.br.md
- README.zh.md
- .github/workflows/triage.yml
- README.gr.md
- README.ru.md
- .github/workflows/notify-discord.yml
- README.ko.md
- README.pl.md
- README.de.md
- .github/ISSUE_TEMPLATE/config.yml
- README.vi.md
- README.no.md
- .github/workflows/release-github-action.yml
- README.zht.md
- .github/workflows/duplicate-issues.yml
- README.ar.md
- README.bn.md
- README.uk.md
- packages/opencode/script/publish.ts
- README.it.md
- README.ja.md
- .github/workflows/docs-update.yml
- .github/workflows/deploy.yml
- .github/workflows/publish.yml
- .github/workflows/publish-vscode.yml
- README.es.md
- .github/workflows/pr-management.yml
- .github/workflows/publish-github-action.yml
- .github/workflows/containers.yml
- .github/workflows/beta.yml
- .github/workflows/stats.yml
- .github/workflows/review.yml
- README.da.md
- .github/workflows/docs-locale-sync.yml
- README.fr.md
- README.bs.md
- .github/workflows/opencode.yml
- .github/workflows/pr-standards.yml
- script/publish.ts
| if (sessionMatch) { | ||
| const sessionUrl = sessionMatch[0] | ||
| UI.println(`Found opencode session: ${sessionUrl}`) | ||
| UI.println(`Found OpenCode-hosted session: ${sessionUrl}`) |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Missed rebrand: "OpenCode-hosted" should be "DCode-hosted".
This changed line still references "OpenCode" in the user-facing message, inconsistent with the DCode rebrand objective.
✏️ Proposed fix
- UI.println(`Found OpenCode-hosted session: ${sessionUrl}`)
+ UI.println(`Found DCode-hosted session: ${sessionUrl}`)📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| UI.println(`Found OpenCode-hosted session: ${sessionUrl}`) | |
| UI.println(`Found DCode-hosted session: ${sessionUrl}`) |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/opencode/src/cli/cmd/pr.ts` at line 79, Update the user-facing
message in the session-reporting flow to replace “OpenCode-hosted” with
“DCode-hosted”, while preserving the existing sessionUrl interpolation and
output behavior.
- pin generated GitHub workflow action to the release tag (mutable @dev ref with id-token: write was a supply-chain risk); dev builds still track dev - complete dcode rename: exit-splash continuation command, serve listening log (SDK launchers now accept both prefixes), BUN_BE_BUN check for MCP servers invoking dcode - neutral wording for shared-session message in dcode pr - update permission.shared test expectations to DCode - set persist-credentials: false on release workflow checkout
|
@coderabbitai All findings addressed in 356479e except one, intentionally declined:
Notes on the fixes:
|
|
Tip For best results, initiate chat on the files or code changes.
The other fixes also sound solid:
Nice work getting the rebrand this far — let me know if you'd like another pass once 356479e is in. (๑˃̵ᴗ˂̵)و |
|
@coderabbitai review |
✅ Action performedReview finished.
|
Issue for this PR
Closes N/A — implements the internal rebrand plan (REBRAND_PLAN.md, kept untracked by design).
Type of change
What does this PR do?
Rebrands this opencode fork as DCode (command:
dcode) so installing and updating this fork is real, while preserving full compatibility with existing OpenCode configuration. The fork previously shipped with upstream install/update wiring, meaning any built binary would upgrade itself back into upstream opencode; this PR removes that risk.Binary / command rename
bin/opencode->bin/dcode; compiled artifacts aredist/dcode-<os>-<arch>/bin/dcode(dcode.exeon Windows)scriptName("dcode"); all CLI help, hints, and errors usedcodepackages/opencodekeeps its internalopencodename sopackages/webimports are unaffected)dcodepackage +opencodealias), and npm postinstall follow the new binaryInstallation / updates (removes upstream self-replacement risk)
installscript forked: downloads fromCreatorGhost/TheCodereleases, installs to~/.dcode/bin(honorsDCODE_INSTALL_DIR->OPENCODE_INSTALL_DIR->XDG_BIN_DIR->~/bin), Windows.exehandlingInstallationservice is curl/GitHub-releases only; npm/brew/choco/scoop upgrade paths removed because those channels install upstream opencodedcode uninstallno longer deletes shared OpenCode config/data by defaultCI / release
release-dcodeworkflow: validates semver, creates a draft release, builds the full 12-target matrix, uploads, then publishes (recoverable on failure)test/typecheckkept;nix-hashesmoved to standard runners +GITHUB_TOKENTUI / branding
dcode -s ...continue hint),DCode/DC |terminal titles, crash screen reports to this repo's issues, ACP identifies asDCode, GitHub integration uses/dcodeand/dcDeliberately kept for compatibility:
~/.config/opencode,opencode.json,.opencode/,OPENCODE_*env vars,@opencode-ai/*packages, provider IDs, theme/sound-pack IDs, OpenCode Zen/Go names and URLs, and theopencode server listeningSDK marker. Renaming these breaks existing users, plugins, databases, or live services for zero install benefit.Docs: README rewritten for the fork; 21 stale translated READMEs removed (their install commands pointed at upstream); SECURITY and issue templates repointed.
How did you verify your code works?
bun turbo typecheck— 30/30 packages passmethodFromExecPathcoverage), ACP initialize/auth, HTTP API upgrade, CLI help snapshots (regenerated asdcode), TUI presentation/lifecyclebun run build --singlebuildsdist/dcode-darwin-arm64/bin/dcodeand passes the--versionsmoke test$HOME(--binarymode, install dir precedence, PATH handling, banner);bash -n installpassesScreenshots / recordings
New TUI home logo (from the built
dcodebinary):Checklist
Summary by CodeRabbit
dcodecommand, installer, Docker image, and Nix package./dcodeand/dctriggers.