0.05 (09/16/2013)

1.   Simple IP-based firewall.
2.   Issue abort() instead of close() for drastic situations.
3.   Remove kernel.db in spot-on-kernel.cc's sig_handler() function.
4.   Do not allow users to add their own keys.
5.   Added kernel cipher type to the Settings page. Default: randomized.
6.   Replaced QT_POINTER_SIZE with sizeof(void *). The macro is not
     widely available.
7.   Completed spoton_crypt::defaultSslCiphers(). The method retrieves
     SSLv3 and TLSv1 ciphers according to
     HIGH:!aNULL:!eNULL:!3DES:!EXPORT:@STRENGTH. However, the actual
     ciphers retained are also influenced by Qt. Qt is instructured to use
     the SSLv3 and TLSv1 protocols. The SSL control string may be modified
     via the UI.
8.   Modified spoton_crypt::setSslCiphers() so that the method prepares
     the provided QSslConfiguration object with preferred ciphers if the
     preferred ciphers are available.
9.   Corrected Documentation/ENCRYPTED.
10.  Ability to set permanent certificates for listeners. Peers will
     test certificates and discrepancies shall be logged. Please
     remove listeners.db and neighbors.db.
11.  Corrected re-encoding mechanism with respect to the neighbors.db
     database.
12.  Encrypt the protocol in the neighbors database table.
13.  Optional recording of external IP addresses in certificates
     when defining listeners.
14.  Removed all instances of QSslConfiguration::setProtocol(). Allow
     the protocol to be determined by the selected cipher.
15.  Include IP addresses and ports in important log entries.
16.  Corrected FreeBSD project files. Corrected previous branches too.
17.  The Buzz client tables should not contain editable fields. Corrected.
18.  Display certificate Sha-512 digests in the Neighbors table. Tool tips
     also.
19.  Increased scrambler timer interval to qrand() % 5000 + 10000.
20.  Added Bytes Read and Bytes Written columns to the Neighbors table.
     Please remove neighbors.db.
21.  Corrected SQL query in spoton_kernel::slotRetrieveMail(). The
     where-clause should have included key_type = 'email'.
22.  Eliminated socket read timers from neighbors.
23.  Corrected portions of the echo mode. Nodes having half-echo modes
     enabled should not pass received data to other nodes unless the
     Super Echo is enabled. Also, nodes that received messages from
     other nodes must echo the messages if the Super Echo is enabled.
24.  Display last status changes of participants in the Chat panel.
25.  Added OS/2 project files. Files provided by Elbert.
26.  If two peers share keys, the peer having the other peer's key will
     automatically accept that peer.
27.  Configurable tab position.
28.  Neighbor summary.
29.  Added iteration counts to Buzz channels.
30.  Added ssl_session_cipher to the neighbors database table. Please
     remove neighbors.db. Field contains encrypted data.

0.04 (09/03/2013)

1.   Per an anonymous e-mail passed on via another e-mail, I should
     perhaps add more keys! Please reset Spot-On. There shall now
     be a chat pair, an e-mail pair, and a url pair. And! Each pair
     shall have its own signature. A total of six pairs.
2.   Label (name) signature keys in the friends_public_keys database
     table by using their types. Only one person reads these release notes.
3.   Apologies. This time I will really bundle the Translations directory
     into the Windows release.
4.   Do not update the participant's name if the sender used a gold bug.
5.   The simple mechanism that's used to determine if a gold bug
     is set is deeply flawed. Corrected.
6.   The method spoton_neighbor::resetKeepAlive() incorrectly restarted
     the keep-aliver timer. The timer is responsible for sending
     periodic notifications.
7.   Limit read() to 8192 bytes in spoton_neighbor::slotReadyRead().
8.   Also removed SPOTON_GEOIP_DATA_FILE from all kernel project files.
9.   Added tool tips of partial public key hashes to the Chat and
     E-Mail table items.
10.  Corrected X509_sign(x509, pk, EVP_md5()). Use EVP_sha512.
11.  Removed all instances of QSslConfiguration::setPeerVerifyMode
     (QSslSocket::VerifyNone).
12.  Record listener external or local address in the certificate. It's
     possible that an external address is not defined.
13.  Added bulk key copies.
14.  Retain geminis if participants are re-added.
15.  Renamed Documentation/PROTOCOLS to Documentation/MESSAGES.
16.  Added the Uptime field to the Neighbors table.
17.  Removed a bunch of "PRAGMA synchronous = OFF" statements.

0.03 (08/26/2013)

1.   Bundled the Translations directory in the OS X and Windows release
     files.
2.   Added brief tool tips to the Listeners and Neighbors tables.
3.   Shortened Buzz Client tool tips. The tool tips shall include the
     first and last sixteen characters of the IDs.
4.   Corrected mnemonics.
5.   New children of listeners must inherit the echo modes of the listeners.
     Corrected.
6.   Corrected spoton_kernel::initializeSecurityContainers(). The passphrase
     command-line option relies on the method. Correction also applied
     to version 0.02.
7.   Log listen() errors in the kernel. If the kernel is not listening,
     issue listen() calls periodically.
8.   Corrected kernel event loop. Correction also applied to version 0.02.
9.   Modified the OS X install targets so that the GeoIP.dat file is
     copied to the GeoIP directory.
10.  Removed SPOTON_GEOIP_DATA_FILE from all project files. Please
     see the Settings page's new option for setting the location of the
     GeoIP.dat file.
11.  Removed README.GeoIP.
12.  Added echo_mode to Documentation/ENCRYPTED.
13.  Corrected spoton::slotPopulateNeighbors(). The ssl_key_size field
     contains plaintext data.
