Commit Graph

124 Commits

Author SHA1 Message Date
ebb86ccf3b Blank asset numbers, contested device claims, and honest toner forecasting 2026-08-20 17:09:02 -04:00
fa88ef0afe Device identity, collector enrollment file, and network device fixes 2026-08-20 15:10:24 -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
09e9d5f047 Carry the level everywhere a position is drawn, and gate it per occurrence 2026-08-18 09:37:29 -04:00
ece0e15f03 Page past the 100-row cap in pickers and batch label sheets 2026-08-17 14:17:28 -04:00
49f68081c3 Match the optional identifiers in every list's search box 2026-08-17 13:18:26 -04:00
fbd99041b0 Buildings and levels for the floor map, and make every identifier searchable 2026-08-17 13:03:54 -04:00
265ca2eb01 Security hardening, multi-site portability, and a documentation and API-surface sweep 2026-08-14 16:28:34 -04:00
72f8da0e58 Shadow runs in-cycle; guarded share path 2026-08-13 14:54:06 -04:00
14fc3377d9 HP 3201/3301 toner part numbers 2026-08-13 13:45:56 -04:00
7517146238 Backup hover names the check and the capture separately 2026-08-13 13:35:17 -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
3abf724ae6 Stale enforcement reports judge both clocks 2026-08-13 09:54:05 -04:00
5dcc7e30af Display role vocabulary, migration commit fix, stale enforcement reports 2026-08-13 09:30:40 -04:00
d327ea1a5c Self-updating GE-Enforce client module on displays 2026-08-12 17:21:29 -04:00
d6b433e5f4 Kiosks report their display type; whole-chain DDL parity 2026-08-12 17:07:21 -04:00
50578f33bd Full-width GE-Enforce pages; asset column no longer echoes the host 2026-08-12 17:01:10 -04:00
2c822e462d Fix reports 500 on MySQL; enforcement report asset context 2026-08-12 16:49:58 -04:00
8d1f442daf Enforcement reports with asset context; contract 0.17.0 2026-08-12 16:41:16 -04:00
e8f33cffa1 Enforcement reports with asset context and backup state; manifest editor spacing 2026-08-12 16:35:46 -04:00
ee7f8640d1 Publish gate: refuse a manifest the fleet's enforcer lib cannot read 2026-08-12 15:26:27 -04:00
c0c2982810 One-shot Edge force-update for the shopfloor displays 2026-08-12 12:26:35 -04:00
5859070405 Ship the Tech Tools plugin that the previous export silently dropped 2026-08-12 12:13:30 -04:00
d32513727b Tech Tools section with a code generator, toner report that names the part, toner forecasting, warranty proof of cover, application uploads 2026-08-12 11:51:38 -04:00
568dfbb91c Dashboard corrections 2026-08-11 16:27:14 -04:00
2d19bcdf60 Employee resolve diagnostic 2026-08-11 16:10:21 -04:00
721828b5cb Card refinements 2026-08-11 15:58:15 -04:00
793dfab5c8 Printer card chips 2026-08-11 15:46:21 -04:00
34cb9a5e3e Dashboard polish 2026-08-11 15:28:29 -04:00
f1d46e7ab8 Backup verified column 2026-08-11 15:00:26 -04:00
9ae9879b90 Dashboard fixes: staleness, toner, layout 2026-08-11 14:45:29 -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
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
2e0f021354 Never file a part marker under its own PC 2026-08-10 17:01:41 -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
41a4a96f1e warranty machine preview uses the shared LocationMapTooltip 2026-08-10 10:06:54 -04:00
aa856ba98b machine map preview: escape table clipping, flip when short on room 2026-08-10 09:59:43 -04:00
d8178d55c1 warranty machine column with map hover; opaque settings dialogs 2026-08-10 09:51:42 -04:00
acadddb917 kiosk watchdog: require a visible window, kill orphans, refuse SYSTEM 2026-08-10 09:03:31 -04:00
d9d08f53ac remote-access protocol collection; dashboard site timezone + badge alignment 2026-08-10 08:36:39 -04:00
e68f522132 display kiosk watchdog: relaunch Edge when it goes away 2026-08-10 07:54:03 -04:00
8a2a3ee216 Make '+N more' actually show the events behind it 2026-08-08 15:36:42 -04:00
30e51131a3 Take the last scrollbar off the calendar 2026-08-08 15:26:33 -04:00
ece9782461 Fit the calendar to the space it actually has 2026-08-08 15:12:18 -04:00