[feat] Rename license filter to 'Runs On' filter in template selector (#6543)

## Summary

Renamed the templates license filter to better reflect its actual
purpose - showing where a template executes (locally in ComfyUI vs
external/remote API).

The current "License" filter has been causing confusion with model
licensing terms (e.g., Apache vs flux-dev licensing). This PR clarifies
the filter's purpose by renaming it to "Runs On" and updating the
options to be more descriptive of inference location.

<img width="196" height="230" alt="image"
src="https://github.com/user-attachments/assets/8cbea263-f399-4945-82c1-357ec185f5a7"
/>

<img width="861" height="597" alt="image"
src="https://github.com/user-attachments/assets/af116876-d7a5-49c5-b791-1fda637ff3a3"
/>


## Changes

- **Filter name**: "License" → "Runs On"
- **Filter options**: 
  - "Open Source" → "ComfyUI"
  - "Closed Source (API Nodes)" → "External or Remote API"
- **Icon**: Changed from `file-text` to `server` for better visual
representation
- **Variable naming**: Updated all related variables, types, and tests
to use `runsOn` naming convention
- **Telemetry**: Updated metadata to track `selected_runs_on` instead of
`selected_licenses`

## Why "Runs On"?

- **Clear intent**: Users want to know if a template runs locally or
requires an API call
- **Avoids confusion**: Separates the concept from model licensing terms
- **Inclusive wording**: "Remote" is included alongside "API" to help
users who may not be familiar with API terminology
- **Cloud-agnostic**: "Runs On" works whether the app itself is running
locally or in the cloud

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6543-feat-Rename-license-filter-to-Runs-On-filter-in-template-selector-29f6d73d3650811f935bc1f3fce7d7ad)
by [Unito](https://www.unito.io)
This commit is contained in:
Christian Byrne
2025-11-02 16:35:42 -08:00
committed by GitHub
parent 8dfdac3fc4
commit 8df0a3885d
5 changed files with 49 additions and 52 deletions

View File

@@ -101,11 +101,11 @@ describe('useTemplateFiltering', () => {
searchQuery,
selectedModels,
selectedUseCases,
selectedLicenses,
selectedRunsOn,
filteredTemplates,
availableModels,
availableUseCases,
availableLicenses,
availableRunsOn,
filteredCount,
totalCount,
removeUseCaseFilter,
@@ -120,10 +120,7 @@ describe('useTemplateFiltering', () => {
'Portrait',
'Video'
])
expect(availableLicenses.value).toEqual([
'Open Source',
'Closed Source (API Nodes)'
])
expect(availableRunsOn.value).toEqual(['ComfyUI', 'External or Remote API'])
searchQuery.value = 'enterprise'
await nextTick()
@@ -133,7 +130,7 @@ describe('useTemplateFiltering', () => {
'api-template'
])
selectedLicenses.value = ['Closed Source (API Nodes)']
selectedRunsOn.value = ['External or Remote API']
await nextTick()
expect(filteredTemplates.value.map((template) => template.name)).toEqual([
'api-template'