Commit Graph

163 Commits

Author SHA1 Message Date
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
376298dc02 Navigation sections declared, guide editor drag + references, USB settings, permission refresh 2026-08-27 09:30:08 -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
f221fba540 Guides: procedures written and read inside ShopDB 2026-08-26 12:42:24 -04:00
271d558f8b An unmeasurable backup must not hide a working one 2026-08-26 10:07:51 -04:00
8e10584c4d Give the backups plugin a settings page, and show where a snapshot is 2026-08-25 14:53:13 -04:00
fa856c1f94 Judge a PC's backup by its stalest kind, not its newest 2026-08-25 13:56:53 -04:00
f1e265190e Let a share-backed backup say what is in it 2026-08-25 13:52:06 -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
b90d7a7051 Secure send settings page 2026-08-21 16:10:52 -04:00
ee1da0ffb8 Tech Tools reachable without a login 2026-08-21 16:02:52 -04:00
0b4a1db842 Secure send: guests by setting, and a custom view count 2026-08-21 15:53:42 -04:00
1dd8474ce4 Secret links: one mount, not two 2026-08-21 15:23:18 -04:00
627804535e Secret links carry the site URL and the mount path 2026-08-21 15:19:43 -04:00
94fd70391a Secure send: the pages a person actually touches 2026-08-21 15:11:04 -04:00
a01f5c1a83 Secure send moves into Tech Tools 2026-08-21 14:18:10 -04:00
4242028270 Secure send: hand somebody a password without leaving it in a chat window 2026-08-21 13:44:34 -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
bbda5cbfe9 A supply nobody could read is unknown, not empty 2026-08-21 11:44:10 -04:00
65312c0502 Name the toner on the forecast, keep the number on the hover 2026-08-21 11:23:27 -04:00
04107ff8ab Search spelling suggestions across every list 2026-08-21 11:15:06 -04:00
980b2e8be3 Find a knowledge base article by words from different fields 2026-08-21 09:40:14 -04:00
44432c9b5a Label generator: gap, position and a back side 2026-08-21 09:09: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
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