Files
云服务部-叶林立andDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> f9a7f743dd feat: 接入 Pi 内置 codemode,并修复全面审查发现的问题
- codemode:Tool Search 常驻(alwaysEnabled)、权限 allow(嵌套调用仍逐个过权限门)、
  tools.jsonc 登记使用规则;RTK 跳过 parentToolCallId 嵌套调用,避免丢失 bash
  structuredContent;Tool Search 目录过滤 hidden / codemode(script-only)exposure;
  扩展加载测试加载 builtin:codemode 并断言其常驻激活
- 搜索 key 不再经命令行参数传递:search-auth.mjs 改为 --set-stdin(先读校验再加锁),
  configure.sh 交互输入经管道、非交互用 --<provider> -
- CodeGraph 客户端监听子进程 stdin error,避免 EPIPE 未处理导致崩溃
- 移除 PI_TOOL_SEARCH/HERMES_MEMORY/RTK_CONFIG_PATH 环境变量入口,测试改用工厂 configPath 注入
- pi-subagents 固定 vitest / coverage-istanbul 4.1.10,修复 npm ls 版本冲突
- 补 pi-web-search / pi-worktree UPSTREAM.md 与 pi-minimal-footer AGENTS.md,
  files 白名单补齐并加测试;.codegraph/.gitignore 移出跟踪
- detect_kitty 优先识别官方安装目录

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-21 23:18:34 -07:00
..
2026-08-19 22:24:37 +08:00

pi-minimal-footer

Minimal footer for pi that replaces the default footer with a compact two-line display: context gauge on top, subscription usage bars below.

Claude Max

OpenAI Codex

Features

  • Context gauge — optional working directory and git branch, model, thinking level, and context window usage with token counts
  • Subscription usage bars — rolling window quotas with reset timers for supported providers
  • Auto-refresh — fetches usage on startup and model switch, then every 5 minutes
  • Git integration — branch name, dirty state, ahead/behind counts
  • Extension statuses — preserves statuses published through ctx.ui.setStatus()

Supported providers

Provider What it shows
Claude Max 5h + weekly rolling windows
OpenAI Codex Primary + secondary rolling windows
GitHub Copilot Premium interactions + chat quotas
Google Gemini Pro + Flash remaining quotas
MiniMax 5h + weekly rolling windows (Token Plan, credit-based)
MiniMax CN Same as MiniMax, China endpoint
Kimi Coding 5h + weekly rolling windows (Plan)

Install

pi install npm:@ogulcancelik/pi-minimal-footer

Configuration

Persistent defaults are read from config/pi-minimal-footer.json inside the installed bundle; a missing or invalid file falls back to the defaults shown:

Field Description Default
showCwd Show current working directory in footer status line true
showBranch Show git branch/dirty/ahead/behind in footer status line true

Only true/false values are honoured; anything else falls back to the default for that field.

How it works

The footer reads effective context usage from the read-only pi-compaction service so its gauge matches provider projection and compaction decisions. Before the first projection snapshot exists it safely falls back to the last assistant message's token counts. Subscription usage is fetched from each provider's dedicated quota API using your existing auth tokens from ~/.pi/agent/auth.json or environment variables.

Usage is fetched:

  • Once on startup
  • Immediately on model switch (Ctrl+P)
  • Every 5 minutes after that

Git state is refreshed:

  • Once on startup
  • When pi reports a branch change
  • At the end of each turn

The footer adapts to narrow terminals by stacking lines vertically instead of the single-line wide layout.

Known issues

Claude Max usage bar not showing

Anthropic's OAuth usage endpoint (/api/oauth/usage) has been returning persistent 429 (rate limit) errors since late March 2026, affecting all third-party tools that display Claude usage data (CodexBar, oh-my-claudecode, claude-pulse, etc.). This is an Anthropic-side issue — tracked in claude-code#30930 and claude-code#31021. The usage bar will start working again once Anthropic fixes the endpoint.

Notes

  • Replaces the default pi footer entirely via ctx.ui.setFooter()
  • The local my-pi version reads footerData.getExtensionStatuses() and renders each non-empty status as a plain footer segment.
  • Auth tokens are read from ~/.pi/agent/auth.json (populated by /login) or standard env vars (ANTHROPIC_API_KEY, MINIMAX_API_KEY, etc.)
  • Providers without auth simply don't show a usage bar — no errors