PerBothner / DomTerm

DOM/JavaScript-based terminal-emulator/console
https://domterm.org
Other
365 stars 43 forks source link

RoadMap #100

Open PerBothner opened 3 years ago

PerBothner commented 3 years ago

This roadmap implies no commitment. Priorities may change depending on unexpected difficulties or insights, user requests, or whim.

Short-term

These items are being worked on:

Medium-term

Longer-term

PerBothner commented 3 years ago

Lazy line-breaking is now working pretty well and some things (such as cat of large files) are much faster due to https://github.com/PerBothner/DomTerm/commit/f7017050f3245654b72599b33598a92027d5a341

PerBothner commented 3 years ago

Removed two short-term items from the roadmap, as they are now implemented and documented:

PerBothner commented 2 years ago

Removed this item from the roadmap, as it is now implemented:

ghost commented 2 years ago

Hello again @PerBothner !

I have been coding since December -- to my utter surprise -- and am pushing a bit further into images+text. If I notice any issues with DomTerm, would you be interested in hearing about them? I don't want to be a pest if this not an area of concern for you.

PerBothner commented 2 years ago

@klamonte I'm absolutely interested in hearing about your issues and ideas. Lately I've been focusing the "window managent" aspects, but I have been thinking about which image protocols to support (in addition to HTML and Sixel), and how to handle text/image overlap/combination.

ghost commented 2 years ago

@PerBothner

Sure! Well, right now qtdomterm specifically is having issues with any-event mouse (not sure why, I know you looked at it earlier once), and my latest images code left quite a few artifacts.

In the broader picture, I am gunning for bling and gaming. (notcurses inspired me.) I will be collecting more things here -- right now we have translucent windows (including images), a much better and faster sixel encoder for me (but still only ~1% of the performance of chafa and notcurses), pulsing text, different button shapes (using images for the edges and shadows), and quite a bit more performance. And pink...a lot more pink. ;)

On the images side, I have actually gotten "un-sold" regarding the need for higher bit depth formats. I can do my own image layering with alpha blending, and due to the use of 1-cell-high images the apparent bit depth is much higher than the per-image palette size. I would challenge people to look at this and tell me whether those are sixel or PNG images on the screen. Or see DOOM animating inside foot and say the only way to get this effect is via proprietary or local-machine-only shortcuts.

Sixel can actually do almost everything people have asked for. It is just hard to encode quickly, and is not mutually destructive with text. So I would be interested in Good Image Protocol (GIP) if/when that gets specified, because it would specify text vs image interaction. GIP would also have specific support for multiplexing without requiring image decode/encode: the most serious obstacle for tmux et al. (Speaking of, vtm and zellij are both quite cool multiplexers, with very energetic developers. Another source of inspiration for me lately.) So my vote is:

EDIT: I'm back.

PerBothner commented 2 years ago

If you can submit a concrete issue, with a way to reproduce it (there simpler the better), I'll take a look.

"I am gunning for bling and gaming" So what would you prioritize for DomTerm? What would make you use DomTerm (more)? Should I aim to implement the iTerm2 image protocol?

ghost commented 2 years ago

I've got the sixel glitches I'm seeing submitted.

I don't think iTerm2 would be worth it, actually. notcurses dropped support for it, favoring sixel and kitty instead for example. I would prioritize solidifying sixel: DomTerm's sixel performance is rather good.

PerBothner commented 2 years ago

Removed this item from the roadmap, as it is done (modulo more testing and possible bugs):

PerBothner commented 1 year ago

The following is now implemented:

Line-oriented motion (such as "line-down" or "move-to-end-of-line" in edit or view modes) should probably work with visible (screen lines), not logical lines. This is non-trivial in case of browser line-breaking with variable-width fonts (such as from embedded html). Might add commands like down-paragraph (possibly bound to Alt+Down) to move by logical lines / paragraphs. Also, "move-to-end-of-line" could move to end-of-paragraph if already at end of screen line.

PerBothner commented 1 year ago

I think this currently works as well as can we reasonably expect without using more front-end specific "native" code (Rust for Wry, C++ for Qt, JavaScript for Electron):

PerBothner commented 1 year ago

Using xterm.s is now working on an experimental basis, though some work is needed.

Hence removed the following from the roadmap.