@herbertgao/pi-extensions 2026.9.19 → 2026.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -16
- package/THIRD_PARTY_NOTICES.md +29 -3
- package/node_modules/@herbertgao/pi-bark/README.md +39 -3
- package/node_modules/@herbertgao/pi-bark/package.json +1 -1
- package/node_modules/@herbertgao/pi-bark/src/index.ts +275 -15
- package/node_modules/@herbertgao/pi-cc-extensions/README.en.md +85 -68
- package/node_modules/@herbertgao/pi-cc-extensions/README.md +79 -62
- package/node_modules/@herbertgao/pi-cc-extensions/assets/readme/preview.webp +0 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/config/config.ts +116 -34
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/config/panel.ts +370 -118
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/agent-summary/core.ts +6 -36
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/agent-summary/index.ts +2 -2
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/compact-thinking.ts +31 -33
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/context.ts +330 -360
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/reference/index.ts +56 -108
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/reference/session.ts +97 -15
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/reference/subagent.ts +80 -45
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/shell/flush-docked-bash.ts +36 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/shell/footer-layout.ts +229 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/shell/footer.ts +521 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/shell/mcp-chip.ts +136 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/shell/startup-header.ts +92 -61
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/shell/working-message.ts +58 -38
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/index.ts +19 -3
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/compact-mode.ts +1127 -231
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/default-mode.ts +267 -262
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/index.ts +38 -48
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/markdown-enhance.ts +8 -2
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/hover.ts +2 -7
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/interaction.ts +287 -114
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/layout.ts +15 -6
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/packets.ts +18 -72
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/scroll.ts +61 -26
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/codemode.ts +303 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/ansi-utils.ts +25 -57
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-component.ts +125 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-edit-render.ts +227 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-header.ts +136 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-highlight.ts +151 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-inline.ts +324 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-layout.ts +762 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-limits.ts +152 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-palette.ts +410 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-parse.ts +535 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-presentation.ts +4 -4
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-renderer.ts +21 -3219
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-text.ts +44 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-write-render.ts +568 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/index.ts +103 -48
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/line-width-safety.ts +8 -7
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/write-execution.ts +2 -1
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/grouping.ts +171 -196
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/mcp-title.ts +39 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/{message-display.ts → tool/message-display.ts} +27 -93
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/names.ts +429 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/result.ts +259 -164
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/{show-more-hint.ts → tool/show-more-hint.ts} +10 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/transcript-refresh.ts +8 -26
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/utils/ansi-color.ts +44 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/utils/ansi-text.ts +77 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/utils/component-tree.ts +34 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/utils/format.ts +28 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/utils/fullscreen-detect.ts +51 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/utils/patch-keys.ts +124 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/utils/sgr-mouse.ts +70 -0
- package/node_modules/@herbertgao/pi-cc-extensions/package.json +10 -8
- package/node_modules/@herbertgao/pi-subagents/CHANGELOG.md +6 -0
- package/node_modules/@herbertgao/pi-subagents/package.json +1 -1
- package/node_modules/@herbertgao/pi-subagents/src/mention-clone.ts +3 -2
- package/node_modules/@herbertgao/sol-pi/CONTRIBUTING.md +22 -0
- package/node_modules/@herbertgao/sol-pi/README.md +36 -17
- package/node_modules/@herbertgao/sol-pi/THIRD_PARTY_NOTICES.md +10 -6
- package/node_modules/@herbertgao/sol-pi/agents-install.md +15 -12
- package/node_modules/@herbertgao/sol-pi/docs/compatibility.md +24 -8
- package/node_modules/@herbertgao/sol-pi/docs/configuration.md +2 -2
- package/node_modules/@herbertgao/sol-pi/docs/star-history.md +18 -0
- package/node_modules/@herbertgao/sol-pi/package.json +4 -2
- package/node_modules/@herbertgao/sol-pi/scripts/check-sol-pi-config.mjs +1 -1
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/config.ts +1 -1
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/extensions/action-fusion/file-queue.ts +23 -4
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/extensions/action-fusion/index.ts +32 -1
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/extensions/action-fusion/then-run.ts +3 -2
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/extensions/observation-pack/observation.ts +1 -1
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/extensions/online-context-compact/economics.ts +27 -7
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/extensions/online-context-compact/extension.ts +137 -41
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/extensions/online-context-compact/index.ts +1 -0
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/extensions/online-context-compact/plan.ts +2 -1
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/extensions/online-context-compact/projection.ts +58 -0
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/extensions/online-context-compact/state.ts +28 -6
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/extensions/online-context-compact/tools.ts +2 -1
- package/node_modules/@herbertgao/sol-pi/src/sol-pi/runtime-paths.ts +15 -2
- package/node_modules/@juicesharp/rpiv-ask-user-question/package.json +2 -2
- package/node_modules/@pi-plugins/fast-mode/README.md +7 -1
- package/node_modules/@pi-plugins/fast-mode/dist/index.d.mts.map +1 -1
- package/node_modules/@pi-plugins/fast-mode/dist/index.mjs +7 -1
- package/node_modules/@pi-plugins/fast-mode/dist/index.mjs.map +1 -1
- package/node_modules/@pi-plugins/fast-mode/package.json +5 -5
- package/node_modules/pi-antigravity/README.md +3 -0
- package/node_modules/pi-antigravity/package.json +8 -8
- package/node_modules/pi-antigravity/src/auth/oauth.ts +6 -3
- package/node_modules/pi-antigravity/src/index.ts +114 -110
- package/node_modules/pi-antigravity/src/stream/stream.ts +1 -1
- package/node_modules/pi-antigravity/src/utils/util.ts +18 -1
- package/node_modules/pi-multi-account/CHANGELOG.md +20 -0
- package/node_modules/pi-multi-account/README.md +46 -8
- package/node_modules/pi-multi-account/config-file-transaction.ts +42 -0
- package/node_modules/pi-multi-account/index.ts +255 -269
- package/node_modules/pi-multi-account/model-pins.ts +36 -0
- package/node_modules/pi-multi-account/package.json +9 -7
- package/node_modules/pi-multi-account/slot-proxy-auth.ts +12 -2
- package/node_modules/pi-multi-account/slot-proxy.ts +27 -5
- package/node_modules/pi-web-access/CHANGELOG.md +17 -0
- package/node_modules/pi-web-access/README.md +6 -3
- package/node_modules/pi-web-access/brave-rate-limit.ts +170 -0
- package/node_modules/pi-web-access/brave.ts +28 -11
- package/node_modules/pi-web-access/dist/index.js +202 -33
- package/node_modules/pi-web-access/gemini-search.ts +2 -5
- package/node_modules/pi-web-access/index.ts +13 -7
- package/node_modules/pi-web-access/openai-search.ts +24 -10
- package/node_modules/pi-web-access/package.json +1 -1
- package/node_modules/pi-web-access/summary-review.ts +8 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/README.md +16 -12
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/adapter.d.ts +0 -5
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/adapter.js +2 -3
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/contract.d.ts +2 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/reader.d.ts +3 -0
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/reader.js +27 -15
- package/node_modules/{@herbertgao/resume-from/dist/adapters/codex → resume-from/dist/adapters/claude-code}/redaction.js +16 -3
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/writer.d.ts +2 -4
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/writer.js +1 -1
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/contract.d.ts +2 -4
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/index.js +1 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/read.d.ts +16 -0
- package/node_modules/resume-from/dist/adapters/codex/read.js +723 -0
- package/node_modules/{@herbertgao/resume-from/dist/adapters/pi → resume-from/dist/adapters/codex}/redaction.js +16 -3
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/rollout.d.ts +44 -4
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/rollout.js +88 -4
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/write.d.ts +2 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/write.js +2 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/contract.d.ts +5 -1
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/adapter.js +10 -6
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/contract.d.ts +2 -2
- package/node_modules/{@herbertgao/resume-from/dist/adapters/claude-code → resume-from/dist/adapters/pi}/redaction.js +16 -3
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/serialize.d.ts +2 -4
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/serialize.js +2 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/render.d.ts +1 -1
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/render.js +4 -4
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/runner.js +2 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/contract.d.ts +2 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/command.js +31 -8
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/wiring.d.ts +1 -1
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/wiring.js +1 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/confirmation.d.ts +4 -1
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/confirmation.js +2 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/contract.d.ts +8 -6
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/discovery/contract.d.ts +10 -5
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/discovery/finder.d.ts +2 -1
- package/node_modules/resume-from/dist/import/discovery/finder.js +269 -0
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/contract.d.ts +3 -3
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/lander.js +3 -3
- package/node_modules/resume-from/dist/import/pipeline.d.ts +28 -0
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/pipeline.js +31 -11
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/preview/builder.d.ts +2 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/preview/builder.js +9 -5
- package/node_modules/resume-from/dist/import/preview/warnings.d.ts +14 -0
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/preview/warnings.js +26 -20
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/wiring.js +12 -2
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/repo/contract.d.ts +9 -3
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/repo/git.d.ts +4 -4
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/repo/git.js +7 -4
- package/node_modules/resume-from/dist/platform/repo/reader.d.ts +3 -0
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/repo/reader.js +60 -20
- package/node_modules/{@herbertgao/resume-from → resume-from}/dist/session/contract.d.ts +8 -1
- package/node_modules/{@herbertgao/resume-from → resume-from}/package.json +19 -32
- package/node_modules/{@herbertgao/resume-from → resume-from}/shims/pi/extensions/resume-from.js +2 -2
- package/package.json +18 -22
- package/node_modules/@herbertgao/pi-cc-extensions/assets/readme/hero.en.svg +0 -101
- package/node_modules/@herbertgao/pi-cc-extensions/assets/readme/hero.svg +0 -101
- package/node_modules/@herbertgao/pi-cc-extensions/assets/readme/welcome.webp +0 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/render-utils.ts +0 -5
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/types.ts +0 -30
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/write-display-utils.ts +0 -12
- package/node_modules/@herbertgao/resume-from/dist/adapters/codex/read.js +0 -270
- package/node_modules/@herbertgao/resume-from/dist/import/discovery/finder.js +0 -129
- package/node_modules/@herbertgao/resume-from/dist/import/pipeline.d.ts +0 -17
- package/node_modules/@herbertgao/resume-from/dist/import/preview/warnings.d.ts +0 -11
- package/node_modules/@herbertgao/resume-from/dist/platform/repo/reader.d.ts +0 -8
- package/node_modules/pi-footer/CHANGELOG.md +0 -145
- package/node_modules/pi-footer/LICENSE +0 -21
- package/node_modules/pi-footer/README.md +0 -354
- package/node_modules/pi-footer/package.json +0 -68
- package/node_modules/pi-footer/src/cache.ts +0 -106
- package/node_modules/pi-footer/src/colors.ts +0 -237
- package/node_modules/pi-footer/src/config.ts +0 -202
- package/node_modules/pi-footer/src/event-widgets.ts +0 -41
- package/node_modules/pi-footer/src/extension-statuses.ts +0 -102
- package/node_modules/pi-footer/src/git.ts +0 -135
- package/node_modules/pi-footer/src/index.ts +0 -268
- package/node_modules/pi-footer/src/metrics.ts +0 -141
- package/node_modules/pi-footer/src/presets.ts +0 -383
- package/node_modules/pi-footer/src/render.ts +0 -114
- package/node_modules/pi-footer/src/separators.ts +0 -52
- package/node_modules/pi-footer/src/types.ts +0 -122
- package/node_modules/pi-footer/src/ui/color-level-confirm.ts +0 -22
- package/node_modules/pi-footer/src/ui/color-options.ts +0 -195
- package/node_modules/pi-footer/src/ui/config-lifecycle.ts +0 -61
- package/node_modules/pi-footer/src/ui/edit-colors.ts +0 -13
- package/node_modules/pi-footer/src/ui/events.ts +0 -35
- package/node_modules/pi-footer/src/ui/extension-status-picker.ts +0 -60
- package/node_modules/pi-footer/src/ui/extension-statuses.ts +0 -73
- package/node_modules/pi-footer/src/ui/fields.ts +0 -252
- package/node_modules/pi-footer/src/ui/global-menu.ts +0 -126
- package/node_modules/pi-footer/src/ui/helpers.ts +0 -44
- package/node_modules/pi-footer/src/ui/layout.ts +0 -17
- package/node_modules/pi-footer/src/ui/line-list.ts +0 -19
- package/node_modules/pi-footer/src/ui/model.ts +0 -64
- package/node_modules/pi-footer/src/ui/navigation.ts +0 -29
- package/node_modules/pi-footer/src/ui/option-edit.ts +0 -93
- package/node_modules/pi-footer/src/ui/overlay-render.ts +0 -103
- package/node_modules/pi-footer/src/ui/screen-context.ts +0 -18
- package/node_modules/pi-footer/src/ui/screen-controller.ts +0 -27
- package/node_modules/pi-footer/src/ui/screen-render.ts +0 -32
- package/node_modules/pi-footer/src/ui/screen-state.ts +0 -20
- package/node_modules/pi-footer/src/ui/screen.ts +0 -243
- package/node_modules/pi-footer/src/ui/screens/add-widget.ts +0 -92
- package/node_modules/pi-footer/src/ui/screens/confirm-exit.ts +0 -52
- package/node_modules/pi-footer/src/ui/screens/controller.ts +0 -12
- package/node_modules/pi-footer/src/ui/screens/edit-colors.ts +0 -68
- package/node_modules/pi-footer/src/ui/screens/edit-widget.ts +0 -115
- package/node_modules/pi-footer/src/ui/screens/extension-status-row.ts +0 -61
- package/node_modules/pi-footer/src/ui/screens/global.ts +0 -75
- package/node_modules/pi-footer/src/ui/screens/line-list.ts +0 -108
- package/node_modules/pi-footer/src/ui/screens/main.ts +0 -99
- package/node_modules/pi-footer/src/ui/screens/terminal.ts +0 -121
- package/node_modules/pi-footer/src/ui/screens/widget-list.ts +0 -154
- package/node_modules/pi-footer/src/ui/terminal-menu.ts +0 -32
- package/node_modules/pi-footer/src/ui/theme.ts +0 -48
- package/node_modules/pi-footer/src/ui/title-bar.ts +0 -100
- package/node_modules/pi-footer/src/ui/widget-actions.ts +0 -76
- package/node_modules/pi-footer/src/ui.ts +0 -66
- package/node_modules/pi-footer/src/widgets/context.ts +0 -28
- package/node_modules/pi-footer/src/widgets/core/active-tools.ts +0 -17
- package/node_modules/pi-footer/src/widgets/core/context-window.ts +0 -24
- package/node_modules/pi-footer/src/widgets/core/cwd-basename.ts +0 -19
- package/node_modules/pi-footer/src/widgets/core/cwd.ts +0 -108
- package/node_modules/pi-footer/src/widgets/core/event.ts +0 -34
- package/node_modules/pi-footer/src/widgets/core/external-status.ts +0 -102
- package/node_modules/pi-footer/src/widgets/core/model-provider.ts +0 -20
- package/node_modules/pi-footer/src/widgets/core/model.ts +0 -35
- package/node_modules/pi-footer/src/widgets/core/provider.ts +0 -17
- package/node_modules/pi-footer/src/widgets/core/session-name.ts +0 -17
- package/node_modules/pi-footer/src/widgets/core/text-verbosity.ts +0 -17
- package/node_modules/pi-footer/src/widgets/core/thinking-level.ts +0 -17
- package/node_modules/pi-footer/src/widgets/git/ahead-behind.ts +0 -17
- package/node_modules/pi-footer/src/widgets/git/branch.ts +0 -81
- package/node_modules/pi-footer/src/widgets/git/clean.ts +0 -19
- package/node_modules/pi-footer/src/widgets/git/deletions.ts +0 -17
- package/node_modules/pi-footer/src/widgets/git/diff.ts +0 -38
- package/node_modules/pi-footer/src/widgets/git/insertions.ts +0 -17
- package/node_modules/pi-footer/src/widgets/git/remote.ts +0 -17
- package/node_modules/pi-footer/src/widgets/git/root.ts +0 -17
- package/node_modules/pi-footer/src/widgets/git/sha.ts +0 -17
- package/node_modules/pi-footer/src/widgets/git/staged.ts +0 -17
- package/node_modules/pi-footer/src/widgets/git/status.ts +0 -19
- package/node_modules/pi-footer/src/widgets/git/unstaged.ts +0 -17
- package/node_modules/pi-footer/src/widgets/git/untracked.ts +0 -17
- package/node_modules/pi-footer/src/widgets/instance.ts +0 -118
- package/node_modules/pi-footer/src/widgets/layout/custom-text.ts +0 -18
- package/node_modules/pi-footer/src/widgets/layout/flex-separator.ts +0 -32
- package/node_modules/pi-footer/src/widgets/layout/separator.ts +0 -57
- package/node_modules/pi-footer/src/widgets/layout/spacer.ts +0 -31
- package/node_modules/pi-footer/src/widgets/options.ts +0 -122
- package/node_modules/pi-footer/src/widgets/project/runtime.ts +0 -361
- package/node_modules/pi-footer/src/widgets/registry.ts +0 -223
- package/node_modules/pi-footer/src/widgets/session/assistant-messages.ts +0 -17
- package/node_modules/pi-footer/src/widgets/session/compactions.ts +0 -17
- package/node_modules/pi-footer/src/widgets/session/elapsed.ts +0 -18
- package/node_modules/pi-footer/src/widgets/session/last-activity.ts +0 -18
- package/node_modules/pi-footer/src/widgets/session/messages.ts +0 -19
- package/node_modules/pi-footer/src/widgets/session/session-id.ts +0 -17
- package/node_modules/pi-footer/src/widgets/session/session-start.ts +0 -18
- package/node_modules/pi-footer/src/widgets/session/tool-results.ts +0 -17
- package/node_modules/pi-footer/src/widgets/session/total-messages.ts +0 -19
- package/node_modules/pi-footer/src/widgets/session/total-time.ts +0 -18
- package/node_modules/pi-footer/src/widgets/session/user-messages.ts +0 -17
- package/node_modules/pi-footer/src/widgets/store.ts +0 -26
- package/node_modules/pi-footer/src/widgets/tokens/cache-hit-rate.ts +0 -55
- package/node_modules/pi-footer/src/widgets/tokens/cache-read.ts +0 -18
- package/node_modules/pi-footer/src/widgets/tokens/cache-write.ts +0 -18
- package/node_modules/pi-footer/src/widgets/tokens/context-bar.ts +0 -108
- package/node_modules/pi-footer/src/widgets/tokens/context-length.ts +0 -26
- package/node_modules/pi-footer/src/widgets/tokens/context-remaining.ts +0 -29
- package/node_modules/pi-footer/src/widgets/tokens/context.ts +0 -29
- package/node_modules/pi-footer/src/widgets/tokens/cost.ts +0 -51
- package/node_modules/pi-footer/src/widgets/tokens/input-speed.ts +0 -25
- package/node_modules/pi-footer/src/widgets/tokens/input-tokens.ts +0 -18
- package/node_modules/pi-footer/src/widgets/tokens/output-speed.ts +0 -25
- package/node_modules/pi-footer/src/widgets/tokens/output-tokens.ts +0 -18
- package/node_modules/pi-footer/src/widgets/tokens/tokens.ts +0 -20
- package/node_modules/pi-footer/src/widgets/tokens/total-speed.ts +0 -25
- package/node_modules/pi-footer/src/widgets/tokens/total-tokens.ts +0 -18
- package/node_modules/pi-footer/src/widgets/types.ts +0 -181
- package/node_modules/pi-footer/src/widgets/utils/colors.ts +0 -11
- package/node_modules/pi-footer/src/widgets/utils/context.ts +0 -112
- package/node_modules/pi-footer/src/widgets/utils/session.ts +0 -19
- package/node_modules/pi-footer/src/widgets/utils/token-format.ts +0 -78
- /package/node_modules/{@herbertgao/resume-from → resume-from}/LICENSE +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/entries.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/entries.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/layout.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/layout.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/readback.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/readback.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/redaction.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/validation.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/claude-code/validation.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/readback.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/readback.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/redaction.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/validation.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/codex/validation.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/adapter.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/format.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/format.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/parse.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/parse.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/redaction.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/validate.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/adapters/pi/validate.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/bin.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/bin.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/contract.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/agents.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/agents.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/args.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/args.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/contract.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/presentation.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/presentation.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/cli/runner.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/entry.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/entry.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/command.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/contract.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/picker.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/picker.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/presentation.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/presentation.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/register.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/register.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/ui.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/pi-extension/ui.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/profile.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/profile.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/registry.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/host/registry.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/discovery/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/discovery/errors.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/discovery/errors.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/discovery/homes.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/discovery/homes.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/discovery/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/discovery/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/discovery/ordering.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/discovery/ordering.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/errors.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/errors.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/errors.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/errors.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/handover.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/handover.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/lander.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/marker.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/landing/marker.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/preview/contract.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/preview/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/preview/format.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/preview/format.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/preview/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/preview/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/transfer/contract.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/transfer/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/transfer/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/transfer/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/transfer/rules.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/transfer/rules.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/import/wiring.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/contract.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/defaults.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/defaults.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/errors.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/errors.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/loader.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/loader.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/paths.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/paths.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/validate.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/config/validate.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/repo/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/repo/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/repo/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/store/contract.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/store/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/store/file-committer.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/store/file-committer.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/store/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/store/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/tokens/contract.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/tokens/contract.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/tokens/estimator.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/tokens/estimator.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/tokens/index.d.ts +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/platform/tokens/index.js +0 -0
- /package/node_modules/{@herbertgao/resume-from → resume-from}/dist/session/contract.js +0 -0
|
@@ -4,12 +4,27 @@
|
|
|
4
4
|
* 渲染副作用(applyStyleMode / refreshCurrentTranscript)由 renderer 经
|
|
5
5
|
* CcstylePanelHooks 注入,避免 config → renderer 循环依赖。
|
|
6
6
|
*/
|
|
7
|
-
import { getSettingsListTheme } from "@earendil-works/pi-coding-agent";
|
|
7
|
+
import { getSettingsListTheme, type ThemeBg } from "@earendil-works/pi-coding-agent";
|
|
8
8
|
import { Input, SettingsList, matchesKey, truncateToWidth } from "@earendil-works/pi-tui";
|
|
9
9
|
import type { CompactThinkingController } from "../feature/compact-thinking.ts";
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
applyCustomFooter,
|
|
12
|
+
clearCustomFooter,
|
|
13
|
+
getFooterStatusSnapshot,
|
|
14
|
+
} from "../feature/shell/footer.ts";
|
|
15
|
+
import {
|
|
16
|
+
footerChipDescription,
|
|
17
|
+
footerLineOfKey,
|
|
18
|
+
formatFooterChipSummary,
|
|
19
|
+
orderedFooterKeys,
|
|
20
|
+
reorderFooterKey,
|
|
21
|
+
resolveFooterChipLayout,
|
|
22
|
+
shiftFooterKeyLine,
|
|
23
|
+
toggleFooterKeyHidden,
|
|
24
|
+
type FooterChipLayout,
|
|
25
|
+
} from "../feature/shell/footer-layout.ts";
|
|
26
|
+
import { applyStartupHeader, clearStartupHeader } from "../feature/shell/startup-header.ts";
|
|
11
27
|
import type { ToolGroupingHooks } from "../renderer/tool/grouping.ts";
|
|
12
|
-
import type { DiffIndicatorMode, DiffViewMode } from "../renderer/tool/diff/index.ts";
|
|
13
28
|
import {
|
|
14
29
|
config,
|
|
15
30
|
DEFAULT_CONFIG,
|
|
@@ -18,19 +33,25 @@ import {
|
|
|
18
33
|
DIFF_SPLIT_MIN_WIDTH_VALUES,
|
|
19
34
|
DIFF_VIEW_MODES,
|
|
20
35
|
EXCLUDE_RENDERER_CANDIDATES,
|
|
36
|
+
EXPANDED_CARD_BACKGROUND_SLOTS,
|
|
21
37
|
EXPANDED_INPUT_MAX_LINES_VALUES,
|
|
22
38
|
EXPANDED_OUTPUT_MAX_LINES_VALUES,
|
|
23
39
|
EXPANDED_PREVIEW_MAX_LINES_VALUES,
|
|
24
40
|
formatExcludeRenderers,
|
|
25
41
|
getCompactThinkingConfig,
|
|
42
|
+
pickInputClip,
|
|
26
43
|
pickPositiveInt,
|
|
27
44
|
pickPositiveNumber,
|
|
28
|
-
saveConfig,
|
|
29
45
|
SCROLL_STEP_LINES_VALUES,
|
|
30
46
|
THINKING_ANIMATION_INTERVAL_VALUES,
|
|
31
47
|
THINKING_PREVIEW_LINES_VALUES,
|
|
48
|
+
INPUT_CLIP_VALUES,
|
|
32
49
|
WRITE_DIFF_COLLAPSED_LINES_VALUES,
|
|
50
|
+
updateConfig,
|
|
33
51
|
type CompactStyleMode,
|
|
52
|
+
type Config,
|
|
53
|
+
type DiffIndicatorMode,
|
|
54
|
+
type DiffViewMode,
|
|
34
55
|
} from "./config.ts";
|
|
35
56
|
|
|
36
57
|
/** renderer 注入的渲染副作用,面板自身不触碰渲染状态。 */
|
|
@@ -41,7 +62,7 @@ export type CcstylePanelHooks = {
|
|
|
41
62
|
|
|
42
63
|
function modeSettingDescription(mode: CompactStyleMode): string {
|
|
43
64
|
if (mode === "compact") {
|
|
44
|
-
return "(Experimental) One summary line per assistant round; edit/write
|
|
65
|
+
return "(Experimental) One summary line per assistant round; edit/write reuse the same Diff preview settings as on.";
|
|
45
66
|
}
|
|
46
67
|
if (mode === "off") {
|
|
47
68
|
return "Pi native tool rendering. Diff options below still apply independently.";
|
|
@@ -55,6 +76,120 @@ function excludeRenderersDescription(names: readonly string[]): string {
|
|
|
55
76
|
: `Native renderer for: ${names.join(", ")}. Agent is always native. Enter to toggle.`;
|
|
56
77
|
}
|
|
57
78
|
|
|
79
|
+
function customFooterDescription(enabled: boolean): string {
|
|
80
|
+
if (!enabled) return "Pi native footer restored. Chip layout below still applies when turned on.";
|
|
81
|
+
return "Custom status bar with model, context, cache, cost, git, and plugin chips.";
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function pluginChipsDescription(): string {
|
|
85
|
+
return `Arrange plugin chips: ${formatFooterChipSummary(config)}. Enter to edit.`;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function footerLayoutFromConfig(): FooterChipLayout {
|
|
89
|
+
return {
|
|
90
|
+
footerHiddenKeys: config.footerHiddenKeys,
|
|
91
|
+
footerLine1Keys: config.footerLine1Keys,
|
|
92
|
+
footerLine2Keys: config.footerLine2Keys,
|
|
93
|
+
footerLine3Keys: config.footerLine3Keys,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function persistFooterLayout(layout: FooterChipLayout): void {
|
|
98
|
+
updateConfig({
|
|
99
|
+
footerHiddenKeys: layout.footerHiddenKeys,
|
|
100
|
+
footerLine1Keys: layout.footerLine1Keys,
|
|
101
|
+
footerLine2Keys: layout.footerLine2Keys,
|
|
102
|
+
footerLine3Keys: layout.footerLine3Keys,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function footerChipItem(
|
|
107
|
+
key: string,
|
|
108
|
+
layout: FooterChipLayout,
|
|
109
|
+
snapshot: ReadonlyMap<string, string>,
|
|
110
|
+
) {
|
|
111
|
+
const line = footerLineOfKey(layout, key) ?? 2;
|
|
112
|
+
const hidden = layout.footerHiddenKeys.includes(key);
|
|
113
|
+
const live = snapshot.get(key)?.trim() ?? "";
|
|
114
|
+
return {
|
|
115
|
+
id: key,
|
|
116
|
+
label: key,
|
|
117
|
+
description: footerChipDescription(key, live),
|
|
118
|
+
currentValue: hidden ? `line${line} · hidden` : `line${line}`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function buildFooterChipsSubmenu(
|
|
123
|
+
onClose: () => void,
|
|
124
|
+
onLiveChange: () => void,
|
|
125
|
+
): {
|
|
126
|
+
render: (width: number) => string[];
|
|
127
|
+
invalidate: () => void;
|
|
128
|
+
handleInput: (data: string) => void;
|
|
129
|
+
} {
|
|
130
|
+
const snapshot = () => getFooterStatusSnapshot();
|
|
131
|
+
const resolved = () => resolveFooterChipLayout(footerLayoutFromConfig(), [...snapshot().keys()]);
|
|
132
|
+
const items: ReturnType<typeof footerChipItem>[] = [];
|
|
133
|
+
const rebuildItems = (layout: FooterChipLayout, selectedKey?: string) => {
|
|
134
|
+
const next = orderedFooterKeys(layout).map((key) => footerChipItem(key, layout, snapshot()));
|
|
135
|
+
items.length = 0;
|
|
136
|
+
items.push(...next);
|
|
137
|
+
if (!selectedKey) return 0;
|
|
138
|
+
const index = items.findIndex((item) => item.id === selectedKey);
|
|
139
|
+
return index >= 0 ? index : 0;
|
|
140
|
+
};
|
|
141
|
+
rebuildItems(resolved());
|
|
142
|
+
const list = new SettingsList(
|
|
143
|
+
items,
|
|
144
|
+
Math.min(8, Math.max(4, items.length)),
|
|
145
|
+
getSettingsListTheme(),
|
|
146
|
+
() => {},
|
|
147
|
+
() => onClose(),
|
|
148
|
+
{ enableSearch: false },
|
|
149
|
+
);
|
|
150
|
+
const listState = list as unknown as { selectedIndex: number; items: typeof items };
|
|
151
|
+
|
|
152
|
+
const mutate = (transform: (layout: FooterChipLayout, key: string) => FooterChipLayout) => {
|
|
153
|
+
const key = listState.items[listState.selectedIndex]?.id;
|
|
154
|
+
if (!key) return;
|
|
155
|
+
const next = transform(resolved(), key);
|
|
156
|
+
persistFooterLayout(next);
|
|
157
|
+
listState.selectedIndex = rebuildItems(
|
|
158
|
+
resolveFooterChipLayout(next, [...snapshot().keys()]),
|
|
159
|
+
key,
|
|
160
|
+
);
|
|
161
|
+
onLiveChange();
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
return {
|
|
165
|
+
render: (width: number) => list.render(width),
|
|
166
|
+
invalidate: () => list.invalidate(),
|
|
167
|
+
handleInput: (data: string) => {
|
|
168
|
+
if (matchesKey(data, "left")) {
|
|
169
|
+
mutate((layout, key) => shiftFooterKeyLine(layout, key, -1));
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (matchesKey(data, "right")) {
|
|
173
|
+
mutate((layout, key) => shiftFooterKeyLine(layout, key, 1));
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (data === "[") {
|
|
177
|
+
mutate((layout, key) => reorderFooterKey(layout, key, -1));
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (data === "]") {
|
|
181
|
+
mutate((layout, key) => reorderFooterKey(layout, key, 1));
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (data === " " || matchesKey(data, "space")) {
|
|
185
|
+
mutate((layout, key) => toggleFooterKeyHidden(layout, key));
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
list.handleInput(data);
|
|
189
|
+
},
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
|
|
58
193
|
function diffViewModeDescription(mode: DiffViewMode): string {
|
|
59
194
|
if (mode === "split") return "Force side-by-side diff when width allows; otherwise unified.";
|
|
60
195
|
if (mode === "unified") return "Always render a single unified diff column.";
|
|
@@ -67,6 +202,15 @@ function diffIndicatorDescription(mode: DiffIndicatorMode): string {
|
|
|
67
202
|
return "Vertical bar indicators on changed lines (default).";
|
|
68
203
|
}
|
|
69
204
|
|
|
205
|
+
function expandedCardBackgroundDescription(slot: ThemeBg): string {
|
|
206
|
+
if (slot === "userMessageBg") {
|
|
207
|
+
return "Expanded cards share the user message background. Pick another slot to tell them apart.";
|
|
208
|
+
}
|
|
209
|
+
if (slot === "toolPendingBg") return "Expanded cards use the theme's neutral tool background.";
|
|
210
|
+
return `Expanded cards use the theme's ${slot} background.`;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/** 额外功能开关项:on/off 二值,描述随状态切换;切换后需重启生效。 */
|
|
70
214
|
function featureToggleSetting(
|
|
71
215
|
id: string,
|
|
72
216
|
label: string,
|
|
@@ -119,8 +263,7 @@ function buildExcludeRenderersSubmenu(
|
|
|
119
263
|
const excluded = new Set(config.excludeRenderers);
|
|
120
264
|
if (value === "exclude") excluded.add(id);
|
|
121
265
|
else excluded.delete(id);
|
|
122
|
-
|
|
123
|
-
saveConfig();
|
|
266
|
+
updateConfig({ excludeRenderers: [...excluded].sort((a, b) => a.localeCompare(b)) });
|
|
124
267
|
onLiveChange();
|
|
125
268
|
},
|
|
126
269
|
() => onClose(),
|
|
@@ -182,7 +325,7 @@ function buildNumberInputSubmenu(
|
|
|
182
325
|
|
|
183
326
|
/** Section tabs for /ccstyle — matches Zentui-style "A / B / C" headers. */
|
|
184
327
|
type CcstyleSection = {
|
|
185
|
-
id: "style" | "diff" | "thinking" | "ui" | "feature";
|
|
328
|
+
id: "style" | "diff" | "thinking" | "ui" | "feature" | "footer";
|
|
186
329
|
label: string;
|
|
187
330
|
items: any[];
|
|
188
331
|
};
|
|
@@ -238,19 +381,22 @@ export async function showCcstylePanel(
|
|
|
238
381
|
currentValue: config.mode === "compact" ? "compact (Experimental)" : config.mode,
|
|
239
382
|
values: ["on", "compact (Experimental)", "off"],
|
|
240
383
|
};
|
|
241
|
-
// Tracks whether
|
|
384
|
+
// Tracks whether a nested submenu is open so Tab switches sections
|
|
242
385
|
// only at the top level (mirrors Zentui settings: Tab = switch sections).
|
|
243
|
-
let
|
|
386
|
+
let nestedSubmenuOpen = false;
|
|
387
|
+
let nestedHint = "";
|
|
244
388
|
const excludeSetting = {
|
|
245
389
|
id: "excludeRenderers",
|
|
246
390
|
label: "Exclude tools",
|
|
247
391
|
description: excludeRenderersDescription(config.excludeRenderers),
|
|
248
392
|
currentValue: formatExcludeRenderers(config.excludeRenderers),
|
|
249
393
|
submenu: (_current: string, closeSubmenu: (selected?: string) => void) => {
|
|
250
|
-
|
|
394
|
+
nestedSubmenuOpen = true;
|
|
395
|
+
nestedHint = " Enter/Space to toggle · Esc back to Style";
|
|
251
396
|
return buildExcludeRenderersSubmenu(
|
|
252
397
|
() => {
|
|
253
|
-
|
|
398
|
+
nestedSubmenuOpen = false;
|
|
399
|
+
nestedHint = "";
|
|
254
400
|
excludeSetting.currentValue = formatExcludeRenderers(config.excludeRenderers);
|
|
255
401
|
excludeSetting.description = excludeRenderersDescription(config.excludeRenderers);
|
|
256
402
|
closeSubmenu();
|
|
@@ -263,6 +409,16 @@ export async function showCcstylePanel(
|
|
|
263
409
|
);
|
|
264
410
|
},
|
|
265
411
|
};
|
|
412
|
+
const inputClipSetting = {
|
|
413
|
+
id: "inputClip",
|
|
414
|
+
label: "Input clip",
|
|
415
|
+
description:
|
|
416
|
+
"Max characters for path/command/name in single and grouped tool summaries; 0 fits available width. Enter to type a custom value.",
|
|
417
|
+
currentValue: String(config.inputClip),
|
|
418
|
+
values: [...INPUT_CLIP_VALUES],
|
|
419
|
+
submenu: (_current: string, closeSubmenu: (selected?: string) => void) =>
|
|
420
|
+
buildNumberInputSubmenu(theme, inputClipSetting, closeSubmenu),
|
|
421
|
+
};
|
|
266
422
|
const diffViewSetting = {
|
|
267
423
|
id: "diffViewMode",
|
|
268
424
|
label: "Diff layout",
|
|
@@ -301,7 +457,7 @@ export async function showCcstylePanel(
|
|
|
301
457
|
id: "writeDiffCollapsedLines",
|
|
302
458
|
label: "Write collapsed lines",
|
|
303
459
|
description:
|
|
304
|
-
"Write-only collapsed body lines. 0 shows ↳ created + expand hint. Enter to type a custom value.",
|
|
460
|
+
"Write-only collapsed body lines. 0 shows ↳ created + expand hint (stats stay on the title). Enter to type a custom value.",
|
|
305
461
|
currentValue: String(config.writeDiffCollapsedLines),
|
|
306
462
|
values: [...WRITE_DIFF_COLLAPSED_LINES_VALUES],
|
|
307
463
|
submenu: (_current: string, closeSubmenu: (selected?: string) => void) =>
|
|
@@ -316,20 +472,11 @@ export async function showCcstylePanel(
|
|
|
316
472
|
currentValue: config.diffWordWrap ? "on" : "off",
|
|
317
473
|
values: ["on", "off"],
|
|
318
474
|
};
|
|
319
|
-
const expandedMaxSetting = {
|
|
320
|
-
id: "expandedPreviewMaxLines",
|
|
321
|
-
label: "Expanded max lines",
|
|
322
|
-
description:
|
|
323
|
-
"Max Output/diff body lines when expanded. Default 40 keeps the TUI compact; raise for large dumps.",
|
|
324
|
-
currentValue: String(config.expandedPreviewMaxLines),
|
|
325
|
-
values: [...EXPANDED_PREVIEW_MAX_LINES_VALUES],
|
|
326
|
-
submenu: (_current: string, closeSubmenu: (selected?: string) => void) =>
|
|
327
|
-
buildNumberInputSubmenu(theme, expandedMaxSetting, closeSubmenu),
|
|
328
|
-
};
|
|
329
475
|
const expandedInputSetting = {
|
|
330
476
|
id: "expandedInputMaxLines",
|
|
331
|
-
label: "Expanded
|
|
332
|
-
description:
|
|
477
|
+
label: "Expanded input lines",
|
|
478
|
+
description:
|
|
479
|
+
"Max Input section lines in an expanded tool card. Overflow shows click to show more. Default 5.",
|
|
333
480
|
currentValue: String(config.expandedInputMaxLines),
|
|
334
481
|
values: [...EXPANDED_INPUT_MAX_LINES_VALUES],
|
|
335
482
|
submenu: (_current: string, closeSubmenu: (selected?: string) => void) =>
|
|
@@ -337,13 +484,30 @@ export async function showCcstylePanel(
|
|
|
337
484
|
};
|
|
338
485
|
const expandedOutputSetting = {
|
|
339
486
|
id: "expandedOutputMaxLines",
|
|
340
|
-
label: "Expanded
|
|
341
|
-
description:
|
|
487
|
+
label: "Expanded output lines",
|
|
488
|
+
description:
|
|
489
|
+
"Max Output section lines in an expanded tool card. Overflow shows click to show more. Default 10.",
|
|
342
490
|
currentValue: String(config.expandedOutputMaxLines),
|
|
343
491
|
values: [...EXPANDED_OUTPUT_MAX_LINES_VALUES],
|
|
344
492
|
submenu: (_current: string, closeSubmenu: (selected?: string) => void) =>
|
|
345
493
|
buildNumberInputSubmenu(theme, expandedOutputSetting, closeSubmenu),
|
|
346
494
|
};
|
|
495
|
+
const expandedMaxSetting = {
|
|
496
|
+
id: "expandedPreviewMaxLines",
|
|
497
|
+
label: "Expanded max lines",
|
|
498
|
+
description: "Max TaskList body lines when expanded. Expanded diffs show every line.",
|
|
499
|
+
currentValue: String(config.expandedPreviewMaxLines),
|
|
500
|
+
values: [...EXPANDED_PREVIEW_MAX_LINES_VALUES],
|
|
501
|
+
submenu: (_current: string, closeSubmenu: (selected?: string) => void) =>
|
|
502
|
+
buildNumberInputSubmenu(theme, expandedMaxSetting, closeSubmenu),
|
|
503
|
+
};
|
|
504
|
+
const expandedCardBgSetting = {
|
|
505
|
+
id: "expandedCardBackground",
|
|
506
|
+
label: "Expanded card bg",
|
|
507
|
+
description: expandedCardBackgroundDescription(config.expandedCardBackground),
|
|
508
|
+
currentValue: config.expandedCardBackground,
|
|
509
|
+
values: [...EXPANDED_CARD_BACKGROUND_SLOTS],
|
|
510
|
+
};
|
|
347
511
|
const thinkingTitleSetting = {
|
|
348
512
|
id: "useSummaryTitlesAsThinkingTitle",
|
|
349
513
|
label: "Summary title",
|
|
@@ -396,48 +560,89 @@ export async function showCcstylePanel(
|
|
|
396
560
|
submenu: (_current: string, closeSubmenu: (selected?: string) => void) =>
|
|
397
561
|
buildNumberInputSubmenu(theme, scrollStepSetting, closeSubmenu),
|
|
398
562
|
};
|
|
563
|
+
|
|
564
|
+
// 额外功能开关:注册于扩展加载期,切换后需重启(/reload)生效。
|
|
399
565
|
const sessionReferenceToggle = featureToggleSetting(
|
|
400
566
|
"enableSessionReference",
|
|
401
567
|
"Session reference",
|
|
402
|
-
"@ session mentions search
|
|
568
|
+
"@ session mentions search & inject referenced session context. Next restart applies.",
|
|
403
569
|
"Session reference disabled.",
|
|
404
570
|
config.enableSessionReference,
|
|
405
571
|
);
|
|
406
572
|
const subagentAutocompleteToggle = featureToggleSetting(
|
|
407
573
|
"enableSubagentAutocomplete",
|
|
408
574
|
"Subagent autocomplete",
|
|
409
|
-
"@
|
|
575
|
+
"@subagent:[name] mentions suggest agents and inject delegation instructions. Next restart applies.",
|
|
410
576
|
"Subagent autocomplete disabled.",
|
|
411
577
|
config.enableSubagentAutocomplete,
|
|
412
578
|
);
|
|
413
579
|
const contextCommandToggle = featureToggleSetting(
|
|
414
580
|
"enableContextCommand",
|
|
415
581
|
"Context usage",
|
|
416
|
-
"/context shows context-window distribution
|
|
582
|
+
"/context shows context-window distribution with previews. Next restart applies.",
|
|
417
583
|
"Context command disabled.",
|
|
418
584
|
config.enableContextCommand,
|
|
419
585
|
);
|
|
420
586
|
const agentSummaryToggle = featureToggleSetting(
|
|
421
587
|
"enableAgentSummary",
|
|
422
588
|
"Agent summary",
|
|
423
|
-
"Append per-round tool stats after each agent turn
|
|
589
|
+
"Append per-round tool stats after each agent turn. Next restart applies.",
|
|
424
590
|
"Agent summary disabled.",
|
|
425
591
|
config.enableAgentSummary,
|
|
426
592
|
);
|
|
427
593
|
const workingMessageToggle = featureToggleSetting(
|
|
428
594
|
"enableWorkingMessage",
|
|
429
595
|
"Working message",
|
|
430
|
-
"Extend Working... with token count and elapsed time
|
|
596
|
+
"Extend Working... footer with token count and elapsed time. Next restart applies.",
|
|
431
597
|
"Native Working... footer only.",
|
|
432
598
|
config.enableWorkingMessage,
|
|
433
599
|
);
|
|
434
600
|
const aliasesToggle = featureToggleSetting(
|
|
435
601
|
"enableAliases",
|
|
436
602
|
"Aliases",
|
|
437
|
-
"/clear and /exit aliases enabled
|
|
603
|
+
"/clear and /exit aliases enabled. Next restart applies.",
|
|
438
604
|
"Aliases disabled.",
|
|
439
605
|
config.enableAliases,
|
|
440
606
|
);
|
|
607
|
+
const footerNerdIconsSetting = {
|
|
608
|
+
id: "footerNerdIcons",
|
|
609
|
+
label: "Nerd Font icons",
|
|
610
|
+
description: config.footerNerdIcons
|
|
611
|
+
? "Git and cache chips use Nerd Font glyphs. Turn off for plain text."
|
|
612
|
+
: "Git and cache chips use plain text. No Nerd Font required.",
|
|
613
|
+
currentValue: config.footerNerdIcons ? "on" : "off",
|
|
614
|
+
values: ["on", "off"],
|
|
615
|
+
};
|
|
616
|
+
const customFooterSetting = {
|
|
617
|
+
id: "enableCustomFooter",
|
|
618
|
+
label: "Status bar",
|
|
619
|
+
description: customFooterDescription(config.enableCustomFooter),
|
|
620
|
+
currentValue: config.enableCustomFooter ? "on" : "off",
|
|
621
|
+
values: ["on", "off"],
|
|
622
|
+
};
|
|
623
|
+
const pluginChipsSetting = {
|
|
624
|
+
id: "footerPluginChips",
|
|
625
|
+
label: "Plugin chips",
|
|
626
|
+
description: pluginChipsDescription(),
|
|
627
|
+
currentValue: formatFooterChipSummary(config),
|
|
628
|
+
submenu: (_current: string, closeSubmenu: (selected?: string) => void) => {
|
|
629
|
+
nestedSubmenuOpen = true;
|
|
630
|
+
nestedHint = " ←→ line · [ ] reorder · Space hide · Esc back to Footer";
|
|
631
|
+
return buildFooterChipsSubmenu(
|
|
632
|
+
() => {
|
|
633
|
+
nestedSubmenuOpen = false;
|
|
634
|
+
nestedHint = "";
|
|
635
|
+
pluginChipsSetting.currentValue = formatFooterChipSummary(config);
|
|
636
|
+
pluginChipsSetting.description = pluginChipsDescription();
|
|
637
|
+
closeSubmenu();
|
|
638
|
+
},
|
|
639
|
+
() => {
|
|
640
|
+
pluginChipsSetting.currentValue = formatFooterChipSummary(config);
|
|
641
|
+
pluginChipsSetting.description = pluginChipsDescription();
|
|
642
|
+
},
|
|
643
|
+
);
|
|
644
|
+
},
|
|
645
|
+
};
|
|
441
646
|
const featureToggles: Record<string, { apply: (on: boolean) => void }> = {
|
|
442
647
|
enableSessionReference: sessionReferenceToggle,
|
|
443
648
|
enableSubagentAutocomplete: subagentAutocompleteToggle,
|
|
@@ -448,16 +653,41 @@ export async function showCcstylePanel(
|
|
|
448
653
|
};
|
|
449
654
|
|
|
450
655
|
const onSettingChange = (id: string, value: string) => {
|
|
656
|
+
if (id === "enableCustomFooter") {
|
|
657
|
+
const enabled = value === "on";
|
|
658
|
+
updateConfig({ enableCustomFooter: enabled });
|
|
659
|
+
customFooterSetting.currentValue = enabled ? "on" : "off";
|
|
660
|
+
customFooterSetting.description = customFooterDescription(enabled);
|
|
661
|
+
if (enabled) applyCustomFooter(ctx);
|
|
662
|
+
else clearCustomFooter(ctx);
|
|
663
|
+
ctx.ui.notify(`Updated ${id}: ${value}`, "info");
|
|
664
|
+
return;
|
|
665
|
+
}
|
|
666
|
+
if (id === "footerNerdIcons") {
|
|
667
|
+
const enabled = value === "on";
|
|
668
|
+
updateConfig({ footerNerdIcons: enabled });
|
|
669
|
+
footerNerdIconsSetting.currentValue = enabled ? "on" : "off";
|
|
670
|
+
footerNerdIconsSetting.description = enabled
|
|
671
|
+
? "Git and cache chips use Nerd Font glyphs. Turn off for plain text."
|
|
672
|
+
: "Git and cache chips use plain text. No Nerd Font required.";
|
|
673
|
+
ctx.ui.notify(`Updated ${id}: ${value}`, "info");
|
|
674
|
+
return;
|
|
675
|
+
}
|
|
676
|
+
// 额外功能开关:字段名与配置布尔字段一一对应,切换后重启生效。
|
|
451
677
|
const featureToggle = featureToggles[id];
|
|
452
678
|
if (featureToggle) {
|
|
453
|
-
|
|
454
|
-
(config as unknown as Record<string, boolean>)[id] = value === "on";
|
|
679
|
+
updateConfig({ [id]: value === "on" } as Partial<Config>);
|
|
455
680
|
featureToggle.apply(value === "on");
|
|
456
|
-
saveConfig();
|
|
457
681
|
ctx.ui.notify(`Updated ${id}: ${value} (next restart)`, "info");
|
|
458
682
|
return;
|
|
459
683
|
}
|
|
460
684
|
switch (id) {
|
|
685
|
+
case "inputClip":
|
|
686
|
+
updateConfig({
|
|
687
|
+
inputClip: pickInputClip(value),
|
|
688
|
+
});
|
|
689
|
+
inputClipSetting.currentValue = String(config.inputClip);
|
|
690
|
+
break;
|
|
461
691
|
case "mode": {
|
|
462
692
|
// 选项值带 Experimental 标记,选择后还原为真实 mode 值。
|
|
463
693
|
const mode: CompactStyleMode =
|
|
@@ -471,109 +701,124 @@ export async function showCcstylePanel(
|
|
|
471
701
|
excludeSetting.description = excludeRenderersDescription(config.excludeRenderers);
|
|
472
702
|
return;
|
|
473
703
|
case "diffViewMode":
|
|
474
|
-
|
|
704
|
+
updateConfig({ diffViewMode: value as DiffViewMode });
|
|
475
705
|
diffViewSetting.description = diffViewModeDescription(config.diffViewMode);
|
|
476
706
|
break;
|
|
477
707
|
case "diffIndicatorMode":
|
|
478
|
-
|
|
708
|
+
updateConfig({ diffIndicatorMode: value as DiffIndicatorMode });
|
|
479
709
|
diffIndicatorSetting.description = diffIndicatorDescription(config.diffIndicatorMode);
|
|
480
710
|
break;
|
|
481
711
|
case "diffSplitMinWidth":
|
|
482
|
-
|
|
483
|
-
value,
|
|
484
|
-
|
|
485
|
-
40,
|
|
486
|
-
300,
|
|
487
|
-
);
|
|
712
|
+
updateConfig({
|
|
713
|
+
diffSplitMinWidth: pickPositiveInt(value, DEFAULT_CONFIG.diffSplitMinWidth, 40, 300),
|
|
714
|
+
});
|
|
488
715
|
diffSplitSetting.currentValue = String(config.diffSplitMinWidth);
|
|
489
716
|
break;
|
|
490
717
|
case "editDiffCollapsedLines":
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
718
|
+
updateConfig({
|
|
719
|
+
editDiffCollapsedLines: pickPositiveInt(
|
|
720
|
+
value,
|
|
721
|
+
DEFAULT_CONFIG.editDiffCollapsedLines,
|
|
722
|
+
1,
|
|
723
|
+
500,
|
|
724
|
+
),
|
|
725
|
+
});
|
|
497
726
|
diffCollapsedSetting.currentValue = String(config.editDiffCollapsedLines);
|
|
498
727
|
break;
|
|
499
728
|
case "writeDiffCollapsedLines":
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
729
|
+
updateConfig({
|
|
730
|
+
writeDiffCollapsedLines: pickPositiveInt(
|
|
731
|
+
value,
|
|
732
|
+
DEFAULT_CONFIG.writeDiffCollapsedLines,
|
|
733
|
+
0,
|
|
734
|
+
500,
|
|
735
|
+
),
|
|
736
|
+
});
|
|
506
737
|
writeDiffCollapsedSetting.currentValue = String(config.writeDiffCollapsedLines);
|
|
507
738
|
break;
|
|
508
739
|
case "diffWordWrap":
|
|
509
|
-
|
|
740
|
+
updateConfig({ diffWordWrap: value === "on" });
|
|
510
741
|
diffWordWrapSetting.description = config.diffWordWrap
|
|
511
742
|
? "Long diff lines wrap within the panel width."
|
|
512
743
|
: "Long diff lines are truncated to the panel width.";
|
|
513
744
|
break;
|
|
514
|
-
case "expandedPreviewMaxLines":
|
|
515
|
-
config.expandedPreviewMaxLines = pickPositiveInt(
|
|
516
|
-
value,
|
|
517
|
-
DEFAULT_CONFIG.expandedPreviewMaxLines,
|
|
518
|
-
10,
|
|
519
|
-
50_000,
|
|
520
|
-
);
|
|
521
|
-
expandedMaxSetting.currentValue = String(config.expandedPreviewMaxLines);
|
|
522
|
-
break;
|
|
523
745
|
case "expandedInputMaxLines":
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
746
|
+
updateConfig({
|
|
747
|
+
expandedInputMaxLines: pickPositiveInt(
|
|
748
|
+
value,
|
|
749
|
+
DEFAULT_CONFIG.expandedInputMaxLines,
|
|
750
|
+
1,
|
|
751
|
+
5_000,
|
|
752
|
+
),
|
|
753
|
+
});
|
|
530
754
|
expandedInputSetting.currentValue = String(config.expandedInputMaxLines);
|
|
531
755
|
break;
|
|
532
756
|
case "expandedOutputMaxLines":
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
757
|
+
updateConfig({
|
|
758
|
+
expandedOutputMaxLines: pickPositiveInt(
|
|
759
|
+
value,
|
|
760
|
+
DEFAULT_CONFIG.expandedOutputMaxLines,
|
|
761
|
+
1,
|
|
762
|
+
5_000,
|
|
763
|
+
),
|
|
764
|
+
});
|
|
539
765
|
expandedOutputSetting.currentValue = String(config.expandedOutputMaxLines);
|
|
540
766
|
break;
|
|
767
|
+
case "expandedPreviewMaxLines":
|
|
768
|
+
updateConfig({
|
|
769
|
+
expandedPreviewMaxLines: pickPositiveInt(
|
|
770
|
+
value,
|
|
771
|
+
DEFAULT_CONFIG.expandedPreviewMaxLines,
|
|
772
|
+
10,
|
|
773
|
+
50_000,
|
|
774
|
+
),
|
|
775
|
+
});
|
|
776
|
+
expandedMaxSetting.currentValue = String(config.expandedPreviewMaxLines);
|
|
777
|
+
break;
|
|
778
|
+
case "expandedCardBackground":
|
|
779
|
+
updateConfig({ expandedCardBackground: value as ThemeBg });
|
|
780
|
+
expandedCardBgSetting.description = expandedCardBackgroundDescription(
|
|
781
|
+
config.expandedCardBackground,
|
|
782
|
+
);
|
|
783
|
+
break;
|
|
541
784
|
case "useSummaryTitlesAsThinkingTitle":
|
|
542
|
-
|
|
785
|
+
updateConfig({ useSummaryTitlesAsThinkingTitle: value === "on" });
|
|
543
786
|
break;
|
|
544
787
|
case "previewLines":
|
|
545
|
-
|
|
788
|
+
updateConfig({ previewLines: pickPositiveInt(value, DEFAULT_CONFIG.previewLines, 0) });
|
|
546
789
|
thinkingPreviewSetting.currentValue = String(config.previewLines);
|
|
547
790
|
break;
|
|
548
791
|
case "animationIntervalMs":
|
|
549
|
-
|
|
550
|
-
value,
|
|
551
|
-
|
|
552
|
-
);
|
|
792
|
+
updateConfig({
|
|
793
|
+
animationIntervalMs: pickPositiveNumber(value, DEFAULT_CONFIG.animationIntervalMs),
|
|
794
|
+
});
|
|
553
795
|
thinkingAnimationSetting.currentValue = String(config.animationIntervalMs);
|
|
554
796
|
break;
|
|
555
797
|
case "dimThinkingText":
|
|
556
|
-
|
|
798
|
+
updateConfig({ dimThinkingText: value === "on" });
|
|
557
799
|
thinkingDimSetting.description = config.dimThinkingText
|
|
558
800
|
? "Thinking text uses the theme's dim color."
|
|
559
801
|
: "Keep the default thinking text color.";
|
|
560
802
|
break;
|
|
561
|
-
case "showStartupHeader":
|
|
562
|
-
|
|
803
|
+
case "showStartupHeader": {
|
|
804
|
+
const enabled = value === "on";
|
|
805
|
+
updateConfig({ showStartupHeader: enabled });
|
|
563
806
|
startupHeaderSetting.description = config.showStartupHeader
|
|
564
807
|
? "Show the custom startup header (logo + tips) on new sessions."
|
|
565
808
|
: "Use Pi's native startup header instead.";
|
|
566
|
-
|
|
567
|
-
|
|
809
|
+
if (enabled) applyStartupHeader(ctx);
|
|
810
|
+
else clearStartupHeader(ctx);
|
|
568
811
|
break;
|
|
812
|
+
}
|
|
569
813
|
case "scrollStepLines":
|
|
570
|
-
|
|
814
|
+
updateConfig({
|
|
815
|
+
scrollStepLines: pickPositiveInt(value, DEFAULT_CONFIG.scrollStepLines, 1, 50),
|
|
816
|
+
});
|
|
571
817
|
scrollStepSetting.currentValue = String(config.scrollStepLines);
|
|
572
818
|
break;
|
|
573
819
|
default:
|
|
574
820
|
return;
|
|
575
821
|
}
|
|
576
|
-
saveConfig();
|
|
577
822
|
compactThinking?.updateConfig(getCompactThinkingConfig());
|
|
578
823
|
hooks.refreshCurrentTranscript(ctx);
|
|
579
824
|
ctx.ui.notify(`Updated ${id}: ${value}`, "info");
|
|
@@ -585,6 +830,31 @@ export async function showCcstylePanel(
|
|
|
585
830
|
label: "Style",
|
|
586
831
|
items: [modeSetting, excludeSetting],
|
|
587
832
|
},
|
|
833
|
+
{
|
|
834
|
+
id: "feature",
|
|
835
|
+
label: "Features",
|
|
836
|
+
items: [
|
|
837
|
+
sessionReferenceToggle.setting,
|
|
838
|
+
subagentAutocompleteToggle.setting,
|
|
839
|
+
contextCommandToggle.setting,
|
|
840
|
+
agentSummaryToggle.setting,
|
|
841
|
+
workingMessageToggle.setting,
|
|
842
|
+
aliasesToggle.setting,
|
|
843
|
+
],
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
id: "ui",
|
|
847
|
+
label: "UI",
|
|
848
|
+
items: [
|
|
849
|
+
expandedInputSetting,
|
|
850
|
+
expandedOutputSetting,
|
|
851
|
+
expandedMaxSetting,
|
|
852
|
+
expandedCardBgSetting,
|
|
853
|
+
inputClipSetting,
|
|
854
|
+
startupHeaderSetting,
|
|
855
|
+
scrollStepSetting,
|
|
856
|
+
],
|
|
857
|
+
},
|
|
588
858
|
{
|
|
589
859
|
id: "diff",
|
|
590
860
|
label: "Diff",
|
|
@@ -592,6 +862,7 @@ export async function showCcstylePanel(
|
|
|
592
862
|
diffViewSetting,
|
|
593
863
|
diffIndicatorSetting,
|
|
594
864
|
diffSplitSetting,
|
|
865
|
+
diffCollapsedSetting,
|
|
595
866
|
writeDiffCollapsedSetting,
|
|
596
867
|
diffWordWrapSetting,
|
|
597
868
|
],
|
|
@@ -607,28 +878,9 @@ export async function showCcstylePanel(
|
|
|
607
878
|
],
|
|
608
879
|
},
|
|
609
880
|
{
|
|
610
|
-
id: "
|
|
611
|
-
label: "
|
|
612
|
-
items: [
|
|
613
|
-
expandedMaxSetting,
|
|
614
|
-
expandedInputSetting,
|
|
615
|
-
expandedOutputSetting,
|
|
616
|
-
diffCollapsedSetting,
|
|
617
|
-
startupHeaderSetting,
|
|
618
|
-
scrollStepSetting,
|
|
619
|
-
],
|
|
620
|
-
},
|
|
621
|
-
{
|
|
622
|
-
id: "feature",
|
|
623
|
-
label: "Feature",
|
|
624
|
-
items: [
|
|
625
|
-
sessionReferenceToggle.setting,
|
|
626
|
-
subagentAutocompleteToggle.setting,
|
|
627
|
-
contextCommandToggle.setting,
|
|
628
|
-
agentSummaryToggle.setting,
|
|
629
|
-
workingMessageToggle.setting,
|
|
630
|
-
aliasesToggle.setting,
|
|
631
|
-
],
|
|
881
|
+
id: "footer",
|
|
882
|
+
label: "Footer",
|
|
883
|
+
items: [customFooterSetting, footerNerdIconsSetting, pluginChipsSetting],
|
|
632
884
|
},
|
|
633
885
|
];
|
|
634
886
|
|
|
@@ -649,13 +901,12 @@ export async function showCcstylePanel(
|
|
|
649
901
|
const activeList = () => lists[activeSection]!;
|
|
650
902
|
|
|
651
903
|
const switchSection = (delta: number) => {
|
|
652
|
-
if (
|
|
904
|
+
if (nestedSubmenuOpen) return;
|
|
653
905
|
activeSection = (activeSection + delta + sections.length) % sections.length;
|
|
654
906
|
};
|
|
655
907
|
|
|
656
908
|
/** 数值项:当前选中项有 submenu + values 时,Space 仅循环预设,不打开子面板。 */
|
|
657
909
|
const cyclePresetInList = (list: InstanceType<typeof SettingsList>): boolean => {
|
|
658
|
-
// SAFETY: SettingsList owns these stable fields used by its built-in input handler.
|
|
659
910
|
const internal = list as unknown as {
|
|
660
911
|
submenuComponent: unknown;
|
|
661
912
|
items: {
|
|
@@ -700,7 +951,8 @@ export async function showCcstylePanel(
|
|
|
700
951
|
truncateToWidth(
|
|
701
952
|
theme.fg(
|
|
702
953
|
"dim",
|
|
703
|
-
|
|
954
|
+
nestedHint ||
|
|
955
|
+
" Enter/Space to change · Enter on numbers types a custom value · Tab/Shift+Tab to switch sections · Esc to close",
|
|
704
956
|
),
|
|
705
957
|
safeWidth,
|
|
706
958
|
),
|
|
@@ -711,12 +963,12 @@ export async function showCcstylePanel(
|
|
|
711
963
|
for (const list of lists) list.invalidate();
|
|
712
964
|
},
|
|
713
965
|
handleInput(data: string) {
|
|
714
|
-
if (!
|
|
966
|
+
if (!nestedSubmenuOpen && isForwardTabKey(data)) {
|
|
715
967
|
switchSection(1);
|
|
716
968
|
tui.requestRender();
|
|
717
969
|
return;
|
|
718
970
|
}
|
|
719
|
-
if (!
|
|
971
|
+
if (!nestedSubmenuOpen && isBackTabKey(data)) {
|
|
720
972
|
switchSection(-1);
|
|
721
973
|
tui.requestRender();
|
|
722
974
|
return;
|