Skip to content

Releases: espterm/espterm-firmware

stability patch + standard xterm mouse support preview

05 Sep 00:25
Compare
Choose a tag to compare

This release doesn't add many any big features, but optimizes the RAM usage a little bit for smoother operation.
(Incidentally, this did not find any)

  • static files caching time bumped to 2 hours
  • use gzip compression for image files
  • altered some buffer sizes to reduce server load in stress
  • shortened sockets timeout
  • added ping-polling when Heartbeat is lost in the terminal screen. Browser will wait for the server to fully load after a restart before attempting to refresh the page.

It's now possible to debug malloc() and free() using the DEBUG_MALLOC compile flag. Unfortunately this does not affect dynamic allocation inside the SDK blob, but should make it easier to find userland memory leaks.


Mouse Reporting

This feature was meant for the 0.8 release, but got lumped into 0.7 due to bad Git branching model.
So it can now be tested!

This new mouse system makes it possible to build virtual on-screen sliders, drag&drop functionality, right click events, wheel scrolling etc.

0.7.0

03 Sep 21:26
Compare
Choose a tag to compare

Compared with 0.6, ESPTerm is now far more reliable and mature. It's achieved nearly full VT100 compatibility and excluding mouse input, supports most ncurses applications.

Line drawing characters should now better line up (ymmw with different fontconfig etc, this is hard to get right everywhere), wide characters no longer stretch the grid. Unfortunately this means Fraktur does not render quite right and some symbols had to be removed from the codepage "1".

Also the built-in help page has been updated to reflect the current state of support. See the html file in the doc folder for more details about what is and is not implemented with respect to xterm.

More bugfixes

01 Sep 23:08
Compare
Choose a tag to compare

fixed some bugs with scrolling region

Bugfixes

25 Aug 10:50
Compare
Choose a tag to compare
  • scrolling bug fixed
  • fixed broken cursor save/restore ESC 7, ESC 8
  • fixed DECOLM not clearing screen / region
  • fixed cursor save/restore not properly handling charsets

Reliability improvements + almost full VT102 parity

24 Aug 23:53
Compare
Choose a tag to compare

This release adds almost all missing commands and options to be VT102-compatible.

NOTE: This is still pretty much a pre-release, the stable and fully documented release will be v 0.7, sometime in September. The built-in Quick Reference page is outdated.

A list of supported commands can be found here, for now:
http://bits.ondrovo.com/espterm-xterm.html
(Note: DECOM and Scrolling Region commands are now also implemented and work correctly)

Example of mc being accessed through ESPTerm
screenshot_20170825_013930

Changes
The way to set buttons text was changed, because I now better understand how OSC commands should be used ;)
To set button 1 text: OSC 8 1 ; Pt ST - where Pt is the text (spaces added only for easier reading!). Use 81-85 for the 5 buttons. They still send ASCII 1 through 5 when pressed.

To set screen title, use OSC 0 ; Pt ST. (OSC is ESC ], ST is ESC \ or Ascii BEL - code 7)

Notable new features:

  • a support for a large portion of the xterm/VT100 function set, meaning most Linux console applications will work perfectly through ESPTerm
  • implemented charset switching and added a custom symbol codepage "1" inspired by the DOS page 437 - for reference, see the source file screen.c, near the end.
  • implemented audible BEEP - on reception of 0x07
  • many other sequences, see #64 for a list of things that were added (scrolling region, tab stops...)
  • display timeouts for more reliable operation - see below
  • alternate keyboard modes (numpad application mode, cursors application mode, function keys SS3 variant - set in the terminal settings)

Timeouts:

  • Configure them in the settings to get the best performance with your application.
  • Parser timeout - timeout for receiving an ESC sequence. Change to 0 for manual sequence testing
  • Redraw delay - how long the screen must be left unchanged before a redraw is sent to the browser
  • Redraw cooldown - minimal time before another redraw may be sent.

Redraw delay defines how "responsive" the terminal feels (compromise of responsiveness vs. hogging the server), while Redraw cooldown is used to throttle the update speed and avoid buffer overflow (and lost bytes) due to spending too much time serializing the screen and sending it via the websocket.

The default values are good enough for most situations. Try increasing Redraw cooldown if you experience dropped bytes.

