release/v0.1.0 - #17
Merged
Merged
Conversation
…r removal, peer range, project config P1 #36: All preview renderers now limit by terminal visual rows instead of logical line count via VisualLinePreviewComponent. Prevents long single-line output from overflowing the viewport in collapsed mode. P1 #14/#19: Removed Bash spinner animation (setInterval, frame cycling, elapsed time, invalidate()). Bash command display is now deterministic. Pi's native working indicator handles execution feedback. P2 #20/#31: Narrowed peer dependency range to >=0.81.1. Removed 0.74.0 and 0.80.x from supported versions and runtime matrix. P3 #27: Added read-only project-local config overlay. Trusted projects can place config.json in <project>/.pi/extensions/pi-tool-display/. Uses CONFIG_DIR_NAME + ctx.isProjectTrusted(). Write ops remain global. 631/634 tests pass (3 runtime contract tests require PI_RUNTIME_* env vars). Typecheck, build, and diff-check pass.
…n hints, expanded preview Standards fixes: - ExtractExplicitFields: loadProjectToolDisplayConfig → readProjectToolDisplayConfig returns only explicitly present fields, no default-filling normalization - Merge global config fresh on session_start to prevent cross-session leakage - setConfig saves only global config; project overlay never persists to disk - Split buildPreviewHints into collapsed/expanded helpers, removed unused params - Removed buildPreviewText Middle Man (was only delegating) - Extracted wrapComponentWithHints for error preview path too Spec fixes: - buildPreviewContent never embeds logical truncation hint in returned text (prevents duplicate omission hints when passed to VisualLinePreviewComponent) - renderBashPreviewWithHints uses VisualLinePreviewComponent for expanded path - renderBashVisualPreview uses buildPreviewContent to avoid duplicate hints - renderBashErrorResult separates body from hints, uses wrapComponentWithHints 631/634 tests pass. Typecheck, build, diff-check pass.
…ontract test Standards: - setConfig computes delta against merged config, applies only changed fields to globalConfig; project overlay never persists to disk - mergeProjectConfig deep-merges builtInToolDisplays/customToolOverrides so project overrides don't reset unrelated global nested values - Removed buildExpandedPreviewHints (was adding duplicate expanded cap hint) - Removed unused lines/config params from buildCollapsedPreviewHints - Fixed tautological ternary in renderBashPreviewWithHints - Updated package-lock.json for new peer range Spec: - All expanded preview paths now use VisualLinePreviewComponent with expandedVisualRowCap (max of 100, expandedPreviewMaxLines) to prevent long single-line content from flooding viewport - Removed duplicate expanded cap hint (appendHints already includes it via appendRtkAndExpandedHints) - buildPreviewContent never embeds logical truncation hint; component handles visual hint, collapsed hints added separately - Updated real-runtime-contract: animatedPartial == partial (no spinner), timersWhilePartial: 0 631/634 tests pass. Typecheck, build pass.
…ion gate Critical fixes: - VisualLinePreviewComponent: expanded no longer bypasses limits; callers pass expandedVisualRowCap as previewLines for expanded paths. expandedBypass=true only for bash command display (user explicitly expanded). - renderBashVisualPreview: use maxLines (not lines.length) for buildPreviewContent so visual-row budget is actually applied. - pi-host-adapter: removed 0.74.0/0.80.3 from supportedVersion; native fallback for those versions. - devDependency: upgraded pi-coding-agent to ^0.81.1 to match peer range. Standards: - Renamed config→mergedConfig in index.ts for clarity. - Removed applyConfigDelta Middle Man; use mergeProjectConfig directly. - NESTED_OBJECT_KEYS uses ReadonlySet<string> for type safety. Spec: - Registration now happens inside session_start, allowing project config to load even when global enabled=false. - setConfig computes delta and applies only to globalConfig; project overlay never leaks to disk. - Updated reload-behavior tests to invoke session_start for registration. 630/634 tests pass (3 runtime contract + 1 RTK lifecycle need env/version).
- Removed logical-line truncation hint from all collapsed paths; VisualLinePreviewComponent handles visual omission hint exclusively. Eliminates duplicate hints when lines wrap. - Pass full content to VisualLinePreviewComponent so it can detect truncation (was passing pre-truncated text, making the hint invisible). - getExpandedVisualRowCap: 0 means unlimited (MAX_SAFE_INTEGER); positive values clamped to at least 50. - setConfig uses replacement semantics (spread + normalize) instead of deep merge for global config deltas; deep merge reserved for project overlays only. - release-capability-lifecycle: invoke ALL captured handlers instead of .at(-1) which picked wrong handler after registration restructuring. 631/634 tests pass (3 runtime contract need env vars).
…on gate - getExpandedVisualRowCap: removed 50-floor; 0=unlimited, positive=exact cap. - renderPreviewText: empty lines show '(no output)' instead of blank. - enabled:false now calls disposeAll() to clean existing patches. - pi-host-adapter: whitelist tested versions only (0.81.1, 0.82.0); untested future versions use native fallback per spec decision 35. - Fixed extra blank lines at EOF (diff --check clean). - Updated host adapter tests for whitelist behavior. 632/635 tests pass (3 runtime contract need env vars).
- setConfig computes delta against globalConfig (not mergedConfig) so project overlay values never leak into global config writes. - enabled:false calls disposeSession + disposeAll + explicit renderer disposer to fully clean Host Adapter and user-message patches. 632/635 tests pass (3 runtime contract need env vars).
RESTORED: The logical-line truncation hint ('... (N more lines • Ctrl+O to
expand)') that was removed in earlier refactoring. This hint is essential
for users to know content was truncated.
How it works now:
- buildPreviewContent includes the logical-line truncation hint in the text
when remaining > 0 and not expanded (restored original behavior)
- VisualLinePreviewComponent adds a visual-row hint only when rendered
visual rows exceed the budget (handles narrow terminal wrapping)
- In most cases only the logical hint appears (content hint is part of text)
- In narrow terminals where the hint itself wraps, both hints may appear:
the logical hint signals 'content was truncated', the visual hint signals
'even the truncated content overflows the viewport'. These are distinct
signals, not duplicates.
- The bash error path also restores the logical-line truncation hint.
This fixes the feature regression where truncation was invisible to users.
632/635 tests pass (3 runtime contract need env vars).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Prepare @plus/pi-tool-display v0.1.0 for standalone GitHub distribution
Scope
Add Git-only installation docs, release metadata, CI, PR Flow, Build and Verify, security/community files, and fix portable configuration and runtime checks
Closing References
None