Skip to content

[codex] Switch WebUI frontend tooling to pnpm - #5729

Closed
BenKurrek wants to merge 4 commits into
mainfrom
codex/webui-frontend-pnpm
Closed

BenKurrek wants to merge 4 commits into
mainfrom
codex/webui-frontend-pnpm

Conversation

@BenKurrek

Copy link
Copy Markdown
Collaborator

Summary

  • Move the WebUI frontend install path from npm lockfiles to pnpm.
  • Add pnpm-lock.yaml / pnpm-workspace.yaml and remove the npm lockfile.
  • Update frontend docs, build helper, build script, and CI cache keys to use pnpm.

Verification

  • pnpm install --frozen-lockfile
  • pnpm build (legacy build at this layer)
  • cargo check -p ironclaw_webui_v2 --features webui-v2-beta
  • Stack tip verified with git diff --check, pnpm typecheck, pnpm test, pnpm build, cargo test -p ironclaw_webui_v2 --features webui-v2-beta, and cargo test -p ironclaw_reborn_composition --features webui-v2-beta --test webui_v2_serve.

@ironloopai

ironloopai Bot commented Jul 6, 2026 •

Copy link
Copy Markdown
Contributor

⏳ IronLoop Review Status

Head: e64bcdee58a9546248389e8dd440912bfb62f9a4
Result: No reviewer jobs are scheduled yet.
Next: Run @ironloopai review to start reviewers.
Updated: 2026-07-07T21:30:48.780Z

Current reviewers:

Reviewer State Verdict Findings Last update
none Queued N/A No reviewer jobs scheduled yet. N/A
Reviewer summaries
Reviewer Detail
none No reviewer jobs scheduled yet.
Recent activity
Time Reviewer State Detail
N/A N/A Waiting No progress events recorded yet.
Available commands
  • @ironloopai agents
  • @ironloopai review
  • @ironloopai review --agent <agent-id-or-alias>
  • @ironloopai status
Run metadata

Admission: webhook accepted the request and IronLoop persisted review state before this projection.

@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5729 July 6, 2026 20:39 Destroyed
@github-actions github-actions Bot added scope: ci CI/CD workflows scope: docs Documentation size: XL 500+ changed lines risk: medium Business logic, config, or moderate-risk modules contributor: experienced 6-19 merged PRs labels Jul 6, 2026
ironloopai[bot]
ironloopai Bot previously requested changes Jul 6, 2026

@ironloopai ironloopai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ IronLoop Review: reviewer

Verdict: ❌ Changes requested
Findings: 1 blocking / 0 notes
Next: Fix the blocking findings, push the PR branch, then re-run this reviewer.
Head: 54e66d93570c1842ec8374de6f3c63deb4dfbac8

Run details

Status: Current
Needs human: no
Needs validation: no

**Inline candidates:** 1

Summary

The pnpm migration is incomplete for GitHub Actions: the workflows ask setup-node to restore a pnpm cache before pnpm is made available, so the affected CI jobs can fail before reaching the new Corepack step.

Findings

1. ❌ [MEDIUM] Enable pnpm before setup-node cache restore

Location: .github/workflows/reborn-playwright.yml:84-85
The workflow now sets cache: "pnpm" on actions/setup-node, but pnpm is only enabled in the following step. setup-node's pnpm cache restore needs the pnpm executable during the setup-node action itself to resolve the store path, so clean runners can fail here before corepack enable pnpm runs. The same ordering appears in the other updated workflows (code_style.yml, coverage.yml, platform-and-compat.yml, reborn-e2e.yml, and reborn-tests.yml). Move Corepack/pnpm setup before the cached setup-node step, or use a pnpm setup action before setup-node.

Developer follow-up

After fixing this feedback:

  1. Push the fix to this PR branch.
  2. Re-run this reviewer with @ironloop review --agent reviewer if you only changed this reviewer's findings.
  3. Re-run all reviewers with @ironloop review when the fix may affect multiple areas.
  4. Use @ironloop status to check queued/running/completed/stale/stalled state while reviewers run.

Comment thread .github/workflows/reborn-playwright.yml

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request migrates the frontend package manager from npm to pnpm (v11), updating the Rust build script, the shell build scripts, package configuration, and lockfiles accordingly. The review feedback points out that the onlyBuiltDependencies configuration in pnpm-workspace.yaml is redundant and should be removed, as it has been replaced by allowBuilds in pnpm v11.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread crates/ironclaw_webui_v2/frontend/pnpm-workspace.yaml Outdated
@coderabbitai

coderabbitai Bot commented Jul 6, 2026 •

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

An error occurred during the review process. Please try again later.

📝 Walkthrough

Summary by CodeRabbit

  • New Features
    • Switched the WebUI build and CI pipeline to use pnpm via Corepack for faster, more consistent dependency handling.
  • Documentation
    • Updated build prerequisites and WebUI v2 frontend instructions to reflect the new Corepack/pnpm workflow.
  • Bug Fixes
    • Improved build reliability by standardizing pnpm lockfile-based installs and caching across automation, Docker, and WebUI bundling.
    • Updated an e2e test to match the corrected failure classification for the looping termination scenario.

Walkthrough

WebUI tooling for ironclaw_webui_v2 switches from npm to pnpm across package metadata, build/install wiring, Docker setup, CI cache config, and the documented build prerequisites. One e2e scenario also changes its expected failure category.

Changes

npm to pnpm migration

Layer / File(s) Summary
Frontend package manifest and workspace config
crates/ironclaw_webui_v2/frontend/package.json, crates/ironclaw_webui_v2/frontend/pnpm-workspace.yaml
Declares pnpm as the package manager, updates the engine constraint, and adds the pnpm workspace config.
Build script and build.rs pnpm install logic
crates/ironclaw_webui_v2/build.rs, crates/ironclaw_webui_v2/frontend/build.sh, crates/ironclaw_webui_v2/frontend/README.md
Switches rerun tracking and install commands to pnpm, checks for pnpm-lock.yaml, and updates the frontend build instructions.
Docker corepack setup
Dockerfile.reborn
Adds Corepack wiring and enables pnpm during the Node toolchain setup.
CI workflow caching updates
.github/workflows/code_style.yml, .github/workflows/coverage.yml, .github/workflows/platform-and-compat.yml, .github/workflows/reborn-e2e.yml, .github/workflows/reborn-playwright.yml, .github/workflows/reborn-tests.yml, README.md
Switches workflow caching from npm/package-lock.json to pnpm/pnpm-lock.yaml, adds corepack enable pnpm, and updates the documented build prerequisites.

E2E failure category update

Layer / File(s) Summary
Looping failure expectation
tests/e2e/scenarios/test_reborn_webui_v2_legacy_tool_execution.py
The looping-tool termination scenario now expects iteration_limit for the failed run projection.

Estimated code review effort: 2 (Simple) | ~15 minutes

Possibly related PRs

  • nearai/ironclaw#5449: Overlaps the same reborn-playwright workflow path now switched to pnpm caching.
  • nearai/ironclaw#5656: Touches the same Slack pairing redeem integration lane updated here for wall-clock expiration testing.

Suggested reviewers: serrrfirat

🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The summary and validation are present, but most required template sections are missing, including Change Type, Linked Issue, Security Impact, and Rollback Plan. Add the missing template sections and fill in Change Type, Linked Issue, Security Impact, Reborn checklist, Database Impact, Blast Radius, Rollback Plan, and Review Follow-Through.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly matches the PR's main change, switching WebUI tooling to pnpm, though it does not use the preferred Conventional Commits format.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@BenKurrek
BenKurrek force-pushed the codex/webui-frontend-pnpm branch from 54e66d9 to ea68a58 Compare July 6, 2026 20:50
@BenKurrek
BenKurrek force-pushed the codex/webui-frontend-hygiene branch from 9a0e643 to 41d8568 Compare July 6, 2026 20:50
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5729 July 6, 2026 20:50 Destroyed
@BenKurrek
BenKurrek marked this pull request as ready for review July 6, 2026 20:50
@BenKurrek

Copy link
Copy Markdown
Collaborator Author

@coderabbitai full review

@ironloopai

