<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sl0ppij.git/zellij-utils/src/client_server_contract/client_to_server.proto, branch main</title>
<subtitle>a sl0p.foo repository</subtitle>
<id>https://git.sl0p.foo/sl0ppij.git/atom/zellij-utils/src/client_server_contract/client_to_server.proto?h=main</id>
<link rel='self' href='https://git.sl0p.foo/sl0ppij.git/atom/zellij-utils/src/client_server_contract/client_to_server.proto?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>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>Support OSC-99 desktop notifications (#4931)</title>
<updated>2026-03-28T08:19:54Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-03-28T08:19:54Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=608cc9905d0e53cda32f22b184578915b7f0f7b4'/>
<id>urn:sha1:608cc9905d0e53cda32f22b184578915b7f0f7b4</id>
<content type='text'>
* initial implementation

* tests

* fix: always report to zellij, only report to app if it wants a report

* rustfmt

* fix: always report capabilities to panes requesting them

* rustfmt

* add pr</content>
</entry>
<entry>
<title>Ansi dump support (#4848)</title>
<updated>2026-03-14T07:35:00Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-03-14T07:35:00Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=a1e224754759252778d8d3c30050e10bc9a82f84'/>
<id>urn:sha1:a1e224754759252778d8d3c30050e10bc9a82f84</id>
<content type='text'>
* add missing pane-id and tab-id arguments to all cli actions

* rustfmt

* dump-screen --ansi

* edit-scrollback --ansi

* add --ansi to subscribe

* add tests for ansi additions

* add ansi render report to plugins

* rustfmt

* fix e2e tests

* add pr</content>
</entry>
<entry>
<title>Allow subscribing to pane viewport updates (renders) from the CLI (#4814)</title>
<updated>2026-03-07T15:33:05Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-03-07T15:33:05Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=58cb2267fd7994ad9abb2df9792ec452a2deab45'/>
<id>urn:sha1:58cb2267fd7994ad9abb2df9792ec452a2deab45</id>
<content type='text'>
* initial subscribe implementation

* tests for subscribe

* update cli help

* rustfmt

* add pr</content>
</entry>
<entry>
<title>Read only web tokens (#4551)</title>
<updated>2025-12-16T08:16:41Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2025-12-16T08:16:41Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=1296a46a68f7a63681f294c12fadc9ca5e0c6459'/>
<id>urn:sha1:1296a46a68f7a63681f294c12fadc9ca5e0c6459</id>
<content type='text'>
* initial implementation

* fix race condition potentially allowing read-only clients to gain write access

* clear read only status on disconnect

* cleanups and formatting

* fix tests

* refactor first message + ipc pipe creation out of trait

* fix web tests

* fix web tests again

* refactor: move os_input connection establishment to session manager trait

* add read-only-token tests

* fix: identify watchers as web-clients when they are and enforce no-web-clients for them as well

* identify watcher web clients on the server

* fix tests

* cleanups and formatting

* add read-only-tokens to the plugin api

* update share plugin ui for read-only tokens

* cleanups and formatting

* docs(changelog): add PR</content>
</entry>
<entry>
<title>Improve CLI interface (add detach, switch session, blocking zellij run and more) (#4492)</title>
<updated>2025-10-31T19:15:32Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2025-10-31T19:15:32Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=82f30e2cde5207e5b51301633686b2c7feac54f3'/>
<id>urn:sha1:82f30e2cde5207e5b51301633686b2c7feac54f3</id>
<content type='text'>
* initial implementation

* fix tests

* move more ations

* screen adjustments (does not compile)

* plugin/pty adjustments (does not compile)

* more progress, tests not compiling

* fix tests

* more progress, does not compile

* more progress, compiles, tests failing

* tests passing

* rely on Drop for NotificationEnd

* atomicify some more actions

* fmt

* move unblock input to route

* don't pass hard-coded action names

* refactor: consolidate completion channel logic

* comment

* track last active client

* track cli clients explicitly

* use the last active client for cli commands when possible

* fix focus-next-pane for multiple clients

* various fixes for multi-client actions from the cli

* add detach action

* fix tests

* add switch session cli action

* fix switch session deadlock

* add and layout to switch-session cli action

* blocking zellij run: add NewBlockingPane variant

* blocking zellij run: wait forever mechanism

* blocking zellij run: thread NotificationEnd as needed  until TerminalPane (tests not compiling)

* blocking zellij run: update cli

* blocking zellij run: add command

* blocking zellij run: finish implementation

* fix tests

* e2e test and close_on_exit fixes

* fmt

* fix e2e tests

* fix plugin tests</content>
</entry>
<entry>
<title>Feature: watcher clients (#4487)</title>
<updated>2025-10-27T11:31:02Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2025-10-27T11:31:02Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=8762f866380360457c84c1e7ce7973f104468f87'/>
<id>urn:sha1:8762f866380360457c84c1e7ce7973f104468f87</id>
<content type='text'>
* initial implementation

* make Screen aware of watchers - slightly buggy

* fix: only render focused tab to watcher

* track watcher sizes on Screen

* pad watcher output as needed

* truncate watcher sizes as needed

* render on watcher resize

* fix watcher first resize

* allow watchers to quit with esc, ctrl-c or ctrl-q

* fix: send watcher size on initial connection message

* refactor: move  padding logic to output

* fix watcher rendering after all clients disconnected

* fix watcher rendering caching issues

* crop watcher cursor when out of bounds

* remove watchers cleanly on session close

* standardize watcher messages ignoring

* add e2e test for watcher functionality

* update snapshots

* add output tests

* rustfmt

* cleanups

* docs(changelog): add PR</content>
</entry>
</feed>
