<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sl0ppij.git/sl0p/zj-pane-finder/src, branch main</title>
<subtitle>a sl0p.foo repository</subtitle>
<id>https://git.sl0p.foo/sl0ppij.git/atom/sl0p/zj-pane-finder/src?h=main</id>
<link rel='self' href='https://git.sl0p.foo/sl0ppij.git/atom/sl0p/zj-pane-finder/src?h=main'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/'/>
<updated>2026-08-12T11:36:50Z</updated>
<entry>
<title>sl0p(pane-finder): find panes hidden in a stack, not just the visible one</title>
<updated>2026-08-12T11:36:50Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-12T11:36:50Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=3d936e2b4f6fafb3b319e609cc74a4340ce675bf'/>
<id>urn:sha1:3d936e2b4f6fafb3b319e609cc74a4340ce675bf</id>
<content type='text'>
In a collapsed (mobile) layout every stack member except the visible one is
suppressed, and the finder skipped suppressed panes outright -- so it could only
ever find the one pane already on screen, which defeats the point of having it
there.

Suppressed terminals are now listed and marked "(hidden)". Suppressed plugins
still are not: zellij:link and friends are deliberately invisible
infrastructure, and focusing one shows an empty pane. Unfiltering everything
listed it, which is how that distinction surfaced.

Needed no server work. Screen::focus_pane_with_id already locates the owning tab
via has_pane_with_pid, which includes suppressed panes, and calls go_to_tab; and
Tab::focus_pane_with_id tries focus_hidden_stack_list_member first. So selecting
a hidden stack member swaps it into view and selecting a pane in another tab
switches tab, both already handled by the host.
</content>
</entry>
<entry>
<title>sl0p(pane-finder): take the whole viewport on small terminals</title>
<updated>2026-08-11T20:39:21Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-11T20:39:21Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=42430f313cede1fe48fdf5e84eefd1f619264996'/>
<id>urn:sha1:42430f313cede1fe48fdf5e84eefd1f619264996</id>
<content type='text'>
The finder always opened as a centred float with a frame. That costs its
margins (16% of columns, 28% of rows), a border, and on this fork the pane gap
as well -- on an 80x24 terminal leaving about 63x14 of the 80x24 available.
Rows are the scarce resource in a list, so most of the results were going to
decoration.

Below 100x30 it now takes the whole viewport and asks to be borderless, which
also drops the gap since this fork skips gap/padding for frameless panes. Above
that the centred float is kept, because it reads better when the space is
there.

The viewport is only knowable from TabInfo, so this re-evaluates on TabUpdate,
which is also how a terminal resize reaches a plugin -- switching modes live in
both directions. Re-applied only when the decision flips, so it does not fight
someone moving or resizing the pane by hand.
</content>
</entry>
<entry>
<title>sl0p: bring zj-pane-finder into the repo</title>
<updated>2026-08-11T20:10:16Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-11T20:10:16Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=7481f8d51f71b2e09ea41dfa7c4c081881a10cc5'/>
<id>urn:sha1:7481f8d51f71b2e09ea41dfa7c4c081881a10cc5</id>
<content type='text'>
The pane finder was living in ~/dev with no version control at all, while
path-depending on this checkout's zellij-tile -- so the plugin and the binary
it must stay API-compatible with were maintained in two unrelated places, one
of them unversioned.

Its own workspace root rather than a member of zellij's: a non-root member has
its [profile] ignored, and opt-level="z" + lto + strip are what keep the wasm
small, which matters because the keybinding loads it with skip_plugin_cache and
recompiles on every launch. Staying independent also means carrying this crate
touches no upstream-tracked file, so it cannot conflict on a rebase.

install.sh no longer assumes ./target: this checkout's .cargo/config.toml sets
a shared build.target-dir, so the artifact lands in the repo's target dir
instead. It now asks cargo metadata where the build actually went, and fails
loudly rather than silently installing a stale wasm.

The zellij-tile path dep becomes relative, so the crate builds from any
checkout rather than only from /home/user/lol/zellij.
</content>
</entry>
</feed>
