feat(desktop): add PFTerminal as a tier-2 preset harness - #4956
Draft
0xzoz wants to merge 1 commit into
Draft
Conversation
PFTerminal is an open-source, multi-provider coding terminal built on the Codex CLI. It exposes the Codex app-server protocol rather than ACP, so it reaches Buzz through `pfterminal-acp` — a launcher that ships with PFTerminal and points the codex-acp bridge at the PFTerminal binary. That indirection is why `underlying_cli` is set to "pfterminal": the CLI and the adapter install separately, so a user who has PFTerminal but not the bridge should see AdapterMissing rather than NotInstalled. Includes the catalog copy entry, since every other preset carries one and its absence would render PFTerminal as the only description-less runtime in the gallery. The logo is the square Post Fiat glyph extracted from PFTerminal's wordmark; provenance and the exact modifications are recorded in CREDITS.md. It brings its own dark plate, so it needs no per-id background class in RuntimeIcon. Signed-off-by: 0xzoz <zeroexzoz@gmail.com>
This was referenced Aug 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds PFTerminal as a tier-2 preset harness — an open-source, multi-provider coding terminal built on the Codex CLI.
PFTerminal exposes the Codex app-server protocol rather than ACP, so it cannot be registered as a harness directly. It reaches Buzz through
pfterminal-acp, a launcher that ships with PFTerminal and points the maintainedcodex-acpbridge at the PFTerminal binary viaCODEX_PATH:That indirection is why
underlying_cli: Some("pfterminal")is set — the CLI and the adapter install separately, so a user who has PFTerminal but not the bridge getsAdapterMissingrather thanNotInstalled. This follows the existingamp/amp-acpprecedent.A distinct
pfterminal-acpcommand is used rather than registeringcodex-acpwithCODEX_PATHset inenv, because Buzz's built-in Codex runtime is already defined aroundcodex-acp; sharing that executable between two runtimes risks incorrect runtime identity and merged usage attribution.Also adds the
harnessCatalogCopy.tsentry, since every other preset carries one and its absence would leave PFTerminal as the only description-less runtime in the gallery. The description is a single vendor-sourced category sentence with provenance cited inline, per that file's stated content policy.Blocked on an upstream release.
pfterminal-acpis implemented and under review upstream in agtico/PfTerminal#78, but is not yet in a published PFTerminal release. Opening as a draft so the approach can be reviewed; I'll mark it ready once that lands and ships, so the preset never points at a command users cannot install. Happy to close and re-open later if you'd rather not carry a draft.Related issue
#4958 — opened per CONTRIBUTING so a maintainer can acknowledge the approach before this is reviewed. The open question there is whether you want PFTerminal in the preset catalog at all; happy to close both if not.
No duplicates — searched open and closed issues and PRs for
pfterminal,PfTerminal, andcodex-acp preset.Testing
The transport chain was exercised end-to-end against a real PFTerminal install (0.1.20) with
codex-acp1.1.9, driving the compiledpfterminal-acpbinary over stdio:initializeprotocolVersion: 1, authMethods[api-key, chat-gpt]session/newsession/promptstopReason: end_turn~/.pfterminal; stock Codex's~/.codexuntouchedRepo checks on this change:
rustfmt --checkonpresets.rs— cleanpnpm exec tsc --noEmit— cleanpnpm exec biome checkon both changed.ts/.tsxfiles — cleanpfterminal.svg— validated as well-formed XML and rasterised at 32px (theh-8 w-8gallery size) and 128px to confirm the glyph stays legibleI could not run
cargo checkondesktop/src-tauriin my environment — the Linux Tauri system libraries (glib-2.0et al.) are not installed on that machine — so the Rust change is syntax- and format-verified rather than type-checked locally. It is aPresetHarnessstruct literal identical in shape to the ten existing entries, and CI will type-check it.UI change: the runtime gallery gains one entry. The bundled mark is the square Post Fiat glyph extracted from PFTerminal's wordmark; the full lockup is 720×220 and would letterbox to nothing in a 32px square. It carries its own dark plate, so unlike
ompandgrokit needs no per-id background class inRuntimeIcon. Provenance, upstream commit, license (Apache-2.0), and the exact modifications are recorded inCREDITS.md.