Roadmap
cy
is slowly starting to emerge from the proof-of-concept stage. The core features are solid, but it is not quite ready to be an alternative to tmux
for most users. This document outlines the features I plan on implementing before cy
's 1.0 release. Features denoted with "*" are tentative and may not make the cut.
-
v0.4.0
Layouts: Many users rely on being able to see multiple panes at once.cy
's approach to this will differ fromtmux
's: users will be able to define layouts using a declarative layout API.-
v0.4.0
Proportional splits: A layout akin totmux
's default. Panes can be split horizontally and vertically and sized according to percentages or number of cells on the split axis. -
v0.5.0
Borders: The borders of each window should be configurable independently of the layout. -
v0.8.0
Bars: Users should be able to configure styled bars that appear above or below each window. These could be used to show the pane's current command, directory, time, et cetera. Ideally users would be able to provide a Janet function that could do anything they wanted. - Floating panes*: It should be possible to spawn temporary layers that show a single pane that appears to float over all of the rest.
-
-
v0.10.0
Searching through all recorded sessions: Right now replay/open-file is not very useful. There should be a mechanism for searching all recorded.borg
files for a string. -
v0.9.0
Command-line API access: Users should be able to run Janet code with something likecy -c '(some-code)'
to controlcy
programmatically just like they can controltmux
. The result of this code could be written to standard output as JSON for easy interoperability.-
fzf-cy*:
cy
literally usesfzf
's algorithm and its fuzzy finder should be able to be used as a drop-in replacement forfzf
just like in fzf-tmux. In other words,cy
's fuzzy finder should support everything (within reason) thatfzf
does.
-
fzf-cy*:
-
v0.9.0
Using the output of previous commands: Similar to a Jupyter notebook, users should be able to access the output of previously executed commands from the command line. In essence, you could rungrep
on the output of a command you just ran without rerunning it:cy -1 | grep 'some string'
where-1
refers to the most recently executed command. -
Command history replacement*: The eventual goal of
cy
is to be able to replacectrl+r
in Bash (and other shells) with a command browser that not only lets you fuzzy-find a command among all of the commands you've ever run, but also see its output. Replaying a.borg
file to find all the commands run inside it is an expensive operation, so it's likely that this would involve some kind of SQLite caching mechanism. -
Client session replay:
cy
should record everything that happens on screen and let users open replay mode for the whole session, not just for individual panes. It is up for debate whether this should be saved to disk.-
Smarter rendering algorithm:
cy
uses a "damage" algorithm to detect what parts of the screen have changed and only rerender those portions. This is intended to minimize the burden on the client's terminal emulator. Unfortunately, the current approach will break searching the screen in client session recordings, so it needs to be rewritten to preserve the byte order of sequential cells that share the same styling.
-
Smarter rendering algorithm:
-
Theme system: Users should be able to configure all of the visual aspects of
cy
's interface from Janet, preferably using parameters.