Skip to content

Test and refactor core module#74

Merged
ynqa merged 81 commits intov0.12.0/devfrom
nopanematrixify
Mar 13, 2026
Merged

Test and refactor core module#74
ynqa merged 81 commits intov0.12.0/devfrom
nopanematrixify

Conversation

@ynqa
Copy link
Owner

@ynqa ynqa commented Mar 13, 2026

No description provided.

@ynqa ynqa marked this pull request as ready for review March 13, 2026 09:48
Copilot AI review requested due to automatic review settings March 13, 2026 09:48
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the core module by replacing Pane/PaneFactory with StyledGraphemes/Widget, removes the Pane abstraction entirely, and introduces new test infrastructure (termharness, zsherio, zsh-render-parity) for validating terminal rendering behavior against real zsh.

Changes:

  • Replaces Pane/PaneFactory with direct StyledGraphemes/Widget across all widgets, presets, and the core renderer
  • Adds termharness (PTY session harness), zsherio (scenario runner), and zsh-render-parity (integration tests comparing promkit rendering to zsh)
  • Updates README, Concept.md, tape files, and examples to reflect the new API and project structure

Reviewed changes

Copilot reviewed 58 out of 59 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
promkit-core/src/lib.rs Replaces PaneFactory trait with Widget trait
promkit-core/src/pane.rs Deleted — Pane abstraction removed
promkit-core/src/grapheme.rs Adds from_lines, wrapped_lines, delegation methods; removes Deref/DerefMut
promkit-core/src/render.rs Renderer stores StyledGraphemes instead of Pane
promkit-core/src/terminal.rs draw accepts StyledGraphemes, wraps inline
promkit-widgets/src/*.rs All widgets implement Widget/create_graphemes instead of PaneFactory/create_pane
promkit/src/preset/*.rs All presets updated to new API
promkit/src/lib.rs Adds resize-event skip in core event loop
termharness/ New crate: PTY-based terminal session with screen emulation
zsherio/ New crate: scenario definitions and runner for zsh testing
zsh-render-parity/ New crate: integration tests + zsh-pretend binary
README.md, Concept.md Documentation updated for new architecture
Cargo.toml, tapes/*.tape Workspace and demo updates

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +119 to +124
// NOTE: For zsh_pretend/tests/resize_roundtrip_wrap_reflow.rs, skipping
// resize events here
// keeps output closer to zsh than evaluating resize as a normal input event.
if event.is_resize() {
continue;
}
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No

ynqa and others added 3 commits March 13, 2026 18:52
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@ynqa ynqa merged commit 4b26c0c into v0.12.0/dev Mar 13, 2026
1 check failed
@ynqa ynqa deleted the nopanematrixify branch March 13, 2026 09:59
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.

2 participants