Problem
When channel entries carry multiple logical fields (e.g. <name> <group>, <path> <symbol>, or <name> <id>), the fuzzy search operates on the entire concatenated string. There's no way to target a specific field independently.
Feature
Allow channel definitions to declare "columns" in the results pane. Each column maps to a named field of the entry and can optionally participate in fuzzy matching via a prompt modifier (similar to how %p already works for path filtering in Helix, see https://docs.helix-editor.com/pickers.html#filtering-picker-results).
- Display-only columns — extra fields rendered in the results pane but not included in the default fuzzy match (useful for annotations like timestamps, tags, counts).
- Searchable columns — fields that can be targeted explicitly in the prompt using a
%<key> modifier.
Example prompt syntax:
<term for col1> %<specifier> <term for col2>
This would fuzzy-match <term for col1> against the primary column and <term for col2> against the namespace column independently.
Examples
A custom channel emitting <project> <namespace> pairs could declare:
[[channel.entries]]
columns = [
{ field = "name", searchable = true },
{ field = "group", searchable = true, modifier = "g" },
]
Prompt usage:
→ fuzzy-filters entries where the name matches foo and the groups matches bar.
For a file+symbol channel:
columns = [
{ field = "path", searchable = true, modifier = "p" },
{ field = "symbol", searchable = true },
{ field = "kind", searchable = false }, # display-only (e.g. "fn", "struct")
]
Prompt:
→ symbols matching parse inside files matching src/parser, with kind shown as an annotation column.
Additional context
This would make television significantly more powerful for structured data sources where entries are naturally multi-dimensional. The %p convention already feels familiar to Helix users, so extending it to arbitrary named columns should be intuitive. Display-only columns also open the door to richer and visually more appealing UIs.
Just putting this out here. I haven't thought about the implementation and would be happy to know what others think.
Problem
When channel entries carry multiple logical fields (e.g.
<name> <group>,<path> <symbol>, or<name> <id>), the fuzzy search operates on the entire concatenated string. There's no way to target a specific field independently.Feature
Allow channel definitions to declare "columns" in the results pane. Each column maps to a named field of the entry and can optionally participate in fuzzy matching via a prompt modifier (similar to how
%palready works for path filtering in Helix, see https://docs.helix-editor.com/pickers.html#filtering-picker-results).%<key>modifier.Example prompt syntax:
This would fuzzy-match
<term for col1>against the primary column and<term for col2>against thenamespacecolumn independently.Examples
A custom channel emitting
<project> <namespace>pairs could declare:Prompt usage:
→ fuzzy-filters entries where the name matches
fooand the groups matchesbar.For a file+symbol channel:
Prompt:
→ symbols matching
parseinside files matchingsrc/parser, withkindshown as an annotation column.Additional context
This would make television significantly more powerful for structured data sources where entries are naturally multi-dimensional. The
%pconvention already feels familiar to Helix users, so extending it to arbitrary named columns should be intuitive. Display-only columns also open the door to richer and visually more appealing UIs.Just putting this out here. I haven't thought about the implementation and would be happy to know what others think.