feat: host folder grouping for all host types#5358
Conversation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Allows users to assign hosts to named folders for visual grouping in the Proxy Hosts, Redirection Hosts, Streams, and 404 Hosts dashboards. - Add Folder field (CreatableSelect) to all four host edit modals, stored in meta.folder — no database migration required - Group hosts by folder in each table using TanStack Table v8 built-in grouping with a collapsible header row showing status counts - Hosts without a folder appear at the top as a flat list; named folders appear below, collapsed by default - Extend client-side search to match folder names alongside existing fields - Add renderRow escape-hatch to TableBody for custom grouped row rendering - Folder status indicators use Tabler status-lime/status-red dots, consistent with the existing host status column
feat: host folder grouping for all host types
|
Feel free to close if the contributing policy refuses Claude Code. This PR aims to cover this old issue #409 |
|
Docker Image for build 2 is available on DockerHub: Note Ensure you backup your NPM instance before testing this image! Especially if there are database changes. Warning Changes and additions to DNS Providers require verification by at least 2 members of the community! |
|
When is this coming to the main branch? I love it! |
Code ReviewOverviewThe feature design is sound — using Major — Duplication across all 4 Table components
Minor —
|
|
This conflicts with #5452 - it would be nice if you both reach a consensus on who's got the best approach. If not I will eventually have to make that call. |

Summary
meta.folder— no DB migration requiredTechnical details
meta.folder(string, optional) on existingmetaJSON column — zero schema changesTableBodyextended with arenderRowescape-hatch (backward-compatible) allowing custom grouped row renderingFolderFieldcombobox reads existing folder names from the React Query cache via prefix-matching (getQueriesData) for autocomplete — no extra API callsfolderaccessor column drives grouping;columnVisibility: { folder: false }keeps it out of rendered cellsBehaviour
Screenshots
Test plan
./scripts/start-dev→ open http://localhost:3081🤖 Generated with Claude Code