release: publish installable v0.4.0 - #53
Conversation
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
✅ Health: 6.8 📋 At a glance Files & modules (2)
📌 Before you merge
🔎 More signals (4)🗺️ Change map flowchart LR
subgraph PR ["Changed in this PR (2 with dependents)"]
f_backend_main_py["backend/main.py 🔥"]:::changed
f_backend_config_py["backend/config.py"]:::changed
end
f_backend_api_v1_workers_py[".../v1/workers.py"]
f_backend_main_py --> f_backend_api_v1_workers_py
f_backend_channels_opencli_channel_py["backend/channels/opencli_channel.py"]
f_backend_main_py --> f_backend_channels_opencli_channel_py
f_backend_api_v1___init___py[".../v1/__init__.py"]
f_backend_config_py --> f_backend_api_v1___init___py
f_backend_api_v1_system_py[".../v1/system.py"]
f_backend_config_py --> f_backend_api_v1_system_py
f_backend_api_v1_webhooks_py[".../v1/webhooks.py"]
f_backend_config_py --> f_backend_api_v1_webhooks_py
f_backend_config_py --> f_backend_api_v1_workers_py
more(["+6 more dependents"])
PR --> more
t_tests_unit_test_main_py(["✅ tests/unit/test_main.py"]):::guard
t_tests_unit_test_main_py -.-> f_backend_main_py
t_tests_integration_test_webhooks_api_py(["✅ tests/integration/test_webhooks_api.py"]):::guard
t_tests_integration_test_webhooks_api_py -.-> f_backend_config_py
classDef changed fill:#dbeafe,stroke:#1d4ed8,color:#1e3a5f
classDef warn fill:#fef3c7,stroke:#b45309,color:#78350f
classDef guard fill:#dcfce7,stroke:#15803d,color:#14532d
Solid arrows: code that imports the changed files (11 direct dependents, from the last indexed snapshot). Dashed: history/tests. 🔥 Hotspots touched (5)
2 more
🔗 Hidden coupling (1 file)
💀 Dead code (5 findings)
2 more
📊 Full report · ⭐ Star Repowise · 📥 Install bot · Last updated 2026-07-31 09:43 UTC |
|
Warning Review limit reached
Next review available in: 6 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: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (16)
📝 WalkthroughSummary by CodeRabbit
WalkthroughThe project now provides a version 0.4.0 Docker release flow. It adds frontend and Chrome images, authenticated Compose services, Linux and Windows installers, release publishing workflows, deployment documentation, and public release contract tests. ChangesRelease deployment
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
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: 7
🧹 Nitpick comments (1)
frontend/.dockerignore (1)
1-5: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick winExclude environment files from the Docker build context.
frontend/Dockerfilecopies every non-ignored file into the builder stage. This file does not exclude.env*. A local environment file can enter build layers or generated frontend artifacts.Proposed change
.next node_modules +.env* +!.env.example npm-debug.log* pnpm-debug.log*🤖 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 `@frontend/.dockerignore` around lines 1 - 5, Update frontend/.dockerignore to exclude all .env* environment files from the Docker build context, while preserving the existing Next.js, dependency, and package-manager log exclusions.
🤖 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 @.github/workflows/release.yml:
- Around line 8-11: Restrict workflow permissions and checkout credential
persistence: in .github/workflows/release.yml lines 8-11, default to contents:
read, grant packages: write only to images, and contents: write only to
github-release; remove unnecessary id-token access. In
.github/workflows/release.yml lines 55-56 and 110-111, set persist-credentials:
false on the images and github-release checkout steps. In
.github/workflows/ci.yml lines 93-104, set release-contract.permissions.contents
to read and disable checkout credential persistence.
In `@backend/config.py`:
- Line 125: Update the NOVNC_BASE_PORT fallback used by the dynamic Chrome
instance configuration in browsers.py from 3010 to 6080, matching
Settings.novnc_base_port and avoiding the frontend port.
In `@scripts/install.ps1`:
- Around line 85-109: Update the install.ps1 readiness check and final URL
banner to use the FRONTEND_PORT environment override, defaulting to 3010 when it
is unset, consistent with install.sh. Reuse the resolved port in the localhost
health-check URL and the displayed URL while leaving the Docker Compose commands
unchanged.
- Line 28: Update the release archive download Invoke-WebRequest call in the
install script to include the -UseBasicParsing option, matching the later
request while preserving the existing repository URL, version, and output file
arguments.
- Around line 9-10: Enable native command error propagation in the PowerShell
install flow before the Docker checks, by setting
$PSNativeCommandUseErrorActionPreference to $true alongside the existing
$ErrorActionPreference. Ensure failures from docker compose version and docker
info stop execution before pull or up runs.
In `@scripts/install.sh`:
- Around line 38-45: Update random_fernet so failures from openssl rand cannot
be masked by the transformation pipeline: capture or otherwise explicitly
validate the openssl result and return failure when generation fails or produces
an empty value. Ensure callers do not write CREDENTIAL_ENCRYPTION_KEY unless
random_fernet successfully returns a non-empty key, while preserving the
existing Docker fallback.
In `@tests/unit/test_agent_image_runtime_packaging.py`:
- Line 32: Update the assertion for OhMyOpenCliRepo in the relevant packaging
test to require both the [Parameter(Mandatory = $true)] attribute and the
[string]$OhMyOpenCliRepo declaration together, so the test fails if either
mandatory metadata or the parameter declaration is removed.
---
Nitpick comments:
In `@frontend/.dockerignore`:
- Around line 1-5: Update frontend/.dockerignore to exclude all .env*
environment files from the Docker build context, while preserving the existing
Next.js, dependency, and package-manager log exclusions.
🪄 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: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: bc95da5f-9538-40e8-a400-ebf11b38e09b
⛔ Files ignored due to path filters (2)
package-lock.jsonis excluded by!**/package-lock.jsonuv.lockis excluded by!**/*.lock
📒 Files selected for processing (32)
.env.docker.example.github/workflows/ci.yml.github/workflows/release.ymlDockerfileREADME.mdagent/Dockerfilebackend/agent_server.pybackend/api/v1/browsers.pybackend/api/v1/nodes.pybackend/config.pybackend/main.pybackend/mcp_server.pychrome/Dockerfiledocker-compose.build.ymldocker-compose.ymldocs/backend-capability-exposure-matrix.yamlfrontend/.dockerignorefrontend/Dockerfilefrontend/eslint.config.mjsfrontend/next.config.mjsfrontend/package.jsonpackage.jsonpyproject.tomlscripts/chrome-pool.shscripts/install-agent.shscripts/install-managed-opencli.ps1scripts/install.ps1scripts/install.shtests/unit/test_agent_image_runtime_packaging.pytests/unit/test_image_studio_deployment_contract.pytests/unit/test_public_release_contract.pytests/unit/test_workers_api.py
| "COPY scripts/verify_managed_opencli_runtime.py " | ||
| "./scripts/verify_managed_opencli_runtime.py" | ||
| ) in dockerfile | ||
| assert '[string]$OhMyOpenCliRepo,' in windows |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Assert that OhMyOpenCliRepo is mandatory.
Line 32 passes if [Parameter(Mandatory = $true)] is removed. The installer could then clone an empty repository value. Assert the attribute and parameter declaration together.
Proposed test change
- assert '[string]$OhMyOpenCliRepo,' in windows
+ assert (
+ '[Parameter(Mandatory = $true)]\n'
+ ' [string]$OhMyOpenCliRepo,'
+ ) in windows📝 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.
| assert '[string]$OhMyOpenCliRepo,' in windows | |
| assert ( | |
| '[Parameter(Mandatory = $true)]\n' | |
| ' [string]$OhMyOpenCliRepo,' | |
| ) in windows |
🤖 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 `@tests/unit/test_agent_image_runtime_packaging.py` at line 32, Update the
assertion for OhMyOpenCliRepo in the relevant packaging test to require both the
[Parameter(Mandatory = $true)] attribute and the [string]$OhMyOpenCliRepo
declaration together, so the test fails if either mandatory metadata or the
parameter declaration is removed.
Summary
Verification
Local Docker Desktop is unavailable on this workstation; the PR Public Install Smoke job performs the clean Docker build/start verification on GitHub Actions.