Sticky one-line footer for pi coding agent. Optimized for high-signal, zero-wrap workflows.
What you get:
- always-visible session/repo + git branch (dirty/ahead/behind)
- compact right-side status strip from other extensions (
ctx.ui.setStatus(...)) - presets:
full/compact/ultra(cycleable) - optional i18n: re-render on
pi-i18nlocale change
If this helps your daily Pi loop, star the repo → it directly drives maintenance time.
Install with Pi, not npm:
pi install npm:pi-onelinerThen in Pi:
/reload
/oneliner
Project-local install (shared via .pi/settings.json):
pi install -l npm:pi-oneliner- picker UI (recommended):
/oneliner - show current state:
/oneliner show - switch preset:
/oneliner full|compact|ultra - toggle preset cycle:
/oneliner toggle - toggle status strip:
/oneliner statuses - zen mode:
/oneliner zen - self-check:
/oneliner doctor
/oneliner(opens picker UI)/oneliner show(orstatus)/oneliner full|compact|ultra/oneliner toggle/oneliner statuses/oneliner zen/oneliner doctor/oneliner save(orpersist)/oneliner reload/oneliner help
Config file:
~/.pi/agent/oneliner.json
Fast path:
/oneliner savewrites current preset + toggles/oneliner reloadreloads config
Common keys:
preset:"full" | "compact" | "ultra"shortCwd: show last 2 cwd segmentsmaxSessionLen,maxBranchLen,maxCwdLen: truncation controlspollGitMs: refresh git state without running git every rendermodelAliases: explicit alias overrides byprovider/idglob
Built-in model aliases cover common families:
gpt-5.4→5.4gpt-5.4-mini→5.4mgpt-5.4-codex→5.4cgpt-5.3-codex-spark→5.3sgpt-4o-mini→4omclaude-sonnet-4.5→s4.5claude-opus-4.5→o4.5gemini-2.5-pro→g2.5pgemini-2.5-flash→g2.5f
User modelAliases still win over built-ins.
Example (status allowlist):
{
"status": {
"enabled": true,
"right": {
"mode": "allowlist",
"allow": ["pi-semantic", "govern", "pi-i18n"],
"priority": ["pi-semantic"],
"maxVisible": 2
}
},
"modelAliases": {
"openai-codex/gpt-5.3-codex-spark": "5.3s"
}
}- config:
~/.pi/agent/oneliner.json
Oneliner does not hardcode other extension keys.
If your extension calls ctx.ui.setStatus(key, value), oneliner can render it.
Minimal pattern:
ctx.ui.setStatus("myext", "ok");
// later…
ctx.ui.setStatus("myext", "✕");Recommendations:
- keep values short (
ok,sync,95%,✕) - expose a stable key (don’t include versions)
- "Package not found"
- use full name:
npm:pi-oneliner
- use full name:
- Installed but
/onelineris unknown- run
/reload(or restart Pi)
- run
- Footer not showing
- oneliner only runs when
ctx.hasUIis true (Pi TUI)
- oneliner only runs when
Local dev install:
pi install -l <path-to-pi-oneliner>Then:
/reload
/oneliner
Release checklist:
- update
CHANGELOG.md - bump version:
npm version patch(or minor/major) npm publish
MIT