Aleksander Grygier and Copilot Autofix powered by AI
ef9c13d4c2
ui: New Logo + Navigation cleanup & Mobile UI/UX improvements ( #24897 )
...
* chore: `npm audit fix --force`
* feat: Update sidebar toggle to use Logo
* refactor: Clean up favicon SVG
* feat: Refactor logo component and implement theme-aware favicon generation
* feat: Add configurable padding to generated PWA assets
* test: Add unit tests for writeThemeFavicons
* refactor: Componentization
* feat: WIP
* feat: WIP
* feat: WIP
* feat: Mobile UI
* feat: add SEARCH route constant
* feat: create SidebarNavigationSearchResults component
* refactor: use SidebarNavigationSearchResults in conversation list
* feat: enable mobile search navigation in sidebar actions
* feat: add mobile search route and page
* fix: prevent sidebar overflow on mobile viewports
* fix: Mobile sidebar
* feat: Mobile Search WIP
* feat: Mobile WIP
* feat: Add PWA standalone detection and refine mobile UI
* feat: Improve mobile layout, sidebar handling, and chat scrolling
* feat: Improve mobile sidebar visibility and iOS Safari chat spacing
* fix: Disable auto-scroll on mobile
* chore: Linting
* fix: Wrong condition
* feat: Mobile chat scroll
* refactor: WIP
* fix: Desktop initial scroll always working again
* fix: Partial fix for mobile auto-scroll / initial scroll
* fix: Desktop auto-scroll on initial load and during streaming
* fix: Mobile scrolling logic
* refactor: Clean up
* feat: Improve start UI
* feat: Add `delay` to `fadeInView`
* feat: Auto-scroll button
* refactor: Cleanup
* refactor: Extract chat dialogs and alerts into dedicated component
* refactor: Reorganize ChatScreen component structure and initialization
* feat: Improve auto-scroll after sending message
* feat: UI improvements
* fix: Settings link
* feat: UI improvements
* fix: better UI spacing
* fix: Remove unneeded logic
* fix: Chat Processing Info UI rendering
* feat: Improve mobile UI
* feat: UI improvement
* fix: Conditional transition delay for Chat Messages based on route from
* fix: Delay mobile sidebar collapse for smoother transitions
* fix: Mobile scroll down button + sidebar pointer events
* fix: Mobile UI
* fix: Auto scrolling
* fix: Implement dynamic height calculations for chat auto-scroll positioning and UI elements
* fix: Retrieve `autofocus` for Chat Form textarea
* fix: Use proper class
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
* refactor: extract scroll-to-bottom logic and fix message send flow
* fix: update viewport store usage and remove conflicting autofocus
* feat: add accessibility labels to scroll down button
* fix: correct HTML structure in sidebar empty states
* fix: dynamically toggle processing info visibility
* chore: remove commented exports and fix formatting
* fix
* fix: Mobile Chat Form Add Action Sheet interactions
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-06-24 10:21:33 +02:00
Pascal
099b579acb
ui: model status and load progress via /models/sse feed ( #24878 )
...
* ui: model status and load progress via /models/sse feed
* ui: centralize SSE wire-format delimiters into shared constants for the chat and /models/sse parsers
* ui: type /models/sse event names as a ServerModelsSseEventType enum
Address review from allozaur
2026-06-22 15:55:30 +02:00
Amos Wong
1fd6dfe9f3
ui : fix ui clipping in mobile due to incorrect height setup ( #24605 )
2026-06-14 16:15:51 +02:00
Aleksander Grygier
f7ca93d12c
ui: PWA support ( #23871 )
...
* feat: Add basic PWA support and service worker for offline caching
* feat: Vite PWA implementation WIP
* feat: Improve PWA icons generation
* feat: Add PWA workbox to server routes
* feat: Include `version.json` in static assets
* feat: Add HTTP cache headers for PWA static assets
* feat: Update app name for `apple-mobile-web-app-title`
* feat: Implement PWA versioning and automatic update detection
* chore: Update `.gitignore` files
* feat: Splash Screens
* feat: Add dark mode favicon support
* refactor: Cleanup
* fix: Use dark logo for dark splash screens
* refactor: Simplify favicons SVG code
* fix: Adjust caching and polling for reliable service worker updates
* fix: Add missing favicon entry
* fix: Align PWA service worker configuration with SvelteKit build structure
* fix: Replace hashed bundle paths with versioned static paths
* test: Add PWA tests
* ci: Add build output for unit tests
* refactor: Cleanup
* fix: Server build & release versioning
* chore: Update package-lock.json
* chore: Increase PWA cache size
* chore: Update packages
* feat: Update favicons
* refactor: Post-merge fix
* feat: support explicit build version for PWA cache busting
* fix: CI
* feat: Improve PWA Refresh Alert UI
* feat: Add toggleable build version display
* refactor: Cleanup
* feat: Add version mismatch detection and manual app reload
* refactor: replace dynamic imports with static
* refactor: Cleanup
* feat: Add safe space for `pwa-<size>.png` rendered icons
* fix: use relative paths for PWA assets to support base path deployment
* feat: add PWA mode detection via URL query parameter
* feat: Use ?cache=true for SW-cached PWA assets
* refactor: Build process cleanup
* refactor: Decouple PWA versioning and remove ?cache=true workaround
* chore: Update README logo
* feat: Include PWA Assets generation in build script
* refactor: `usePwa` hook for core layout
* fix: Relativize base vite plugin
* fix: remove unnecessary backslash escapes in test regexes
* test: update static asset paths for API Key test
* refactor: Move SvelteKit PWA Options config to constants
* ui: fix update notification never appearing
Keep the PWA hook object intact instead of destructuring needRefreshByStorage,
which freezes the reactive getter. Also exclude loading.html from PWA
precache to prevent 404 errors and broken SW installation.
2026-06-12 15:53:26 +02:00
Pascal
efbacf8d21
ui: fix mobile chat form overflow and bust stale bundle cache ( #24158 )
2026-06-09 11:12:58 +02:00
Pascal and Aleksander Grygier
d749821db3
webui: add custom CSS injection via config ( #23904 )
...
* webui: add custom CSS injection via config
register a customCSS setting in the Developer section under Custom JSON,
syncable so it rides the existing ui-config pass through. inject the value
into a single style element in the head, reactive on the setting. lets an
operator theme a prebuilt binary through --ui-config without rebuilding,
and lets a user set it from the settings panel.
* ui: address review from @niutech and @allozaur, rename custom JSON key and CSS field
* ui: address review from @allozaur, move custom CSS injection to a style tag in svelte:head
* ui: inject custom CSS through a svelte action instead of a bound element
move the textContent write into a use: action on the head style node.
the action is the idiomatic way to touch a node, so the no-dom-manipulating
lint rule is satisfied without a disable. value stays text through
textContent, never parsed as HTML.
* Update tools/ui/src/lib/constants/settings-keys.ts
Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com >
* ui: address review from @allozaur, rename custom config key to customJson with migration
rename the custom config key to customJson across the type, the chat
request builder, the settings save check and the custom tools reader,
keeping the custom API param name unchanged. add a non destructive
migration that copies the legacy custom key to customJson at startup.
only render the head style tag when custom CSS is set.
---------
Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com >
2026-05-30 23:49:31 +02:00
Aleksander Grygier
5028447384
ui: Refactor isMobile as reactive value in viewport store ( #23330 )
...
* refactor: `isMobile` as reactive value in `viewport` store
* refactor: Use Svelte media query for the viewport store
2026-05-20 10:52:00 +02:00
Aleksander Grygier
67ace021da
refactor: Chat Screen UI rendering ( #23333 )
2026-05-19 22:38:42 +02:00
Aleksander Grygier
6db130445d
ui: Bump packages + address build warnings ( #23300 )
...
* chore: Update vulnerable packages
* chore: Formatting
* refactor: Update Tailwind CSS imports
* ci: Use `ubuntu-latest` for Unit/E2E UI tests
* chore: Bump package
* fix: Add missing tag
* refactor: Enums files naming
2026-05-19 10:16:04 +02:00
Aleksander Grygier
1ff0fc1384
ui: Refactor models store, MCP service, and gate logs behind VITE_DEBUG ( #23236 )
...
* refactor: Scope console logs to `DEV` + `VITE_DEBUG` env vars
* refactor: skip MCP proxy probe when no server requires it
* refactor: suppress expected disconnect errors during MCP client shutdown
* refactor: Deduplicate requests
* refactor: deduplicate model fetching across ROUTER and MODEL modes
* refactor: Clean up models logic
* chore: Add `.env.example` file
* refactor: replace client-side CORS proxy probe with server status flag
* refactor: Post-review fixes
* test: add vitest client setup with API fetch mocks
2026-05-18 16:09:40 +02:00
Pascal
366c5e2a3b
ui: untrack settings sync in props effect to prevent reactive loop ( #23127 )
2026-05-16 11:25:34 +02:00
Aleksander Grygier and Xuan Son Nguyen
59778f0196
ui: Restructure repo to use tools/ui folder and ui / UI / llama-ui / LLAMA_UI naming ( #23064 )
...
* webui: Move static build output from `tools/server/public` to `build/ui` directory
* refactor: Move to `tools/ui`
* refactor: rename CMake variables and preprocessor defines
- Rename LLAMA_BUILD_WEBUI -> LLAMA_BUILD_UI (old kept as deprecated)
- Rename LLAMA_USE_PREBUILT_WEBUI -> LLAMA_USE_PREBUILT_UI (old kept as deprecated)
- Backward compat: old vars auto-forward to new ones with DEPRECATION warning
- Rename internal vars: WEBUI_SOURCE -> UI_SOURCE, WEBUI_SOURCE_DIR -> UI_SOURCE_DIR, etc.
- Rename HF bucket: LLAMA_WEBUI_HF_BUCKET -> LLAMA_UI_HF_BUCKET
- Emit both LLAMA_BUILD_WEBUI and LLAMA_BUILD_UI preprocessor defines
- Emit both LLAMA_WEBUI_DEFAULT_ENABLED and LLAMA_UI_DEFAULT_ENABLED
* refactor: rename CLI flags (--webui -> --ui) with backward compat
- Add --ui/--no-ui (old --webui/--no-webui kept as deprecated aliases)
- Add --ui-config (old --webui-config kept as deprecated alias)
- Add --ui-config-file (old --webui-config-file kept as deprecated alias)
- Add --ui-mcp-proxy/--no-ui-mcp-proxy (old --webui-mcp-proxy kept as deprecated)
- Add new env vars: LLAMA_ARG_UI, LLAMA_ARG_UI_CONFIG, LLAMA_ARG_UI_CONFIG_FILE, LLAMA_ARG_UI_MCP_PROXY
- C++ struct fields: params.ui, params.ui_config_json, params.ui_mcp_proxy added alongside old fields
- Backward compat: old fields synced to new ones in g_params_to_internals
* refactor: update C++ server internals with backward compat
- Rename json_webui_settings -> json_ui_settings (both kept in server_context_meta)
- Rename params.webui usage -> params.ui (both synced, old still works)
- JSON API emits both "ui"/"ui_settings" and "webui"/"webui_settings" keys
- Server routes use params.ui_mcp_proxy || params.webui_mcp_proxy
- Preprocessor guards use #if defined(LLAMA_BUILD_UI) || defined(LLAMA_BUILD_WEBUI)
* refactor: rename CI/CD workflows, artifacts, and build script
- Rename webui-build.yml -> ui-build.yml; artifact webui-build -> ui-build
- Rename webui-publish.yml -> ui-publish.yml; var HF_BUCKET_WEBUI_STATIC_OUTPUT -> HF_BUCKET_UI_STATIC_OUTPUT
- Rename server-webui.yml -> server-ui.yml; job webui-build/checks -> ui-build/checks
- Update server.yml: job/artifact refs webui-build -> ui-build
- Update release.yml: all webui-build/publish refs -> ui-build/publish; HF_TOKEN_WEBUI_STATIC_OUTPUT -> HF_TOKEN_UI_STATIC_OUTPUT
- Update server-self-hosted.yml: webui-build -> ui-build
- Update build-self-hosted.yml: HF_WEBUI_VERSION -> HF_UI_VERSION
- Rename webui-download.cmake -> ui-download.cmake (internal refs updated)
- Update labeler.yml: server/webui -> server/ui path label
* docs: update CODEOWNERS and server README docs
- Update CODEOWNERS: team ggml-org/llama-webui -> ggml-org/llama-ui, path /tools/server/webui/ -> /tools/ui/
- Update server README.md: CLI tables show --ui flags with deprecated --webui aliases
- Update server README-dev.md: "WebUI" -> "UI", paths updated to tools/ui/
* fix: Small fixes for UI build
* fix: CMake.txt syntax
* chore: Formatting
* fix: `.editorconfig` for llama-ui
* chore: Formatting
* refactor: Use `APP_NAME` in Error route
* refactor: Cleanup
* refactor: Single migration service
* make llama-ui a linkable target
* fix: UI Build output
* fix: Missing change
* fix: separate llama-ui npm build output into build/tools/ui/dist subfolder + use cmake npm build instead of downloading ui-build.yml artifacts in CI
* refactor: UI workflows cleanup
---------
Co-authored-by: Xuan Son Nguyen <son@huggingface.co >
2026-05-16 02:02:40 +02:00