10 KiB
status, claimed-by, claimed-at, parent, blocked-by, resolved-at, tags
| status | claimed-by | claimed-at | parent | blocked-by | resolved-at | tags | |
|---|---|---|---|---|---|---|---|
| resolved | 019fba91-eabf-76ae-b086-a37ac061d6e8 | 2026-08-01T00:30:00-04:00 | 082-pi-ui-bottom-anchored-editor-research | 2026-08-01T00:36:00-04:00 |
|
Existing Pi extension layout survey
Question
Do existing Pi extensions or public examples already implement bottom-anchored prompt/editor layout, above-editor autocomplete overlays, footer replacement, or compact prompt-area status patterns that should change the Pi UI customization plan?
Scope
Survey the bundled Pi examples, known local research clones, and public repositories discoverable without authenticated code search. Distinguish official extension APIs from private implementation hooks. Record whether any candidate is durable enough for dotfiles-managed use or only useful as a throwaway spike.
Findings
The most relevant public extension is nicobailon/pi-powerline-footer.
It implements a polished powerline-style status surface, replaces the footer with an empty renderer, uses above/below editor widgets for primary and secondary rows, and replaces the editor component with a custom BashModeEditor that wraps the default editor behavior.
It has configurable placement for the primary row, but placement is still limited to Pi's widget slots above or below the editor.
Sources: /tmp/pi-existing-extension-survey/repos/nicobailon__pi-powerline-footer/README.md; /tmp/pi-existing-extension-survey/repos/nicobailon__pi-powerline-footer/index.ts.
pi-powerline-footer is useful prior art for our compact status design.
It covers model, thinking, path, git, context usage, token/cost information, custom status items, welcome overlays, and editor rendering tweaks.
It does not implement a bottom-docked editor slot through extension APIs.
Its README explicitly describes that Pi owns native layout and the extension supplies widgets and custom editor integrations.
Sources: /tmp/pi-existing-extension-survey/repos/nicobailon__pi-powerline-footer/README.md; /tmp/pi-existing-extension-survey/repos/nicobailon__pi-powerline-footer/index.ts.
pi-powerline-footer includes a custom editor that modifies prompt rendering and shell-mode behavior, but not autocomplete placement above the editor.
Its BashModeEditor.render() calls super.render(width) and then injects ghost-text suggestions into the editor content line for shell completion.
It also wraps Pi's autocomplete provider to compose shell-aware suggestions with Pi's default provider, but it does not move Pi's dropdown to an overlay above the prompt.
Sources: /tmp/pi-existing-extension-survey/repos/nicobailon__pi-powerline-footer/bash-mode/editor.ts; /tmp/pi-existing-extension-survey/repos/nicobailon__pi-powerline-footer/editor-composition.ts; /tmp/pi-existing-extension-survey/repos/nicobailon__pi-powerline-footer/index.ts.
The most relevant non-extension prior art is 0x-rya/pi-local-mods.
Its README says the useful changes are intentionally not Pi extensions because they patch internals not exposed to extensions, including transcript scrolling and selection.
Its patch introduces FixedBottomScrollLayout, separates scroll children from pinned children, replaces Pi's normal child stack with that fixed layout, and pins pending messages, terminal logs, status, widgets, editor, below-editor widgets, and footer while the header/resources/chat area scrolls above them.
That is structurally close to the desired bottom-anchored editor model.
Sources: /tmp/pi-existing-extension-survey/repos/0x-rya__pi-local-mods/README.md; /tmp/pi-existing-extension-survey/repos/0x-rya__pi-local-mods/scripts/apply.py.
pi-local-mods also patches Pi's custom editor internals to support border providers.
It adds setTopBorderProvider() and setBottomBorderProvider(), frames the editor with rounded borders, and lets interactive mode put main footer/status content into editor borders.
This is directly relevant to the idea of making status visually attached to the prompt without spending separate rows, but it confirms the mechanism is currently a private Pi patch rather than a supported extension API.
Source: /tmp/pi-existing-extension-survey/repos/0x-rya__pi-local-mods/scripts/apply.py.
Several public extensions implement footer replacement or status surfaces, but they stay inside the documented extension API.
Examples include @fgladisch/pi-footer, luongnv89/statusline-pi, and tomsej/pi-ext's custom footer.
They use ctx.ui.setFooter(), ctx.ui.setWidget(), or ctx.ui.setEditorComponent() for prompt prefixes and compact lines, but none of the inspected implementations create a true bottom-docked editor layout.
Sources: /tmp/pi-existing-extension-survey/repos/fgladisch__pi-extensions/packages/pi-footer/extensions/index.ts; /tmp/pi-existing-extension-survey/repos/fgladisch__pi-extensions/packages/pi-footer/README.md; /tmp/pi-existing-extension-survey/repos/luongnv89__pi-extensions/extensions/statusline-pi/src/index.ts; /tmp/pi-existing-extension-survey/repos/tomsej__pi-ext/extensions/custom-footer/custom-footer.ts.
Several public extensions use overlays, including floating terminals and git-change viewers.
They demonstrate that overlays can be centered or otherwise positioned for temporary UI, and nicobailon/pi-interactive-shell exposes configurable overlay anchors.
They do not replace the main prompt with a durable bottom overlay, and they do not solve autocomplete placement for the built-in editor.
Sources: /tmp/pi-existing-extension-survey/repos/joyanhui__pi-extension/pi-ext-float-term/float-term.ts; /tmp/pi-existing-extension-survey/repos/joyanhui__pi-extension/pi-ext-git-changes/git-changes.ts; /tmp/pi-existing-extension-survey/repos/nicobailon__pi-interactive-shell/config.ts.
Several custom editor extensions alter editor rendering, but they do not change the editor slot position.
@fgladisch/pi-footer adds a prompt prefix by wrapping CustomEditor.render().
joyanhui/pi-ext-bar-cursor strips the fake block cursor so the hardware bar cursor can show.
These are useful examples of safe-ish render wrappers, but they still live inside Pi's existing editor container.
Sources: /tmp/pi-existing-extension-survey/repos/fgladisch__pi-extensions/packages/pi-footer/extensions/index.ts; /tmp/pi-existing-extension-survey/repos/joyanhui__pi-extension/pi-ext-bar-cursor/bar-cursor.ts.
Unauthenticated GitHub repository search and npm metadata found many Pi extension repositories, but the layout-related ones above were the relevant hits for this question.
GitHub code search requires authentication, so the survey used repository search, cloned likely candidates, bundled Pi examples, and local research clones.
Sources: /tmp/pi-existing-extension-survey/github-repos-earendil-pi-coding-agent.json; /tmp/pi-existing-extension-survey/github-repos-pi-coding-agent.json; /tmp/pi-existing-extension-survey/npm-earendil-pi-coding-agent.json; /tmp/pi-existing-extension-survey/repos/BubblePtr__awesome-pi/README.en.md.
Answer
Existing extensions do not appear to provide a durable extension-only solution for a bottom-anchored prompt editor with above-editor autocomplete overlay. They do provide two useful pieces of prior art:
pi-powerline-footershows how far a polished compact prompt/status surface can go with public extension APIs.pi-local-modsshows that the desired bottom-pinned layout is feasible as a Pi internals patch, specifically by replacing the top-flow child stack with a fixed-bottom scroll layout and by adding editor border status providers.
This changes the plan from “maybe patch Pi” to “there is already public prior art for exactly the kind of Pi patch needed.” The permanent design should avoid fake spacer widgets and should either:
- keep the compact status as an extension-only improvement while accepting current Pi layout limits, or
- build a local/upstream Pi patch inspired by
FixedBottomScrollLayoutand editor border providers.
Implications
For an extension-only implementation, reuse the pi-powerline-footer pattern rather than inventing all layout machinery from scratch.
That means widgets, hidden footer, custom editor rendering, and careful autocomplete-provider composition if needed.
For the preferred bottom-anchored behavior, write a separate Pi layout patch/spec. The patch should split scrollable transcript content from pinned input-area content and should treat autocomplete as part of the editor/input area rather than as a normal line appended below the prompt.
Limitations
GitHub code search was unavailable without authentication, so this was not an exhaustive public-code search. The survey cloned and inspected likely repositories from unauthenticated repository search, npm metadata, an awesome list, bundled Pi examples, and existing local research clones.
No private or unlisted extensions were inspected.
Citations
/tmp/pi-existing-extension-survey/repos/nicobailon__pi-powerline-footer/README.md./tmp/pi-existing-extension-survey/repos/nicobailon__pi-powerline-footer/index.ts./tmp/pi-existing-extension-survey/repos/nicobailon__pi-powerline-footer/bash-mode/editor.ts./tmp/pi-existing-extension-survey/repos/nicobailon__pi-powerline-footer/editor-composition.ts./tmp/pi-existing-extension-survey/repos/0x-rya__pi-local-mods/README.md./tmp/pi-existing-extension-survey/repos/0x-rya__pi-local-mods/scripts/apply.py./tmp/pi-existing-extension-survey/repos/fgladisch__pi-extensions/packages/pi-footer/README.md./tmp/pi-existing-extension-survey/repos/fgladisch__pi-extensions/packages/pi-footer/extensions/index.ts./tmp/pi-existing-extension-survey/repos/luongnv89__pi-extensions/extensions/statusline-pi/src/index.ts./tmp/pi-existing-extension-survey/repos/tomsej__pi-ext/extensions/custom-footer/custom-footer.ts./tmp/pi-existing-extension-survey/repos/joyanhui__pi-extension/pi-ext-bar-cursor/bar-cursor.ts./tmp/pi-existing-extension-survey/repos/joyanhui__pi-extension/pi-ext-float-term/float-term.ts./tmp/pi-existing-extension-survey/repos/joyanhui__pi-extension/pi-ext-git-changes/git-changes.ts./tmp/pi-existing-extension-survey/repos/nicobailon__pi-interactive-shell/config.ts./tmp/pi-existing-extension-survey/repos/BubblePtr__awesome-pi/README.en.md.