fix: Show all tags in LoRA Pool without limit (#819)

- Backend: Support limit=0 to return all tags in top-tags API
- Frontend: Remove tags limit setting and fetch all tags by default
- UI: Implement virtual scrolling in TagsModal for performance
  - Initial display 200 tags, load more on scroll
  - Show all results when searching
- Remove lora_pool_tags_limit setting to simplify UX

Fixes #819
This commit is contained in:
Will Miao
2026-02-19 09:59:08 +08:00
parent b9516c6b62
commit e8b37365a6
6 changed files with 144 additions and 36 deletions

View File

@@ -648,7 +648,7 @@ class ModelQueryHandler:
async def get_top_tags(self, request: web.Request) -> web.Response:
try:
limit = int(request.query.get("limit", "20"))
if limit < 1 or limit > 100:
if limit < 0:
limit = 20
top_tags = await self._service.get_top_tags(limit)
return web.json_response({"success": True, "tags": top_tags})

View File

@@ -1448,7 +1448,7 @@ class ModelScanner:
return None
async def get_top_tags(self, limit: int = 20) -> List[Dict[str, any]]:
"""Get top tags sorted by count"""
"""Get top tags sorted by count. If limit is 0, return all tags."""
await self.get_cached_data()
sorted_tags = sorted(
@@ -1457,6 +1457,8 @@ class ModelScanner:
reverse=True
)
if limit == 0:
return sorted_tags
return sorted_tags[:limit]
async def get_base_models(self, limit: int = 20) -> List[Dict[str, any]]: