Skip to content

feat(term): multiplex macOS terminals with batched scrollback and responsive input - #2

Merged
doodlewind merged 13 commits into
mainfrom
feat/offload-terminal-multiplex
Sep 7, 2026
Merged

feat(term): multiplex macOS terminals with batched scrollback and responsive input#2
doodlewind merged 13 commits into
mainfrom
feat/offload-terminal-multiplex

Conversation

@doodlewind

@doodlewind doodlewind commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Pocket Term now exposes independent macOS PTYs on the 3DS with an 80×24 terminal, local inertial history, and a lower-screen keyboard, session tabs, touchpad and settings. The Bun offload provider forwards authenticated capabilities to a durable Node worker owning node-pty, libghostty, scrollback and dynamic glyphs. Provider reconnects preserve sessions while that worker stays alive; stopping the companion ends them.

Input batches have their own ticket and deduplicated command ids. Live output retains ordered fragments until acknowledged. Protocol 6 batches up to 16 historical rows across two requests while cache ownership remains session/epoch/absolute-row based, with cancellation and pruning fences. The guest publishes bounded history work at frame boundaries and moves cached content by pixel translation.

The D-pad and right nub send repeating editor cursor keys. Settings selects Spleentt, Spleen or Fusion Pixel, scroll speed and conservative typing preview. Preview learns from confirmed echoes, never mutates authoritative cells, and uses the framework virtual clock for expiry. Font source archives preserve the original bytes and licenses while reducing 3.30MB of BDF text to 353KB.

The README now covers the current setup, controls, lifecycle, architecture and update process. New native terminal/settings captures replace the obsolete homepage images, include reproducible fixture metadata, and identify example terminal data. Historical validation remains labeled by revision.

Validation:

  • Guest/host types and 69 tests pass (1,494 assertions); all three font atlases reproduce byte-identically.
  • Two provider/macOS PTY integrations pass, including reconnects, history invalidation, bracketed paste, CJK and saved Vim/Nano edits.
  • Production 3DS and Mac mirror builds pass. Current README captures were generated with the native 3DS renderer and inspected at native resolution; all 36 local documentation targets resolve.
  • The final documentation build reproduces the launcher installed and read back byte-identically on 2026-09-07 at 01:20 UTC. Existing Mac sessions were preserved. The user authorized merging the current changes.
  • Simulated 100ms RTT measurements cover input queues and cold-history filling. They do not establish physical Wi-Fi throughput or a guaranteed frame rate; the pinned native host still delivers at most one 4,096-byte record per frame.

User guide, history transport, prediction and input, and validation receipts.

@doodlewind doodlewind changed the title feat(term): multiplex macOS terminals through paired offload feat(term): multiplex macOS terminals with cached scrollback and pixel fonts Sep 6, 2026
@doodlewind doodlewind changed the title feat(term): multiplex macOS terminals with cached scrollback and pixel fonts feat(term): multiplex macOS terminals with cached scrollback and responsive input Sep 6, 2026
@doodlewind doodlewind changed the title feat(term): multiplex macOS terminals with cached scrollback and responsive input feat(term): multiplex macOS terminals with batched scrollback and responsive input Sep 7, 2026
@doodlewind
doodlewind marked this pull request as ready for review September 7, 2026 01:48
@doodlewind
doodlewind merged commit 34f27c8 into main Sep 7, 2026
1 check passed
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