14.  The spoton_crypt::decrypted() method will avoid decrypting empty data.
     The action will be considered successful.
15.  Disable GeoIP-related widgets if Spot-On is not linked with libGeoIP.
16.  The QSslSocket::write() method may fail silently.
     We should not reset the keep-alive timer prematurely.
17.  Update participant status when receiving e-mail and e-mail-retrieval
     requests.
18.  Updated user documentation.

0.02 (08/22/2013)

1.   Listen for SSL mode changes on kernel sockets.
2.   Abort plaintext kernel sockets.
3.   Replaced messaging caches with hashes. Messages older than two
     minutes shall be purged.
4.   Corrected Qt 4.6.2 support. The 0.01 branch has been corrected
     as well. Please use Qt 4.8.5 and newer.
5.   Corrected memcpy() argument casts.
6.   Ability to set the Maximum Buffer Size and Maximum Content
     Length. Please see the Neighbors table.
7.   Deactivating a listener will not destroy its children. A new
     control option is available under the Listeners table's context menu.
8.   Prevent control updates of listeners and neighbors that have been
     marked for deletion.
9.   Corrected comments.
10.  Issue gcry_fast_random_poll() before gcry_create_nonce().
11.  SSL certificates and keys will now be created as new connections are
     established. Please remove the listeners.db and neighbors.db databases.
12.  Attempt to correct the connections count in the Listeners table.
13.  Removed spoton_crypt::generateSslKeys(arg1, arg2).
14.  Certificates expire within seven days.
15.  Corrected position of the Listeners table's context menu.
16.  Allow changing of echo modes for listeners. Children remain as
     configured. Eliminated bulky methods.
17.  Removed TTLs. Values can be used to explore Spot-On graphs.
18.  Congestion control is now enabled by default.
19.  Removed the certificates table from idiotes.db.
20.  Changed message protocols. Functionality with 0.01 is absent.
21.  Added message codes to Buzz messages.
22.  Modified most of spot-on-crypt.cc so that functions that return
     values return empty values on failures.
23.  Removed senseless resizing in spoton_crypt::decrypted().
24.  Added gui/gcryctl_init_secmem and kernel/gcryctl_init_secmem to
     the INI file.
25.  The digital signature that's created during e-mail retrieval has
     been modified so that the signature is generated from a random
     message.
26.  Inspect the signature public key's signature during repleo processing.
27.  Corrected log entries.
28.  Added Buzz channel types.
29.  The Hash Type combination box was incorrectly populated if libgcrypt
     failed to be initialized properly.
30.  Migrating message types from plaintext to ciphertext, where applicable.
     Task is slow. Please note that although the types are hidden, it
     is possible to guess message types based on the number of groups.
     Problem may be addressed. Please also note that one may be able
     to distinguish ciphertexts produced from asymmetric ciphers and
     symmetric ciphers.
31.  Generate scrambled messages for an assortment of message types.
32.  Allow neighbors to be detached from listener parents. Please
     see the Listeners table's context menu.
33.  The interface had a habit of periodically sending repetitive information
     to the kernel. Corrected.
34.  Modified Buzz channel keys. Instead of using the channel name as the key,
     gcry_kdf_derive() is used to generate a key. Unfortunately, the
     salt cannot be random and is based on the channel name and channel
     type. An optional salt may be provided. If possible, please improve
     the mechanism without introducing a distribution puzzle.
35.  Added support for Linux on the PowerPC architecture.
36.  The message_code field in email.db has been deprecated.
37.  Decipher Buzz messages in the kernel.
38.  Do not attempt to decipher messages in the kernel that require
     an interface instance.
39.  Long distance calling. Please see the Participant table's context
     menu.
40.  Use strong random bytes for status message keys.
41.  Use QVariant(QVariant::ByteArray), or equivalent, when attempting
     to store null database entries.
42.  Replaced QApplication::processEvents() with repaint(). processEvents()
     may cause problems on older versions of Qt.
43.  Optional signatures added to various communication protocols.
44.  Do not prompt for kernel activation if the kernel path does not represent
     an executable.
45.  Corrected UTF-8 issues in Buzz channels.
46.  Buzz channels will now accept UTF-8.
47.  The haveged package may increase the entropy on FreeBSD and Linux
     systems. Highly recommended.
48.  Replaced socket readyRead() signals in the kernel with 1.5-seconds
     timers. The change should alleviate burdened kernels. However,
     excessive data accumulation may occur.
49.  Qt 5.1 QHostAddress(QString) interprets IPv4 octets as octal values
     if the values are represented as such. For example, 192.168.178.015
     is interpreted as 192.168.178.13. Spot-On shall interpret IPv4 user
     input as is.
50.  Corrected notifications of Buzz activity.
51.  Replaced QSsl::TlsV1_2 with QSsl::SecureProtocols for Qt 5.x.
52.  Removed /echo/ instances from various hypertexts.
53.  spoton_listener::prepareNetworkInterface() must be called after
     an attempt of listen() is made. Otherwise, QTcpServer::serverAddress()
     will return an invalid address and cause the listener to exit
     prematurely.
54.  Gemini creation shall now be applied per participant instead
     of groups of participants.
55.  All new connections shall now have the stickies enabled by default.
56.  The gemini field in the friends_public_keys database table will
     now assume a null value.
57.  Signature keys in the friends_public_keys database table will be labeled
     as unknown (name).
58.  Corrected uses of QSqlQuery::isNull() and QByteArray::isNull().
     QByteArray::isNull() instances have been replaced by
     QByteArray::isEmpty().

0.01 (07/27/2013)

1.   Version 0.01 of Spot-On is now available.
