Commit Graph

55 Commits

Author SHA1 Message Date
0e3d5a6226 Promote the 2026-08-30 review security fixes and supplies ordering to main 2026-08-31 09:24:13 -04:00
a775b87db7 gate guard, runtime spec, Node 24 actions 2026-08-28 15:28:07 -04:00
e60945e56e generator share links; secure send copy message 2026-08-28 11:46:56 -04:00
8e02235a71 section ticking covers the section 2026-08-27 15:43:00 -04:00
6dcff467d7 tools.view for the Tech Tools entry 2026-08-27 15:12:18 -04:00
e8f1de811f nav items declare their permission 2026-08-27 14:51:04 -04:00
0c1fbfcc1e read permissions on every GET 2026-08-27 14:26:17 -04:00
4da6c6aa36 guest role; guide section ticking 2026-08-27 13:02:35 -04:00
d38a599292 guides export/import bundles 2026-08-27 11:47:01 -04:00
28798e6a32 flask guides import-html; retention docstring 2026-08-27 11:27:30 -04:00
5f069b1a5f Email report on every report page; kiosk long-name fix 2026-08-27 11:01:28 -04:00
4dfbf5f8ec Kiosk drive filter and wider picker 2026-08-27 10:37:10 -04:00
60c340b07f Plugin reports render; USB check-in/out audit report; kiosk drive lists 2026-08-27 10:20:59 -04:00
2326f8f096 USB kiosk: guest check-out/check-in without a login 2026-08-27 08:19:03 -04:00
0738d71525 Guides image + draft gating, audit retention, ADR-015 gate, backup credential redaction 2026-08-26 15:08:53 -04:00
4e38303326 Tab titles name the record; Guides reach a site and the contract surface 2026-08-26 13:31:13 -04:00
c7fd00c225 One canonical name per vendor in the shipped catalog 2026-08-25 07:47:56 -04:00
1812def14f Catalog dedupe commands, and a seed catalog with no duplicate vendors or models 2026-08-24 14:49:54 -04:00
4fe4e91ae4 Maintenance scripts load .env, so they reach the site's real database 2026-08-24 14:32:38 -04:00
ead9fd6b56 Search results open the record they found; plugin scaffolder emits a prunable frontend 2026-08-24 14:06:14 -04:00
0398c55fb5 Warranty search finds a machine number; the collector can no longer set a printer assignment 2026-08-24 11:52:48 -04:00
f109dd1349 Plugin baselines skip tables that already exist 2026-08-24 09:28:52 -04:00
ce3a0f4338 Secure Send documented, and the machine form stops re-creating a controlling-PC link that already exists 2026-08-24 08:55:45 -04:00
2719589c6e Label generator: back-side codes, pictures, two-column layout, measurement guards 2026-08-21 12:38:08 -04:00
74392ccad2 Only zero is empty, and the last day is worth reading 2026-08-21 11:57:17 -04:00
04107ff8ab Search spelling suggestions across every list 2026-08-21 11:15:06 -04:00
44432c9b5a Label generator: gap, position and a back side 2026-08-21 09:09:14 -04:00
1b5b28acff Release 0.12.0 2026-08-20 08:46:04 -04:00
d267813999 Printer assignment end to end, and a container that keeps a site's files
Assign printers to a MACHINE and let whichever PC controls it install them, with
the observed half kept strictly apart from the assigned half: a collector report
can never write an assignment row. Adoption is explicit. Adds a singular
relationship type so defaultprinter can mean exactly one, client scripts that
converge a bay's queues and correct a drifted one in place, and a wave gate so a
fleet-wide driver rollout cannot stampede its own share.

On the container side: the compose stack never persisted the instance directory,
so a rebuild discarded plugins.json and every upload. It is a volume now, the
image ships instance/ owned by the app user so the mountpoint is writable, and
the database moves to MySQL 8.4 LTS, which the Windows runbook has recommended
since 8.0 went end of life. The image also could not build at all: the frontend
stage never copied the plugin staging script it runs.

Adds a topology migration guide covering IIS to Docker and back.
2026-08-20 07:46:35 -04:00
8dd383f4ee Release 0.11.2 2026-08-17 15:53:26 -04:00
4c3d5746e8 Fix the levels viewer: markers were drawn on whichever plan was showing 2026-08-17 15:01:09 -04:00
ece0e15f03 Page past the 100-row cap in pickers and batch label sheets 2026-08-17 14:17:28 -04:00
7df79e50d9 Release 0.11.0 2026-08-17 13:29:05 -04:00
fbd99041b0 Buildings and levels for the floor map, and make every identifier searchable 2026-08-17 13:03:54 -04:00
47fb65fdd2 Release 0.10.0 2026-08-17 08:37:57 -04:00
265ca2eb01 Security hardening, multi-site portability, and a documentation and API-surface sweep 2026-08-14 16:28:34 -04:00
376b8df0fb Shadow task fixes, asset link ids, backup verdict 2026-08-13 13:20:24 -04:00
70c5bced37 Shadow-mode client script and cutover doc correction 2026-08-13 11:23:27 -04:00
4319f6bc8e Application and warranty uploads, toner forecast, fiscal week 2026-08-12 12:07:14 -04:00
f1d46e7ab8 Backup verified column 2026-08-11 15:00:26 -04:00
3b37603691 Dashboard cards: rebuild deployable dists 2026-08-11 14:31:24 -04:00
0ed8be75d9 Dashboard cards, backup last-seen 2026-08-11 14:01:57 -04:00
c30195a92b Release 0.9.0 2026-08-11 12:42:03 -04:00
5c33b06688 Declarative subordinate devices + shared-machine check 2026-08-11 11:14:51 -04:00
321d0a3799 Backups: collection interval is actually readable 2026-08-11 10:08:59 -04:00
2924a53346 Part markers become their own assets under the operation they serve 2026-08-10 15:55:36 -04:00
28b1dfb89e Backups: a revision chain belongs to a PC, not just a machine 2026-08-10 15:03:00 -04:00
d40be9ca68 Machine claim vs handover; alerts gated off; ntlars empty-value fix 2026-08-10 14:49:17 -04:00
502728c9f6 Collector: machine number identifies the machine, not the PC; ntlars empty-value fix 2026-08-10 14:26:19 -04:00
c674000ccc Show the kiosk label prefix, and let a plugin declare the settings it owns 2026-08-06 18:17:56 -04:00