@ramarivera/pi-television
Pi extension that powers native Pi @file picking with background television-style search
Package details
Install @ramarivera/pi-television from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@ramarivera/pi-television- Package
@ramarivera/pi-television- Version
0.0.6- Published
- Jun 20, 2026
- Downloads
- 538/mo · 3/wk
- Author
- ramarivera
- License
- MIT
- Types
- extension
- Size
- 26.4 KB
- Dependencies
- 0 dependencies · 3 peers
Pi manifest JSON
{
"extensions": [
"./src/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@ramarivera/pi-television
Pi extension that keeps Pi's native file picking UX while replacing the default @file search path with a faster background television-style search.
Install
pi install npm:@ramarivera/pi-television@0.0.4
Modes
Default: native live picker
By default, typing @ in Pi keeps using Pi's native picker UI, but the suggestions come from this extension's background file search instead of launching the full-screen tv interface.
Optional: select dialog mode
If you want the simpler fallback flow, create .pi/television.json in your project:
{
"mode": "select-dialog"
}
That mode uses background search plus a native Pi select dialog when you trigger @.
Config
Project config lives at:
.pi/television.json
You can also set a user-level default at:
~/.pi/agent/television.json
Project config overrides user config.
Supported fields:
{
"mode": "native-live",
"includeFolders": true,
"maxResults": 20,
"refreshMs": 10000,
"gitTracked": true,
"gitRecencyDays": 14
}
includeFolders defaults to true, so folder paths are returned alongside files. Set it to false to restrict the picker to regular files only.
gitTracked defaults to true. When the project is inside a git work tree, the searcher runs best-effort git ls-files and git log --since=N in the background to build ranking signals:
- Tracked files rank above untracked ones (noise like generated/vendored files sinks to the bottom of the list).
- Files edited within the last
gitRecencyDaysdays (default14) get an additional boost.
Git is fully optional: if git is missing or the directory is not a repo, ranking silently falls back to fd-only fuzzy matching. Set "gitTracked": false to disable the git probes entirely.
Ranking
Results are ordered as exact path prefix, then basename prefix, then fuzzy match (pi-tui's fuzzyMatch, tokenized on whitespace and /). Within each bucket, ties are broken by git tier (tracked + recent > tracked > untracked), then path depth, then length, so the canonical file wins over vendored/test copies. Case-variant paths (e.g. Foo.ts / foo.ts) collapse to the best-ranked spelling.
The native picker shows the basename as the item label and the directory as the description, so the first column stays readable instead of truncating long paths.
Local Development
This checkout is live-enabled for Pi through:
.pi/extensions/television/index.ts
That shim imports the package entrypoint in src/index.ts, which imports the extension factory from src/extension.ts. Tests use the same symbol so local behavior, package behavior, and manual Pi behavior do not drift.
npm install
npm run check
npm test
npm run test:e2e
npm pack --dry-run
Publishing
Publishing uses GitHub Actions trusted publishing in .github/workflows/publish.yml.
Before the first publish, configure npm trusted publishing:
- owner/repo:
ramarivera/pi-television - workflow:
.github/workflows/publish.yml - environment: blank unless the workflow is changed to require one
No NPM_TOKEN is required for trusted publishing.