v26.5.0-beta.0
Pre-releaseWhat's Changed (v26.5.0-alpha.0 -> v26.5.0-beta.0)
✨ Features
Vite / Vitest Migration
Replaced the Craco/Webpack toolchain with Vite for dev server, production build, and Electron publicPath, and migrated the entire test suite from Jest to Vitest. Includes service worker via vite-plugin-pwa, BUI i18n context isolation, and CI coverage reporting.
- FR-2606: Vite PoC phase 1 — dev server + HMR + React Compiler parity by @nowgnuesLee in #6869, restore BUI i18n context isolation under Vite dep optimization in #6870
- FR-2607: Vite spike answer — es6:// Electron publicPath works via renderBuiltUrl by @nowgnuesLee in #6871
- FR-2610: Vite dev-reload plugin for i18n / theme / config.toml file changes by @nowgnuesLee in #6872
- FR-2608: Vite production build with vite-plugin-pwa service worker by @nowgnuesLee in #6873
- FR-2609: Vitest migration for react/ (856/856 tests) by @nowgnuesLee in #6874, migrate BUI + root tests from Jest to Vitest by @nowgnuesLee in #6875
- FR-2611: retire Craco/Webpack — build, Makefile, CI all on Vite/Vitest by @nowgnuesLee in #6876
- FR-2744: restore Vitest coverage reporting in CI by @nowgnuesLee in #7065
- FR-2746: re-enable 5 tests skipped during Vitest migration by @nowgnuesLee in #7071
- FR-2748: fully migrate test files from jest.* to vi.* and align TS globals by @nowgnuesLee in #7083
- FR-2796: hot-reload i18n JSON edits during dev by @yomybaby in #7211
- FR-2701: replace port-offset dev config with Portless by @yomybaby in #6983
Deployment Management
Introduced a new Deployment feature set covering routing, list/detail pages, status tags, owner info, project admin views, and post-launch UX feedback for migrating model serving onto deployment-centric workflows.
- FR-1368: deployment infrastructure — feature flag, i18n keys, routes, sidebar by @agatha197 in #6904; shared UI components — ReplicaStatusTag, DeploymentStatusTag, DeploymentOwnerInfo in #6910; deployment list table and pages in #6916; deployment detail with config section and 4 tabs in #6917
- FR-2577: add project admin deployments page by @yomybaby in #6698
- FR-2664: split config card, add endpoint URL, imageV2, reorder tabs by @agatha197 in #7102
- FR-2767: redirect to launcher when no deployment presets available by @agatha197 in #7136
sToken Login Boundary
Refactored sToken-based login flows into a unified STokenLoginBoundary with handling for TOTP and concurrent sessions, replacing scattered routing logic in LoginView and EduAppLauncher.
- FR-2618: add sToken login boundary component spec by @nowgnuesLee in #6828
- FR-2629: extend tokenLogin helper with optional extraParams by @nowgnuesLee in #6851
- FR-2630: add useSToken hook with nuqs and stoken deprecation warning by @nowgnuesLee in #6852
- FR-2631: implement STokenLoginBoundary component core by @nowgnuesLee in #6853
- FR-2632: default fallback and error card UI by @nowgnuesLee in #6855
- FR-2626: migrate LoginView sToken path to STokenLoginBoundary by @nowgnuesLee in #6861
- FR-2627: migrate EduAppLauncher sToken path to STokenLoginBoundary by @nowgnuesLee in #6864
- FR-2616: handle totp and concurrent-session inline in STokenLoginBoundary by @nowgnuesLee in #6897
VFolder V2 GraphQL Migration
Continued migration of VFolder operations to the Strawberry V2 GraphQL API, covering creation, trash lifecycle, single-folder reads, notifications, and a new project admin data page.
- FR-2593: VFolder creation modal using V2 GraphQL mutation by @ironAiken2 in #6759
- FR-2613: VFolder trash lifecycle mutations to V2 by @ironAiken2 in #6817
- FR-2619: single-folder detail reads to vfolderV2 query by @ironAiken2 in #6842
- FR-2688: notification item VirtualFolderNode branch to V2 by @ironAiken2 in #6934
- FR-2691: relocate /data header panels — Dashboard + host-capacity cell by @ironAiken2 in #6941
- FR-2696: create project admin data page by @ironAiken2 in #6962
Documentation Site Uplift
Major redesign of the WebUI docs site spanning routing, layout, design tokens, dark mode, code blocks, search, version selection, multi-version deployment via AWS Amplify, per-version PDF builds, and SEO/sharing metadata.
- FR-2711: docs site production uplift feature spec by @yomybaby in #6988, dev plan in #7004
- FR-2713: F1 site entry and multilingual routing by @yomybaby in #7008
- FR-2714: F2 SEO and sharing metadata by @yomybaby in #7012
- FR-2715: F3 information architecture (sidebar, TOC, breadcrumbs) by @yomybaby in #7009
- FR-2716: F4 code-block syntax highlighting and copy button by @yomybaby in #7010
- FR-2717: F5 build robustness and static asset optimization by @yomybaby in #7006
- FR-2718: F6 versioned docs and minor-grained version selector by @yomybaby in #7011
- FR-2719: per-language User Guide PDFs in CI release workflow by @yomybaby in #7014
- FR-2722: --optimize-images flag for WebP/AVIF generation by @yomybaby in #7028
- FR-2723: version-mismatch UX notice and view-latest banner by @yomybaby in #7029
- FR-2726: BAI design phases — tokens/typography in #7032, topbar/sider/TOC in #7033, content components in #7034, dark-mode/mobile drawer/search in #7035
- FR-2728: replace lang-switcher pill row with native select by @yomybaby in #7041
- FR-2730: WebUI docs multi-version deployment v1 spec by @yomybaby in #7045
- FR-2735: add amplify.yml for multi-version docs deployment by @yomybaby in #7058
- FR-2733: 'Previous versions' selector entry with legacyDocsUrl by @yomybaby in #7059
- FR-2731: pdfTag field in docs-toolkit versions schema by @yomybaby in #7057
- FR-2732: per-version PDF download card on landing page by @yomybaby in #7060
- FR-2734: declare versions: and fix pdfFilenameTemplate by @yomybaby in #7061
- FR-2749: web-only home page, language-stable URLs, icon-only language switcher by @yomybaby in #7088
- FR-2755: align web docs code-block UI with design by @yomybaby in #7107
- FR-2756: introduce shellsession pseudo-lang for terminal transcripts by @yomybaby in #7115
Docs Toolkit Test Coverage
Added a docs-toolkit example boilerplate package and expanded unit/E2E/PDF integration tests to lift coverage of the toolkit.
- FR-2782: docs toolkit & site test coverage uplift spec by @yomybaby in #7180
- FR-2783: docs-toolkit example boilerplate package by @yomybaby in #7181
- FR-2784: expand toolkit unit test coverage by @yomybaby in #7182
- FR-2785: example-driven E2E + PDF integration tests by @yomybaby in #7186
Project Workflow
Added GitHub Project automation for draft/ready issue transitions.
🐛 Bug Fixes
Deployment & Model Serving
Repaired schema-aligned mutation calls, preserved selected presets, and applied UX feedback after the deployment launcher migration.
- FR-2774: query runtime variant id and decode to UUID for addModelRevision by @nowgnuesLee in #7152
- FR-2773: preserve auto-selected resourcePresetId across applyInitialValues by @nowgnuesLee in #7153
- FR-2776: adapt addModelRevision call sites to new schema by @nowgnuesLee in #7158
- FR-2767: apply deployment migration feedback by @agatha197 in #7141
- FR-2780: apply deployment launcher post-migration feedback by @ironAiken2 in #7167
- FR-2709: resolve notification render loop and sider init error by @agatha197 in #6985
- FR-2646: align RoleDetailDrawer queries with updated schema by @ironAiken2 in #6882
LLM & Connection Resilience
Improved fallback behavior for parse/connection failures and made the LLM Playground retain its final TPS reading.
- FR-2620: load fallback URL when config.toml parse fails by @agatha197 in #6836
- FR-2615: surface error and fallback in VSCode Desktop connection modal by @agatha197 in #6825
- FR-2582: preserve final TPS value after LLM Playground response ends by @yomybaby in #6707
- FR-2583: update cached access key in client config after switching main keypair by @agatha197 in #6621
Vite Build Polish
Cleaned up residual issues from the Vite migration including Monaco self-hosting, Electron publicPath, and dynamic import directives.
- FR-2608: disable vite-plugin-pwa auto-manifest to preserve manifest.json by @nowgnuesLee in #6877
- FR-2606: globalThis.packageVersion fix in WebUISider in #6878, webpackIgnore → @vite-ignore in #6879, restore Monaco self-hosting in dev in #7104, clear residual build-time warnings in #7113
- FR-2607: align Electron publicPath patch with Vite output by @yomybaby in #7189
- FR-2779: respect PORTLESS_PORT env var as Portless daemon-port fallback by @yomybaby in #7164
Docs Site Build & UX
Stabilized docs-archive and Amplify build pipelines, fixed metadata propagation, and polished UI details across banner, sidebar, scrollspy, and mobile drawer.
- FR-2720: repair broken cross-reference anchors by @yomybaby in #7016
- FR-2721: CJK-capable font for PDF header/footer stamp by @yomybaby in #7027
- FR-2728: preview-server URL handling — root + percent-decode in #7039, CSS quick fixes in #7040, figure caption / lede / table fixes in #7042
- FR-2738: docs-archive workflow fixes — pin pnpm@9 in #7073, pnpm@10 to match engines in #7074, --no-frozen-lockfile in #7075, Node from .nvmrc in #7076, build docs-toolkit before build:web in #7077, src/ overlay model in #7093, --no-strict in Amplify build in #7097
- FR-2735: align amplify.yml with docs-archive fixes in #7078, Amplify monorepo manifest schema in #7089
- FR-2753: make root docs index a redirect-only page by @yomybaby in #7099
- FR-2754: per-version metadata propagation by @yomybaby in #7103
- FR-2758: polish docs site banner, sidebar, scrollspy, mobile drawer by @yomybaby in #7117
- FR-2759: copy per-chapter images directories in build by @yomybaby in #7119
- FR-2766: webui + storybook entries in amplify.yml monorepo manifest by @yomybaby in #7132
- FR-2765: docs site follow-ups — Lablup transliteration, 가/A icon, sort order by @yomybaby in #7133
- FR-2770: polish docs sider version selector and mobile topbar layout by @yomybaby in #7143
🔨 Refactoring
Confirmation UX & UI Conventions
Standardized destructive-confirmation UX, deduplicated card patterns, and removed dead Lit-bridge code.
- FR-2479: standardize confirmation UX with BAIConfirmModalWithInput and Popconfirm by @ironAiken2 in #6471
- FR-2772: unify deployment card UX with BAICard conventions by @ironAiken2 in #7146
- FR-2727: clean up dead Lit-bridge events inside useWebUINavigate by @nowgnuesLee in #7036
Hooks & Memoization
Renamed an endpoint-resolution hook for clarity and removed manual memoization in favor of React Compiler.
- FR-2628: rename useEduAppApiEndpoint to useResolvedApiEndpoint by @nowgnuesLee in #6850
- FR-2616: rely on React Compiler ('use memo') for memoization by @nowgnuesLee in #6857
Workspace Architecture
Reduced external dependencies and reorganized internal package layout.
- FR-2697: self-host Monaco Editor to eliminate jsDelivr CDN dependency by @yomybaby in #6959
- FR-2529: extract backend.ai-client as standalone workspace package by @yomybaby in #6614
🛠 Chores
CI & Tooling
Upgraded GitHub Actions and refreshed workflow ergonomics.
- FR-2621: upgrade deprecated Node.js 20 GitHub Actions to v5 by @yomybaby in #6840
- FR-2692: remove stray lockfile artifact and refresh pnpm-lock.yaml by @yomybaby in #6939
- FR-2698: remove deprecated @types/uuid stub by @yomybaby in #6961
- FR-2712: add .watchmanconfig to ignore heavy directories by @yomybaby in #6991
- FR-2747: replace branch-lockfile auto-merge with weekly scheduled workflow by @yomybaby in #7080
Claude Code Workflow Enhancements
Expanded Claude Code agent context with topic-level skill guides and statusline indicators.
- FR-2700: add React topic-level skill guides for Claude Code agents by @yomybaby in #6966
- FR-2707: clickable VS Code link in Claude Code statusline by @yomybaby in #6977
- FR-2708: git safety indicator in Claude Code statusline by @yomybaby in #6982
Docs Authoring Migration
Migrated bash command blocks to a new shellsession pseudo-language across locales.
- FR-2757: migrate bash blocks with prompts to shellsession across 4 locales by @yomybaby in #7116
- FR-2763: refine FR-2757 with content-aware bash vs shellsession judgement by @yomybaby in #7124
📝 Documentation
Model Serving & Auto Scaling Updates
Expanded admin docs for Model Store V2, Auto Scaling Rules V2, vLLM/SGLang launcher fields, and health checks with multi-language SVG diagrams.
- FR-2543: update model serving documentation with new features by @nowgnuesLee in #6611
- FR-2571: document Model Store V2 and Auto Scaling Rules V2 (26.4.0+) by @nowgnuesLee in #6760, address PR review feedback in #6708, Allowed Client IPs field in #6631
- endpoint detail revision info, alert banners, edit behavior by @agatha197 in #6767
- FR-2603: service launcher fields, vLLM/SGLang runtime params by @agatha197 in #6804; auto scaling V2 screenshots & health check terminology in #6807; health check SVG diagrams for 4 languages in #6839
- FR-2623: reorganize admin model serving docs and remove clone references by @agatha197 in #6844
- FR-2571: 26.4 docs feedback — remove legacy model serving sections, KO wording by @yomybaby in #6778
Screenshots, i18n & Authoring Guides
Recaptured screenshots in light mode and at 2× zoom, translated remaining headings, and updated authoring conventions.
- FR-2569: recapture start_announcement_banner in light mode by @nowgnuesLee in #6625
- FR-2570: recapture login screenshots with TOTP OTP screen in light mode by @nowgnuesLee in #6630
- FR-2624: translate remaining English headings in ja and th docs by @agatha197 in #6846
- FR-2645: mandate language-specific captures + replace 6 dark-mode WebUI screenshots by @ironAiken2 in #6868
- FR-2650: update all locale screenshots to 2× zoom for sharper text by @ironAiken2 in #6891
- FR-2736: release runbook for multi-version docs site deployment by @yomybaby in #7056
- FR-2764: authoring guides for shellsession/bash conventions and inline-comment localization by @yomybaby in #7128
🧪 E2E Tests
Expanded E2E coverage for login, RBAC, and serving flows.
- FR-2436: E2E tests for concurrent login session guard by @nowgnuesLee in #6326
- FR-2377: E2E tests for login error messages by @ironAiken2 in #6345
- FR-2504: E2E tests for RBAC role management by @ironAiken2 in #6531
- FR-2472: review and rewrite failing Serving E2E tests by @ironAiken2 in #6472
- FR-2633: unit tests for STokenLoginBoundary by @nowgnuesLee in #6856
- FR-2639: E2E regression for sToken login boundary routes by @nowgnuesLee in #6865
Full Changelog: v26.5.0-alpha.0...v26.5.0-beta.0