feat: add --command to terminal creation commands - #9614
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThe CLI accepts ChangesInitial terminal input creation
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant CLI
participant ControlCommandCoordinator
participant TerminalController
participant TerminalPanel
CLI->>ControlCommandCoordinator: Send creation request with initial_command and initial_input
ControlCommandCoordinator->>TerminalController: Pass validated creation inputs
TerminalController->>TerminalPanel: Create terminal with initialInput
Possibly related PRs
Suggested reviewers: Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (2 errors, 2 warnings)
✅ Passed checks (21 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 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 |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/ControlCommandCoordinatorSurfaceTests.swift`:
- Around line 16-50: Update capturedInitialCommand to return both a
dispatch/capture flag and the captured initialCommand value, distinguishing
omitted input from an unhandled request. In the tests covering omitted commands,
first assert that the appropriate fake input was received, then assert that its
initialCommand is nil; keep the existing method-specific coordinator dispatch
handling intact.
🪄 Autofix
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: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: d165398b-a3f2-41c5-823f-9cb93c2e6829
📒 Files selected for processing (4)
.github/workflows/ci.ymlPackages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/ControlCommandCoordinatorSurfaceTests.swiftPackages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/FakeSurfaceControlCommandContext.swifttests/test_cli_creation_initial_command.py
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
CLI/cmux.swift (1)
7857-7931: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winSilently dropping
--commandwhen--layoutis also passed.
applyInitialCommandOption(commandOpt, to: ¶ms)runs only whenlayoutOpt == nil(line 7904). If a user passes both--layoutand--command, the command text is silently discarded instead of producing an error or a warning. The command-line help documents that layout surfaces define their own commands, but a user who does not read the full help text gets no feedback that--commandhad no effect.Add an explicit error when both flags are supplied together, so the CLI fails fast instead of silently ignoring user input.
Proposed fix
+ if layoutOpt != nil, let commandOpt, !commandOpt.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { + throw CLIError(message: "\(commandName): --command is not supported with --layout; define commands per surface in the layout JSON instead") + } if layoutOpt == nil { applyInitialCommandOption(commandOpt, to: ¶ms) }🤖 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 `@CLI/cmux.swift` around lines 7857 - 7931, Add a validation in the workspace-create option handling before the conditional applyInitialCommandOption call: when both commandOpt and layoutOpt are supplied, throw a localized CLIError stating that --command cannot be used with --layout. Preserve applying --command for layout-free requests and continue processing valid layout requests unchanged.
🤖 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 `@Resources/Localizable.xcstrings`:
- Around line 53602-53617: Add translated stringUnit entries for the new
cli.terminalCreation.help.initialCommandDescription key for every locale already
supported in Resources/Localizable.xcstrings, preserving the existing en and ja
translations and matching the catalog’s established locale structure.
---
Outside diff comments:
In `@CLI/cmux.swift`:
- Around line 7857-7931: Add a validation in the workspace-create option
handling before the conditional applyInitialCommandOption call: when both
commandOpt and layoutOpt are supplied, throw a localized CLIError stating that
--command cannot be used with --layout. Preserve applying --command for
layout-free requests and continue processing valid layout requests unchanged.
🪄 Autofix
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: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: eb267cdf-7087-4a27-8991-153b207d5824
📒 Files selected for processing (3)
CLI/cmux.swiftPackages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/ControlCommandCoordinatorSurfaceTests.swiftResources/Localizable.xcstrings
|
CodeRabbit outside-diff note on |
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
|
@coderabbitai review |
Rate Limit Exceeded
|
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
|
@coderabbitai review |
✅ Action performedReview finished.
|
The auto-merged project file drifted from scripts/normalize-pbxproj.py output, which fails the workflow-guard pbxproj check and gates every macOS CI job behind it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa
#11976 moved the pane-scoped notification clear for UserPromptSubmit and PreToolUse out of the Claude hook and into the app's journal reconciler (clearInvalidatedNotifications keys off the event's workspace and surface). The two moved-pane tests still looked for the hook's old clear_notifications send and turned the focused notification-routing step red on main. They now assert the agent_journal_append event carries the re-homed workspace and surface (and, for PreToolUse, the running phase), and keep the guards against whole-workspace or stale-workspace clears. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa
On CI app hosts the WebContent process sometimes disappears mid-batch
("Could not signal service com.apple.WebKit.WebContent"), after which a
loadHTMLString navigation never reports didFinish. The screenshot evaluator
tests awaited that signal without a bound, so one lost process wedged the
whole app-host batch until the 30-minute timeout (shard 4 on runs
34232451577 and 34235694241 both stalled in
smoothScrollingPageCapturesRequestedRegionAndRestoresOffset).
Race every real page-load wait against a 30-second budget and fail the
test fast instead, so the rest of the batch still runs and reports.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa
testPTYBridgeDefersHalfCloseUntilAttachCompletes half-closes its bridge socket, and the bridge answers and closes so quickly that the follow-up SO_RCVTIMEO setsockopt sees a torn-down connection and fails with EINVAL. That thrown error is counted as an unexpected failure and fails the whole app-host batch (it reproduces on main's own shard 6 run 34221588627). The timeout only bounds the read that follows, which returns EOF at once on such a socket, so skip the option instead of throwing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa
…atch App-host unit-test batches on main and on PRs intermittently sit at the 30-minute batch timeout with only "started" lines for whichever tests were in flight, which says nothing about what blocked the main actor. Sample the app host process before terminating xcodebuild and print the leading call graph in a log group, so the next hang names its stuck frames. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa
…ected testCodexInputQueueBeforeThreadIsBounded spawned the first submit in a Task and immediately submitted a second prompt on the same main actor. The second call ran first, took the single pre-thread queue slot, and then awaited a thread the test only starts afterwards, so the test hung until the 30-minute app-host batch timeout (shard 2 on runs 34235694241 and 34245949340, and main's own shard 2). Yield to the spawned task before the second submit so the first prompt holds the slot and the second is rejected as intended. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa
…FIFO testSaveTextContentIgnoresConcurrentSaveRequest replaced the previewed file with a FIFO so the first write would stay in flight. Since the preview panel re-opens its watched path for change monitoring, a FIFO with no writer can block the app host's main thread, and this test was the unfinished XCTest in two hung app-host shards (shard 1 on run 34232451577, shard 5 on run 34245949340). saveTextContent() sets isSaving synchronously and completes on a later main-actor hop, so the second request is always observed while the first is still saving without any FIFO. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa
…ments Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa
…r-test CI allowance Every CodexAppServerSessionTests case fed the thread/start response after a single Task.yield() following the initialize response. The session sends `initialized` and then `thread/start` from a spawned main-actor task, so when that task had not reached the request yet the response was dropped as unknown, every later submit waited for a thread forever, and the reentrant turn test spun on Task.yield() until the batch timeout (shard 2 on runs 34245949340 and 34256455336; main shows the same). - CodexAppServerSession gains two read-only test seams (isAwaitingThreadStart, hasThread). - The tests wait for the request before feeding its response, and the pending-write spin loop is bounded. - CI passes XCTest's per-test execution allowance (300s by default) to the app-host batches so a single parked test fails with a spindump instead of taking the batch to its 30-minute timeout, and the hang sample prints more threads. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa
# Conflicts: # Sources/SessionIndexTableController.swift # cmuxTests/ClaudeHookLifecycleCleanupTests.swift
7a0ba63 feat: add --command to terminal creation commands (manaflow-ai#9614) # Conflicts: # .github/workflows/ci.yml
* test: cover creation initial command plumbing * test: isolate creation command regression * feat: add initial commands to terminal creation * test: require creation request dispatch * test(web): preserve hosted config overrides * test(cli): expect OMP restore path * test(session): expect codex wrapper shim * docs(cli): sync restore help contract * test(cli): preserve interactive shell for creation command * fix(cli): inject creation commands into interactive shells * fix(cli): preserve terminal creation command text * test(cli): reject invalid creation command input * fix(cli): validate terminal creation input boundaries * fix(cli): resolve creation validation in app context * test(cli): cover review-found creation boundaries * test(cli): import welcome setting contract * test(cli): wait for terminal readiness before welcome assertion * test(cli): exercise focused workspace welcome path * fix(cli): close terminal creation review gaps * test: cover app-host temp path aliases * ci: accept validated macOS temp aliases * Fix Xcode 26 warning regressions * test: keep install command fixture inert * test: repair app-host CLI fixtures * fix: remove duplicate dock initial input plumbing * test: bound workspace readiness regression wait * fix: order dock creation arguments * fix: order dock input after startup options * fix: preserve null terminal creation types * fix: keep readiness wait actor-safe * test: isolate creation command socket environment * test: keep cloud splits local for initial input * fix: keep initial input out of cloud split routing * ci: route browser skill contract through linux runner * test: isolate cloud routing fixture from local surfaces * refactor: keep terminal creation checks within file budgets * fix: wire terminal creation helpers into app target * fix: repair current main compile errors * docs: document --command on terminal creation commands Cover the new --command flag on new-split, new-pane, and new-surface (and the existing one on new-workspace) in the cmux and cmux-workspace skills, the CLI contract (table rows, an Initial terminal command section, and --help probes), and the web API docs in English and Japanese. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * fix: silence unmutated payload warning in browser key replay CI's Swift warning budget fails on main because the delivered-key payload in TerminalController.swift is declared var but never mutated. Use let so the tests-build-and-lag job can pass on this branch. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * fix(web): keep devbox reachability script typechecking without bun-types `import.meta.main` (added on main in manaflow-ai#12132) fails `tsgo --noEmit` because the web tsconfig does not include bun-types, which turns the CI cheap layer red and skips every macOS job. Cast the meta object so Bun's runtime flag still gates main() while the typecheck passes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * fix: repair package test import and Swift warnings inherited from main - FakeTerminalEngine.swift (from manaflow-ai#10564) uses UUID without importing Foundation, which breaks `swift test` for CmuxTerminal in the swift-package-tests job. - Parenthesize the two compactMap trailing closures in the pane memory guardrail guard and hop onto the main actor before reconcilePresentation in the session index table observer; both were new warnings over the cmux-owned Swift warning budget in tests-build-and-lag. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * fix: clear two more Swift warnings inherited from main Drop the unreachable default branch in the cmux-tui snapshot parser's exhaustive resource-kind switch and stop binding the unused rowID shadow in SurfaceCatalogModel, so the cmux-owned warning budget passes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * test: bring MachinesPanelModelTests in line with the current cloud tree and catalog Four tests in the app-host shard were stale against main: - a sleeping or broken machine now keeps a Ports group whose status row explains how to discover ports (manaflow-ai#12051), and an unregistered machine shows a Connecting placeholder instead of no children; - display rows placed inside a remote workspace carry their tab id like every other placement; - the catalog drops writes for a cloud machine with no registered provider, so the two workspace-group tests register the file's GroupFakeProvider before replacing resources. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * chore: normalize project.pbxproj after main merges The auto-merged project file drifted from scripts/normalize-pbxproj.py output, which fails the workflow-guard pbxproj check and gates every macOS CI job behind it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * test: assert pane re-homing through the journal event for started turns manaflow-ai#11976 moved the pane-scoped notification clear for UserPromptSubmit and PreToolUse out of the Claude hook and into the app's journal reconciler (clearInvalidatedNotifications keys off the event's workspace and surface). The two moved-pane tests still looked for the hook's old clear_notifications send and turned the focused notification-routing step red on main. They now assert the agent_journal_append event carries the re-homed workspace and surface (and, for PreToolUse, the running phase), and keep the guards against whole-workspace or stale-workspace clears. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * test: bound WebKit page-load waits in the design-mode screenshot suite On CI app hosts the WebContent process sometimes disappears mid-batch ("Could not signal service com.apple.WebKit.WebContent"), after which a loadHTMLString navigation never reports didFinish. The screenshot evaluator tests awaited that signal without a bound, so one lost process wedged the whole app-host batch until the 30-minute timeout (shard 4 on runs 34232451577 and 34235694241 both stalled in smoothScrollingPageCapturesRequestedRegionAndRestoresOffset). Race every real page-load wait against a 30-second budget and fail the test fast instead, so the rest of the batch still runs and reports. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * test: tolerate an already-closed socket when bounding PTY bridge reads testPTYBridgeDefersHalfCloseUntilAttachCompletes half-closes its bridge socket, and the bridge answers and closes so quickly that the follow-up SO_RCVTIMEO setsockopt sees a torn-down connection and fails with EINVAL. That thrown error is counted as an unexpected failure and fails the whole app-host batch (it reproduces on main's own shard 6 run 34221588627). The timeout only bounds the read that follows, which returns EOF at once on such a socket, so skip the option instead of throwing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * ci: sample the wedged app host before killing a timed-out unit-test batch App-host unit-test batches on main and on PRs intermittently sit at the 30-minute batch timeout with only "started" lines for whichever tests were in flight, which says nothing about what blocked the main actor. Sample the app host process before terminating xcodebuild and print the leading call graph in a log group, so the next hang names its stuck frames. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * test: queue the first Codex prompt before asserting the second is rejected testCodexInputQueueBeforeThreadIsBounded spawned the first submit in a Task and immediately submitted a second prompt on the same main actor. The second call ran first, took the single pre-thread queue slot, and then awaited a thread the test only starts afterwards, so the test hung until the 30-minute app-host batch timeout (shard 2 on runs 34235694241 and 34245949340, and main's own shard 2). Yield to the spawned task before the second submit so the first prompt holds the slot and the second is rejected as intended. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * test: gate the concurrent file-preview save on isSaving instead of a FIFO testSaveTextContentIgnoresConcurrentSaveRequest replaced the previewed file with a FIFO so the first write would stay in flight. Since the preview panel re-opens its watched path for change monitoring, a FIFO with no writer can block the app host's main thread, and this test was the unfinished XCTest in two hung app-host shards (shard 1 on run 34232451577, shard 5 on run 34245949340). saveTextContent() sets isSaving synchronously and completes on a later main-actor hop, so the second request is always observed while the first is still saving without any FIFO. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * ci: match the app host for hang sampling even when launched with arguments Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * test: wait for the Codex thread/start request before answering it; per-test CI allowance Every CodexAppServerSessionTests case fed the thread/start response after a single Task.yield() following the initialize response. The session sends `initialized` and then `thread/start` from a spawned main-actor task, so when that task had not reached the request yet the response was dropped as unknown, every later submit waited for a thread forever, and the reentrant turn test spun on Task.yield() until the batch timeout (shard 2 on runs 34245949340 and 34256455336; main shows the same). - CodexAppServerSession gains two read-only test seams (isAwaitingThreadStart, hasThread). - The tests wait for the request before feeding its response, and the pending-write spin loop is bounded. - CI passes XCTest's per-test execution allowance (300s by default) to the app-host batches so a single parked test fails with a spindump instead of taking the batch to its 30-minute timeout, and the hang sample prints more threads. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXS7towgxy33eJ4ZTMeQHa * test: replace mobile lane timing wait with completion signal --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Closes #2538
Summary
--command <text>support tonew-split,new-pane, andnew-surfaceinitial_input, preserving command text literally and appending one Enter while keeping the normal interactive shell alive--typecombinations and unsupported remote-tmux mirror routing explicitlyinitial_commandsocket behavior for API clients that intentionally replace the shell with a one-shot processTests
31135031764records the regression-only commit failing at the focused terminal-creation CLI stepinitial_commandgit diff --checkwithout running a local buildNeed help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Adds
--command <text>tonew-split,new-pane,new-surface, andnew-workspace; fornew-workspace, commands enter the shell at spawn instead of through the old post-create send, so the shell stays interactive. Closes Linear #2538.Behavior
--typecombinations.new-workspacecreation ignores the command and skips auto-welcome when input is injected.initial_commandbehavior unchanged.initial_inputfor remote tmux mirrors and keeps cloud-adjacent splits local.Validation
isSaving, tolerates closed-socket EINVAL, and samples the wedged app host in CI, matching it even when launched with arguments.Written for commit 7708bd9. Summary will update on new commits.
Summary by CodeRabbit
New Features
--commandsupport for creating terminal splits, panes, surfaces, and workspaces.Bug Fixes
Tests
Note
Medium Risk
Touches terminal spawn, workspace creation, and v2 control-socket creation paths used by CLI automation; behavior change for
new-workspace --command(spawn vs post-create send) could affect scripts.Overview
Adds
--commandtonew-split,new-pane,new-surface, and layout-freenew-workspace, sending literal text plus one Enter asinitial_inputat terminal spawn so the interactive shell stays alive.new-workspaceno longer follows creation withsurface.send_text; layout-based workspace creation still ignores--command. Socket RPCspane.create,surface.split, andsurface.createaccept the sameinitial_inputparam, withinvalid_paramswhen it is paired with a non-terminaltype; remote tmux mirror routing treatsinitial_inputas unsupported like other local-only options.CLI parsing moves into
CMUXCLI+TerminalCreation.swift(dedicated--commandparsing, blank-input omission, terminal-only validation). Help copy is localized (EN/JA).CI adds a focused CLI regression (
tests/test_cli_creation_initial_command.py), enables XCTest per-case timeouts on app-host batches, and samples wedged app hosts on batch deadline. Tests cover coordinator parsing, workspace/Dock creation, and harden flaky WebKit/Codex app-host cases with bounded waits and thread-start synchronization.Reviewed by Cursor Bugbot for commit 7708bd9. Bugbot is set up for automated code reviews on this repo. Configure here.