v26.3.0-rc.1
Pre-releaseWhat's Changed (v26.2.5 -> v26.3.0-rc.1)
✨ Features
Complete Lit-to-React Migration (FR-991)
The core application shell has been fully migrated from Lit-Element to React. Authentication views (login, signup, email verification, forgot password), modal components (terms of service, splash), application launcher, navigation, plugin loading system, loading curtain, config.toml parsing, global store initialization, and login/logout orchestration are now all React-native. The Lit shell, backend-ai-dialog, MWC/Vaadin dependencies, and legacy indicator components have been fully removed.
- FR-991: migrate signup modal from Lit-Element to React by @inureyes in #5356
- FR-991: extend BAIModal with missing backend-ai-dialog features by @inureyes in #5382
- FR-991: migrate backend-ai-splash to React SplashModal by @inureyes in #5383
- FR-991: migrate backend-ai-email-verification-view to React by @inureyes in #5384
- FR-991: migrate backend-ai-change-forgot-password-view to React by @inureyes in #5385
- FR-991: migrate lablup-terms-of-service to React TermsOfServiceModal by @inureyes in #5386
- FR-991: consolidate backend-ai-signup with React SignupModal and remove Lit version by @inureyes in #5387
- FR-991: migrate backend-ai-login to React LoginView by @inureyes in #5388
- FR-991: migrate backend-ai-edu-applauncher to React by @inureyes in #5389
- FR-991: remove Lit backend-ai-app-launcher and clean up dependencies by @inureyes in #5390
- FR-991: migrate loading curtain from Lit shell to React by @inureyes in #5420
- FR-991: migrate config.toml parsing from Lit shell to React by @inureyes in #5421
- FR-991: migrate global store initialization from Lit shell to React by @inureyes in #5424
- FR-991: migrate logout and app-close handling from Lit shell to React by @inureyes in #5427
- FR-991: migrate login flow orchestration from Lit shell to React by @inureyes in #5428, #5429
- FR-991: improve login panel UI with segmented mode switch and side help panel by @inureyes in #5457
AI Agent Management (FR-857)
Added full CRUD support for AI agents with an AgentEditorModal for creating and editing agents, edit/delete actions in the AIAgentPage, and chat integration for external agent endpoints.
- FR-857: extend AIAgent types for editable agents by @yomybaby in #5499
- FR-857: add CRUD operations to useAIAgent hook by @yomybaby in #5500
- FR-857: add AgentEditorModal for creating/editing AI agents by @yomybaby in #5501
- FR-857: add edit/delete UI to AIAgentPage by @yomybaby in #5502
- FR-857: add chat integration for external agent endpoints by @yomybaby in #5503
Documentation Static Website Builder (FR-2162 – FR-2169)
Built a complete static website generator for the Backend.AI documentation with multi-page HTML builder, Previous/Next navigation, Edit this page links, multilingual search index, client-side search UI, shared CSS with :lang() selectors, and a dedicated dev server.
- FR-2162: implement multi-page HTML builder for static website by @yomybaby in #5643
- FR-2163: implement website build orchestrator and CLI command by @yomybaby in #5644
- FR-2164: extract website CSS to shared stylesheet with :lang() selectors by @yomybaby in #5649
- FR-2165: add serve:web dev server and package scripts by @yomybaby in #5650
- FR-2166: implement Previous/Next page navigation by @yomybaby in #5645
- FR-2167: add Edit this page link and Last updated date by @yomybaby in #5646
- FR-2168: build search index generator for multilingual docs by @yomybaby in #5647
- FR-2169: implement client-side search UI for documentation by @yomybaby in #5648
Session & Resource Management
New session scheduling history modal and resource group warnings for fair share policies.
- FR-1949: implement session scheduling history modal by @nowgnuesLee in #5286
- FR-2115: show allowed resource group warning for domain/project/user fair share list by @ironAiken2 in #5562
Image & File Management
Image list migrated to ImageNode with pagination, new create-file action added to the virtual folder browser.
- FR-1037: migrate image list from Image to ImageNode with pagination by @inureyes in #5358
- FR-2022: add create file action in file browser by @agatha197 in #5593
Hardware & Font Support
- FR-1944: support 'tt-n300' accelerator in the session launcher by @agatha197 in #5105
- FR-1737: restructure fonts into per-family dirs and auto-load via theme.json fontFamily by @ironAiken2 in #5700
Other Features
- FR-1636: add HuggingFace registry settings modal by @yomybaby in #5546
- FR-1922: add validation for importing from GitHub and GitLab by @agatha197 in #5061
- FR-2028: support for undefined and null types in
useCurrentProjectValueby @agatha197 in #5262 - FR-2044: gracefully handle empty values in
useCurrentProjectValuewith error boundaries by @agatha197 in #5297 - FR-2084: extract docs-toolkit as reusable package by @yomybaby in #5397
- FR-2107: add version gate for model try content button by @agatha197 in #5497
- FR-2111: add cross-page link resolution to docs-toolkit web build by @yomybaby in #5516
- FR-2187: add labels management command to jira.sh by @yomybaby in #5681
- FR-2191: add weblink command to jira.sh for external link management by @yomybaby in #5698
🐛 Bug Fixes
Login & Authentication Fixes
Post-migration fixes for the React-based login system, including error notifications, endpoint history, HMR issues, language switching, session persistence, and logout behavior.
- FR-2098: show error notification on login failure by @inureyes in #5517
- FR-2100: fix endpoint history dropdown on login page by @inureyes in #5518
- FR-2102: fix React HMR causing full page reload in dev mode by @inureyes in #5519
- FR-2106: prevent cluster connection modal after intentional logout by @inureyes in #5526
- FR-2108: apply language change immediately without page refresh by @inureyes in #5527
- FR-2114: add crypto.randomUUID fallback for non-secure HTTP contexts by @inureyes in #5528, by @agatha197 in #5533
- FR-2123: replace CustomEvent notification with local Alert in LoginView by @yomybaby in #5612
- FR-2146: show error notification on login failure by @yomybaby in #5607
- FR-2156: hide Advanced settings when apiEndpoint is set in config.toml by @yomybaby in #5653
- FR-2199: normalize endpoint URL to prevent double-slash in API requests by @yomybaby in #5715
- fix: prevent login modal from reopening after successful authentication by @inureyes in #5430
- fix: resolve session loss on page refresh due to endpoint state race condition by @inureyes in #5459
- fix: restore endpoint info and saved endpoints on login page refresh by @inureyes in #5469
Dev Server Fixes
Multiple improvements to the development server including file watchers for config, i18n, and theme files, port release on shutdown, and automatic client library rebuilding.
- FR-2135: auto-rebuild backend.ai-client-esm.ts on change by @yomybaby in #5611
- FR-2136: watch resources/i18n for changes in dev server by @yomybaby in #5610
- FR-2138: release dev server port on shutdown by @yomybaby in #5608
- FR-2149: watch config.toml for changes in dev server by @yomybaby in #5606
- FR-2152: move devServer.server.close patching to onListening callback by @nowgnuesLee in #5616
- FR-2179: apply default config fallback when config.toml is missing by @ironAiken2 in #5693
- FR-2180: remove Lit server references from dev-config.js by @nowgnuesLee in #5747
- FR-2195: add theme.json to dev server file watcher for hot-reload by @ironAiken2 in #5725
UI & Data Fixes
- FR-1983: prevent false shmem warning when decreasing memory by @inureyes in #5357
- FR-2006: ensure notifications are opened when status updates by @ironAiken2 in #5217
- FR-2061: handle empty file save in vfolder text editor by @limshyun in #5338
- FR-2087: fix subscription re-subscription loop in session status refresher by @yomybaby in #5462
- FR-2110: adjust fgpu display to show one decimal place by @agatha197 in #5509
- FR-2198: apply round_length formatting to fGPU values in session and agent views by @agatha197 in #5713
- FR-2200: add tsc type checking to production build by @nowgnuesLee in #5718
- FR-2206: update device metadata for Tenstorrent Wormhole™ n300 by @rapsealk in #5733
- fix(wsproxy): increase socket timeout and enable keepalive by @adrysn in #4808
- fix: add nanoid to react/package.json after root dependency cleanup by @inureyes in #5467
- fix: add --no-frozen-lockfile to CI workflows for pnpm branch lockfile merging by @yomybaby in #5468
- FR-2103: fix TypeScript type errors and lint warnings in test files by @agatha197 in #5489
- fix: remove unused imports and variables in test files by @yomybaby in #5486
FR-991 Post-migration Fixes
Review-driven stability fixes applied across all migrated components.
- FR-991: fix visual and click bugs in signup modal by @inureyes in #5362
- FR-991: address review findings for BAIModal by @inureyes in #5396
- FR-991: address review findings for SplashModal by @inureyes in #5398
- FR-991: address review findings for EmailVerificationView by @inureyes in #5399
- FR-991: address review findings for ChangePasswordView by @inureyes in #5400
- FR-991: address review findings for SignupModal by @inureyes in #5401
- FR-991: address review findings for LoginView/LoginFormPanel by @inureyes in #5402, #5405
- FR-991: address review findings for EduAppLauncher by @inureyes in #5406
- FR-991: address review findings for app-launcher cleanup by @inureyes in #5407
- FR-991: address review findings for navigation pages by @inureyes in #5408
- FR-991: address review findings for PluginLoader by @inureyes in #5409
- FR-991: address review findings for MainLayout by @inureyes in #5410
- FR-991: remove residual dialog-body selector from e2e test by @inureyes in #5411
- FR-991: resolve dev server and login dialog issues after React-first migration by @inureyes in #5419
🔨 Refactoring
Lit-to-React Refactoring (FR-991)
The remaining Lit component wrappers and legacy infrastructure have been fully removed: navigation (Lit/Redux to React Router), plugin loading, serving/error/painkiller/project-switcher views, remaining UI components, global store components, the Lit shell, Lit plugin system, BackendAIPage base class, and all Lit/MWC/Vaadin packages.
- FR-991: consolidate navigation from Lit/Redux to React Router by @inureyes in #5391
- FR-991: migrate plugin loading system from Lit to React by @inureyes in #5392
- FR-991: slim down backend-ai-webui Lit shell and extract logic to React by @inureyes in #5393
- FR-991: remove lablup-notification Lit bridge in favor of React notification system by @inureyes in #5425
- FR-991: remove dead backend-ai-indicator-pool and backend-ai-indicator Lit components by @inureyes in #5426
- FR-991: remove backend-ai-serving-view Lit wrapper by @inureyes in #5440
- FR-991: remove backend-ai-error-view Lit component by @inureyes in #5441
- FR-991: remove backend-ai-painkiller Lit component by @inureyes in #5442
- FR-991: remove backend-ai-project-switcher Lit component by @inureyes in #5443
- FR-991: remove remaining Lit UI components by @inureyes in #5444
- FR-991: remove legacy Lit global store components by @inureyes in #5445
- FR-991: remove backend-ai-webui Lit shell and migrate to React by @inureyes in #5446
- FR-991: remove Lit plugin system and BackendAIPage base class by @inureyes in #5447
- FR-991: remove Lit, MWC, and Vaadin packages from dependencies by @inureyes in #5448
Other Refactoring
- FR-2117: refactor ImageList to use BAIPropertyFilter and remove legacy patterns by @nowgnuesLee in #5545
- FR-2105: unify i18n terminology to plural forms for menu labels by @inureyes in #5520
- refactor: replace Rollup-based service worker generation with workbox-webpack-plugin by @inureyes in #5460
- refactor: inline SessionResources type and remove backend-ai-console.d.ts by @inureyes in #5451
- refactor: update documentation to reflect actual build system and state management by @inureyes in #5455
- refactor: remove unused loading background image from initial load by @inureyes in #5458
🌐 i18n
- FR-2105: fix i18n terminology for ResourcePolicies and Projects menu labels by @agatha197 in #5492
- fix: unify keypair and resource group terminology by @yomybaby in #5481
🎨 Style
🧪 E2E Tests
- FR-2022: add e2e tests for create file in file browser by @agatha197 in #5603
- FR-2134: fix login E2E test locators broken after Lit-to-React migration by @agatha197 in #5580
- FR-2143: fix file-upload E2E test locators for icon+text cell rendering by @agatha197 in #5594
- FR-2181: add e2e tests for ImageList by @nowgnuesLee in #5673
- FR-2192: add E2E tests for Session Scheduling History Modal by @nowgnuesLee in #5701
📝 Documentation
Storybook Stories
- FR-1975: add Storybook stories for select/query fragment components by @limshyun in #5166
- FR-1977: add Storybook story for BAIUserNodes fragment component by @limshyun in #5215
- FR-1978: add Storybook stories for fragment modal/button components by @limshyun in #5218
- FR-2025: enhance BUI storybook stories with comprehensive documentation by @limshyun in #5363
User Manual & Docs
- FR-2074: improve PDF documentation layout and structure by @yomybaby in #5403
- FR-2075: standardize admonition types and fix formatting across documentation by @yomybaby in #5404
- FR-2077: add documentation for fair share scheduler by @ironAiken2 in #5381
- FR-2086: convert legacy formatting to admonitions and add cross-reference anchors by @yomybaby in #5450
- FR-2113: add antd 6 deprecated props guidance to react instructions by @agatha197 in #5532
- FR-2116: clean up stale documentation in docs-toolkit and webui-docs by @yomybaby in #5543
- FR-2186: update auto-scaling rule terminology from Scale Up/Down to Scale Out/In by @yomybaby in #5679
- FR-2193: add session scheduling history documentation by @nowgnuesLee in #5703
- FR-857: add editable AI agent plan and progress tracker by @yomybaby in #5498
- FR-2019: add gt absorb support to amend-staged-changes workflow by @yomybaby in #5231
🛠 Chores
Lit-to-React Cleanup
- FR-991: remove backend-ai-dialog and unused MWC/Vaadin dependencies by @inureyes in #5394
- FR-2178: clean up Lit references and fix Electron plugin loading by @nowgnuesLee in #5670
- chore: remove Lit-Element references from documentation by @inureyes in #5463
- chore: remove Lit-era dependencies and fix production build by @inureyes in #5464
- FR-2147: clean up root package.json scripts for React-only dev setup by @nowgnuesLee in #5720
- FR-2154: remove deprecated server:d command and update references by @yomybaby in #5654
Developer Tooling & Workflow
- FR-1524: add pnpm catalog for centralized dependency version management by @limshyun in #5477
- FR-2073: restructure Claude Code config with skills and optimized instructions by @yomybaby in #5340
- FR-2076: add ESLint configuration for locale JSON files in bui by @nowgnuesLee in #5353
- FR-2085: configure backend.ai-docs-toolkit package for npm registry publishing by @yomybaby in #5423
- FR-2109: update schema.graphql and fix FairShare filter type references by @ironAiken2 in #5507
- FR-2119: replace Atlassian MCP with jira.sh and simplify workflow by @yomybaby in #5551
- FR-2122: add Claude Code statusline with Jira and Teams links by @yomybaby in #5557
- FR-2125: rename post-lit-cleanup agent to post-lit-reporter by @yomybaby in #5561
- FR-2126: improve statusline with SWR caching and PR check by @yomybaby in #5564
- FR-2127: add duplicate issue prevention to post-lit-reporter by @yomybaby in #5566
- FR-2130: convert post-lit-reporter agent to command with assignee support by @yomybaby in #5571
- FR-2133: improve post-lit-report command with natural language assignee support by @yomybaby in #5575
- FR-2137: update README.md for React dev workflow by @yomybaby in #5609
- FR-2151: add wiki markup auto-conversion to jira.sh md_to_adf by @yomybaby in #5605
- FR-2158: add model and token usage info to statusline by @nowgnuesLee in #5623
- FR-2170: display links before model info in statusline with multi-line layout by @nowgnuesLee in #5638
- FR-2172: add epic linking, issue linking, and docs-toolkit architecture doc by @yomybaby in #5641
- FR-2203: serve Storybook fonts via staticDirs from WebUI resources by @nowgnuesLee in #5727
- FR-2227: remove legacy Claude commands, skills, agents and jira.sh by @yomybaby in #5775
- FR-2108: add docs-toolkit package to VS Code workspace by @yomybaby in #5505
- chore: update copyright year to 2026 and add license headers by @inureyes in #5452
CI/CD & Dependencies
- ci: bump github/codeql-action from v2 to v3 by @yomybaby in #5478
- chore: delete codeql-analysis workflow by @Yaminyam in #4853
- chore(deps-dev): bump storybook from 10.2.6 to 10.2.10 by @dependabot[bot] in #5662
- chore(deps): bump actions/labeler from 5 to 6 by @dependabot[bot] in #5684
- chore(deps): bump actions/cache from 4 to 5 by @dependabot[bot] in #5683
- chore(deps): bump actions/github-script from 7 to 8 by @dependabot[bot] in #5682
- chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.0 by @dependabot[bot] in #5686
- chore(deps): bump actions/download-artifact from 6.0.0 to 8.0.0 by @dependabot[bot] in #5685
- chore(deps-dev): bump ajv from 8.17.1 to 8.18.0 by @dependabot[bot] in #5479
Test Coverage (Automated)
Multiple automated test coverage improvements added by the Daily Test Coverage Improver:
- BAICard, BAIPropertyFilter, BAILink component tests by @github-actions[bot] in #4881, #5347, #4865
- Hook tests (useDebouncedDeferredValue, useValidateServiceName, useValidateSessionName, useHighlight, useScrollBreakPoint, useKeyboardShortcut, useVariantConfigs, useTokenizer, usePrimaryColors) by @github-actions[bot] in #5346, #5239, #5232, #5210, #5193, #5171, #5147, #5094
- Helper utility functions and customThemeConfig tests by @github-actions[bot] in #5722, #5258
- Jest configuration fixes by @github-actions[bot] in #5315, #5472, #5453
🙌 New Contributors
Full Changelog: v26.2.5...v26.3.0-rc.1