Be warned, support for QT6 remain untested. Fixed up build.py
to be forgiving if some lib files are missing. Removed the use
of QRegExp since it has been deprecated.
linux_build.sh is now replaced by the build.py and install.py Python
scripts. with this comes cross platform build/install support
between Windows and Linux.
as of v4.x.2.x of the MRCI protocol, the TEXT type id is now
formatted in UTF8 instead of UTF16LE unicode. this change also
affected the tcp rev and several async commands so client code had
to be ajusted accordingly.
- The client will now display all ssl errors that occur during the
handshake process properly.
- New versions of MRCI host will longer support multiple certs so
the the common name designator was removed from the client
header. It is now just 272bytes of padding reserved for future
expansion.
- Fixed the defined server header len from 35 to 37.
- The client will now respond to only reply 1 or 2 on the host
header.
- HOST_CERT was removed as a data type and the host will longer
use it.
Created a new client command called 'ls_cmds' that will
list all available commands. This more like a revival of
an old command that existed in the past. It's function
was once added to 'about' but now it has been re-spun
into it's own command once again.
Fixed a bug that caused the 'connect' command to crash
the client after calling it with the '-save' option and
then the 'ls_cmds' command. The connect command actual
creates a SaveBookmark command object when called with
the '-save' option. The problem was its constructor was
replacing it's existing object pointer in the command
list with a pointer that was about to get destroyed
after calling the '-save' option, causing the command
object list to contain a null pointer for save_bookmark.
added support for the new PROMPT_TEXT data type id. it is simply treated
like any other TEXT type for this application.
added a hiddden progress bar below the main text body that will only kick
in when it detects a string of the PROG/PROG_LAST data types.
refactored "halt" to "yield" on the client's internal command. also
refactored "text_settings" to "theme" on the json config file. the config
file name will now also include the major version number as a way to
verify compatibility as the client is updated.
changed the client's versioning system to a 2 number system. more info
about this new system was edited into the README.md file.
synced the type_id and async_id values with MRCI host.
added support for the new MRCI host 4 number versioning system. this
client will only care about the tcp_rev part of this new system for now.
any changes to the hosts' core commands shouldn't affect compatibility
with this client.
genfile commands would still not terminate properly
or would end up de-synced with the host in one way
or another.
the GEN_FILE sub-protocol has been updated to
address these issues by having the direction of the
genfile data defined in NEW_CMD so this client will
now know if the command uploads to the host or
downloads from the host when it is defined instead
of trying to determine that at runtime.
updated all documentation related to the GEN_FILE
sub-protocol to reflect these changes.
along with the main thread, the project now supports 3
additional threads.
-the Session object operates in it's own thread that
will take data directly from the host, process and
direct it to various parts of the client.
-the main GUI and client command objects will continue
to operate on the main thread.
-the GenFile object which is dedicated to processing
GEN_FILE data to or from the host will operate in
it's own thread.
-last thread is for a new object called TextWorker.
this object will take all of the text buffered from
all of other objects and then send the text to be
displayed by the main GUI in a slower, controlled
manner.
by building out all of these threads, the main GUI
will not lag even when the host or the client itself
is outputting an excessive amount of data.
fixed a bug that prevented the client from being able
to totally unhook a genfile command of it crashes.
also reduced the default max lines from 5000 to 1000.
the MRCI protocol has been upgraded to support branch ids
so running multiple instances of the same command can run
at the same time at the host side. this client however
will still continue to run host commands in FIFO but this
is something that can be added in the near future.
another change to the protocol is the version negotiation
is now entirely one-sided so just the client can now
decide of the host version is acceptable or not.
the NEW_CMD frames from MRCI host will now include all of
the command documentation so listing of all available
commands and documentation is now entirely client
controlled because the host no longer have built in
documentation commands.
this client's Session object now operate in it's own
thread. for now, this does nothing but this is a prelude
for future performance updates that will including
multi-threading.
I learned the Qt binaries directory can end up in a non-standard
directory seperate from the Qt libaries and plugins and this kind of
setup would cause the script to fail to copy all needed files. To fix
this, i hard coded the standard directory:
'/usr/lib/x86_64-linux-gnu/qt5/bin' into the script instead of having
it call qtpaths.
Ended users that have even further customized setups will need modify
the build script themselves to make sure all references to $qt_dir
points to the correct directory for their dev setup.
Found issues with missing library files while testing on a clean system running
Ubuntu 19.04 that doesn't have the Qt library development packages installed.
However, even with libqxcb.so and libQt5XcbQpa.so added to install directory,
the client still would not start complaining about mixed Qt library versions. I
then finally decided to build the client on the debian official Qt5.7.1 package,
added libQt5DBus.so, libGL.so, libpcre16.so, all plugins in xcbglintegrations
and that worked.
The build script will now get the Qt bin directory via 'qtpaths' if not given.
Moved the LICENSE.md file to the root directory so github can now read it.