mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
## Summary Implement the new design for template library ## Changes - What - New sort option: `Popular` and `Recommended` - New category: `Popular`, leverage the `Popular` sorting - Support add category stick to top of the side bar - Support template customized visible in different platform by `includeOnDistributions` field ### How to make `Popular` and `Recommended` work Add usage-based ordering to workflow templates with position bias correction, manual ranking (searchRank), and freshness boost. New sort modes: - "Recommended" (default): usage × 0.5 + searchRank × 0.3 + freshness × 0.2 - "Popular": usage × 0.9 + freshness × 0.1 ## Screenshots (if applicable) New default ordering: <img width="1812" height="1852" alt="Selection_2485" src="https://github.com/user-attachments/assets/8f4ed6e9-9cf4-43a8-8796-022dcf4c277e" /> ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-7062-feat-usage-based-template-ordering-2bb6d73d365081f1ac65f8ad55fe8ce6) by [Unito](https://www.unito.io) Popular category: <img width="281" height="283" alt="image" src="https://github.com/user-attachments/assets/fd54fcb8-6caa-4982-a6b6-1f70ca4b31e3" /> --------- Co-authored-by: Yourz <crazilou@vip.qq.com> Co-authored-by: GitHub Action <action@github.com>
67 lines
1.9 KiB
Markdown
67 lines
1.9 KiB
Markdown
# Template Ranking System
|
||
|
||
Usage-based ordering for workflow templates with position bias normalization.
|
||
|
||
Scores are pre-computed and normalized offline and shipped as static JSON (mirrors `sorted-custom-node-map.json` pattern for node search).
|
||
|
||
## Sort Modes
|
||
|
||
| Mode | Formula | Description |
|
||
| -------------- | ------------------------------------------------ | ---------------------- |
|
||
| `recommended` | `usage × 0.5 + internal × 0.3 + freshness × 0.2` | Curated recommendation |
|
||
| `popular` | `usage × 0.9 + freshness × 0.1` | Pure user-driven |
|
||
| `newest` | Date sort | Existing |
|
||
| `alphabetical` | Name sort | Existing |
|
||
|
||
Freshness computed at runtime from `template.date`: `1.0 / (1 + daysSinceAdded / 90)`, min 0.1.
|
||
|
||
## Data Files
|
||
|
||
**Usage scores** (generated from Mixpanel):
|
||
|
||
```json
|
||
// In templates/index.json, add to any template:
|
||
{
|
||
"name": "some_template",
|
||
"usage": 1000,
|
||
...
|
||
}
|
||
```
|
||
|
||
**Search rank** (set per-template in workflow_templates repo):
|
||
|
||
```json
|
||
// In templates/index.json, add to any template:
|
||
{
|
||
"name": "some_template",
|
||
"searchRank": 8, // Scale 1-10, default 5
|
||
...
|
||
}
|
||
```
|
||
|
||
| searchRank | Effect |
|
||
| ---------- | ---------------------------- |
|
||
| 1-4 | Demote (bury in results) |
|
||
| 5 | Neutral (default if not set) |
|
||
| 6-10 | Promote (boost in results) |
|
||
|
||
## Position Bias Correction
|
||
|
||
Raw usage reflects true preference AND UI position bias. We use linear interpolation:
|
||
|
||
```
|
||
correction = 1 + (position - 1) / (maxPosition - 1)
|
||
normalizedUsage = rawUsage × correction
|
||
```
|
||
|
||
| Position | Boost |
|
||
| -------- | ----- |
|
||
| 1 | 1.0× |
|
||
| 50 | 1.28× |
|
||
| 100 | 1.57× |
|
||
| 175 | 2.0× |
|
||
|
||
Templates buried at the bottom get up to 2× boost to compensate for reduced visibility.
|
||
|
||
---
|