ironloopai Bot commented Jul 6, 2026 •

Copy link
Copy Markdown
Contributor

🗂️ Archived IronLoop Review: reviewer

This result is from an older PR head and is no longer the active review.

Field Value
Status Superseded
Verdict ✅ Approved
Findings 0 blocking / 0 notes
Reviewed head 58a4159a313a
Archived summary

No blocking issues found in the pnpm migration for the WebUI v2 frontend build, CI cache setup, or Docker build environment.

@coderabbitai

coderabbitai Bot commented Jul 6, 2026 •

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 `@crates/ironclaw_webui_v2/frontend/pnpm-workspace.yaml`:
- Around line 4-8: Remove the obsolete pnpm workspace setting by updating the
pnpm-workspace config to keep only allowBuilds and drop onlyBuiltDependencies.
The affected config is the workspace file containing esbuild, and the relevant
symbol to locate is allowBuilds; make sure pnpm 11.7.0-compatible config remains
valid by deleting the deprecated onlyBuiltDependencies entry entirely.
🪄 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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 8bca4bec-39b7-46ec-afb3-10330b9d1c2d

📥 Commits

Reviewing files that changed from the base of the PR and between 41d8568 and ea68a58.

⛔ Files ignored due to path filters (2)
  • crates/ironclaw_webui_v2/frontend/package-lock.json is excluded by !**/package-lock.json
  • crates/ironclaw_webui_v2/frontend/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (10)
  • .github/workflows/code_style.yml
  • .github/workflows/coverage.yml
  • .github/workflows/platform-and-compat.yml
  • .github/workflows/reborn-e2e.yml
  • .github/workflows/reborn-playwright.yml
  • .github/workflows/reborn-tests.yml
  • crates/ironclaw_webui_v2/build.rs
  • crates/ironclaw_webui_v2/frontend/build.sh
  • crates/ironclaw_webui_v2/frontend/package.json
  • crates/ironclaw_webui_v2/frontend/pnpm-workspace.yaml

Comment thread crates/ironclaw_webui_v2/frontend/pnpm-workspace.yaml Outdated
@BenKurrek
BenKurrek force-pushed the codex/webui-frontend-hygiene branch from 41d8568 to 0d8a914 Compare July 6, 2026 20:57
@BenKurrek
BenKurrek force-pushed the codex/webui-frontend-pnpm branch from ea68a58 to 3f757b3 Compare July 6, 2026 20:57
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5729 July 6, 2026 20:57 Destroyed
@BenKurrek

Copy link
Copy Markdown
Collaborator Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Jul 6, 2026 •

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@BenKurrek

Copy link
Copy Markdown
Collaborator Author

@IronLoop review

@BenKurrek
BenKurrek force-pushed the codex/webui-frontend-pnpm branch from 3f757b3 to 4dd8d78 Compare July 6, 2026 21:01
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5729 July 6, 2026 21:01 Destroyed
@BenKurrek

Copy link
Copy Markdown
Collaborator Author

@IronLoop review

@BenKurrek

Copy link
Copy Markdown
Collaborator Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Jul 6, 2026 •

Copy link
Copy Markdown
✅ Action performed

Full review finished.


Your plan includes PR reviews subject to rate limits. More reviews will be available in 49 minutes.

@github-actions github-actions Bot added the scope: sandbox Docker sandbox label Jul 6, 2026
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5729 July 7, 2026 05:07 Destroyed
@BenKurrek
BenKurrek force-pushed the codex/webui-frontend-hygiene branch from c794009 to 352a2cc Compare July 7, 2026 05:48
@BenKurrek
BenKurrek force-pushed the codex/webui-frontend-pnpm branch from e04cf9d to 283f884 Compare July 7, 2026 05:48
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5729 July 7, 2026 05:48 Destroyed
@BenKurrek

Copy link
Copy Markdown
Collaborator Author

/canary

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Started Reborn WebUI v2 live canary for codex/webui-frontend-pnpm at 283f88494f with cases all: https://github.com/nearai/ironclaw/actions/runs/28845343158

@BenKurrek

Copy link
Copy Markdown
Collaborator Author

