During the past months, we have mainly worked on reimplementing new features, improving the user experience, and introducing & revamping features.
Revamped UI
Most of the work of these past months was dedicated to the improvement and update of the UI. We have finally added a new way of customizing the tab's title, and reintroducing features from the previous version.
Dynamic tab title
With this new release, you will be able to further customize the title of your profile, by including one or more placeholders in the title.
These placeholders get changed dynamically depending on the current context of the program executed, and they can also prepend or append text after them, depending on whether they were replaced by a value or by nothing.
Here is a quick example of this new feature:
"title_format":"%|leader_process|%% at |action_progress|\\%%",
"profiles":[
{
"name":"node",
"command":"node"
},
{
"name":"bash",
"command":"bash",
"title_format": "Bash shell"
}
],
In this code example, we set the default title for all profiles to %|leader_process|%% at |action_progress|\\%%
and the title of the bash
profile to the constant Bash shell
.
The first placeholder (%|leader_process|%
) is used to display the current executable running in the tab, while the second one (% at |action_progress|\\%%
) is used to appends to the generated title the current progress. Please notice that the prefix at
and the suffix %
(which is escaped to prevent Tess from detecting it as the end of the placeholder) are only appended to the generated title if the placeholder contains a value.
In this case, if we opened a tab with the node
profile, our dynamic title will be generated as node
if there is no current action progress, and as something like node at 15%
if there is current action progress.
For instance, available placeholders are:
profile_name
: Replaced by the profilename
pwd
: Replaced by the full path of the current working directoryshort_pwd
: Replaced by a condensed version of the current working directoryleader_process
: Replaced by the current leader name, which is basically the current program run.action_progress
: Replaced by the current action progress, if anyshell_title
: Replaced by the title set by the running program. This is normally changed by using the ANSI OSC sequenceESC ] 0 ; <string><ST>
Progress tracking & Indicator
With this release, we have also reintroduced the tracking system as well as the unread content indicator. They have been greatly improved. The progress tracking is now more efficient and will take significantly less resources, whereas the unread content indicator will now be more reliable and has been slightly updated to be more ergonomic.
Toast notification
During the past few months, we have also worked on the toast notification to give it a fresh look in line with the app's theme. We have also introduced different icons to better represent the origin of the notification.
Overhaul PTY update
During the past few months, we've worked hard to make Tess lightweight and faster by reworking how we handle PTY instances internally. We've decided to switch to an async context to stay consistent with how the other parts of Tess were designed. This allows us to slightly reduce resources consumption while adding support for new features.
With this rework, we also fixed some bugs, including a freeze caused by an overflow of data sent to the frontend. We've introduced a control flow system to reduce workload when a large amount of data is received. For example, executing the yes
command should now be more responsive, especially to a CTRL + C
Others
Many others changes were made during the past few months to make Tess faster and more reliable!
Linux signal handler
Linux user, you will be happy! We've finally added a signal catcher to prevent unintentional closing of the app while performing crucial tasks like updating your system. It's currently always enabled and will prompt a close confirmation upon catching the SIGQUIT
or SIGTERM
signal.
Performance improvement
We have removed unnecessary code that may increase the final app size. We also have reduced resources consumption, especially when resizing the terminal.
Various bug fixes
As always, we've fixed several bugs, including a terminal hangup on a certain sequence of UTF-8.
On Linux, we've also partially fixed the rendering issue, by disabling transparency when using an opaque background for the terminal pane. However, if you are using an image or translucent background, you will still have the glitched effect on the text. Issue tracking is available here.
Rewrite Progress
Features | Electron | Tauri |
---|---|---|
Translation | ❌ | ⌛ |
Tabs | ✔️ | ✔️ |
Move tabs between windows | ❌ | ⌛ |
Administrator tabs | ❌ | ⌛ |
Tabs split | ❌ | ⌛ |
Command line interface | ✔️ | ⌛ |
Notifications | ❌ | 🟠 |
Macros | ❌ | ✔️ |
Plugins | 🟠 | ⌛ |
Themes | 🟠 | 🟠 |
Config page | ✔️ | ⌛ |
Config watching | 🟠 | ⌛ |
Image display | ❌ | ⌛ |
Font ligature | 🟠 | ⌛ |
Animated background | ❌ | ✔️ |
URI scheme API | ❌ | ⌛ |
Search in a shell | ❌ | ⌛ |
Marketplace | ❌ | ⌛ |