Release Notes/suite3270/4.0alpha3

Task engine
The scripting infrastructure has been rewritten. It is now called the task engine. There are no longer any artificial dependencies between actions initiated by different sources (keyboard, scripts, HTTP requests, etc.). Accidental blocking behavior has been (almost) eliminated. Unrelated operations are now properly concurrent, within the limitations of there still being just one emulated terminal and host session to control. For example, c3270 and wc3270 now continue to respond to host messages while at the prompt or while a printer dialog is showing.

Tasks also carry context consistently now. For example, the Wait(Output) now works with HTTP requests.

The state of the task engine can be displayed with the Tasks query.

b3270
A new emulator has been created, b3270. It is a common back-end process that handles the 3270 protocol and host interactions, communicating with different user-interface implementations using a simple XML-based protocol. None of the existing emulators have been converted to use b3270, but a new Windows emulator (wx3270) uses it.

x3270 prompt
The c3270 prompt has been generalized and is available to all of the 3270 emulators as the x3270 prompt. The Prompt action (or a menu option) creates a new instance of the prompt in a window. The prompt now uses color to distinguish error messages.

tcl3270 re-implementation
tcl3270 has been re-implemented as a simple wrapper around s3270. This eliminates many of the arbitrary limitations and blocking behaviors of the previous implementation.

Show / Query merge and expansion
The common Query action and the c3270/wc3270-specific Show action have been merged and expanded. Show is an alias for Query, and many queries have been added or changed:
 * About (new)
 * Actions (new)
 * BuildOptions (new)
 * CodePages (new)
 * ConnectTime (new)
 * Copyright (new)
 * Cursor1 (new; the old Cursor query is still present, but hidden)
 * Keymap was merged from c3270 Show
 * Model deprecated; Set(model) is preferred
 * Proxies (new)
 * Proxy (new)
 * ScreenSizeCurrent is a replacement for ScreenCurSize
 * ScreenSizeMax is a replacement for ScreenMaxSize
 * Tls is the new name for Ssl
 * StatsRx (new)
 * StatsTx (new)
 * Status is now hidden
 * Tasks (new)
 * TelnetHostOptions (new)
 * TelnetMyOptions (new)
 * TerminalName (new)
 * TlsProvider (new)
 * TlsSessionInfo (new)
 * Tn3270eOptions (new)
 * TraceFile (new)
 * Version (new)

Set/Toggle changes
A new Set action has been added, which is similar to the Toggle action. The difference between Set and Toggle happens when no value is specified for a setting. Without a value specified, Set will display the current value;   Toggle will (if the setting is Boolean) invert the setting's value. Both actions list the current values of all settings if no parameters are given.

Many additional resources can now be changed at run-time via Set or Toggle.

These previously-deprecated resources were removed:
 * cursorPos (assumed true now)
 * dsTrace
 * eventTrace
 * dftBufferSize

x3270 APL mode
APL keyboard operation on x3270 has changed. There is no longer a fixed APL keymap. Instead, the key combination Shift-Escape toggles a new APL mode, which changes how how paste operations are handled (preferring the APL definitions for Unicode characters that have both APL and non-APL mappings), as well as setting a temporary keyboard map and a temporary compose map.

The separate APL host code page has been removed; APL text can be displayed using any host code page.

Wiki
A Wiki has been created for x3270, https://x3270.miraheze.org. It is still a work in progress, but in time, all of the documentation will be moved to the Wiki.

New connection states
The Operator Information Area now displays more information about the state of pending host sessions, explicitly indicating what stage of negotiation the emulator is in. For example:
 * [DNS]: Name resolution
 * [TCP]: TCP connection
 * [Proxy]: Proxy protocol negotiation
 * [TLS]: TLS protocol negotiation
 * [TELNET]: TELNET protocol negotiation
 * [TN3270E]: TN3270E protocol negotiation

Console selection
The console window used for tracing and the x3270 prompt can now be configured via the console resource, and many consoles besides xterm are now automatically supported.