/canary

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Started Reborn WebUI v2 live canary for codex/webui-frontend-pnpm at 283f88494f with cases all: https://github.com/nearai/ironclaw/actions/runs/28846676704

@serrrfirat serrrfirat left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed with code-review-multi lenses plus thermo maintainability pass.

No blocking findings. I inspected the pnpm workflow/Docker/build.rs changes and ran targeted frontend checks in the detached PR worktree:

  • corepack pnpm install --frozen-lockfile passed
  • corepack pnpm build passed (legacy esbuild bundle path for this stack slice)

@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5729 July 7, 2026 19:14 Destroyed
serrrfirat
serrrfirat previously approved these changes Jul 7, 2026
Base automatically changed from codex/webui-frontend-hygiene to main July 7, 2026 20:41
@BenKurrek
BenKurrek dismissed serrrfirat’s stale review July 7, 2026 20:41

The base branch was changed.

@BenKurrek
BenKurrek force-pushed the codex/webui-frontend-pnpm branch from 354beb7 to 171403b Compare July 7, 2026 20:42
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5729 July 7, 2026 20:42 Destroyed
@github-actions

github-actions Bot commented Jul 7, 2026 •

Copy link
Copy Markdown
Contributor

Coverage ratchet

Ratchet mode: ENFORCING

RATCHET PASS: global
  observed: 85.32% (279173 / 327196 lines)
  floor:    85.3% (tolerance 0.5pp -> effective floor 84.8%)
  denominator: 327196 lines now vs 320188 at floor capture (+7008 lines, +2.19%) — not a material change

⚠️ 3 Reborn crate(s) have 0 int-tier coverage (target: 0) — ironclaw_prompt_envelope, ironclaw_scripts, ironclaw_skill_learning

Reborn integration-tier coverage

Line coverage (Reborn crates): 85.32% — 279173 / 327196 lines

Per-crate breakdown (65 crates, lowest-covered first)
Crate Line % Covered / Total
ironclaw_prompt_envelope 0% 0 / 88
ironclaw_scripts 0% 0 / 347
ironclaw_skill_learning 0% 0 / 61
ironclaw_wasm_sandbox_core 7.37% 7 / 95
ironclaw_runtime_policy 33.2% 80 / 241
ironclaw_event_projections 43.34% 673 / 1553
ironclaw_run_state 52.36% 222 / 424
ironclaw_authorization 53.54% 461 / 861
ironclaw_triggers 60.32% 1736 / 2878
ironclaw_observability 61.54% 16 / 26
ironclaw_mcp 63.15% 581 / 920
ironclaw_reborn_cli 64.58% 3988 / 6175
ironclaw_filesystem 66.1% 3608 / 5458
ironclaw_webui_v2 66.3% 2439 / 3679
ironclaw_reborn_migration 67.01% 1172 / 1749
ironclaw_memory 67.12% 747 / 1113
ironclaw_dispatcher 67.15% 92 / 137
ironclaw_trust 72.88% 661 / 907
ironclaw_reborn_event_store 73.01% 944 / 1293
ironclaw_capabilities 74.08% 1658 / 2238
ironclaw_wasm_limiter 74.6% 47 / 63
ironclaw_extractors 74.72% 538 / 720
ironclaw_first_party_extensions 77.62% 5410 / 6970
ironclaw_llm 77.88% 19480 / 25013
ironclaw_product_context 78.57% 11 / 14
ironclaw_wasm_product_adapters 80.58% 1510 / 1874
ironclaw_process_sandbox 80.65% 671 / 832
ironclaw_reborn_openai_compat 80.95% 956 / 1181
ironclaw_memory_native 81.86% 3226 / 3941
ironclaw_secrets 82.33% 2716 / 3299
ironclaw_wasm 82.54% 950 / 1151
ironclaw_events 83.47% 1762 / 2111
ironclaw_processes 84.06% 965 / 1148
ironclaw_turns 84.14% 13061 / 15523
ironclaw_host_api 84.8% 3131 / 3692
ironclaw_threads 85.16% 3278 / 3849
ironclaw_projects 85.92% 659 / 767
ironclaw_network 86.12% 670 / 778
ironclaw_auth 86.32% 2727 / 3159
ironclaw_product_workflow 86.33% 10709 / 12405
ironclaw_common 86.59% 1472 / 1700
ironclaw_slack_v2_adapter 86.79% 1806 / 2081
ironclaw_reborn_config 86.98% 1730 / 1989
ironclaw_product_adapters 87.29% 3207 / 3674
ironclaw_reborn_traces 87.35% 10325 / 11820
ironclaw_skills 87.36% 4335 / 4962
ironclaw_hooks 87.84% 9916 / 11289
ironclaw_product_adapter_registry 87.96% 526 / 598
ironclaw_extensions 88.26% 2631 / 2981
ironclaw_reborn_identity 88.43% 344 / 389
ironclaw_reborn_composition 89.11% 69020 / 77455
ironclaw_host_runtime 89.13% 17303 / 19413
ironclaw_conversations 90% 2924 / 3249
ironclaw_approvals 90.51% 1507 / 1665
ironclaw_reborn 91.19% 17477 / 19166
ironclaw_event_streams 91.48% 1009 / 1103
ironclaw_reborn_webui_ingress 91.68% 2094 / 2284
ironclaw_loop_support 92.22% 14231 / 15432
ironclaw_attachments 93.06% 630 / 677
ironclaw_telegram_v2_adapter 94.01% 2447 / 2603
ironclaw_resources 94.2% 3605 / 3827
ironclaw_agent_loop 94.54% 8753 / 9259
ironclaw_safety 94.81% 3669 / 3870
ironclaw_first_party_extension_ports 95% 3094 / 3257
ironclaw_outbound 95.59% 3556 / 3720

