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.

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

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

b3270
A new emulator was 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.

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 hidden, TerminalName is preferred
 * Proxies (new)
 * Proxy (new)
 * ScreenSizeCurrent is the new name for ScreenCurSize
 * ScreenSizeMax is the new name for ScreenMaxSize
 * Tls is the new name for Ssl
 * Stats was merged from c3270 Show
 * StatsRx (new)
 * StatsTx (new)
 * Status was merged from c3270 Show and is hidden
 * Tasks (new)
 * TelnetHostOptions (new)
 * TelnetMyOptions (new)
 * TerminalName (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.

Still to be documented: These resources were removed:
 * alwaysInsert (new)
 * colorPrompt
 * crosshair
 * ftBufferSize
 * httpd
 * insertMode (new)
 * oerrLock
 * printer.options
 * printerLu
 * proxy
 * reconnect
 * reverseInputMode (new)
 * rightToLeftMode (new)
 * saveLines
 * scriptPort
 * startTls
 * typeahead
 * underscore
 * unlockDelay
 * unlockDelayMs
 * visibleControl
 * cursorPos
 * dsTrace
 * eventTrace

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 Category: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.

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 a -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 in

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). Since a Reset no longer clears insert mode, it must be explicitly turned off via the Set or Toggle action.

A new insertMode setting is used to control insert mode. The Insert action is now deprecated, and is an alias for Toggle(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(leftToRightMode).

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 resources
The color8 resource has been removed.

The cursorPos resource has been removed. x3270 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.