Repository navigation
chore: update Vite, Tailwind, and build tooling - #29345
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:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Priority: ⬇️ Low Merge Risk: 🔵 Low · up to
|
16f7b50 to
a32f353
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
- Configuration used: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
a436742a-186a-4ba7-87aa-4fd261a8f6d4
📥 Commits
Reviewing files that changed from the base of the PR and between 16f7b50 and a32f353f60669fb5bd49402a35ecc20c5b90ba3d.
⛔ Files ignored due to path filters: 2
mobile/pnpm-lock.yamlis excluded by!**/pnpm-lock.yamlpnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing: 5
config/scripts/main-entry-facade.test.tselectron.vite.config.tsmobile/src/session/MobileNativeChatView.test.tssrc/shared/git-binary-compatibility.test.tssrc/shared/git-local-base-branch-binary-compatibility.test-cases.ts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.
| } | ||
| }) | ||
| // tsc emits public names only, replacing the bundler's entry at this same path. | ||
| await writeFile(join(root, 'dist', 'controls.js'), 'exports.getStatus = () => 0') |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Make the replacement controls entry distinguishable.
If the built main entry still uses the bundled getStatus(), this test passes: both the original function and the replacement return 0. Make the replacement return a different value, then assert that value in state.status. This will test whether replacing controls.js changes the main entry’s behavior.
Proposed change
--- "a/config/scripts/main-entry-facade.test.ts"
+++ "b/config/scripts/main-entry-facade.test.ts"
@@ -35,7 +35,7 @@
}
})
// tsc emits public names only, replacing the bundler's entry at this same path.
- await writeFile(join(root, 'dist', 'controls.js'), 'exports.getStatus = () => 0')
+ await writeFile(join(root, 'dist', 'controls.js'), 'exports.getStatus = () => 1')
const require = createRequire(import.meta.url)
expect(require(join(root, 'dist', 'index.js')).state).toEqual({
status: 0,Update the expected status to 1 as well.
3300f83 to
fa2ab69
Compare
fa2ab69 to
c5740aa
Compare
ELI5
Update the tools that build and test Orca together, replacing the Rolldown preview with stable Vite 8. This also removes unnecessary Babel work from the React and Electron build path.
What Changed
rolldownOptions; Vite 8 otherwise ignores its old input override and builds the full app in the temporary directory before its dependencies are staged. The Node and Electron runtime checks both pass.Why
These versions are intended to work together. Upgrading just the React plugin would leave an unsupported Vite peer, while keeping the preview alias would miss the stable toolchain. Reusing Electron Vite's existing dependency handling avoids maintaining a second implementation.
Bun 1.4.3 is already pinned and used for unit tests, CI typechecking, and measured CI checks. Both typecheck paths and the test runner were verified with these upgrades. An additional bundler comparison measured Node at 7.307/7.110 seconds and Bun at 6.875/6.949 seconds on this Linux host. Builds continue using Node: running the bundler on Bun also runs its plain-Node compatibility smoke check on Bun, invalidating that check for a small saving.
The generated renderer CSS was 1,303,980 bytes versus 1,436,581 before (about 9% smaller), with every previously emitted CSS class retained. Renderer boot-graph output fell from 5,030.0 KB to 4,929.1 KB. These are local output measurements, not a cross-platform build-time claim.
Linked Issue
Maintainer-requested tooling maintenance; no existing issue.
Visual Proof
N/A — build and test tooling changes; no intended UI or interaction change. Generated CSS class coverage was compared before and after.
Testing
Tested on Linux with Node 24.22.0, pnpm 12.8.1, and Bun 1.4.3, with ORCA_BACKGROUND_LAUNCH=1:
Root and mobile frozen installs pass under the normal release-delay policy.
Native TypeScript and Bun CI typechecks pass.
Desktop, standalone web, and packaged mobile-web bundle builds pass, including output verification.
160 root regression tests pass under both Node and Bun, including build output, launch wrappers, plugin behavior, and the custom Node worker pool; two existing platform-specific skips.
130 process-host tests and 18 mobile tests pass.
Changed-code quality, focused lint, changed-file formatting, dead-class checks, and precommit hooks pass.
The startup regression test fails without protecting exported entry signatures and passes with them. The rebuilt desktop no longer imports the CLI entry that TypeScript replaces. Desktop-then-CLI compilation succeeds.
The 45 focused build and real-Git compatibility tests and 56 mobile chat tests pass after rebasing the CI fixes. The new bundling regression also passes under Node 24. Root native and Bun CI typechecking, mobile lint, and mobile test-typecheck ratcheting pass.
After the latest Electron-config rebase, 51 focused build and packaging tests, the full desktop build, and the Node typecheck pass; one existing platform-specific test is skipped. Main's layout-build packaging safeguards are preserved.
On commit de61f20, all 53 CI checks pass (11 conditional skips), including the full
.github/workflows/pr.ymlrun 38850527447 and itsPR checks passedaggregate. All five unit-test shards, Linux/Windows packaging, mobile checks, all Windows SSH variants, cross-version wire and Git compatibility, layout E2E checks, and the platform persistence/glibc/musl matrix pass.Both max-lines errors are fixed without disabling or raising limits. Full local lint reaches existing mobile import cycles when mobile dependencies are installed; CI runs that check before installing mobile dependencies. CI remains the merge gate for all platforms.
I manually tested these changes locally
Automated tests added/updated, or explained why not below
Review
Agent skill upstream boundary
Notes
No application runtime or wire protocol changes. Native dependency externalization, SSH/plain-Node entries, sandboxed preload dependencies, and mobile's separate install are covered by existing contracts. Linux, macOS, Windows x64/ARM, SSH, mobile web, and older Linux runtime compatibility are validated by CI.
Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)