<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sl0ppij.git/zellij-client/src/web_client/session_management.rs, branch main</title>
<subtitle>a sl0p.foo repository</subtitle>
<id>https://git.sl0p.foo/sl0ppij.git/atom/zellij-client/src/web_client/session_management.rs?h=main</id>
<link rel='self' href='https://git.sl0p.foo/sl0ppij.git/atom/zellij-client/src/web_client/session_management.rs?h=main'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/'/>
<updated>2026-03-30T14:43:01Z</updated>
<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>Web security hardening (#4830)</title>
<updated>2026-03-10T17:25:05Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-03-10T17:25:05Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=458f90cbbdd9efe304a788fe100724b0644b5afe'/>
<id>urn:sha1:458f90cbbdd9efe304a788fe100724b0644b5afe</id>
<content type='text'>
* security hardening

* fix some issues

* rustfmt

* add pr</content>
</entry>
<entry>
<title>fix: go to welcome screen when opening web root (#4736)</title>
<updated>2026-02-20T10:48:42Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-02-20T10:48:42Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=238f72ad5c1b4cee8760668bf7cf6058a3eb3889'/>
<id>urn:sha1:238f72ad5c1b4cee8760668bf7cf6058a3eb3889</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Layout manager (#4601)</title>
<updated>2026-01-13T10:27:07Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-01-13T10:27:07Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=4a27ceea0d99b036ca607e05714cef15689d7c26'/>
<id>urn:sha1:4a27ceea0d99b036ca607e05714cef15689d7c26</id>
<content type='text'>
* ad plugin override_layout command

* watch available layouts and report to plugin thread

* Event::AvailableLayoutInfo

* save layout command

* refactor save_layout

* fix api and permissions

* delete_layout API command

* edit layout in place API

* edit layout response through api

* propagate layout parsing errors

* generate random name plugin api

* dump stringified layout API

* synchronicity dump_session_layout and include LayoutMetadata in sync response

* parse_layout plugin api

* fix: default to default layout dir in plugin api

* rename_layout plugin command API

* initial implementation of multi-tab override

* apply to multiple tabs

* allow applying to only the active tab

* add tab/pane names to layout parsing metadata

* indicate is_builtin_plugin in PaneMetadata

* get_layout_dir plugin API command

* consolidate (and fix) is_builtin_plugin logic

* fix bad ret

* allow dumping the layout for just a specific tab in the session

* get focused pane and tab sync api

* color last substring variants

* add plugin

* update assets

* fix tests

* add e2e tests for new plugin apis

* update ui with new shortcut

* rustfmt

* docs(changelog): add PR</content>
</entry>
<entry>
<title>Feature: allow overriding a layout for a currently running tab (change layout at runtime) (#4566)</title>
<updated>2025-12-23T12:41:56Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2025-12-23T12:41:56Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=3fe48a972c55537502128779116d38d8f8aedb7e'/>
<id>urn:sha1:3fe48a972c55537502128779116d38d8f8aedb7e</id>
<content type='text'>
* add tests for LayoutApplier

* initial untested implementation of override functions

* add override-layout cli action with stub in screen

* filter run instructions to ignore

* implement override-layout roundtrip through plugin and pty threads

* initial full-cycle working override implementation

* fix some bugs (eg. actually start new terminals)

* fix some bugs with focus after override

* fix floating pane matching bug in layout applier

* formatting

* use first tab, error on more than 1 tab

* fix some floating_panes ordering and shell issues

* get new tab name to work

* respect swap layouts

* allow specifying tab properties on main layout node if we just have one tab

* add tests for new override methods

* start work on retaining panes, hard-coded things, kind of working but broken in many places

* fixed most tiled pane override bugs

* reset viewport before reapplying

* revert constraint system changes

* retain-existing-terminal-panes flag

* add retain terminal panes tests

* add retain plugin panes flag

* add keybind

* add retain plugin panes tests

* add override-layout e2e test

* refactor: layout_applier

* style: rustfmt

* some cleanups

* fix cli flags

* no crashy

* formatting and artifacts

* moar cleanups

* fix: respect expanded in stack when overriding

* docs(changelog): 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>fix(ipc): make sessions compatible between versions (#4439)</title>
<updated>2025-09-24T10:56:56Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2025-09-24T10:56:56Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=533140831d825829afaf864d940c435056788d3e'/>
<id>urn:sha1:533140831d825829afaf864d940c435056788d3e</id>
<content type='text'>
* translate ipc tuple enum variants to struct enum variants

* initial client/server contract

* tests and missing types

* migrate web server and remove rmp_serde

* change socket folder

* fix crash on unknown messages

* fix client  logout on unknown message

* fix web client logout on unknown message

* rustfmt

* add comment and change  log level

* address compilation warnings

* style(fmt): rustfmt

* fix plugin system test assertions

* add pr</content>
</entry>
<entry>
<title>refactor(client-server-contract): config + layout (#4383)</title>
<updated>2025-08-28T15:48:34Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2025-08-28T15:48:34Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=3a26df6314cf5966ffb3065b97d4183b480d1441'/>
<id>urn:sha1:3a26df6314cf5966ffb3065b97d4183b480d1441</id>
<content type='text'>
* commented out ConfigWrittenToDisk instructions

* commented out WriteConfigToDisk instructions

* commented out FailedToWriteConfigToDisk and WriteConfigToDisk instructions

* pass cli assets from client to server instead of parsed config - kind of working, lots of stuff still broken

* move ClientAttributes to the server side

* move ClientAttributes to the server side in Attach instruction as well

* move CliArgs and runtime options from NewClient -&gt; move them to the server

* moved plugin_aliases to the server side

* moved initial config writing to the server side

* moved layout parsing to the server

* some cleanups

* move config file watching and live reload to the server

* move config file writing to the server side

* use saved config when attaching

* get web server to work with the new config roles

* some cleanups

* moar cleanups

* even moar cleanups

* yet more cleanups

* fix tests

* style(fmt): rustfmt

* style(fmt): rustfmt

* fix e2e tests

* docs(changelog): add PR</content>
</entry>
<entry>
<title>fix(resurrection): do not parse resurrection layouts on startup (#4292)</title>
<updated>2025-07-16T10:03:32Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2025-07-16T10:03:32Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=4a68c6d90b8942c81f25f465964eeb28fb5bb95f'/>
<id>urn:sha1:4a68c6d90b8942c81f25f465964eeb28fb5bb95f</id>
<content type='text'>
* fix(resurrection): do not parse resurrection layouts on startup

* proper error when file is corrupt

* docs(changelog): add PR

* fix attach command

* style(fmt): rustfmt</content>
</entry>
<entry>
<title>fix(sessions): remove popups from welcome screen (#4294)</title>
<updated>2025-07-16T09:43:18Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2025-07-16T09:43:18Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=403f0a07be19d51dc66f19b33c3c2972f59f907a'/>
<id>urn:sha1:403f0a07be19d51dc66f19b33c3c2972f59f907a</id>
<content type='text'>
* remove popups from welcome screen

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