Known bugs:

  • something a little wrong with charset switching (#77) - not yet investigated in detail
  • large unicode glyphs break the grid (#71) - this is a front-end issue, hopefully will be fixed before 0.7 is released
  • rarely, a bad "utf-8" character can get into a screen cell and cause the websocket to fail. This seems to happen when using wrong baud rate, eg when starting agetty. The solution is to clear the screen by mashing enter, or just restart espterm and hope for the best.
  • if your application spams excessively and you have mis-configured the timeouts, the internal buffer may still overflow. (this is not really a bug we're likely to fix, but be aware of that issue)

bootloop fix + function keys support

15 Aug 01:20
Compare
Choose a tag to compare

fixed a bootloop if user had parser timeout configured to other value than 0.

Exact cause remains unknown, but this version works correctly on ESP-01, ESP-01S and ESP-12.


This release also adds support for F1-F12, also with shift, ctrl- letters etc, and special function keys.

This means F5 and F12 in the browser no longer do their default action when the terminal page is open. This also applied to ctrl-c and v.

further, this release changes enter to send CR. Use ctrl-enter for LF.

compatibility patch for agetty / nano / vim / mc ...

14 Aug 00:00
Compare
Choose a tag to compare

So I spent some time playing with espterm and agetty, running various CLI apps through the terminal.

And it didn't go well, so I spent all day fixing bugs and adding new features that were needed.

Summary:

  • code pages implemented \e(0 etc
  • fixed the short resize command to work as expected by xterm compatible apps
  • added various SGR attributes like italic, underline, blink, fraktur (yes, fraktur!), faint, strike-through
  • improved utf-8 support, now it's more resilient against invalid code points
  • fix backspace behavior (should not replace with 32)
  • added ident string
  • better debug messages for missing sequences, can be disabled via compile flag (see Makefile)

This release fixes all bugs I found and figured out how to fix, so at the moment, vim works almost perfectly, sl is a little laggy and torn, but mostly OK, nano works great except the ctrl- commands obviously can't be used yet, and mc works, except the buttons up and down are for some reason not registered.

We also now have various format attributes:

screenshot_20170814_010459

as well as Fraktur, because why not if it's in the spec:
screenshot_20170814_000804

here's some pics of stuff running in espterm:

screenshot_20170813_172940

screenshot_20170814_015024

bugfix for swapped 0 and 1 in clearing commands

12 Aug 21:03
Compare
Choose a tag to compare

clear to and from cursor was swapped in \e[*K and \e[*J

added missing ESC sequences

11 Aug 10:23
Compare
Choose a tag to compare

Codes for cursor movement no longer auto-scroll, that was an incorrect implementation. "\n" can still scroll.

This release adds the following codes:
(* is a number or left out, TEXT is any string except \a and \e)
some codes were obtained from the screen manpage

  • \ekTEXT\a - alternate way to set title (from screen manpage)
  • \e]0;TEXT\a - alternate way to set title ("xterm title hack")
  • \e#8 - fill screen with E in default colors
  • \e[*X - clear in line (from cursor the following * characters are replaced by space in current colors)
  • Backtick can now be used instead of G in \e[*G (it's supported by screen so I added it for compatibility)
  • \e[*d - set absolute Y cursor position
  • \e[*;*t - alternate way to resize screen (SunView code, supported in screen)
  • \e[*L - insert lines, push remainder down (inserts empty line in current colors)
  • \e[*M - delete lines, pull remainder up (pads with empty lines of current colors)
  • \e[*@ - insert characters in line, push remainder right (inserts spaces in current colors, does NOT wrap to next line)
  • \e[*M - delete characters in line, pull remainder left (pads with spaces in current colors, does NOT pull from following line)
  • \eE - go to start of next line, but do not scroll if at the bottom
  • \eD - move cursor down, scroll screen up if needed
  • \eM - move cursor up, scroll screen down if needed

NOTE: those new sequences are not yet described in the help page.

this should mean the command set is complete as it ever will be

Things not supported and not planned:

  • Any of the "double height" functionality
  • Horizontal and vertical tab functionality. The tab character now jumps to the closest 4*n column instead
  • Character set switching (We have a full utf-8 support instead. This can be emulated, but I'll wait until the need arises)
  • Scrolling Region - which I deem pretty much useless and have not seen used it anywhere
  • Any VT52 stuff
  • RGB colors - it would blow up the terminal memory footprint far too much, as well as the data sent to browser

0.6.3 - some small fixes

06 Aug 17:54
Compare
Choose a tag to compare

Now you can set buttons to empty string via commands (eg. \e]BTN1=\a or \e]BTN1=\e\), same for terminal title (although that looks kind of ugly)

also it no longer clears the screen after you change color scheme.