Skip to content

Releases

v0.3.0

Choose a tag to compare

@Yivas Yivas released this 01 Nov 12:18

Global is now the default scope for menu writes and bare command profile ids. The optional added-text row separates the profile and its text more clearly, with wrapping that preserves literal content without changing stored messages or provider requests.

Changed

  • The menu starts with Save changes to: Global, even in trusted projects. Choosing Project explicitly still requires trust and is remembered for the session.
  • Bare command profile ids resolve in Global, with no fallback to Project. /push unbind <id> removes global bindings only unless --scope project is supplied.
  • display: added uses a separated Push row with subdued profile metadata, Before: and After: labels and a gutter. Long Unicode text wraps without interpreting Markdown or trimming profile whitespace. Terminal controls are neutralized for display only. display: hidden still draws nothing.

Upgrade from 0.2.0

Use project:<id> in commands when you mean a project profile. To remove a project binding, pass --scope project. For menu writes, choose Settings → Save changes to: Project explicitly.

/push default <id> --scope project still looks up that bare id in Project. For /push bind <id> --scope project, the bare id is Global and the binding is saved in the project config. An explicit profile reference stays explicit even when --scope selects a different destination config.

Existing files, saved selections and resolution precedence are unchanged. Nothing is moved or migrated. Project access still requires trust, and presentation changes do not alter messages already stored or sent.

Compatibility and verification

Tested baseline: Pi 1.4.0 with its built-in Anthropic Messages, OpenAI Responses and Google adapters and a simulated transport. Local runs used Node.js 24.22.1; development requires Node.js 22.19.0 or newer. Pi supplies both declared host peers, including its terminal UI module; neither is bundled.

The full suite passed 285/285 tests with coexistence and no skips before the final wrapping-performance correction. After that correction, lint and typecheck passed, the affected extension tests passed 22/22, the provider cache matrix passed 24/24 and independent presentation checks passed 6/6. The full suite was not repeated after that correction or the metadata update.

The registered renderer was checked live and reopened at 40, 80 and 120 columns, including a 60 KB Unicode line, spaces, blank lines, literal Markdown and terminal controls. These component checks do not verify the full Pi screen, actual terminal contrast or resize behaviour. No real provider calls or cache hits were measured. See Compatibility for scope and limits.

Install or update

pi install npm:pi-push-prompts@0.3.0

Reload Pi after updating an active session. Project-only installation remains available with --local and requires project trust.

Full changelog · Compare v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@Yivas Yivas released this 01 Nov 01:41

Version 0.2.0 of pi-push-prompts: the /push menu is sectioned, and creating a
profile takes a human name.

Highlights

  • /push opens a sectioned menu whose title states the selection the session
    keeps (Active, with its origin: session, auto or default) and the profile
    armed for the next message (Next). Sections cover the session profile, the
    next-message profile, the profiles, the model bindings, the settings and the
    read-only reports. Esc and Back return one level; Esc at the title closes.
  • Every setting is changed from the menu, with no subcommand to type: selection,
    defaultProfile, subagents, added text, inheritGlobalBindings, the
    config.json the menu writes to (chosen once per session), bindings for the
    current model and the default profile. Rows show Name: value…, mark the
    value in force as (current), name an inherited project value as
    (from global) and offer Use global value (…) to remove a project override.
  • The menu's create entry asks for a name and derives the id when it can,
    keeping the typed name as the profile's description. /push new <id> stays
    strict and refuses an id that differs only in case from an existing profile.
  • The /push <subcommand> commands, the CLI flags and the text fallback without
    a terminal keep their behaviour.

Tests and baseline

  • npm run check passes 280 tests with PI_PROMPT_PROFILES_CHECKOUT pointing
    at the reference checkout and 266 without it (the coexistence cases register
    one skip instead of running). Pi 1.4.0, Node.js 24.22.1 locally; the workflow
    also runs Node.js 22.19.0 and 24.
  • The menu is driven through the real runner, and the searchable picker's key
    handling is exercised on the component itself. Terminal painting, colours and
    the full Pi screen are not covered; docs/compatibility.md lists what each
    run leaves out.

Cache guarantee, and what it does not cover

  • For every send, the serialized provider request differs from the request Pi
    would build with no extension for the same session and message only by the
    text inserted into that new message. Measured byte for byte against a
    plugin-free baseline over the same saved session on Pi's Anthropic Messages,
    OpenAI Responses and Google Generative AI adapters, including the menu cases
    that change selection, arm and cancel once, write settings and read every
    report between sends.
  • No cache hit, cache counter or provider retention is promised. Compaction
    rewrites the history Pi sends, a model or provider switch starts a new
    request shape, and another extension can change messages or request fields.
  • Profile text is inserted into the user message and cannot change tools,
    permissions, model, provider or the system prompt. Project configuration and
    profiles are read only when Pi trusts the directory. The extension fails
    closed: a diagnostic about any profile or config file stops every send until
    it is fixed, and /push off always sends.

v0.1.0

Choose a tag to compare

@Yivas Yivas released this 31 Oct 22:07

First public release of pi-push-prompts, an MIT-licensed Pi extension that inserts profile text into each new user message — before it, after it, or both — without touching the system prompt, tools, model or history.

pi install npm:pi-push-prompts@0.1.0

Highlights

  • prepend.md and append.md profiles with optional single-parent inheritance
  • Selection per session or from provider/model bindings, plus a one-shot once profile
  • The /push commands and the --push-profile, --push-auto and --push-off flags
  • A versioned config.json with a read-compare-replace write path
  • Read-only presentation of the original text, configurable with display

Verification

npm run check passes 246 tests on Pi 1.4.0 and Node.js 24.22.1 with a simulated outbound transport, 232 of them without the coexistence checkout. For Anthropic Messages, OpenAI Responses and Google, the serialized provider request differs from a plugin-free baseline only by the inserted text.

Limits

No cache hit or provider retention is promised. Terminal painting, real provider traffic, a real subagent child process and platforms other than Windows were not part of the recorded runs. CHANGELOG.md and docs/compatibility.md carry the full list.