Files
my-pi/pi-minimal-footer
云服务部-叶林立 cdd91b3f8b feat: 移除 Codex Fast mode 与 AutoReview 后台分析,模型改为配置驱动
移除 pi-extension-codex-fast-mode:
- 删除整个扩展目录;同步清理根 package.json 的 files / pi.extensions /
  dependencies 条目、package-lock.json、tests/extension-load.test.ts 断言
  与文档章节。
- pi-minimal-footer 的 Fast on 渲染是该扩展的唯一消费者。扩展移除后 accent
  分支不再有生产者,collectFooterStatusItems 简化为直接返回非空状态字符串,
  去掉 FooterStatusItem 与 accent 标志,避免留下死代码。

移除 500 次裁决后的后台分析体系:
- 删除 analysis-agent.ts(192 行)与 ledger.ts(296 行),以及对应的
  auto-review-runtime / auto-review-ledger 测试。
- runtime.ts 由 177 行收敛到 85 行:安装选项缩为 { service, config };删除
  handleAgentSettled 与 agent_settled 注册;保留 session_start / turn_start
  (denial circuit breaker 属安全语义)/ session_shutdown。
- 删除 analysis 配置键:config、extension-config、config-schema、生成的
  permissions.schema.json 与种子配置。
- 删除 reviewer 的 onDecision 回调(唯一消费者是 ledger)。
- 删除迁移机制 scripts/migrate-permission-policy.mjs、其测试与 update.sh 中
  46 行 migrate_permission_policy 接线。种子部署保持“目标缺失才写入”,已存在
  的 policy.jsonc 永不被覆盖。

AutoReview 模型改为纯配置驱动:
- 删除 DEFAULT_PROVIDER / DEFAULT_MODEL 常量与 findCodexTemplate 合成逻辑;
  model.ts 由 65 行收敛到 48 行。
- provider / model 任一缺失时返回新增失败类别 model-unconfigured 并 defer 到
  人工审批;provider 未注册或模型未发布同样 defer。
- reasoning 不再有默认常量,完全由配置决定。
- session_start 在 auto-review 已列入 authorizerChain 且 provider/model 未配齐
  时 ui.notify 提示一次,避免不使用 AutoReview 的用户被打扰。
- 种子 autoReview 只保留 enabled,provider/model/reasoning 由用户按本机实际
  可用的模型填写。

破坏性变更:analysis 键已从 strictObject schema 删除,任何仍带该键的
policy.jsonc 会使整份配置被拒(fail-closed 到全 ask)。这是刻意的变更,已由
config-loader 测试固定,防止将来无声放宽。

测试:
- 新增 auto-review-model.test.ts(7 例),覆盖此前完全缺失的模型解析:真实
  命中、未配置、provider 未知、模型未发布,以及不再合成替代模型。
- 重写 auto-review-runtime.test.ts(6 例):authorizer 注册、未配置时提示
  一次、已配置 / disabled / 无 UI / 不在 chain 时静默。
- config-loader.test.ts 新增 2 例:带 analysis 的旧配置被拒且 fail-closed、
  autoReview 逐字段合并。
- composition-root.test.ts 的 EXPECTED_HANDLERS 移除 agent_settled。

文档:AGENTS.md、README.md、pi-permission-system 的 README / CHANGELOG /
configuration.md / architecture.md / auto-review UPSTREAM.md。

验证:pi-permission-system 的 typecheck、2577 个测试与 build 全部通过;根 50
个测试通过;schema 重新生成无漂移;新种子通过 schema 校验;5 个脚本 sh -n
通过;git diff --check 无空白问题。未安装 shellcheck;未执行真实 pi install /
update(属外部写操作)。
2026-10-14 08:15:13 -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

Environment variables (all optional):

Variable Description Default
PI_MINIMAL_FOOTER_SHOW_CWD Show current working directory in footer status line 1
PI_MINIMAL_FOOTER_SHOW_BRANCH Show git branch/dirty/ahead/behind in footer status line 1

Accepted false values: 0, false, no, off (case-insensitive).

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