Skip to content

release/v0.1.0 - #17

Merged
liuli195 merged 24 commits into
mainfrom
release/v0.1.0
Jul 24, 2026
Merged

release/v0.1.0#17
liuli195 merged 24 commits into
mainfrom
release/v0.1.0

Conversation

@liuli195

Copy link
Copy Markdown
Owner

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

liuli195 added 24 commits July 24, 2026 21:18
…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).
@liuli195
liuli195 merged commit bd4bd96 into main Jul 24, 2026
3 checks passed
@liuli195
liuli195 deleted the release/v0.1.0 branch July 24, 2026 23:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant