docs: wiki update for API docs, printer installer, geenforce cutover, timezone
Execute WIKI-UPDATE-PLAN.md (14 items): - NEW docs/PRINTER-INSTALLER.md: install-list / pc-default / install-batch contract + public installer map page. - NEW-shape docs/API-REFERENCE.md: index + pointer to the live generated docs (/api/docs Redoc, openapi.json, llms.txt, MCP), replacing a stale full dump. - geenforce cutover + GE-ENFORCE-DISPLAY/CLIENT/DEPLOY: server-first display dispatcher (display-role by FQDN, display-type.txt fallback), dashboarddefaults FQDN keying, legacy kiosk autostart self-heal (Wow6432Node), per-PC-type cutover status. - PLUGINS: printers/slides rows + plugin-permissions note (slides.manage). - IMPORT-API: dashboarddefaults FQDN-first keying. - CONFIG: word-wise search, site_timezone setting. - PILOT-DEPLOY: servers-to-network reclassify step. IMPORT-ADOPTION: fixup note. - CLAUDE.md: test count 1077->1159, HTTPS-cutover state. CHANGELOG: timezone + kiosk-autostart fixes, site_timezone setting.
This commit is contained in:
@@ -183,6 +183,40 @@ No full doc for [E]; this note plus a CHANGELOG line covers it.
|
||||
|
||||
---
|
||||
|
||||
## 12. docs/CONFIG.md - UPDATE (site timezone) + note in notifications coverage
|
||||
|
||||
**Action: update.** New `site_timezone` site setting (default `America/New_York`, public), added in `shopdb/core/api/settings.py` (`build_default_settings`, category `site`) and surfaced in `frontend/src/views/settings/SiteSettings.vue` (Localization group, common-zone dropdown). Add to the site-settings section of CONFIG.md:
|
||||
|
||||
> `site_timezone` (site, default `America/New_York`) - IANA timezone for the site. Notification start/end times are entered and displayed in this zone (not the viewer's browser zone), and daily-reset notification expiry (`expirymode=dailytime`) is computed here. Editable in Settings > Site > Localization. Public-readable so kiosks/clients can resolve it. Stored/served UTC; the frontend converts via `frontend/src/utils/datetime.js` (Intl-based, DST-safe).
|
||||
|
||||
Also add a CHANGELOG line: notification times are now timezone-correct (stored UTC, shown in `site_timezone`); fixes the prior offset bug where a 2:34 PM entry displayed as 6:34 PM.
|
||||
|
||||
---
|
||||
|
||||
## 13. docs/geenforce-api-cutover.md + GE-ENFORCE-DISPLAY.md - UPDATE (legacy kiosk autostart purge)
|
||||
|
||||
**Action: update both.** The display dispatcher now self-heals the legacy kiosk autostarts the OLD Dashboard/Lobby Inno installers left behind. Add a subsection to the dispatcher coverage in `geenforce-api-cutover.md` (near the dispatcher pattern) and a short note in `GE-ENFORCE-DISPLAY.md`:
|
||||
|
||||
> ### Legacy autostart self-heal
|
||||
>
|
||||
> The old GE Aerospace Dashboard / Lobby Display Inno installers planted three autostarts each: a Public-Desktop `.lnk`, an all-users Startup `.lnk`, and an `HKLM ...\CurrentVersion\Run` value, all launching Edge at now-dead URLs (`/shopfloor-dashboard/`, `/tv-dashboard/`) which 404 to a white screen. Because those installers were 32-bit, the Run value was WOW64-redirected into `HKLM\SOFTWARE\Wow6432Node\...\Run`, invisible to 64-bit tooling - the reason it survived earlier cleanup. The dispatcher (`build_dispatcher_script` in `seed_display_scope.py`) now sweeps, every enforce cycle: both the native and Wow6432Node registry views, every loaded user hive (HKU), Run + RunOnce + Policies\Explorer\Run, matching by the legacy value names AND by any value pointing at the old URLs; plus every per-user and common Startup folder; then kills any running old-URL Edge. A read-only locator, `pxe-images/github/find-legacy-kiosk-autostart.ps1`, hunts all these locations (and Edge startup-URL policy, scheduled tasks, Assigned Access) when a straggler persists.
|
||||
|
||||
Note that the kiosk shortcut is a direct Edge shortcut (no launcher/VBS) and that the fix ships by re-publishing the code-authored `gea-shopfloor-display` scope (`seed_display_scope(publish=True)`), not an import-share.
|
||||
|
||||
---
|
||||
|
||||
## 14. docs/API-REFERENCE.md - CREATE (revise item 11 scope: link the LIVE docs)
|
||||
|
||||
**Action: supersedes item 11's "hand-written index only" framing.** The repo now ships generated, hosted API docs, so API-REFERENCE.md is primarily a pointer to those plus the audience/auth index:
|
||||
|
||||
- **Live interactive spec:** `GET /api/docs` (self-hosted Redoc), raw spec at `GET /api/docs/openapi.json` (OpenAPI 3.1, ~238 paths / ~362 ops, generated by `scripts/gen_openapi.py` from `docs/api-inventory.json`).
|
||||
- **LLM/agent entry point:** `GET /api/docs/llms.txt` (llms.txt convention) and the read-only MCP server (`mcp/shopdb_mcp.py`, `FastMCP.from_openapi`; set up on a work PC via `pxe-images/github/setup-mcp.cmd`).
|
||||
- Keep item 11's audience tables (fleet/client contracts, import API, core UI API) as the human index, each row linking the owning contract doc. State at top: interactive/full shapes live at `/api/docs`; contract docs hold the deep semantics; this page answers "what exists, who calls it, what auth".
|
||||
|
||||
Cross-link from PLUGINS.md header, DEPLOY.md security section, and `docs/llms.txt` provenance. The `docs/` blueprint lives in `shopdb/core/api/docs.py` (vendored Redoc under `staticdocs/`); mention it is a core blueprint always mounted.
|
||||
|
||||
---
|
||||
|
||||
## Out of scope for the wiki but flagged to the maintainer
|
||||
|
||||
- CLAUDE.md drift (test count 1077 vs 1159, phantom "lean-build job", 2026-07-13 "Current state" missing the entire HTTPS-cutover arc) is repo-doc, not wiki, but should ride the same commit.
|
||||
|
||||
Reference in New Issue
Block a user