1-origin actions and queries
Actions and queries have been added to supplement existing 0-origin versions with 1-origin versions.
 * Ascii1 is the 1-origin version of the Ascii action.
 * Ebcdic1 is the 1-origin version of the Ebcdic action.
 * MoveCursor1 is the 1-origin version of the MoveCursor action.
 * The Cursor1 query is the 1-origin version of the Cursor query.

NVT character display
The restriction has been removed that required a character to be defined in the current host code page in order to display it in NVT mode.

Keyboard disable during script execution
Scripts and files read by Source now implicitly disable the keyboard while they are running. A new KeyboardDisable action action can be used to explicitly enable or disable the keyboard.

Temporary compose maps
A new TemporaryComposeMap action has been added to x3270. It allows a temporary compose map to be installed and removed. It is used in APL mode.

Offset-based cursor addressing
The MoveCursor and MoveCursor1 actions can now take a single argument, which is the cursor offset.

New ReadBuffer Options
The ReadBuffer action supports two new modes. Unicode mode reports buffer positions as hexadecimal Unicode code points. Field mode reports only on the current field instead of the entire buffer, and includes a preamble describing the field attributes and length.

Scripting improvements
The Script action now accepts a number of options to control script invocation. For example, POSIX-based systems can now use an s3270 protocol socket for script commands (as is the default on Windows), and scripts can use HTTP for script commands.

HTTP server improvements
The HTTP server can now produce replies in JSON format. (This was previously only teased at.)

The Script action now takes an -Http option, which causes a new instance of the HTTP server to be created for the script, with the URL passed in an environment variable.

Scripting improvements
The Script action now accepts a number of options to control script invocation.

New TLS information
The server's TLS certificate can now be displayed via the TlsCertInfo query.

c3270 progress displays
The c3270 Operator Information Area is now used to display information about the progress of connections and file transfers. These were formerly displayed at the prompt.

x3270 high-resolution display support
x3270 now has limited support for high-resolution displays. It will automatically scale its basic visual elements based on the setting of the  resource, which can be overridden by the dpi resource. Fonts can be automatically scaled via the x3270/autoscale utility.

Insert mode
Support has been added for always-insert mode, which puts x3270 into insert mode after each keyboard reset (while in 3270 mode). When always-insert mode is true, a Reset no longer clears insert mode, so it must be explicitly turned off via Set(insertMode) or Toggle(insertMode).

A new insertMode resource is used to control insert mode. The Insert action is now deprecated, and is an alias for Set(insertMode). The ToggleInsert action is now deprecated, and is an alias for Toggle(insertMode).

Right-to-left language support changes
Right-to-left display mode is now controlled by toggling the rightToLeftMode resource. The Flip action is now deprecated, and is an alias for Toggle(rightToLeftMode).

Reverse-input mode is now controlled by toggling the reverseInputMode resource. The ToggleReverse action is now deprecated, and is an alias for Toggle(reverseInputMode).

Model configuration changes
The -color and -extended options, and the corresponding m3279 and extended resources have been removed. Their functions have long since been subsumed by the model resource and -model command-line option.

Charset becomes codepage
The -charset option and charset resource have been replaced by the -codepage command-line option and codePage resource respectively.

Other removed and changed resources
The color8 resource has been removed.

The cursorPos resource has been removed. The emulator now operates as if cursorPos were set to true.

The dftBufferSize resource was replaced by the ftBufferSize resource some time ago, and has now been removed.

The dsTrace and eventTrace resources have long been deprecated aliases for the trace resource, and have now been removed.

The tls resource has been changed to the startTls resource.

TELNET disable prefix
A new T prefix turns off the TELNET protocol for the session.

Transfer action syntax
Parameters to the Transfer action are no longer required to use keyword=value syntax. Values can just follow the keyword sequentially, so  can be given as.

Proxy usernames and passwords
The HTTP, SOCKS4 and SOCKS5 proxies can now accept a username and password, delimited by an  character. E.g.,.

Release date
30. December 2019