{"_id":"@allenyolk/pi-minimal-display","_rev":"3-d75bc2fcca022fad197049a2fe52b001","name":"@allenyolk/pi-minimal-display","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@allenyolk/pi-minimal-display","version":"0.1.0","keywords":["pi-package","pi","tool-rendering"],"license":"MIT","_id":"@allenyolk/pi-minimal-display@0.1.0","maintainers":[{"name":"allenyolk","email":"allen.yfhuang@gmail.com"}],"homepage":"https://github.com/AllenYolk/pi-minimal-display#readme","bugs":{"url":"https://github.com/AllenYolk/pi-minimal-display/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"3f466253eccfdc790813afa60456941f0154016a","tarball":"https://registry.npmjs.org/@allenyolk/pi-minimal-display/-/pi-minimal-display-0.1.0.tgz","fileCount":6,"integrity":"sha512-Ur+34cb1ifSZHU5YWO7zW0CrjrW4Bwr/ZnLrTgKwc+UKntDP3XFYMPwfahkmQTzUsdnnq7EuSUeSyHBxOgHj4A==","signatures":[{"sig":"MEYCIQDwvX1QVM4H6+Ij1I3mOePOX+qwz0ZFRTZGbGpcECny4QIhAN+EzXCJQr2YubKIrj5AUy+q0tNfebvMAPDuVBNSgG9F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32019},"type":"module","engines":{"node":">=22.19.0"},"exports":"./src/index.ts","gitHead":"77b6af75a68beec14d7ff6c3cc751bf8f44539df","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc","check":"npm run typecheck && npm test","benchmark":"npm run build && node test/benchmark.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"allenyolk","email":"allen.yfhuang@gmail.com"},"repository":{"url":"git+https://github.com/AllenYolk/pi-minimal-display.git","type":"git"},"_npmVersion":"11.19.0","description":"Compact, expandable Pi tool cards with reversible presentation patches.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"24.10.1","@earendil-works/pi-tui":"0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-minimal-display_0.1.0_1788697943584_0.973378968455171","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@allenyolk/pi-minimal-display","version":"0.1.1","keywords":["pi-package","pi","tool-rendering"],"license":"MIT","_id":"@allenyolk/pi-minimal-display@0.1.1","maintainers":[{"name":"allenyolk","email":"allen.yfhuang@gmail.com"}],"homepage":"https://github.com/AllenYolk/pi-minimal-display#readme","bugs":{"url":"https://github.com/AllenYolk/pi-minimal-display/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"c216da2817cd6c50b122fde33da262c6567d8e6f","tarball":"https://registry.npmjs.org/@allenyolk/pi-minimal-display/-/pi-minimal-display-0.1.1.tgz","fileCount":6,"integrity":"sha512-WRNyEVVnxoZTpBT80VM10pH/imqfEqOLm8CH7umu0dqM7VN5oWIyHlhl3pOMydQz93duMfXNL64z8y09ugeFfw==","signatures":[{"sig":"MEYCIQD+gy/JFMQu7GpmbzYQ2vLC1WhsY/U5j7B441IwNAUd5AIhAIxjkAb6xYR8UAvaD38XL0veJfXi20Yt2wtiRo56544X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCbetU5yu3+JEn1dyXq4pEkXYTCqDt7O3+X2tTlcs+hnQIgC3KmTjA796ypS0IxM5sCEA3rJCehICZVA0ihM4/mM70=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34011},"type":"module","engines":{"node":">=22.19.0"},"exports":"./src/index.ts","gitHead":"f40712207a4426f16f080ac50b85cecbd5e071ba","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc","check":"npm run typecheck && npm test","benchmark":"npm run build && node test/benchmark.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"allenyolk","email":"allen.yfhuang@gmail.com"},"repository":{"url":"git+https://github.com/AllenYolk/pi-minimal-display.git","type":"git"},"_npmVersion":"12.0.1","description":"Compact, expandable Pi tool cards with reversible presentation patches.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"24.10.1","@earendil-works/pi-tui":"0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-minimal-display_0.1.1_1788765197723_0.20528214891651486","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"pi":{"extensions":["./src/index.ts"]},"_id":"@allenyolk/pi-minimal-display@0.1.2","bugs":{"url":"https://github.com/AllenYolk/pi-minimal-display/issues"},"dist":{"shasum":"c0a3740cfd57830a35f002a5d1e1c324a771ed60","tarball":"https://registry.npmjs.org/@allenyolk/pi-minimal-display/-/pi-minimal-display-0.1.2.tgz","fileCount":6,"integrity":"sha512-ND2xMRili1nqHN7qu9FxyGY76fp0GeefflQ8dgqoaqYKVjmJwuCAttASbi6PoBnaV5tViQUuBABUqRjtyN17VA==","signatures":[{"sig":"MEUCIQDxtFhA4YKMOsRTKPPUBcCl+zEyWM57w1Sgpw/LzoTJZgIgfzoRGkEXN50ge8QuA6AiWcxB0HM48hqL8Zw/dANkTdI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBr/kj35zVnjhmAIgiRQr1cC9K7TUot6ZKHcxWIaezcpAiEA9sDLlkDL7D0QshwqwO8KaBZLVh6cj7pB2zDcXrvM9NY="}],"unpackedSize":35074},"name":"@allenyolk/pi-minimal-display","type":"module","engines":{"node":">=22.19.0"},"exports":"./src/index.ts","gitHead":"310e361692c13fbce154d18fbf4f056d04546ade","license":"MIT","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc","check":"npm run typecheck && npm test","benchmark":"npm run build && node test/benchmark.mjs","typecheck":"tsc --noEmit"},"version":"0.1.2","_npmUser":{"name":"allenyolk","email":"allen.yfhuang@gmail.com"},"homepage":"https://github.com/AllenYolk/pi-minimal-display#readme","keywords":["pi-package","pi","tool-rendering"],"repository":{"url":"git+https://github.com/AllenYolk/pi-minimal-display.git","type":"git"},"_npmVersion":"12.0.1","description":"Compact, expandable Pi tool cards with reversible presentation patches.","directories":{},"maintainers":[{"name":"allenyolk","email":"allen.yfhuang@gmail.com"}],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.9.3","@types/node":"24.10.1","@earendil-works/pi-tui":"0.99.1","@earendil-works/pi-coding-agent":"0.99.1"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-minimal-display_0.1.2_1790778478362_0.3733390311336533"}}},"time":{"created":"2026-09-06T12:32:23.420Z","modified":"2026-09-30T14:27:59.720Z","0.1.0":"2026-09-06T12:32:23.703Z","0.1.1":"2026-09-07T07:13:17.806Z","0.1.2":"2026-09-30T14:27:58.446Z"},"bugs":{"url":"https://github.com/AllenYolk/pi-minimal-display/issues"},"license":"MIT","homepage":"https://github.com/AllenYolk/pi-minimal-display#readme","keywords":["pi-package","pi","tool-rendering"],"repository":{"url":"git+https://github.com/AllenYolk/pi-minimal-display.git","type":"git"},"description":"Compact, expandable Pi tool cards with reversible presentation patches.","maintainers":[{"name":"allenyolk","email":"allen.yfhuang@gmail.com"}],"readme":"# Pi Minimal Display\n\nCompact, expandable tool activity for Pi. Consecutive tool calls become a summary such as:\n\n```text\nbash ×3 read ×4 edit ×1\nsucceeded · ctrl+o to expand\n```\n\nFailed tools are named in the summary, even while other calls are pending. Click a group or use Pi's configured tool-expansion shortcut to inspect its retained native details. Execution, tool definitions, model context, and saved conversation data are unchanged.\n\nSummaries use the current Pi theme and native tool-card padding/backgrounds. Failure takes precedence over pending work when selecting a background. Colored padding is clickable; the preceding blank line is not. Startup, new, resumed and forked sessions automatically begin minimal; `/reload` preserves Pi's current global expansion state. The existing tool shortcut (Ctrl+O by default) remains a two-state minimal/expanded toggle, including when rebound. This toggle is intentionally silent instead of inserting `Tool output: expanded/collapsed` into the transcript; the changed card detail is its feedback. Pi's native thinking-visibility shortcut (Ctrl+T by default) is likewise silent; the changed assistant presentation is its feedback. `/minimal-display` only reports status and is never required to activate the extension.\n\nStatus: `v0.1.2` release candidate for GitHub and npm. The runtime adapter is tested on Pi 0.85.0, 0.85.1 and 0.99.1; CI re-verifies 0.85.1 and 0.99.1. It accepts hosts whose patched presentation methods match a tested signature, so unrelated Pi releases do not require a plugin update; incompatible hosts stay native and display a diagnostic. Compatibility results and limitations live in [validation](docs/validation.md).\n\n## Install from GitHub\n\nFollow the default branch and receive compatible updates with `pi update --extensions` or `pi update --all`:\n\n```sh\npi install git:github.com/AllenYolk/pi-minimal-display\n```\n\nOr pin an immutable release; pinned refs do not advance during Pi updates:\n\n```sh\npi install git:github.com/AllenYolk/pi-minimal-display@v0.1.2\n```\n\nFor one run without changing settings:\n\n```sh\npi -e git:github.com/AllenYolk/pi-minimal-display@v0.1.2\n```\n\n## Try local source in an isolated profile\n\nFrom this repository, using your existing Pi installation:\n\n```sh\nPI_CODING_AGENT_DIR=\"$(mktemp -d)\" pi -e ./src/index.ts\n```\n\nThis profile is separate from your normal configuration and credentials. To test normal conversations you will need to configure that profile's provider separately. There is no installation hook or runtime dependency to install for this extension. Pi loads the TypeScript entry directly.\n\nFor a local package installation into a profile you have chosen:\n\n```sh\npi install /absolute/path/to/pi-minimal-display\n```\n\nThe repository, packed artifact and npm package all point to `src/index.ts`. No generated `dist/` is required for Pi loading; npm publication is not required for GitHub installation.\n\n## Configuration\n\nCreate `extensions/pi-minimal-display/config.json` under Pi's actual agent directory (normally `~/.pi/agent`). `PI_CODING_AGENT_DIR` is respected. No file means these defaults:\n\n```json\n{\n  \"grouping\": true,\n  \"default\": \"count_only\",\n  \"tools\": {\n    \"read\": \"count_only\",\n    \"grep\": \"count_only\",\n    \"find\": \"count_only\",\n    \"ls\": \"count_only\",\n    \"bash\": \"lines\",\n    \"edit\": \"lines\",\n    \"write\": \"lines\",\n    \"ask_user_question\": \"native\",\n    \"plan_mode_question\": \"native\",\n    \"plan_mode_complete\": \"native\"\n  },\n  \"bash\": { \"maxCommandChars\": 120, \"outputLines\": 0 }\n}\n```\n\n- `native`: preserve Pi's existing tool presentation. The three known interactive tools above use this by default; add other interactive tools by their actual registered names when needed.\n- `count_only`: compact count/status, with retained native details on expansion.\n- `lines`: joins the same group as count-only tools. When `grouping` is false, also shows a short command/path preview. Bash can show up to `outputLines` text lines.\n- Tool overrides use exact names; defaults for other built-ins remain in effect. There is no MCP discovery or gateway-name guessing.\n- Ordinary tools default to count-only, including `readSeek_edit`, `readSeek_grep` and future tool names. Counts identify actual registered names, not renderer titles. Explicit `default` and `tools` values remain authoritative; existing configurations explicitly setting `default: \"native\"` are not overwritten. To keep the pre-rc.3 unknown-tool behavior, set that value explicitly.\n- `maxCommandChars` accepts integers 8–500, measured in Unicode code points; the preview also fits the terminal width. `outputLines` accepts integers 0–50. Neither changes actual arguments or results.\n- Thinking visibility belongs only to Pi's native `hideThinkingBlock` setting in its regular settings file; this plugin never adds a second setting. Visible thinking remains native and splits adjacent tool groups. When Pi hides thinking, the compact presentation also omits Pi's `Thinking...` placeholder, and hidden-only blocks do not split adjacent managed tools. Visible assistant text still does.\n- Older configs may still contain `hideThinking`; it is accepted only for migration and ignored. Remove it after moving the choice to Pi's native setting.\n\nChanges take effect after `/reload` or restart. `/minimal-display` shows status and the configuration path. Unknown keys, invalid types, malformed JSON, or unreadable configuration disable compact display for that runtime and report the file path.\n\nGroups end at intervening visible assistant text/thinking, native tools, other transcript output, user messages or skill invocations. Natively hidden thinking and empty tool-call-only assistant placeholders do not. Five calls, commentary, then three calls stay in that order as two groups, including when expanded. The session branch also identifies image-only user turns that have no visible user card. Expanded groups use Pi's native renderers, controls and images without adding a Retained data appendix. Native renderers may omit some successful text or metadata; raw arguments/results/details remain unchanged in Pi's session data. The plugin cannot recover output Pi already discarded.\n\n## Runtime patches and recovery\n\nThis extension temporarily patches Pi's in-memory container rendering, mouse routing, Assistant presentation, and native expansion/status routing for tool and thinking toggles. Pi's native component state remains the sole thinking-visibility authority; the plugin only removes its hidden placeholder from the compact projection. It never edits installed Pi files and never registers replacement tools. All private host assumptions are kept in [presentation.ts](src/presentation.ts).\n\nInstallation checks required exports/descriptors and fingerprints of the host methods it patches, not the Pi version string. Shutdown and reload dispose owned patches; a runtime presentation failure disables the adapter and reports the fallback. Do not run it alongside `pi-tool-display`, `pi-tool-compact-display`, or `pi-compact-display`. Known tool-owner conflicts and prior modifications to the patched methods are rejected. Arbitrary third-party prototype patch combinations are not supported.\n\nTo recover, restart Pi without this extension. Remove the same source used for installation—for example `pi remove git:github.com/AllenYolk/pi-minimal-display` or the pinned source—then restart. The configuration file can be kept. Running `pi --no-extensions` provides a diagnostic session with all auto-discovered extensions disabled.\n\n## Development\n\nPrerequisites: Node >=22.19.0, npm, and [uv](https://docs.astral.sh/uv/) for the standard-library Python PTY test harness on macOS/Linux.\n\n```sh\nnpm ci --ignore-scripts\nuv python install 3.12\nnpm run check\nnpm run benchmark\nnpm pack --ignore-scripts\n```\n\n`npm run check` includes type checking, configuration/component regressions, real InteractiveMode replay/keyboard/mouse/image checks, a bundled Pi CLI probe with ten reloads, and an actual packed-artifact load. Tests use disposable directories under ignored `work/` and never alter the daily Pi profile.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for issue, review, and release gates. The authoritative contract is [issue #1](https://github.com/AllenYolk/pi-minimal-display/issues/1).\n\n## License and provenance\n\nMIT, copyright AllenYolk. This is an original implementation, informed by the behavior of [pi-compact-display](https://github.com/Masterisk-F/pi-compact-display) and Pi's documented extension interfaces. No compact-display source was copied. Pi and its dependencies retain their respective licenses.\n","readmeFilename":"README.md"}