This table itself is informational and never gates the PR on its own — not the percentage, not the per-crate holes, not the 0-coverage callout. A separate coverage ratchet (dry-run until enforce=true; see tests/integration/coverage-floor.toml) can fail the build on specific configured floors.

Exemptions (4 entry/entries excluded from the accounting above)
Module / Crate Reason Issue
crate: ironclaw_embeddings v1-only: consumed only by root ironclaw (src/app.rs, src/tools/builtin/memory.rs, src/workspace/mod.rs, src/config/{mod,embeddings}.rs); no crates/* dependents. Covered by "Tests (Legacy)". #5657
crate: ironclaw_gateway v1-only: consumed only by root ironclaw (src/channels/web/platform/static_files.rs, src/channels/web/handlers/frontend.rs); no crates/* dependents. Covered by "Tests (Legacy)". #5657
crate: ironclaw_oauth v1-only: consumed only by root ironclaw (src/auth/oauth.rs); no crates/* dependents. Crate's own doc comment confirms v1-only. Covered by "Tests (Legacy)". #5657
crate: ironclaw_tui v1-only: consumed only by root ironclaw (src/main.rs, src/channels/tui.rs); no crates/* dependents. Crate's own doc comment confirms it bridges INTO v1, not Reborn. Covered by "Tests (Legacy)". #5657

@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5729 July 7, 2026 21:10 Destroyed
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5729 July 7, 2026 21:30 Destroyed
@BenKurrek
BenKurrek enabled auto-merge July 7, 2026 21:42
@BenKurrek

Copy link
Copy Markdown
Collaborator Author

All review threads are resolved on the current head e64bcde. Regular PR CI is green, and standalone Reborn Playwright passed after rerunning the transient apt/NOSPLIT setup failure: https://github.com/nearai/ironclaw/actions/runs/28900082895. Auto-merge is enabled but blocked on the required non-author approval.

@BenKurrek

Copy link
Copy Markdown
Collaborator Author

Superseded by #5732, which now contains the combined WebUI frontend stack against main.

@BenKurrek BenKurrek closed this Jul 7, 2026

This branch was successfully deployed

No deployments
ironclaw-ci-preview / ironclaw-pr-5729 — e64bcdee Deployed Jul 7, 2026 by railway-app[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor: experienced 6-19 merged PRs risk: medium Business logic, config, or moderate-risk modules scope: ci CI/CD workflows scope: docs Documentation scope: sandbox Docker sandbox size: XL 500+ changed lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants