Changelog

Straight from the repository — this page is the release notes, not a retelling of them.


Changelog

All notable changes to LibTrack. Versions follow semantic versioning: MAJOR.MINOR.PATCH.

Installing a newer version over an older one is safe — the database lives in the app's userData folder, separate from the install directory, and schema migrations run automatically on first launch.


1.34.0

Two reports from using the app, and they turned out to be one idea: the Sessions tab had become a second, worse Scanner. It is the attendance history, and history is not where you run today's class.

Fixed

Changed

Both controls are disabled with a reason rather than removed — a button that vanishes reads as a broken screen, and a header whose buttons come and go moves the next one under your pointer.

32 suites, 1,509 checks.


1.33.0

Auto-update has worked since 1.31.0 and was confirmed on a second machine on 12 August 2026. It was also completely invisible: updates downloaded in the background and applied on the next ordinary close, and there was no way to know an update existed, was downloading, or was waiting — short of quitting and watching the version number.

That silence was the right default for a school PC and the wrong one for anybody who wants to know.

Added

The top bar had carried no buttons since 1.14.1

That rule removed a theme toggle and Start/End session, on the grounds that a control which repaints the app or writes a record should not be a stray click away on every screen. This button is an exception for reasons rather than by erosion: it does not exist unless an update is genuinely ready, an update being ready is exactly the kind of global status the bar already carries (the live session dot, the Demo data chip), and it confirms before doing anything. It is rendered at all times and hidden, so the day an update lands it does not shove the status line sideways.

A separate rule — that a drag region swallows keyboard focus for its whole subtree, which once broke typing on the login screen — does not apply: button is already exempt from the drag region. A text field in the top bar would still be a bug, and there is not one.

Where the safety lives

The restart is refused during a class session, with the self-service display up, or if the request comes from the display's own window. None of those are decided by the screen showing the button — the main process reads them for itself: the live session from the database, the display from the window list, and which window asked from its webContents id. A guard that the guarded window can fill in is not a guard.

mayInstallNow and its tests were written in 1.31.0, before there was anything to call them, so that these conditions were decided while nobody was in a hurry. This release is their first real use.

Two new behaviours worth naming: offline is now said out loud here, unlike everywhere else in the updater — someone who pressed a button is owed an answer, even though an unsolicited toast every morning would be noise. And a development build says so instead of offering a button that would throw.

32 suites, 1,485 checks.


1.32.0

Reported from the desk: start a class session, scan students in, and the dashboard's Inside now does not move. It was right about that, and the cause was worse than a stale number — there was no "who is inside" query at all.

The dashboard counted the open rows in one session: today's walk-in log. A class scan writes its attendance row under the class session, so a class of forty checked in was counted nowhere. The self-service display had the mirror-image bug: while a class ran it showed the class register and hid every walk-in visitor standing in the room. Two screens, the same label, two different populations, neither of them the library.

Fixed

Added

Not changed, on purpose

Two new suites, smoke-insidenow.mjs and smoke-insidenow.cjs, take the total to 32 suites and 1,443 checks. The first assertion in the second one is the reported sequence, and it fails against the old code.


1.31.0

The librarian designs the school's ID card in Canva and sent the export. LibTrack printed something else entirely: a barcode, a name and a section in a plain bordered box. This release prints her card.

Added

Why upload rather than build the design in? Because rebuilding her Canva file in code would look approximately right and be wrong the moment she edits it, which she will every school year. The artwork is an image LibTrack never interprets; only the field positions are the app's business.

The four things that would have gone wrong

Each of these looks perfect on screen and costs a print run:

Changed


1.30.0

LibTrack had no way to be seen without being installed, and no way to be updated without someone being sent a file. This release is the distribution story: a website, a demo that is the actual application rather than a video of it, and updates that arrive on their own.

Added

Fixed

Changed


1.29.0

Preschool sections are routinely staffed by two teachers at once, and the app made that unsayable: one teacher per section, enforced by a unique index.

Added

Fixed

Internal


1.28.1

Reported from a library running the self-service display on a smart TV, so preschool teachers could reach it. The TV stopped accepting input: the taskbar became unreachable and the keyboard with it, and unplugging the television was the only way out.

Added

Fixed

Internal


1.28.0

Everything here came from one library, and three of the four reports were workarounds for the same gap: there was no way to change many faculty members' designation at once.

Added

Fixed

Internal


1.27.2

Changed

Fixed


1.27.1

Changed

Fixed


1.27.0

Added

Changed

Fixed

1.26.4

Fixed

Added


1.26.3

Fixed


1.26.2

Added

Notes


1.26.1

Internal only — no change to how anything behaves.

Changed

Notes


1.26.0

The last of the test-run list.

Added

Notes


1.25.0

The Self-Service Display.

Added

Changed

Fixed

Notes


1.24.0

Added

Notes


1.23.0

Added

Changed

Fixed

Notes


1.22.0

Labels, from the test-run list. No behaviour changed.

Changed

Notes


1.21.0

First of several releases working through the test-run list. This one is Sessions.

Added

Changed

Notes


1.20.0

Added

Notes


1.19.0

Added

Changed

Notes


1.18.0

Added

Changed

Notes


1.17.1

Changed


1.17.0

Added

Changed

Notes


1.16.0

Added

Notes


1.15.0

Added

Notes


1.14.1

Changed


1.14.0

Fixed

Added

Notes


1.13.1

Fixed

Security


1.13.0

Added

Security


1.12.0

Changed — please read before updating

Added

Notes


1.11.0

Changed

Notes


1.10.0

Added

Changed

Notes


1.9.1

Fixed

Notes


1.9.0

Added

Fixed

Notes


1.8.1

No product changes. Adds sample-data/ — 1,000 book records and a 500-pupil roster for trying the CSV importers, and for demonstrating LibTrack with a catalogue in it rather than an empty one. The book records are real ones from Open Library, so the Look up button in Add Book resolves against them; the roster is generated. Not included in the installer. See sample-data/README.md.


1.8.0

Added

Fixed

Internal

Notes


1.7.0

Added

Fixed

Notes


1.6.1

Changed

Notes


1.6.0

Added

Notes


1.5.0

LibTrack now tracks what is in the library, not just who walks into it.

Added

Fixed

Notes


1.4.0

Added

Changed


1.3.0

Added


1.2.1

Fixed


1.2.0

Added

Fixed


1.1.0

Added

Changed

Fixed


1.0.0

Initial release — class sessions, walk-in attendance, QR student IDs, sections, teachers, reports with Excel export, backups, and role-based access.