v26.3.0
What's Changed
- feat(FR-991): migrate signup modal from Lit-Element to React by @inureyes in #5356
- fix(FR-1983): prevent false shmem warning when decreasing memory by @inureyes in #5357
- feat(FR-1037): migrate image list from Image to ImageNode with pagination by @inureyes in #5358
- fix(FR-2061): handle empty file save in vfolder text editor by @limshyun in #5338
- fix(FR-991): fix visual and click bugs in signup modal after React migration by @inureyes in #5362
- feat(FR-991): extend BAIModal with missing backend-ai-dialog features by @inureyes in #5382
- feat(FR-991): migrate backend-ai-splash to React SplashModal by @inureyes in #5383
- feat(FR-991): migrate backend-ai-email-verification-view to React by @inureyes in #5384
- feat(FR-991): migrate backend-ai-change-forgot-password-view to React by @inureyes in #5385
- feat(FR-991): migrate lablup-terms-of-service to React TermsOfServiceModal by @inureyes in #5386
- feat(FR-991): consolidate backend-ai-signup with React SignupModal and remove Lit version by @inureyes in #5387
- feat(FR-991): migrate backend-ai-login to React LoginView by @inureyes in #5388
- feat(FR-991): migrate backend-ai-edu-applauncher to React by @inureyes in #5389
- feat(FR-991): remove Lit backend-ai-app-launcher and clean up dependencies by @inureyes in #5390
- refactor(FR-991): consolidate navigation from Lit/Redux to React Router by @inureyes in #5391
- refactor(FR-991): migrate plugin loading system from Lit to React by @inureyes in #5392
- refactor(FR-991): slim down backend-ai-webui Lit shell and extract logic to React by @inureyes in #5393
- chore(FR-991): remove backend-ai-dialog and unused MWC/Vaadin dependencies by @inureyes in #5394
- fix(FR-991): address review findings for BAIModal from PR #5382 by @inureyes in #5396
- fix(FR-991): address review findings for SplashModal from PR #5383 by @inureyes in #5398
- fix(FR-991): address review findings for EmailVerificationView from PR #5384 by @inureyes in #5399
- fix(FR-991): address review findings for ChangePasswordView from PR #5385 by @inureyes in #5400
- fix(FR-991): address review findings for SignupModal from PR #5387 by @inureyes in #5401
- fix(FR-991): address review findings for LoginView/LoginFormPanel from PR #5388 by @inureyes in #5405
- fix(FR-991): address review findings for EduAppLauncher from PR #5389 by @inureyes in #5406
- fix(FR-991): address review findings from PR #5390 by @inureyes in #5407
- fix(FR-991): address review findings for navigation pages from PR #5391 by @inureyes in #5408
- fix(FR-991): address review findings for PluginLoader from PR #5392 by @inureyes in #5409
- fix(FR-991): address review findings for MainLayout from PR #5393 by @inureyes in #5410
- fix(FR-991): remove residual dialog-body selector from e2e test from PR #5394 by @inureyes in #5411
- fix(FR-991): resolve dev server and login dialog issues after React-first migration by @inureyes in #5419
- fix(FR-991): address review findings for LoginView from PR #5388 by @inureyes in #5402
- feat(FR-991): migrate loading curtain from Lit shell to React by @inureyes in #5420
- feat(FR-991): migrate config.toml parsing from Lit shell to React by @inureyes in #5421
- feat(FR-991): migrate global store initialization from Lit shell to React by @inureyes in #5424
- refactor(FR-991): remove lablup-notification Lit bridge in favor of React notification system by @inureyes in #5425
- refactor(FR-991): remove dead backend-ai-indicator-pool and backend-ai-indicator Lit components by @inureyes in #5426
- feat(FR-991): migrate logout and app-close handling from Lit shell to React by @inureyes in #5427
- feat(FR-991): migrate login orchestration from Lit shell to React by @inureyes in #5429
- feat(FR-991): migrate login flow orchestration from Lit shell to React by @inureyes in #5428
- fix: prevent login modal from reopening after successful authentication by @inureyes in #5430
- refactor(FR-991): remove backend-ai-serving-view Lit wrapper by @inureyes in #5440
- refactor(FR-991): remove backend-ai-error-view Lit component by @inureyes in #5441
- refactor(FR-991): remove backend-ai-painkiller Lit component by @inureyes in #5442
- refactor(FR-991): remove backend-ai-project-switcher Lit component by @inureyes in #5443
- refactor(FR-991): remove remaining Lit UI components by @inureyes in #5444
- refactor(FR-991): remove legacy Lit global store components by @inureyes in #5445
- refactor(FR-991): remove backend-ai-webui Lit shell and migrate to React by @inureyes in #5446
- refactor(FR-991): remove Lit plugin system and BackendAIPage base class by @inureyes in #5447
- refactor(FR-991): remove Lit, MWC, and Vaadin packages from dependencies by @inureyes in #5448
- refactor: inline SessionResources type and remove backend-ai-console.d.ts by @inureyes in #5451
- chore: update copyright year to 2026 and add license headers by @inureyes in #5452
- refactor: update documentation to reflect actual build system and state management by @inureyes in #5455
- feat: improve login panel UI with segmented mode switch and side help panel by @inureyes in #5457
- refactor: remove unused loading background image from initial load by @inureyes in #5458
- fix: resolve session loss on page refresh due to endpoint state race condition by @inureyes in #5459
- fix(FR-2087): fix subscription re-subscription loop in session status refresher by @yomybaby in #5462
- chore(FR-2076): add ESLint configuration for locale JSON files in bui by @nowgnuesLee in #5353
- feat(FR-1922): missing vallidation of importing from github and gitlab by @agatha197 in #5061
- refactor(#5454): replace Rollup-based service worker generation with workbox-webpack-plugin by @inureyes in #5460
- chore: remove Lit-Element references from documentation by @inureyes in #5463
- chore: remove Lit-era dependencies and fix production build by @inureyes in #5464
- feat(FR-2084): extract docs-toolkit as reusable package by @yomybaby in #5397
- docs(FR-2074): improve PDF documentation layout and structure by @yomybaby in #5403
- docs(FR-2075): standardize admonition types and fix formatting across documentation by @yomybaby in #5404
- chore(FR-2085): configure backend.ai-docs-toolkit package for npm registry publishing by @yomybaby in #5423
- docs(FR-2086): convert legacy formatting to admonitions and add cross-reference anchors by @yomybaby in #5450
- 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
- fix: restore endpoint info and saved endpoints on login page refresh by @inureyes in #5469
- fix(FR-2006): ensure notifications are opened when status updates by @ironAiken2 in #5217
- Daily Test Coverage Improver - Fix Jest Configuration Issues by @github-actions[bot] in #5315
- Daily Test Coverage Improver - Fix Jest coverage command syntax by @github-actions[bot] in #5472
- Daily Test Coverage Improver - Fix coverage-steps lockfile issue by @github-actions[bot] in #5453
- [Coverage Improvement] Add comprehensive unit tests for BAICard component by @github-actions[bot] in #4881
- Daily Test Coverage Improver - Improve BAIPropertyFilter test coverage by @github-actions[bot] in #5347
- Daily Test Coverage Improver - Add tests for customThemeConfig helper by @github-actions[bot] in #5258
- Daily Test Coverage Improver - Add comprehensive tests for useDebouncedDeferredValue hook by @github-actions[bot] in #5346
- Daily Test Coverage Improver - Add tests for useValidateServiceName hook by @github-actions[bot] in #5239
- Daily Test Coverage Improver - Add tests for useValidateSessionName hook by @github-actions[bot] in #5232
- Daily Test Coverage Improver - Add tests for useHighlight hook by @github-actions[bot] in #5210
- Daily Test Coverage Improver - Add tests for useScrollBreakPoint hook by @github-actions[bot] in #5193
- Daily Test Coverage Improver - Add tests for useKeyboardShortcut hook by @github-actions[bot] in #5171
- Daily Test Coverage Improver - Add tests for useVariantConfigs hook by @github-actions[bot] in #5147
- Daily Test Coverage Improver - Add tests for useTokenizer and usePrimaryColors hooks by @github-actions[bot] in #5094
- chore(FR-2073): restructure Claude Code config with skills and optimized instructions by @yomybaby in #5340
- ci: bump github/codeql-action from v2 to v3 by @yomybaby in #5478
- docs(FR-2077): Documentation for fair share scheduler by @ironAiken2 in #5381
- fix: remove unused imports and variables in test files by @yomybaby in #5486
- fix(i18n): unify keypair and resource group terminology by @yomybaby in #5481
- fix(FR-2103): fix TypeScript type errors and lint warnings in test files by @agatha197 in #5489
- docs(FR-2025): enhance BUI storybook stories with comprehensive documentation by @limshyun in #5363
- docs(FR-1978): add Storybook stories for fragment modal/button components by @limshyun in #5218
- docs(FR-1977): add Storybook story for BAIUserNodes fragment component by @limshyun in #5215
- docs(FR-2019): add gt absorb support to amend-staged-changes workflow by @yomybaby in #5231
- feat(FR-2107): add version gate for model try content button by @agatha197 in #5497
- chore: delete codeql-analysis workflow by @Yaminyam in #4853
- chore(FR-2108): add docs-toolkit package to VS Code workspace by @yomybaby in #5505
- style(FR-2026): add border styling to keyboard shortcut text by @limshyun in #5246
- chore(FR-2109): update schema.graphql and fix FairShare filter type references by @ironAiken2 in #5507
- fix(FR-2105): unify i18n terminology for ResourcePolicies and Projects menu labels by @agatha197 in #5492
- docs(FR-1975): add Storybook stories for select/query fragment components by @limshyun in #5166
- fix(wsproxy): increase socket timeout and enable keepalive by @adrysn in #4808
- test(backend.ai-ui): add comprehensive tests for BAILink component by @github-actions[bot] in #4865
- docs(FR-857): add editable AI agent plan and progress tracker by @yomybaby in #5498
- feat(FR-857): extend AIAgent types for editable agents by @yomybaby in #5499
- feat(FR-857): add CRUD operations to useAIAgent hook by @yomybaby in #5500
- feat(FR-857): add AgentEditorModal for creating/editing AI agents by @yomybaby in #5501
- feat(FR-857): add edit/delete UI to AIAgentPage by @yomybaby in #5502
- feat(FR-857): add chat integration for external agent endpoints by @yomybaby in #5503
- feat(FR-2111): add cross-page link resolution to docs-toolkit web build by @yomybaby in #5516
- fix(FR-2098): show error notification on login failure by @inureyes in #5517
- fix(FR-2100): fix endpoint history dropdown on login page by @inureyes in #5518
- fix(FR-2102): fix React HMR causing full page reload in dev mode by @inureyes in #5519
- refactor(FR-2105): unify i18n terminology to plural forms for menu labels by @inureyes in #5520
- fix(FR-2106): prevent cluster connection modal after intentional logout by @inureyes in #5526
- fix(FR-2108): apply language change immediately without page refresh by @inureyes in #5527
- fix(FR-2114): add crypto.randomUUID fallback for non-secure HTTP contexts by @inureyes in #5528
- fix(FR-2114): move @ts-ignore to correct import line in global-stores.ts by @agatha197 in #5533
- docs(FR-2116): clean up stale documentation in docs-toolkit and webui-docs by @yomybaby in #5543
- docs(FR-2113): add antd 6 deprecated props guidance to react instructions by @agatha197 in #5532
- chore(FR-2119): replace Atlassian MCP with jira.sh and simplify fiber workflow by @yomybaby in #5551
- chore(FR-2122): add Claude Code statusline with Jira and Teams links by @yomybaby in #5557
- chore(FR-2125): rename post-lit-cleanup agent to post-lit-reporter by @yomybaby in #5561
- chore(FR-2126): improve statusline with SWR caching and PR check by @yomybaby in #5564
- chore(FR-2127): add duplicate issue prevention to post-lit-reporter by @yomybaby in #5566
- chore(FR-2130): convert post-lit-reporter agent to command with assignee support by @yomybaby in #5571
- chore(FR-2133): improve post-lit-report command with natural language assignee, English output, and error handling by @yomybaby in #5575
- feat(FR-2115): show allowed resource group warning for domain/project/user fair share list by @ironAiken2 in #5562
- chore(FR-2151): add wiki markup auto-conversion to jira.sh md_to_adf by @yomybaby in #5605
- fix(FR-2149): watch config.toml for changes in dev server by @yomybaby in #5606
- fix(FR-2146): show error notification on login failure by @yomybaby in #5607
- fix(FR-2138): release dev server port on shutdown by @yomybaby in #5608
- chore(FR-2137): update README.md for React dev workflow by @yomybaby in #5609
- fix(FR-2136): watch resources/i18n for changes in dev server by @yomybaby in #5610
- fix(FR-2135): auto-rebuild backend.ai-client-esm.ts on change by @yomybaby in #5611
- fix(FR-2152): move devServer.server.close patching to onListening callback by @nowgnuesLee in #5616
- fix(FR-2134): fix login E2E test locators broken after Lit-to-React migration by @agatha197 in #5580
- fix(FR-2143): fix file-upload E2E test locators for icon+text cell rendering by @agatha197 in #5594
- fix(FR-2123): replace CustomEvent notification with local Alert in LoginView by @yomybaby in #5612
- chore(FR-2158): add model and token usage info to statusline by @nowgnuesLee in #5623
- feat(FR-1636): add HuggingFace registry settings modal by @yomybaby in #5546
- chore(FR-2172): add epic linking, issue linking, and docs-toolkit architecture doc by @yomybaby in #5641
- chore(FR-2170): display links before model info in statusline with multi-line layout by @nowgnuesLee in #5638
- fix(FR-2110): adjust fgpu display to show one decimal place (#5508) by @agatha197 in #5509
- fix(FR-2156): hide Advanced settings when apiEndpoint is set in config.toml by @yomybaby in #5653
- chore(FR-2154): remove deprecated server:d command and update references by @yomybaby in #5654
- feat(FR-2162): implement multi-page HTML builder for static website by @yomybaby in #5643
- feat(FR-2163): implement website build orchestrator and CLI command by @yomybaby in #5644
- feat(FR-2166): implement Previous/Next page navigation by @yomybaby in #5645
- feat(FR-2167): add Edit this page link and Last updated date by @yomybaby in #5646
- feat(FR-2168): build search index generator for multilingual docs by @yomybaby in #5647
- feat(FR-2169): implement client-side search UI for documentation by @yomybaby in #5648
- feat(FR-2164): extract website CSS to shared stylesheet with :lang() selectors by @yomybaby in #5649
- feat(FR-2165): add serve:web dev server and package scripts by @yomybaby in #5650
- feat(FR-1949): implement session scheduling history modal by @nowgnuesLee in #5286
- docs(FR-2186): update auto-scaling rule terminology from Scale Up/Down to Scale Out/In by @yomybaby in #5679
- feat(FR-2187): add labels management command to jira.sh by @yomybaby in #5681
- chore(FR-2178): clean up Lit references and fix Electron plugin loading by @nowgnuesLee in #5670
- 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
- feat(FR-2191): add weblink command to jira.sh for external link management by @yomybaby in #5698
- refactor(FR-2117): refactor ImageList to use BAIPropertyFilter and remove legacy patterns by @nowgnuesLee in #5545
- feat(FR-1944): support 'tt-n300' accel. in the session launcher by @agatha197 in #5105
- fix(FR-2200): add tsc type checking to production build by @nowgnuesLee in #5718
- chore(deps-dev): bump ajv from 8.17.1 to 8.18.0 by @dependabot[bot] in #5479
- Daily Test Coverage Improver - Helper Utility Functions Coverage by @github-actions[bot] in #5722
- chore(FR-2147): clean up root package.json scripts for React-only dev setup by @nowgnuesLee in #5720
- fix(FR-2179): Apply default config fallback when config.toml is missing by @ironAiken2 in #5693
- fix(FR-2206): Update device metadata for Tenstorrent Wormhole™ n300 by @rapsealk in #5733
- fix(FR-2195): add theme.json to dev server file watcher for hot-reload by @ironAiken2 in #5725
- feat(FR-2181): add e2e tests for ImageList by @nowgnuesLee in #5673
- feat(FR-2192): add E2E tests for Session Scheduling History Modal by @nowgnuesLee in #5701
- docs(FR-2193): add session scheduling history documentation by @nowgnuesLee in #5703
- feat(FR-1737): restructure fonts into per-family dirs and auto-load via theme.json fontFamily by @ironAiken2 in #5700
- chore(FR-2203): serve Storybook fonts via staticDirs from WebUI resources by @nowgnuesLee in #5727
- fix(FR-2199): normalize endpoint URL to prevent double-slash in API requests by @yomybaby in #5715
- fix(FR-2180): remove Lit server references from dev-config.js by @nowgnuesLee in #5747
- feat(FR-2022): add create file action in file browser by @agatha197 in #5593
- feat(FR-2028): support for undefined and null types in the
useCurrentProjectValue. by @agatha197 in #5262 - feat(FR-2044): Gracefully handle empty values in
useCurrentProjectValuewith error boundaries to prevent full page crashes by @agatha197 in #5297 - fix(FR-2198): apply round_length formatting to fGPU values in session and agent views by @agatha197 in #5713
- test(FR-2022): add e2e tests for create file in file browser by @agatha197 in #5603
- chore(FR-1524): add pnpm catalog for centralized dependency version management by @limshyun in #5477
- chore(FR-2227): remove legacy Claude commands, skills, agents and jira.sh by @yomybaby in #5775
- feat(FR-1737): add font family setting to branding settings by @ironAiken2 in #5709
- feat(FR-2171): add is_global and allowed_groups fields to container registry editor modal by @ironAiken2 in #5642
- e2e(FR-2229): add E2E tests for Container Registry management on the Environment page by @ironAiken2 in #5780
- feat(FR-2230): expose global switchLanguage function for screenshot capture by @yomybaby in #5796
- fix(FR-2217): use Out/In terminology in autoscaling rules table by @yomybaby in #5797
- fix(FR-2205): preserve custom resource allocation when editing services by @yomybaby in #5795
- feat(FR-1852): Implement csv export feature on server side by @ironAiken2 in #5248
- e2e(FR-2230): add E2E tests for Start page and Dashboard by @yomybaby in #5810
- e2e(FR-2230): add E2E tests for Project Management CRUD by @yomybaby in #5811
- e2e(FR-2234): add E2E tests for Resource Policy management page by @yomybaby in #5813
- e2e(FR-2235): add E2E tests for Credential Keypairs and My Environment pages by @yomybaby in #5815
- e2e(FR-2236): add E2E tests for Statistics, Information, and Agent Summary pages by @yomybaby in #5817
- feat(FR-1952): add diagnostic types and CSP rules with tests by @agatha197 in #5521
- feat(FR-1954): add storage proxy and endpoint diagnostic rules with tests by @agatha197 in #5522
- feat(FR-1955): add diagnostic hooks for CSP, storage, endpoint, and config checks by @agatha197 in #5523
- feat(FR-1956): add DiagnosticsPage and diagnostic UI components by @agatha197 in #5524
- feat(FR-1957): add diagnostics route, menu entry, and i18n keys by @agatha197 in #5525
- chore(FR-2175): fix plugin loader to load from dist/plugins by @nowgnuesLee in #5658
- feat: add missing i18n translations for diagnostics and other components by @agatha197 in #5823
- e2e(FR-2208): add plugin system E2E tests by @nowgnuesLee in #5732
- fix(FR-2173): fix password change modal blocked by login modal on password expiry by @ironAiken2 in #5655
- e2e(FR-2173): add E2E tests for password expiry flow by @ironAiken2 in #5786
- fix(FR-2157): prevent double rebuild on config.toml change by @nowgnuesLee in #5749
- fix(FR-2148): refactor UserResourceGroupAlert to read query params internally and use @required directive by @ironAiken2 in #5651
- fix(FR-2121): add multi-node session indicator in session template modal by @agatha197 in #5799
- fix(FR-2241): pass Global ID instead of raw UUID to vfolder_node query by @yomybaby in #5854
- refactor(FR-2053): migrate endpoint route table to Strawberry routes query with BAIRouteNodes by @nowgnuesLee in #5806
- e2e(FR-2053): add E2E tests for endpoint route table with GraphQL mocking by @nowgnuesLee in #5809
- chore: update package.yml runner from self-hosted to macos-latest by @yomybaby in #5857
- e2e(FR-2121): add session template modal multi-node indicator tests by @agatha197 in #5821
- fix(FR-2243): restore octokit dependency removed during Lit-era cleanup by @yomybaby in #5861
- fix: remove redundant pnpm store config causing post-install cache error by @yomybaby in #5879
- feat(FR-2232): disable replica count input when autoscaling rules are active by @yomybaby in #5886
- feat(FR-2218): integrate react-grab for AI agent element inspection by @yomybaby in #5887
- fix(FR-2261): skip routings when route-node is supported by @nowgnuesLee in #5905
- fix(FR-2284): add missing diagnostics i18n keys for proxy and SSL checks by @agatha197 in #5921
- fix(FR-2272): add export-csv feature flag to useCSVExport hook by @nowgnuesLee in #5920
- fix(FR-2292): unify empty state display in Fair Share Resource Allocation column by @agatha197 in #5928
- feat(FR-1817): add bulk user creation via adminBulkCreateUsersV2 mutation by @ironAiken2 in #5635
- feat(FR-2260): add zero-padding and email preview to bulk user creation by @yomybaby in #5952
- fix(FR-2290): use openai-compatible provider for non-OpenAI model support by @nowgnuesLee in #5939
- fix(FR-2288): add resource group scoping alert to admin pending sessions page by @agatha197 in #5930
- fix(FR-2297): pass local session ID instead of global ID in route node click handler by @yomybaby in #5956
- chore(FR-2299): merge pnpm branch lock files into pnpm-lock.yaml by @yomybaby in #5965
- feat(FR-1957): restore missing diagnostics config checks by @agatha197 in #5926
Full Changelog: v26.2.5...v26.3.0