From a895bde6fed1994f5549f01b0e61711a4c3e3018 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Fri, 14 Aug 2026 16:34:46 -0400 Subject: [PATCH] README: count the plugins the tree has, and point somewhere useful It claimed thirteen bundled plugins and listed thirteen; there are fifteen, and the two missing ones - backups and tools - were undiscoverable from the first page anyone reads. The count is gone rather than corrected, because a number typed here goes stale exactly the way it just did; the generated map carries it. The version and count guard now covers README.md and CONTRIBUTING.md, not just docs/. A rule that leaves the most-read file in the repository outside it is most of a rule. Also names the reference site as the reference site rather than by plant, adds a pointer to START-HERE, and corrects the distribution paragraph: it told a reader of the public mirror that the code is only available on an internal server, which is both wrong and unhelpful now that the installer ships as a release asset. --- README.md | 22 ++++++++++++++++++---- tests/test_docs_versions.py | 14 +++++++++++++- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 61b7d34..80f683e 100644 --- a/README.md +++ b/README.md @@ -108,8 +108,10 @@ SQLite). Do not run dev or production against SQLite. ### Distribution -The application is distributed through the internal GE Aerospace git server. Clone -it from there; there is no public package or image registry. +Source lives here. The Windows installer ships as a release asset rather than a +file in the repository - it is around 240 MB, well past what a repository takes +and well inside what a release asset does. There is no package or image +registry; a site installs from that `.exe` or builds from source. ### Fast path (Docker) @@ -172,7 +174,8 @@ project wiki. To import a site's legacy data, use the HTTP import surface: an admin API token plus [docs/IMPORT-API.md](docs/IMPORT-API.md) drive the whole migration through documented endpoints (`X-Import-Mode` preserves original timestamps). -`scripts/site_imports/wjf/` is the West Jefferson reference loader. +`scripts/site_imports/wjf/` is the reference site's loader, kept as a worked +example of the whole sequence. ### Which deployment route @@ -220,12 +223,22 @@ Query parameters for list endpoints: - `search` - Search term - `assettype` - Filter by asset type (computer, printer, machine, networkdevice, measuringtool) +## Where to start + +[docs/START-HERE.md](docs/START-HERE.md) routes by what you are here to do - +standing up a site, deploying the shop-floor tools, writing a plugin, +integrating with the API, or diagnosing something. On the published mirror the +same page is the wiki's front door. + ## Plugin System ShopDB supports plugins for extending functionality. See `CONTRIBUTING.md` for plugin development guidelines. -The image bundles thirteen plugins; only the ones a site installs are loaded: +The image bundles these plugins; only the ones a site installs are loaded. The +current count and each plugin's version and migration head are in +[docs/PROJECT-MAP.md](docs/PROJECT-MAP.md), which is generated: +- **backups** - Machine configuration backups (NTLARS/DNC, CMM, part marker, UDC) with revision history and diffs - **computers** - Shopfloor PCs and workstations, collector fleet ingest - **employees** - Employee directory - **geenforce** - GE-Enforce imaging/software manifests and fleet compliance @@ -237,6 +250,7 @@ The image bundles thirteen plugins; only the ones a site installs are loaded: - **printedparts** - 3D-printed part catalogue, kiosk issue tracking and stock alerts - **printers** - Extended printer management with Zabbix integration - **slides** - TV/kiosk slideshows +- **tools** - Tech Tools: barcode and QR generation laid out for real label stock - **usb** - CMMC USB check-in/out tracking - **warranty** - Warranty records with Dell lookups diff --git a/tests/test_docs_versions.py b/tests/test_docs_versions.py index f572f81..4bce33a 100644 --- a/tests/test_docs_versions.py +++ b/tests/test_docs_versions.py @@ -40,7 +40,19 @@ PLUGIN_COUNT = re.compile(r'\b(\d+)\s+bundled plugins\b', re.I) def documentation_files(): - return sorted(p for p in DOCS.rglob('*.md') if p.name not in EXEMPT) + """Everything published that a reader treats as documentation. + + README.md and CONTRIBUTING.md are included deliberately: README is the first + page anyone sees on the mirror, and it was claiming thirteen bundled plugins + when there were fifteen. A rule that covers only docs/ leaves the most-read + file in the repository outside it. + """ + files = [p for p in DOCS.rglob('*.md') if p.name not in EXEMPT] + for name in ('README.md', 'CONTRIBUTING.md'): + top = REPO / name + if top.is_file(): + files.append(top) + return sorted(files) def current_versions():