Releases: Deophius/singin
v3.3
What's Changed
This update should make the code more exception aware and make stronger guarantees, thus resulting in a more robust program.
Now we use the RAII idiom and exclusive transactions to gain more robustness in write_record() at the cost of some performance overhead.
Catchall catch clauses have been added to various parts of the program, such as the handlers for singer and the mainloop of watchdog. So even if an unexpected exception do occur, the program will not terminate silently, but report the issue and retry.
Further more, we considered the possibility of the database being locked when the startup checks are being run, so we gave the startup checks 100 chances, which should suffice.
Finally, we removed two ancient tests to reduce the number of build artifacts produced when building the project.
Full Changelog: v3.2...v3.3
v3.2
This release is not as voluminous as the previous release, but it addresses some issues that have been around for months before we noticed them.
- A lot of new configuration variables. The timeout for the request (network IO) is now given in the config file.
- A new sign in mechanism: local sign in. It uses the records in the database to decide who needs help signing in. We think this necessary after the school server showed very lousy performance in September.
- The log file no longer contains the requests' body because they take up much space. Also prints a
thread_idbefore in-thread messages to help debugging. - Watchdog learned to be more patient. It now waits a lot when paused, reducing CPU usage a lot.
As usual, see readme.md for details of the configuration file and instructions to deploy.
What's Changed
- Some little fixes on the release by @Deophius in #16
- Amending PR #16 by @Deophius in #17
- Waiter by @Deophius in #19
Full Changelog: v3.1...v3.2
v3.1
Release v3.1
This is another major release!
What's new in this release
The new server is written in C++. It supports (almost) all of the old functionality from dbman.pyw.
Backward incompatible changes include:
- Sign in mode ('c' or 'r') is removed.
- Broadcasting is no longer used to obtain the server's IP address. The client must know the server's
address in advance now. - The server executable
spiritd.exefinally has an ICON! The description should also help in the war
of concealment. - The original
set/get_watchdogwas removed in favor ofdoggie_stick. - When the program launches, it will check the configuration file and the database it points to. If there
is anything wrong with the configuration, it will be detected early and reported with a dialog box.
Of course, a lot of new commands are introduced.
quit_spirit: Administrative command that isn't built into the GUI.flush_notice: Orders the smart board to get notifications immediately.doggie_stick: A replacement for the watchdog getter/setter.
Kindly refer to the "Our sign in protocol" section of readme.md for further information.
The watchdog was the part that received the most delicate testing and rebuilding.
- The watchdog also switched to C++. We use boost.asio for the underlying web IO. This is much faster than
the old Python implementation. - Removed the restriction that a lesson must be listed in config to be processed by the watchdog.
- Watchdog can be paused or restarted on the fly. (No more reread.txt!)
- When deciding whether someone should sign in, the watchdog only takes the "Invalid" flag into account.
- If networking errors occur during auto sign in, we will retry until the lesson is over.
- To avoid collision with normal sign in, we first send a restart request to the terminal before doing
our trick. - The polls and timeouts of the watchdog are now customizable.
There is much more to the new watchdog. I cannot possibly cover all the changes here.
With a whole new server, the frontend must change also. The significant changes include:
- Changed the
dbgui's font to Consolas, making it easier to operate on the TV. - Removed
traineras it's no longer needed. - Added buttons for the functionality of
doggie_stickandflush_notice. - Keyboard accelerators everywhere; operating the GUI with keyboard only is not only a theory; it's
now a reality. - Quick find empowers you to fight last minute battles with confident and ease.
- Colored in-program cues give you an idea of the program's status just at a simple glance.
Release nomenclature
We didn't name this release v3.0. That's because that version number should go to cppser/test/watchd.cpp,
which, being originally developed as a simple test case, ended up supporting our class during a really
stressful period. However, that program contained a bug that caused it to malfunction if no network is
available or the server has gone haywire.
Also, v2.1 was missing from the releases. Perhaps this release can be a replacement?
Contributors
This release is a joint effort of @Deophius, @Jerry-Gren, @Lavender2004 and all the trusting members of our team.
How to get started
See the readme for instructions to build, deploy and use.
Final words
See the LICENSE file for the license. This program is licensed under the MIT license. Take special care
to the paragraph in capital letters: ABSOLUTELY NO WARRANTY!
Tuning a program to a specific need is always a delicate work. The same can hardly be overstated for
adapting it for another purpose. Feel free to make your own tweaks and push things forward!
What's Changed
- Janitor work on the code by @Deophius in #3
- Rebuild the watchdog part by @Deophius in #7
- Singer by @Deophius in #8
- Doing production testing by @Deophius in #13
Full Changelog: v2.5...v3.1
Good luck!
v2.5
This release's highlight is the watchdog.
After 2 weeks of testing, we have made it more stable and robust. Sorry for deleting the previous release, which contained a bug that would lead to compilation failure.
Experience shows that using watchdog is delicate work. Sometimes a little fidgeting here would result in a huge error. Use it at your own cost.
Full Changelog: v2.4...v2.5
v2.4
This release features configuration files, so please read readme.md carefully!
Each zip file contains all files except man.json needed to be copied into the disk. (See readme)
The sqlite3mc library version is 1.3.5, compiler is mingw32 GCC 8.2.0.
Full Changelog: v2.3...v2.4
v2.3
v2.2
2.2 Release!
- There is no v2.1 because that idea was abandoned.
- There are many new features since release 2.0.
You can read the commit messages for the update. - There's now a readme and a license. Follow the instructions inside for compilation and deployment.
- There is no binary package for downloading. There are a lot of configuration that you must do on
your own.
Second major version v2.0 (dbman)
Version 2.x employs a completely different mechanism for signing in.
Now we access the local data directly, but in this release, the code in signin.py is still required.
v1.1
In this version, supports the following features
signin.pywaits for a socket connection before it starts the automated process.trigger.pycan connect to that socket and start the execution. Logs fromsigninare sent totrigger.- However, if
triggerexits by accident,signinwill not continue the process but wait for another connection.
This version has the following bugs
We don't ensure that the time generated is logical. We are betting on the server and the administrator being careless enough to ignore such errors.
Where is v1.0 ?
v1.0 is not published because it is too simple. It cannot be operated without having the keyboard stuck into the card machine.
We think that is not acceptable, so we just skipped it.
Release date
Although it says differently in the tag and in the releases page, it is 2021/11/10