toga-ai 1.0.513 → 1.0.514

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -59,6 +59,30 @@ too. _(Carried from the togaview architecture doc — not re-verified in code on
59
59
 
60
60
  The app code is the easy part. What actually bites:
61
61
 
62
+ - **STEP 1 — HARD GATE: register the host in `Vision_Log.CopyrightHosts`.** TOGa 1.0 apps perform a
63
+ license / anti-piracy host authorization check ("calls home") against the `Vision_Log.CopyrightHosts`
64
+ table, keyed on `hostName`. **If there is no row matching the request host, the app renders an
65
+ "unauthorized use" error screen instead of the application** — even when `getRestrictedClient()`
66
+ already knows the host and DNS, the TLS cert and the ALB rule are all correct. Nothing else on this
67
+ checklist matters until the row exists. The table's purpose is to stop the code being run on
68
+ unapproved hosts without permission. Columns: `id`, `hostName`, `redirectTo` (nullable — when set it
69
+ appears to redirect that host elsewhere; **not confirmed**). Insert one row per new hostname with
70
+ `redirectTo` NULL unless you specifically want a redirect. Example (RUMCSI cutover, 2026-08-04):
71
+ `hostName = 'rumcsi.togadesk.togatech.com'`, `redirectTo = NULL` (id 253 — the id is
72
+ auto-assigned and carries no meaning).
73
+ - **Enforcement location is UNVERIFIED / needs tracing.** The DB row and the behavior are
74
+ developer-confirmed, but the code performing the check was **not** found on 2026-08-04. Greps
75
+ across `togadesk`, `library`, `togaview` and `_underscore` for `CopyrightHosts`, `Vision_Log`,
76
+ `copyright`, `unauthoriz` and `hostName` surfaced no host-authorization check. The only related
77
+ hook is `App_Framework_Index::copyrightFooter()` (`library/app/frameworkindex.php` L152-157),
78
+ which emits the copyright footer div and registers a final JS call `initializeCopyright();` —
79
+ and `initializeCopyright` is **defined nowhere in the library repo** (that is its only call
80
+ site), suggesting the check is served remotely or lives in another app/asset. Start there if you
81
+ need to trace it; do not assume anything further.
82
+ - **This check appears to be cross-app**, i.e. 1.0 apps generally (via `library`), not
83
+ togadesk-specific — it is documented here because that is where it was discovered. If it is later
84
+ confirmed framework-wide it may belong in a library/framework-level doc; flag that move rather
85
+ than doing it silently.
62
86
  - **Register the host** in the `getRestrictedClient()` switch (and add a `CLIENT_*` constant if the
63
87
  client is new). Verified 2026-08-04: `rumcsi.togadesk.togatech.com` is **already a case**, so the
64
88
  RUMCSI AWS DNS record needs no code change.
@@ -105,3 +129,7 @@ The app code is the easy part. What actually bites:
105
129
 
106
130
  - 2026-08-04 — Documented from a read-only review (TRUE-80139) of the RUMCSI branded-URL cutover;
107
131
  recorded the add-a-hostname checklist and the cross-tenant login hole. No code changed. (mhammontree)
132
+ - 2026-08-04 — Added the missing **required first step**: a new hostname must be registered in
133
+ `Vision_Log.CopyrightHosts` or the app shows an unauthorized-use screen. Row inserted for
134
+ `rumcsi.togadesk.togatech.com`. Enforcement code not located — marked UNVERIFIED with the
135
+ `copyrightFooter()` / `initializeCopyright()` lead. (mhammontree)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toga-ai",
3
- "version": "1.0.513",
3
+ "version": "1.0.514",
4
4
  "description": "TOGA Technology Team Claude Knowledge System — shared AI coding harness with skills, knowledge base CLI, and project installer for Claude Code.",
5
5
  "keywords": [
6
6
  "claude",