Commit Graph

52 Commits

Author SHA1 Message Date
bbda5cbfe9 A supply nobody could read is unknown, not empty 2026-08-21 11:44:10 -04:00
980b2e8be3 Find a knowledge base article by words from different fields 2026-08-21 09:40:14 -04:00
5a58d33623 Fix what the last round of device fixes broke, and two dips it missed 2026-08-21 08:50:00 -04:00
4f0399b8ac A toner rate needs days behind it 2026-08-20 17:23:59 -04:00
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
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
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
2c822e462d Fix reports 500 on MySQL; enforcement report asset context 2026-08-12 16:49:58 -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
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
2d19bcdf60 Employee resolve diagnostic 2026-08-11 16:10: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
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
321d0a3799 Backups: collection interval is actually readable 2026-08-11 10:08:59 -04:00
28b1dfb89e Backups: a revision chain belongs to a PC, not just a machine 2026-08-10 15:03:00 -04:00
502728c9f6 Collector: machine number identifies the machine, not the PC; ntlars empty-value fix 2026-08-10 14:26:19 -04:00
acadddb917 kiosk watchdog: require a visible window, kill orphans, refuse SYSTEM 2026-08-10 09:03:31 -04:00
e68f522132 display kiosk watchdog: relaunch Edge when it goes away 2026-08-10 07:54:03 -04:00
4344adabf1 Board row ordering, type-derived row colours, and clearer upcoming events 2026-08-08 14:24:28 -04:00
3ebc1f353a tabbed DNC card, machine-numbered downloads, themed backup history 2026-08-07 15:22:59 -04:00
2487981d91 backups panels show only when the asset has data 2026-08-07 14:53:54 -04:00
5a0017cd9a backups plugin with NTLARS revision history; shopfloor dashboard upcoming cards and state chips 2026-08-07 14:30:18 -04:00
7c5b1bc74e Per-type board rows with shared categories, a network device IP field, and two dark-mode dialogs 2026-08-07 10:43:32 -04:00
2f15610cfd Per-type expiry tail on the shopfloor board, and a 2x2 recertification block 2026-08-07 09:28:10 -04:00
59578e1c5b map marker legibility, PDF export blueprint fix, asset list type search 2026-07-31 09:06:22 -04:00
dd0865d103 printer install-list/pc-default format=text 2026-07-29 13:51:01 -04:00
c17d170870 fix printer batch vendor resolution + base url 2026-07-29 12:56:31 -04:00
a2cf109586 printer installer map + install-batch endpoint 2026-07-29 12:39:12 -04:00
14c0d4be1e geenforce re-publish FK fix (MySQL) + payload-count guard 2026-07-28 18:56:29 -04:00
8f0c110dda geenforce: harden allowlist + fix share-less kiosk client and display scope 2026-07-28 17:09:35 -04:00
4ed1296d5e geenforce: IP allowlist for client endpoints + admin Settings tab 2026-07-27 14:13:50 -04:00
c355eaae43 printers low-toner alerts; geenforce display readiness + token scope-binding; air-gap docker deploy kit 2026-07-23 14:37:00 -04:00
73b05e5b1c alerts: per-support-team webhook + printedparts routing 2026-07-22 13:32:01 -04:00
d49f0cbb09 printedparts: QR label tag+rev, record taken revision 2026-07-22 07:52:17 -04:00
38c0f0395c geenforce: HTTPS payload delivery (blob store + endpoint) 2026-07-21 10:10:59 -04:00
fd2ab0ab1c ADR-013 Phase 3 complete: asset-panels + asset-presentation + map-overlays renderers 2026-07-18 23:10:27 -04:00
365b0f2f69 printedparts: gage-lab asset tag + print-files redesign
The gage lab assigns real WJRP asset numbers: internal itemcode stays
auto-minted, a new optional unique gagelabtag carries the lab's number,
searchable and kiosk-resolved (scans and bare digits against either
identifier). Print files render as stacked revision cards instead of a
scrolling table.
2026-07-17 14:01:10 -04:00
fce7937b9b Shopfloor feed resolves employee names live when none is stored
Photos already resolved at read time; names only came from the stored
column, so imports without the employee source showed bare SSOs. New
mode-aware display-name resolver backs a live fallback; stored names
still win.
2026-07-17 13:29:35 -04:00