<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sl0ppij.git/zellij-client/src/stdin_ansi_parser.rs, branch main</title>
<subtitle>a sl0p.foo repository</subtitle>
<id>https://git.sl0p.foo/sl0ppij.git/atom/zellij-client/src/stdin_ansi_parser.rs?h=main</id>
<link rel='self' href='https://git.sl0p.foo/sl0ppij.git/atom/zellij-client/src/stdin_ansi_parser.rs?h=main'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/'/>
<updated>2026-07-31T17:19:49Z</updated>
<entry>
<title>Support the Kitty Image Protocol (#5428)</title>
<updated>2026-07-31T17:19:49Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-07-31T17:19:49Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=0e6e4404027a187f1399a43bf91bdbd13d9636e1'/>
<id>urn:sha1:0e6e4404027a187f1399a43bf91bdbd13d9636e1</id>
<content type='text'>
* initial implementation - kinda working

* tests and fixes

* fix bounds

* tests and compatibility fixes

* fix: cursor scroll, clears, deletes, key tolerance, and host id range

* fix: keep images alive across resize, relayout and history scroll

* anchor to lines, not pixels

* fix image/text alignments

* config to allow disabling

* fix pinned pane issue

* never let host graphics replies reach the keyboard parser

* fix nested session

* properly handle fullscreening a pane

* rustfmt

* cleanup of ignored test

* add pr</content>
</entry>
<entry>
<title>Nested session handling (#5417)</title>
<updated>2026-07-27T16:24:37Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-07-27T16:24:37Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=ea07e2d5b6bbc9ea6f9c765b0838b3e91156a58d'/>
<id>urn:sha1:ea07e2d5b6bbc9ea6f9c765b0838b3e91156a58d</id>
<content type='text'>
* fix: theme query and updated pixel dimensions

* add no-ui-fullscreen key/action/capability

* protocol core

* integration test harness

* fix integration tests

* fix flaky tests

* nested ui (dimming) and directional focus initial implementation

* integration tests for nested ui dimming and directional focus

* initial full screen nesteed implementation

* fix: keep hidden floating panes hidden across nested no-ui fullscreen

* fix integration tests

* no ui fullscreen integration tests

* hardening behavior/tests

* fix(nested): re-derive descend/dim on host tab switch and new-tab so clicking dimmed chrome ascends

* initial modal implementation

* initial ui improvements

* fix integration tests

* improve nested selection ui

* nested session modal refactoring and tests

* improve integration test speed somewhat

* some ui adjustments

* simplify full/auto nested session handling

* hints in compact-bar

* guest stdin leak fix

* allow floating panes to be fullscreen

* make nested session handling configurable

* protocol reannounce

* refactor: naming confusion

* improve ux somewhat

* rustfmt

* merge fixes

* improve integration test rate limiting (fix ci)

* add pr</content>
</entry>
<entry>
<title>fix: occasional garbage on attaching through slow connections (#5320)</title>
<updated>2026-06-30T14:48:37Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-06-30T14:48:37Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=6a6376cebb0a3a85b39bbf3242dcd2ae58d82cc5'/>
<id>urn:sha1:6a6376cebb0a3a85b39bbf3242dcd2ae58d82cc5</id>
<content type='text'>
* fix: occasional garbage on attaching through slow connections

* rustfmt

* add PR</content>
</entry>
<entry>
<title>Support CSI2031 (dark/light theme switching) + remove STDIN cache to avoid stale color queries (#5105)</title>
<updated>2026-04-28T15:14:59Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-04-28T15:14:59Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=227142dd567ee72bcc137c116bc1ce2b818975e7'/>
<id>urn:sha1:227142dd567ee72bcc137c116bc1ce2b818975e7</id>
<content type='text'>
* initial phase 1 implementation

* various fies

* some fixes

* fix fragmented stdin cases

* some fixes

* renaming

* guard against old clients

* implement csi 2031

* allow toggling theme with actions

* rustfmt

* fix: finalize trailing characters in ansi parser as well

* add pr</content>
</entry>
<entry>
<title>fix: kitty keyboard restore on error path + 2026 DECRPM state 3 handling (#5058)</title>
<updated>2026-04-20T19:32:34Z</updated>
<author>
<name>Thomas Linford</name>
<email>tlinford@users.noreply.github.com</email>
</author>
<published>2026-04-20T19:32:34Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=7d647f7b78992c22b0fb5af4746622b1a2552b73'/>
<id>urn:sha1:7d647f7b78992c22b0fb5af4746622b1a2552b73</id>
<content type='text'>
* fix: kitty keyboard cleanup on error path + 2026 DECRPM state 3 handling

lib.rs: handle_error now exits kitty keyboard protocol (ESC[&lt;1u) before
printing the backtrace, matching the normal exit path. Previously the
kitty keyboard mode was left active on crash, corrupting subsequent
terminal input.

stdin_ansi_parser.rs: synchronized_output_from_bytes now treats DECRPM
state 3 (permanently set) as enabled, matching states 1 and 2. State 3
is a valid "supported and on" response that was previously falling through
to None (treated as unsupported).

* docs: update changelog

* refactor(client): unify terminal teardown/setup sequences

- Extract named constants for all terminal escape sequences
- Add terminal_teardown_message() helper used by all three exit paths,
  fixing several pre-existing inconsistencies in the process:
  - handle_error was missing RESET_STYLE and SHOW_CURSOR
  - remote client had kitty keyboard exit after EXIT_ALTERNATE_SCREEN
    instead of before
  - goodbye path had goto positioned in the alt screen before exit
  - RESET_STYLE/SHOW_CURSOR are now sent after EXIT_ALTERNATE_SCREEN
    so they take effect in the normal screen
- Replace write() with write_all() throughout; drop redundant let _ =
  on unwrap() calls

* docs: update changelog</content>
</entry>
<entry>
<title>Fix startup message and cache file creation (#4705)</title>
<updated>2026-02-15T11:55:22Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-02-15T11:55:22Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=753110669046196d94ffb1824f6c827a7497eaf0'/>
<id>urn:sha1:753110669046196d94ffb1824f6c827a7497eaf0</id>
<content type='text'>
* only show startup loading message if we've been loading for more than 400ms

* create relevant cache folders before attempting to write startup cache files

* fix flaky tests

* rustfmt

* add pr</content>
</entry>
<entry>
<title>build: Don't re-export foreign crates in utils (#4087)</title>
<updated>2025-03-23T10:03:42Z</updated>
<author>
<name>har7an</name>
<email>99636919+har7an@users.noreply.github.com</email>
</author>
<published>2025-03-23T10:03:42Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=6be8c495bcbdc2aa4fd4d6528b213ca8b6189b34'/>
<id>urn:sha1:6be8c495bcbdc2aa4fd4d6528b213ca8b6189b34</id>
<content type='text'>
* build(utils): Don't use reexported dependency

for internal code, but use the dependency directly.

* build(client): Don't use re-exports from `utils`

but turn `zellij-utils` dependencies into shared workspace dependencies
instead and specify those in `Cargo.toml` explicitly. This gives a much
better overview of what component in zellij uses which crates. The
previous approach hides a lot of this information since it looks like
crates are used in a single place where this isn't actually true.

* deps(tile): Don't use re-exports from zellij-utils.

* build(zellij): Don't use re-exports from zellij-utils.

* build(server): Don't use re-exports from zellij-utils.

* build(utils): Don't re-export foreign crates.

* docs: Update Changelog with PR #4087.

* style: Apply rustfmt.

* style: Apply rustfmt.

* build(e2e): Don't use re-export from zellij-utils.

* test: Restore e2e tests.

* style: Apply more formatting.</content>
</entry>
<entry>
<title>feat(client): terminal synchronized output (#2798)</title>
<updated>2023-10-13T09:24:22Z</updated>
<author>
<name>gmorer</name>
<email>gmorer@users.noreply.github.com</email>
</author>
<published>2023-10-13T09:24:22Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=ccc40a4a26b8e8a77288e55ab6777c64af816469'/>
<id>urn:sha1:ccc40a4a26b8e8a77288e55ab6777c64af816469</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(plugins): add zellij version to cached artifact path (#2836)</title>
<updated>2023-10-12T07:55:27Z</updated>
<author>
<name>Thomas Linford</name>
<email>tlinford@users.noreply.github.com</email>
</author>
<published>2023-10-12T07:55:27Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=fb1af39acaa6e00c4bee07bafc35c60a7915164e'/>
<id>urn:sha1:fb1af39acaa6e00c4bee07bafc35c60a7915164e</id>
<content type='text'>
- move plugin artifact dir to version specific subfolder
- also move stdin-cache file to same subfolder, and use a constant for the path</content>
</entry>
<entry>
<title>fix(ux): cache stdin queries on startup (remove startup delay) (#2173)</title>
<updated>2023-02-17T18:32:07Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2023-02-17T18:32:07Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=3a0e56afd821c725f0eaac12d8c56df96686ee38'/>
<id>urn:sha1:3a0e56afd821c725f0eaac12d8c56df96686ee38</id>
<content type='text'>
* fix(ux): cache stdin queries on startup

* style(fmt): rustfmt</content>
</entry>
</feed>
