Skip to content

Releases: Deophius/singin

v3.3

04 Mar 13:37
3e6a872

Choose a tag to compare

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

24 Dec 07:47
230650d

Choose a tag to compare

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.

  1. A lot of new configuration variables. The timeout for the request (network IO) is now given in the config file.
  2. 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.
  3. The log file no longer contains the requests' body because they take up much space. Also prints a thread_id before in-thread messages to help debugging.
  4. 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

Full Changelog: v3.1...v3.2

v3.1

01 Sep 09:53
371fc20

Choose a tag to compare

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.exe finally has an ICON! The description should also help in the war
    of concealment.
  • The original set/get_watchdog was removed in favor of doggie_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 trainer as it's no longer needed.
  • Added buttons for the functionality of doggie_stick and flush_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

Full Changelog: v2.5...v3.1

Good luck!

v2.5

08 May 04:29

Choose a tag to compare

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

26 Feb 13:49

Choose a tag to compare

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

26 Feb 13:37

Choose a tag to compare

v2.3 Pre-release
Pre-release

This release is suitable for single-client, single-server scenario.

Please consider v2.2 if you want to use it in a production environment.

v2.2

06 Feb 13:00

Choose a tag to compare

2.2 Release!

  1. There is no v2.1 because that idea was abandoned.
  2. There are many new features since release 2.0.
    You can read the commit messages for the update.
  3. There's now a readme and a license. Follow the instructions inside for compilation and deployment.
  4. 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)

06 Feb 12:28

Choose a tag to compare

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

13 Nov 13:37

Choose a tag to compare

In this version, supports the following features

  1. signin.py waits for a socket connection before it starts the automated process.
  2. trigger.py can connect to that socket and start the execution. Logs from signin are sent to trigger.
  3. However, if trigger exits by accident, signin will 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