Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ One bundle serves both backends. The extension decides when it starts, first mat
| 4 | Install type: an **unpacked** install (`chrome.management.getSelf().installType === 'development'`) is TEST, any other install is PROD | Needs no extra permission; background service worker only |
| 5 | Default: PROD | Same as the SDK |

**Tier stamp.** The stamp is the default tier of a store install, so the TEST store item ("UDA TEST") and the PROD item run the same code and differ only in this default. A stamp `TEST` **locks** the extension to TEST: the options page hides the PROD choice, and a PROD request from the options override or from a host page is ignored (the worker and the page side both check). A stamp `PROD` accepts the overrides as before. Without a stamp nothing changes: an unpacked development build (the `test-current` zip has no stamp) is TEST, anything else is PROD. A stamped zip that is loaded unpacked follows its stamp (a PROD-stamped zip gives PROD), so the file you unpack declares its tier. The stamp holds no secret and no URL; the URLs still come from the build settings. The `source` reported by the options page and by `UDASdkReady` is `stamp` when the stamp decided.
**Tier stamp.** The stamp is the default tier of a store install, so the TEST store item ("UDA TEST") and the PROD item ("Universal Digital Assistant by Nistapp (UDAN)") run the same code and differ only in this default. A stamp `TEST` **locks** the extension to TEST: the options page hides the PROD choice, and a PROD request from the options override or from a host page is ignored (the worker and the page side both check). A stamp `PROD` accepts the overrides as before. Without a stamp nothing changes: an unpacked development build (the `test-current` zip has no stamp) is TEST, anything else is PROD. A stamped zip that is loaded unpacked follows its stamp (a PROD-stamped zip gives PROD), so the file you unpack declares its tier. The stamp holds no secret and no URL; the URLs still come from the build settings. The `source` reported by the options page and by `UDASdkReady` is `stamp` when the stamp decided.

The URLs for the chosen environment come, per key, from the page (`apiBaseUrl`, `tokenUrl`, `llmUrl`, `keycloakUrl`), then from the build settings above, then from the SDK's own defaults. A key the page set is never overwritten. When the environment (or a backend, realm or client setting) changes while the panel is open, the panel drops the stored session of the old backend, asks the worker for the session again and runs the search again; no page reload is needed. This is `AuthContext` listening to `UDAConfigUpdated`. The Client never calls `authManager.init` (sign-in runs in the worker), so there is nothing else to re-run.

Expand Down Expand Up @@ -172,7 +172,7 @@ Branch from `dev` and open a PR into `dev`; the PR title must be a [Conventional

- Zip: `udan-extension-<X.Y.Z.N>.zip`, plus `SHA256SUMS` and `build-info.json` (commit, branch, run, attempt, config hash, SDK version and integrity, names of the env keys that were set). Same commit, run number, attempt and build configuration give the same bytes.
- Version: CI stamps the built manifest with `version = X.Y.Z.<run number>` and `version_name = "X.Y.Z (<short commit>) run <run number>.<attempt> cfg <config hash>"`. X.Y.Z comes from `package.json` (Release Please owns it); the run number makes each build higher than the last. `version_name` is the build identity: a re-run of the same CI run (new attempt, e.g. after fixing an Actions variable) or any changed build setting changes it, while `version` stays. The config hash is 8 hex of a sha256 over the build settings the bundle inlines (`node scripts/build-env.js production --hash`); the values are not recoverable from it. The source manifests only hold the base version, for local builds.
- Store zips: the same run also writes the two Chrome Web Store zips, `udan-extension-<X.Y.Z.N>-store-test.zip` (for the unlisted TEST item "UDA TEST") and `udan-extension-<X.Y.Z.N>-store-prod.zip` (for the PROD item), each with its line in `SHA256SUMS`. See "Store zips" below.
- Store zips: the same run also writes the two Chrome Web Store zips, `udan-extension-<X.Y.Z.N>-store-test.zip` (for the unlisted TEST item "UDA TEST") and `udan-extension-<X.Y.Z.N>-store-prod.zip` (for the PROD item, "Universal Digital Assistant by Nistapp (UDAN)"), each with its line in `SHA256SUMS`. See "Store zips" below.
- Retention: artifact `client-zip`, 90 days for pushes to `dev`, 14 days for PRs. The run summary shows the version, SHA256 and SDK version.
- Build settings in CI come from GitHub Actions **variables** (`BASE_PROD_URL`, `TOKEN_TEST_URL`, ..., `KEYCLOAK_PUBLIC_CLIENT_ID`, `KEYCLOAK_IDP_HINT`: `scripts/ci/generate-env.sh --print-names`), never from secrets. They are set once at the organization level and shared with the SDK repo, which uses the same names.

Expand Down Expand Up @@ -204,7 +204,7 @@ Release Please no longer touches the manifests: CI owns the extension version. A
|---|---|---|---|
| Used for | `Deploy to TEST` prereleases, unpacked testing | the unlisted TEST store item | the PROD store item |
| Manifest `key` | kept (pins the dev/TEST id) | **removed** (the store fixes the item id) | **removed** |
| Manifest `name` | unchanged | `UDA TEST` | unchanged |
| Manifest `name` | unchanged | `UDA TEST` | unchanged (`Universal Digital Assistant by Nistapp (UDAN)` from `public/manifest.json`) |
| `tier.json` | none (unpacked = TEST, as before) | `{"tier":"TEST"}` | `{"tier":"PROD"}` |
| Icons | `logos/nist-logo-*.png` | TEST badge from `store/test-icons/` | unchanged |

Expand Down
4 changes: 4 additions & 0 deletions docs/store-listing-draft.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

Draft only. The Chrome Web Store text is the owner's to submit; check it against the README section "Privacy: what the extension stores" first.

**Title (PROD item).** Universal Digital Assistant by Nistapp (UDAN)

The title is the manifest `name` of the PROD store zip (45 characters; the documented manifest limit is 75). It is the product name, not a beta label: do not add Beta or Alpha to the listing title or text. The TEST item keeps the name "UDA TEST".

**Single purpose.** Record, save and replay step-by-step guides on a web page (Universal Digital Assistant Network).

**Data the extension handles**
Expand Down
2 changes: 1 addition & 1 deletion public/manifest-firefox.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"manifest_version": 3,
"name": "Universal Digital Assistant (UDA) Beta",
"name": "Universal Digital Assistant by Nistapp (UDAN)",
"version": "1.1.0",
"content_scripts": [
{
Expand Down
2 changes: 1 addition & 1 deletion public/manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"manifest_version": 3,
"name": "Universal Digital Assistant (UDA) Beta",
"name": "Universal Digital Assistant by Nistapp (UDAN)",
"version": "1.1.0",
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/HrhD5R5x/MgAVFeM9SJelrhbDUuu52lX2TgP2mdsCgeYZCfNbj7ymCrQrydbxKZpC9Lh/AtyqlFtmXgHGfUvxpXbH/JO/vMqNQImDIIej7gdJq4dBunjbMxpGi9L7qB+3aVBAXI+rlxqToaFoTl6s2Xj6prrIlRBh160mWyARtz0yT20jzrEqITq9cydtyUGskFjquVblFwRHxWgfkiQDcq8G7jU212zyFm9z4knnNNXOIUUVZ99+hU3rlMzmgssImJhgG5xGIUEl7TPa86OVpN3RLE+iXC/pf/EEWwYQoHT7qftoKpq1LC0PJKkfzKxb2iadVxwTBDZyLJqt8WHwIDAQAB",
"content_scripts": [
Expand Down
Loading