shell-pool / shell-pool/shpool

Improving session restore functionality

Open
#46 12 comments 4 reactions 1 assignee View on GitHub

@ethanpailes is already working on this.

Since Jan 23, 2026.

1.0 big enhancement
Dominant language
Rust
Stars
2k
Forks
67
Avg merge
3d 1h
Merged PRs (30d)
15

Description

Overview

Shpool currently has a session restore feature that uses an in-memory terminal emulator implementation to record shell output, and then generate appropriate format codes and data to restore the last known screen state when a user reconnects. There are some issues with the current functionality that we would like to address.

Problem

The current in-memory terminal crate we use, shpool_vt100, has some issues. In particular, it does not use a very memory efficient representation of the terminal, and a lack of correct text wrapping supports means we need to make each line 10k characters long. Worse than the excessive resource consumption though is the fact that not all control sequences are correctly handled, resulting in output being occasionally mangled.

List of control sequences we may consider support:

  • #44
  • any other?

Potential Solution

Fixing the shpool_vt100 crate and replacing it with a new crate, which could either be written from the ground up or extracted from one of several existing rust terminals.

Currently wezterm-term looks promising, but it is not published to crates.io, and we need more investigation to see if it actually fits shpool's use case.

Other terminals considered:

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.