pi-timeline

Message timeline for pi: list a session's user messages and jump to any of them with exact, instant scrolling.

Packages

Package details

extension

Install pi-timeline from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-timeline
Package
pi-timeline
Version
0.1.1
Published
Sep 30, 2026
Downloads
347/mo · 10/wk
Author
hayston
License
MIT
Types
extension
Size
84 KB
Dependencies
0 dependencies · 2 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

pi-timeline

English | 简体中文

A message timeline overview built for the case where a long conversation in pi makes it painful to get back to a point: it lists the session's user messages (! shell commands included), filters them as you type, and scrolls the transcript viewport precisely to the one you pick.

[!IMPORTANT] The TUI mode is required.

Usage

Key Action
alt+h (configurable) Open the message list
just type Filter messages
↑/↓ (or PgUp/PgDn) Move the selection
Enter Jump
Ctrl+Enter Insert the message text into the editor
Esc Close

[!TIP] /timeline-settings opens the settings panel.

[!NOTE] Jump target user the user message itself
reply the final answer

Plain-text replies use the same block start as native Ctrl+↑/↓. Replies with thinking skip it and keep one blank line immediately before the answer, if present.

[!WARNING] Invalid shortcuts are rejected. Without a modifier, only named keys (such asf2) are accepted.

Install

pi install npm:pi-timeline
pi -e npm:pi-timeline             # one-shot trial

Configuration file

[!TIP] Use /timeline-settings to open the visualization settings panel

At ~/.pi/agent/timeline.json

Key Type Default Meaning
shortcut string / array of strings / null "alt+h" Case-insensitive; duplicates removed automatically
jumpTo string "user" "user" / "reply"
language string "auto" "auto" / "zh" / "en"

[!WARNING] A bad value falls back to the default and raises a warning when the session starts. jumpTo is re-read on every invocation, so changing it applies immediately; the shortcut is registered at load time, so changing it needs /reload.

Development

node test/run.mjs                # all tests
node test/run.mjs unit config    # named suites: unit | real | config