<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sl0ppij.git/zellij-client/src/lib.rs, branch main</title>
<subtitle>a sl0p.foo repository</subtitle>
<id>https://git.sl0p.foo/sl0ppij.git/atom/zellij-client/src/lib.rs?h=main</id>
<link rel='self' href='https://git.sl0p.foo/sl0ppij.git/atom/zellij-client/src/lib.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>More dependency upgrades for debian (#5421)</title>
<updated>2026-07-29T15:08:08Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-07-29T15:08:08Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=cab75c58fec089d7ee97c0e7ca1abafa9ef5e33f'/>
<id>urn:sha1:cab75c58fec089d7ee97c0e7ca1abafa9ef5e33f</id>
<content type='text'>
* upgrade insta, rand, sha2, strum, thiserror, tokio-tungstenite, toml, which; drop unused semver and typetag

* upgrade sysinfo to 0.39.5, bump toolchain (msrv) to 1.95.0

* remote legacy yaml config converter and thus drop serde_yaml

* upgrade unicode-width to 0.2.2

* fix(tests): run ipc roundtrip test on a larger stack</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: more verbose startup errors (#5334)</title>
<updated>2026-07-06T06:55:09Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-07-06T06:55:09Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=7b823f972ada878456d0dc91fc6b3472972f045a'/>
<id>urn:sha1:7b823f972ada878456d0dc91fc6b3472972f045a</id>
<content type='text'>
* fix: more verbose startup errors

* add pr</content>
</entry>
<entry>
<title>chore: new test infra (#5269)</title>
<updated>2026-06-16T13:44:22Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-06-16T13:44:22Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=8c7e41c9aaafc44520380a2c86db517fde54ad31'/>
<id>urn:sha1:8c7e41c9aaafc44520380a2c86db517fde54ad31</id>
<content type='text'>
* initial implementation

* refactoring and cleanups

* port basic e2e tests

* fix tab rotation

* migrate client and mouse tests

* migrate the rest of the tests

* remove old e2e tests

* rustfmt

* add e2e note

* fix stale test

* fix: cross platform locking/cleanup

* fix: change mode race discovered by tests

* rustfmt

* fix: attach/detach race in tests

* fix plugin test assertion

* add pr</content>
</entry>
<entry>
<title>Mobile layout (#5241)</title>
<updated>2026-06-10T14:50:55Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-06-10T14:50:55Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=b6a5ad0e5a93d9f584b3f7a0fc90f497a09cbdb0'/>
<id>urn:sha1:b6a5ad0e5a93d9f584b3f7a0fc90f497a09cbdb0</id>
<content type='text'>
* phase 2+3

* initial mobile plugin (phases 4 + 5 + 6)

* some bugfixes

* implement stage 7

* mobile interface improvements

* improve mobile pane/tab picker

* more ui improvements and fixes

* various mobile fixes

* some mobile fixes

* mobile keyboard triggering fix

* some cleanups

* initial plugin keyboard implementation

* improve keyboard hit zones

* improve keyboard

* pinch resize

* pinching fixes

* implement scrolling + panning

* initial keyboard resizing

* fix: mobile first render issues

* keyboard responsiveness

* fix some issues with the keyboard

* implement fit

* fix mobile scrolling

* add tilde cell to compact

* improve mobile keyboard

* fix starting mobile terminal font to natural keyboard size

* fix mobile resize blank screen flash

* shadow focus for mobile

* more keyboard fixes

* improve mobile status bar

* fix: render plugins to mobile clients

* allow opening new panes/tabs from the mobile plugin

* allow configuring

* fix dot slash

* improve mobile native soft keyboard interaction

* switch to native keyboard - initial implementation

* dirty hacks, but phone keyboard works now

* adjust keyboard help strip

* fix cursor in mobile

* fix keyboard and help line

* rename keyboard to modifier bar

* allow starting new session

* make clicking session name bring us to new session menu

* allow switching to desktop from the mobile ui

* mobile welcome screen initial implementation

* mobile welcome screen fixes

* various welcome screen fixes

* more mobile fixes

* moar mobile fixes

* mobile ui redesign

* fix: swallowed backspace bug

* switch session screen improvement

* touch up some interfaces

* refactor: move mobile state to own struct

* refactor: move fit resizing to the server

* remove dead flash code

* some cleanups

* refactor: clear fit on close

* refactor: improve fit api

* refactor: pane sync functions

* refactor: mouse

* refactor: break into modules

* some cleanups for the sessions screen

* fix scrolling and other stuff

* refactor: sessions screen

* refactor: panes screen

* refactor: new session screen

* refactor: menu screen

* refactor: render

* cleanups

* refactor: plugin structure

* remove unused welcome screen path

* Rename api

* refactor input.js

* cleanup useless comments

* fit/mobile refactoring

* take out the garbage

* remove more comments

* remove mobile flash on startup/attach

* fix: various mobile startup issues

* fix space bugs

* cleanup

* rustfmt

* fix windows build

* adjust modifier bar ui

* 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>Error on socket paths that are too long (#4957)</title>
<updated>2026-03-30T14:43:01Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-03-30T14:43:01Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=00c6b0f549bd25ce82b73da8138d3c63599525f7'/>
<id>urn:sha1:00c6b0f549bd25ce82b73da8138d3c63599525f7</id>
<content type='text'>
* error on socket paths that are too long

* add pr</content>
</entry>
<entry>
<title>Layout string flag (#4956)</title>
<updated>2026-03-30T14:02:09Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-03-30T14:02:09Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=8ce05f0bbd58acbbca95f95ae14fdc4e866f7391'/>
<id>urn:sha1:8ce05f0bbd58acbbca95f95ae14fdc4e866f7391</id>
<content type='text'>
* allow sending a stringified layout with --layout-string

* add --tab-id to all the things

* fix windows tests

* add pr</content>
</entry>
</feed>
