⬆️ chore: upgrade Vite to 8.0.0#12720
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Reviewer's GuideUpgrades the build pipeline to Vite 8, removes the node polyfills plugin in favor of explicit Buffer imports and a standalone buffer dependency, introduces a lightweight PrismJS mock via Vite aliases to avoid bundling the full library, and fixes a few lint issues in existing providers and utilities. Class diagram for PrismJS mock implementationclassDiagram
class PrismTokenContent {
}
class PrismToken {
+string alias
+PrismTokenContent content
+number length
+string type
+PrismToken(type string, content PrismTokenContent, alias string, matched string)
}
class Hooks {
+function add()
+Record_string_unknown all
+function run()
}
class PrismMock {
+boolean disableWorkerMessageHandler
+Hooks hooks
+Record_string_unknown languages
+boolean manual
+PrismToken Token
+tokenize(code string) Array_string_or_PrismToken
}
class GlobalThis {
+Prism PrismMock
}
PrismMock "1" o-- "1" Hooks
PrismMock "1" o-- "1" PrismToken
GlobalThis "1" o-- "1" PrismMock
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- For the Prism mock, consider giving
hooks.addandhooks.runrealistic call signatures (e.g., accepting the expected hook name and callback/args) instead of no-arg functions so existing hook usage won’t accidentally throw due to missing parameters at runtime. - Now that
vite-plugin-node-polyfillsis removed andBufferis provided via explicitbuffer/imports, it may be safer to centralize this in a small shared helper (e.g.,utils/buffer.tsre-exportingBuffer) and use that everywhere to avoid scattered direct imports and reduce the chance of missing a call site.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- For the Prism mock, consider giving `hooks.add` and `hooks.run` realistic call signatures (e.g., accepting the expected hook name and callback/args) instead of no-arg functions so existing hook usage won’t accidentally throw due to missing parameters at runtime.
- Now that `vite-plugin-node-polyfills` is removed and `Buffer` is provided via explicit `buffer/` imports, it may be safer to centralize this in a small shared helper (e.g., `utils/buffer.ts` re-exporting `Buffer`) and use that everywhere to avoid scattered direct imports and reduce the chance of missing a call site.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## canary #12720 +/- ##
===========================================
- Coverage 83.69% 66.80% -16.90%
===========================================
Files 539 2100 +1561
Lines 36805 179092 +142287
Branches 6081 21105 +15024
===========================================
+ Hits 30804 119637 +88833
- Misses 5877 59331 +53454
Partials 124 124
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
58ec823 to
1b04566
Compare
1b04566 to
b1715e1
Compare
|
Update: added a dev-environment cold-start metric for the first browser open. Methodology
Results
Relative change
Interpretation
NoteThe terminal |
|
Experiment update: I tested production runtime metrics again after disabling Change under testProduction output now uses:
Dev output still uses:
This isolates the production-only effect of Verification path
Build-side side effect
Runtime metrics
Initial-load graph impactThis change did not materially fix the initial graph by itself, but it did move it slightly in the right direction:
InterpretationThis experiment suggests that the runtime regression is highly sensitive to The chunk explosion / initial-load graph is still present and should still be investigated independently, but this isolated switch alone appears to remove most of the observed runtime regression in the current Lighthouse benchmark. Caveat: the runtime delta here is large enough that it is worth sanity-checking further, but the two reruns were internally consistent. |
42bd558 to
139ef8b
Compare
| } from './mecha'; | ||
| import { type FetchOptions } from './types'; | ||
|
|
||
| const defaultProvider = ModelProvider.OpenAI; |
| import { type FetchOptions } from './types'; | ||
|
|
||
| const defaultProvider = ModelProvider.OpenAI; | ||
| const providersWithDeploymentName = new Set<string>([ |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2c69dee8d5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
🐳 Database Docker Build Completed!Version: Pull ImageDownload the Docker image to your local machine: docker pull lobehub/lobehub:pr-chore-vite8-upgrade-b3236feImportant This build is for testing and validation purposes. |
🚀 Desktop App Build Completed!Version: 📦 Release Download · 📥 Actions Artifacts Build Artifacts
Warning Note: This is a temporary build for testing purposes only. |
# 🚀 LobeHub v2.1.53 (20260427) **Release Date:** April 27, 2026 **Since v2.1.52:** 194 merged PRs · 17 contributors > Introduce Heterogeneous Agent — Claude Code and Codex run as first-class desktop runtimes, paired with a new Agent Signal package, sharper desktop UX, and a wave of flagship model additions. --- ## ✨ Highlights - **Introduce Heterogeneous Agent** — Claude Code and Codex run as first-class desktop agents: subagent rendering, partial-message streaming, multi-turn resume, terminal error surfacing, rich tool inspectors, and runtime polish. (#14162, #13754, #14067, #14001, #13970, #13942) - **Screen capture & Quick Chat tray** — New desktop screen capture overlay (macOS permission-gated) with Quick Chat tray and upload pipeline improvements; chat input auto-focuses on overlay mount. (#13818, #14097, #14105) - **Desktop topic & tab UX** — Dedicated topic popup window with cross-window sync, Cmd+W/Cmd+T tab shortcuts, TabBar polish, recent working directories expanded to 20, and human approval notifications. (#13957, #13983, #13972, #14036, #14092) - **Git workflow built-in** — One-click pull/push from the branch chip, ahead/behind badge, and submodule/worktree repo detection. (#14041, #13980, #13978) - **Agent Signal package** — New `@lobechat/agent-signal` runtime for dynamic memory feedback signals, with OTel metrics and self-iteration in Lab. (#14157, #14170, #14159, #14169, #14187) - **New models** — Claude Opus 4.7 with `xhigh` effort tier, GPT-5.5, DeepSeek V4 Flash/Pro with reasoning slider, Kimi K2.6, MiMo-V2.5/Pro, gpt-image-2, Qwen3.6 Flash/Plus, and Pixverse-c1. (#13903, #14147, #14114, #14004, #14089, #14039, #13923) - **New providers** — OpenCode Zen, OpenCode Go, and Azure OpenAI Router runtime. (#13943, #14064, #13823) - **Mobile settings overhaul** — Full settings menu and responsive profile layout for mobile. (#14019) --- ## 🏗️ Heterogeneous Agent - Claude Code runtime, working-directory awareness, and sidebar polish. (#13970) - CC subagent rendering with persistent streamed text; parallel-tool orphan fix. (#14001, #13968, #14024) - Per-step usage persisted to each step assistant message. (#13964) - Per-phase workflow expand defaults; full-expand toggle with three-level expansion. (#14171, #13906) - Hetero-mode actions bar; tool inspector polish. (#13963, #14034, #14030) - Codex desktop integration with rich tool rendering and devtools preview. (#14067, #14100) - Codex terminal error surfacing and CLI output tracing. (#14166) - Tighten `isCanUseVision` default and add aggregator fallback. (#14172) - Persist `ccSessionId` in topic metadata for CC multi-turn resume. (#13902) - CC account card, topic filter, and integration polish. (#13955, #13942, #13950) - Token-level deltas streamed via `--include-partial-messages`. (#13929) --- ## 🧠 Agent Signal & Self-Iteration - New `@lobechat/agent-signal` package with dynamic feedback signals. (#14157) - AgentSignalRuntime wired through agent-tracing and observability-otel metrics. (#14170, #14159) - Self-iteration feature flag added to Lab; front-side flag check. (#14169, #14186) - Signal policy for receiving memory feedback dynamically. (#14187) --- ## 💬 Conversation - Queue follow-up sends during running CC turns. (#14179) - Persist per-topic chat scroll position; pin user message + fold long messages. (#14191, #14056) - Inline resend when editing last user message. (#14080) - Disable first-block markdown streaming to prevent flicker. (#14193, #13904) - Prevent Markdown stream replay when vlist remounts streaming items. (#14086) - Stop repinning after manual scroll; unify scroll-to-user + spacer hooks. (#14099, #14132) --- ## 📱 Platforms & Integrations ### Desktop / Electron - Screen capture overlay, Quick Chat tray, and upload pipeline improvements. (#13818) - macOS permission gate for screen capture; auto-focus chat panel input. (#14097, #14105) - Dedicated topic popup window with cross-window sync. (#13957) - TabBar polish: `+` button for new topic, dark theme blend, close icon by default. (#13972, #14203, #13973) - Recent working directories expanded from 5 to 20; submodule/worktree repo detection. (#14036, #13978) - Cmd+W / Cmd+T tab shortcuts and global shortcut consolidation. (#13983, #13880) - Linux icon configuration; human approval desktop notifications. (#14042, #14092) ### Git Workflow - One-click pull/push from branch chip; ahead/behind badge with refactored GitCtr. (#14041, #13980) ### Mobile - Full settings menu and responsive profile layout. (#14019) - Agent route added to mobile router; mobile agent topic route registered. (#14103, #14158) - Session list skeleton row layout corrected. (#14040) ### Bot / Messaging - DM strategy support; bot emoji and markdown render optimization. (#14201, #14091, #14140) - Slack webhook fix; bot platform setup guide reference. (#14052, #14121) --- ## 🤖 Models & Providers ### New models - **Claude Opus 4.7** with `xhigh` effort tier; strip temperature/top_p. (#13903, #13909) - **GPT-5.5**. (#14147) - **DeepSeek V4** Flash/Pro cards with reasoning slider; cache-hit and Pro discount pricing. (#14114, #14209, #14196, #14131) - **Kimi K2.6** model with LobeHub-hosted card. (#14004, #14006) - **MiMo-V2.5 / V2.5-Pro**. (#14089) - **gpt-image-2**, **Qwen3.6 Flash/Plus**, **Pixverse-c1**. (#14039, #13923) ### New providers - **OpenCode Zen** and **OpenCode Go** with env-var support. (#13943, #14064) - **Azure OpenAI Router** runtime support. (#13823) - Model alias mapping for image and video runtimes. (#13896) - Seedance video models migrated to Dreamina. (#14144) ### Runtime reliability - Sanitize invalid tool_call arguments to unbreak strict providers. (#14033) - Tolerate null `function.name` in streaming tool_call deltas. (#14139) - Preserve Gemini 3 `thoughtSignature` in `call_tools_batch` normalization. (#14032) - Downgrade `image_url` parts when target model lacks vision. (#14029) - Preserve Cloudflare provider error context. (#14136) - Use `safety_identifier` for OpenAI Responses API. (#14148) - Unwrap underlying PG error in `formatErrorEventData`. (#14038) --- ## 🖥️ User Experience - **Onboarding** — Preset agent naming suggestions, structured hunk ops for `updateDocument`, persona analytics snapshot, footer promotion pipeline, wrap-up button. (#13931, #13989, #13930, #13853, #13934) - **Document workflow** — Agent documents promoted as primary workspace panel; history management and compare workflow; web-crawl docs associated with agent documents. (#13924, #13725, #13893) - **cmdk** — Agent identity surfaced on topic search results; topic/message search scoped to current agent. (#14204, #13960) - **Floating chat panel** and workspace improvements. (#13887) - **Topic completion status** with dropdown action and filter. (#14005) --- ## 🔧 Tooling - Redis-backed feature flag provider for runtime config. (#14098) - Vite upgraded to 8.0.0 with Rolldown strict execution order. (#12720, #14058) - `@lobechat/model-bank` automated npm release with provenance. (#14015, #14017, #14018) - Skill activation fallback when `activateTools` cannot find identifier. (#14010) - Cron tool: timezone and existing jobs injected into system prompt; clarified `lobe-gtd` and `lobe-cron` descriptions. (#14012, #14013) --- ## 🔒 Security & Reliability - **Security:** uuid bumped to v14 (advisory). (#14083) - **Security:** validate avatar URL and scope old-avatar deletion to owner. (#13982) - **Security:** clear OIDC sessions on better-auth signout; return 401 (not 500) for expired OIDC JWT. (#13916, #14014) - **Reliability:** scope pending-approval check to current assistant turn. (#14182) - **Reliability:** sanitize heterogeneous-agent attachment cache filenames. (#13937) - **Reliability:** reduce subagent task status error noise. (#14026) --- ## 👥 Contributors Huge thanks to **17 contributors** who shipped **194 merged PRs** this week. @hardy · @shaun0927 · @hezhijie0327 · @sxjeru · @arvinxx · @Innei · @tjx666 · @lijian · @neko · @rdmclin2 · @AmAzing129 · @sudongyuer · @CanisMinor · @rivertwilight Plus @lobehubbot and renovate[bot] for maintenance. --- **Full Changelog**: v2.1.52...v2.1.53
Summary
This PR upgrades the SPA build from Vite 7 to Vite 8 and adopts the associated Rolldown-based production output path.
The evaluation now includes four dimensions:
A further follow-up experiment was also performed in this branch:
strictExecutionOrderis now disabled only in production buildsstrictExecutionOrderremains enabled in dev buildsThat experiment materially changes the runtime conclusion.
Scope and Caveat
These measurements reflect the entire PR state, not only the package-version bump.
The branch includes, in addition to the Vite 7 -> Vite 8 upgrade:
rollupOptions.outputtorolldownOptions.outputcodeSplitting.groupsstrictExecutionOrderAccordingly, the figures below should be interpreted as PR-level outcomes, not as a pure vendor-version benchmark.
Methodology
/usr/bin/time -lp bun run build:spadist/desktopdist/desktop/index.htmlVITE ready-> final app LCP/desktop-onboarding1. Build Metrics
Vite 7 baseline -> initial Vite 8 branch state
Current branch state after production-only
strictExecutionOrderchange2. Production Artifact Metrics
Vite 7 baseline -> initial Vite 8 branch state
index.htmlsizeInitial Vite 8 state -> current branch state
index.htmlsize3. Initial-Load Dependency Graph
The first-load graph was measured from emitted
dist/desktop/index.html, i.e. from the actual preload directives shipped to production.Vite 7 baseline -> initial Vite 8 branch state
modulepreloadcountInitial Vite 8 state -> current branch state
modulepreloadcountInterpretation
strictExecutionOrderchange trims the graph slightly, but does not by itself resolve the chunk explosion / preload expansion issue.4. Production Runtime Metrics
Initial production result on the Vite 8 branch
The earliest Vite 8 production measurement showed a clear runtime regression despite large build-time gains.
Production-only
strictExecutionOrderexperimentCurrent branch state disables
strictExecutionOrderonly in production. Under the same Lighthouse path, this substantially changes the runtime result.Interpretation
strictExecutionOrderin production.5. Memory Attribution
The build-memory figure is an overall process RSS measurement, not a standalone Rolldown-process number.
Process-tree sampling during
pnpm run build:spashowed:node .../vite/bin/vite.js buildnode ... pnpm ... build:spa:rawnode ... pnpm ... build:spanode ... cross-env ...rolldownprocess observedImplication:
6. Dev First-Open Metrics
A corrected dev benchmark was added for the first browser open after Vite becomes ready.
Corrected methodology
VITE ... ready in ...For DevBundle, the
Bundling in progressplaceholder is explicitly ignored; the measurement stops only after the real app page appears and its LCP stabilizes.Results
Relative change
Interpretation
Route-ready ~16sobservation was a measurement-harness error and should be ignored.7. Upstream Follow-up Concern
Even after the corrected dev benchmark, the dev first-open path is still much slower than the production build itself.
Using the current branch production build time:
build:spaThat implies:
This remains counterintuitive enough to deserve explicit upstream attention.
Current Conclusion
strictExecutionOrderchangeBottom Line
The evaluation now supports the following consolidated view:
strictExecutionOrderonly in production removes most of that runtime regression in the current Lighthouse benchmark