Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

A kitty `a=p` that arrives during a chunked upload is swallowed as the upload's next chunk

Open
#636 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
76/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
rust
Domain
cli, testing-qa

Research direction

Start with emu/seq.rs:1398-1406, where building.kitty(keys) handles APC G sequences during an upload, and compare the behavior with kitty’s case 'p' described in the issue. Run the reproduction and the tests beside #587. Done when the placement i=9 is emitted and image i=1 completes with data /wAAAAD/ in two chunks, with kitty() == 1.

Written by the indexing model from the issue text.

Description

bug

What happens. With an upload in progress (m=1), a placement command is taken as part of the upload:

\033_Ga=T,f=24,s=2,v=1,i=1,m=1;/wAA\033\\ \033_Ga=p,i=9,c=2,r=1\033\\ \033_Gm=0;AAD/\033\\

termlens reports kitty() == 2:

  • TransmitAndPlace i=1 with data /wAA, which fails to decode ("fewer bytes than the declared size needs").
  • Transmit with no id and data AAD/, which fails to decode ("without s= and v=").

The i=9 placement is gone.

Expected. kitty handles a=p in its own case 'p' without touching the load in progress (graphics.c, grman_handle_command). The following action-less m=0 chunk then completes the load. So the right result is one placement of i=9 and one image i=1 with data /wAAAAD/ in 2 chunks, kitty() == 1.

Cause. emu/seq.rs:1398-1406: once an upload is in progress, building.kitty(keys) treats any APC G as its continuation, whatever its action.

Fix. Treat only an escape with no a= as a continuation. Emit a=p (and a=a, a=c) as payloads of their own, leaving the upload alone.

Done when the repro reports the placement and one complete image, beside the #587 tests.

Dominant language
Rust
Stars
28
Forks
24
Avg merge
11h 23m
Merged PRs (30d)
42

Getting set up

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.

More from vyncint/termlens

All issues in vyncint/termlens

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.