Releases: netresearch/t3x-nr-browser-ai
Release list
v0.6.0
Changes
- Merge pull request #38 from netresearch/release/v0.6.0
- Merge pull request #37 from netresearch/feat/prose-answer
- Merge pull request #34 from netresearch/chore/accessibility-gate
Installation
composer require netresearch/nr-browser-aiPublication status
- TER: extensions.typo3.org/extension/nr_browser_ai — 0.6.0 verified
- Packagist: packagist.org/packages/netresearch/nr-browser-ai — 0.6.0 verified
- Documentation: render pending — will appear at docs.typo3.org/p/netresearch/nr-browser-ai/0.6/en-us/
Security
All release artifacts are signed with Sigstore keyless signing.
Verify signatures
cosign verify-blob \
--bundle nr_browser_ai-0.6.0.zip.sigstore.json \
--certificate-identity-regexp "https://github.com/netresearch/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
nr_browser_ai-0.6.0.zipVerify checksums
sha256sum -c checksums.txtSoftware Bill of Materials (SBOM)
SBOMs are provided in both SPDX and CycloneDX formats for supply chain transparency.
v0.5.0
Changes
- Merge pull request #35 from netresearch/release/v0.5.0
- Merge pull request #32 from netresearch/feat/form-assistant
- Merge pull request #33 from netresearch/fix/demo-cta-contrast
- Merge pull request #31 from netresearch/feat/on-device-product-page
- Merge pull request #30 from netresearch/chore/adopt-renovate
- Merge pull request #27 from netresearch/chore/sync-template-checks-r2
- Merge pull request #25 from netresearch/chore/dedupe-shared-dev-deps
- Merge pull request #26 from netresearch/chore/sync-template-checks-gate
- Merge pull request #24 from netresearch/docs/commit-signing-policy
Installation
composer require netresearch/nr-browser-aiPublication status
- TER: extensions.typo3.org/extension/nr_browser_ai — 0.5.0 verified
- Packagist: packagist.org/packages/netresearch/nr-browser-ai — 0.5.0 verified
- Documentation: render pending — will appear at docs.typo3.org/p/netresearch/nr-browser-ai/0.5/en-us/
Security
All release artifacts are signed with Sigstore keyless signing.
Verify signatures
cosign verify-blob \
--bundle nr_browser_ai-0.5.0.zip.sigstore.json \
--certificate-identity-regexp "https://github.com/netresearch/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
nr_browser_ai-0.5.0.zipVerify checksums
sha256sum -c checksums.txtSoftware Bill of Materials (SBOM)
SBOMs are provided in both SPDX and CycloneDX formats for supply chain transparency.
v0.4.0
Two things a visitor could not do before: check what the assistant sends before using it, and get anywhere useful when the page does not carry the answer.
See what would be sent
A new per-content-element switch, Show configuration, renders a collapsed block naming the system prompt, the editor's supplemental instruction, the page area used as the source and the context limit — plus a sentence for the two things it cannot list verbatim, the page text itself and the automatic answer-language instruction.
The values come from the same normalized settings the assistant uses, not a second copy, so the disclosure cannot drift from the behaviour it describes. It sits outside the block that stays hidden until the browser reports a usable model: what would be sent is worth reading precisely in a browser that cannot run the assistant, which is what most visitors have.
An answer for the questions the page cannot answer
Until now an unanswerable question ended in a refusal, which is correct and useless — the visitor came with a question and left with nothing, while the site usually does have somewhere to send them.
notFoundMode set to Content element shows an editor-selected element in place of the model's refusal; notFoundContent picks it under the same rules as fallbackContent (same page, enabled, no cycles). Put a link to the search, a contact address, a related page — whatever actually helps.
Only the model knows whether the page answered, so it is asked to signal an unanswerable question with a marker, and the interface swaps in the prepared element. Two properties make that safe:
- A model that ignores the marker answers as before. The failure mode is the previous behaviour, not a broken page.
- The bare marker can never reach a visitor. The instruction is added only when the selected element actually renders, so a missing, hidden or cyclic reference leaves the prompt untouched.
The beginning of a streamed reply is withheld for as long as it could still become the marker, so the token never flashes on screen before the editor's content replaces it — and is released the instant the reply turns out to be an answer.
Upgrading
No migration, and nothing changes for an existing plugin: both settings are off by default.
Full changelog: https://github.com/netresearch/t3x-nr-browser-ai/blob/main/CHANGELOG.md
v0.3.0
A TYPO3 site assembled from site sets has no sys_template record, so the static TypoScript include this extension shipped never ran and the content element had no rendering definition — TYPO3 rendered its yellow "has no rendering definition" placeholder instead of the assistant. That is the configuration TYPO3 14 steers projects towards, and it is where this extension could not be used at all. 0.3.0 closes that, and fixes a defect it uncovered in the shipped system prompt.
Site set netresearch/browser-ai
Add it to the dependencies of your site package's set, or to the site's own config.yaml:
name: my-vendor/my-site
dependencies:
- netresearch/browser-aiTYPO3 12.4 is unaffected: the static template include is unchanged and remains the mechanism there.
Three settings, now editable per site
contextSelector, contextUsageLimit and systemPrompt are typed site settings, editable under Site Management › Sites › Settings and settable in a site's settings.yaml. The last two previously had no interface at all — they could only be reached through TypoScript constants.
Fixed: the system prompt arrived truncated
On a site loading the extension through the set, the shipped prompt reached the model as its first sentence only. The two that carry the grounding rule and the prompt-injection guard were dropped without any warning — the opposite of what the prompt exists to do.
TYPO3 hands site settings to TypoScript by serialising them into constants text, one key = value line per setting, so a value containing a newline breaks across lines and everything after the first is lost. No setting type avoids this, text included. The prompt is therefore one line now, and the setting is declared string rather than text so a multiline editing field does not invite an override that would be truncated the same way. If you override systemPrompt, keep it on one line.
Upgrading
No migration. On 13.4 and 14.3, add the set as shown above; a site still using sys_template needs no change at all.
Full changelog: https://github.com/netresearch/t3x-nr-browser-ai/blob/main/CHANGELOG.md
v0.2.0
First published release. Version 0.1.0 was declared but never released, so this covers the extension as a whole.
What it does
A frontend plugin that answers visitor questions from the content of the page they are reading. Chrome's built-in Prompt API runs the model on the visitor's device. The extension defines no chat endpoint, database table, cookie, local storage or telemetry — there is no server component to operate.
Answers are grounded in a configurable region of the current page, default main. The default system prompt tells the model to answer only from that source, to say so when an answer is absent, and to treat instructions found in page content as untrusted data.
In this release
- Two prompt layers. Administrators own the system prompt in TypoScript; editors may append a supplemental instruction per plugin without replacing it.
- Answers in the language of the question, falling back to the page language from
<html lang>. The Prompt API'sexpectedOutputscapability alone does not constrain the response, so the requirement is stated in the instruction. - Model output rendered with DOM APIs only, covering a restricted Markdown subset: emphasis, inline and fenced code, lists, headings, block quotes and thematic breaks. No markup string is assembled and no HTML is parsed. Links are limited to validated HTTP(S) URLs, in bare or Markdown syntax.
- Fallback modes
noneandcontentElementfor browsers without an on-device model. Hidden, deleted and cyclic references produce no output; access restrictions and time-based publishing continue to apply. - Context-budget handling: the page source is reduced to fit the configured usage target, and a new question is refused once that target is reached.
- Keyboard-complete lifecycle with controls that stay focusable rather than disabled, and a polite live region that announces the finished answer once instead of streaming partial output to assistive technology.
- German translations for the frontend and the backend labels.
Requirements
TYPO3 12.4, 13.4 or 14.3 on PHP 8.2 through 8.5. TYPO3 12.4 is a compatibility target and requires a maintained security-patched distribution.
The assistant itself needs Chrome 148 or newer, roughly 22 GB free storage before the model downloads, and a one-time model download started by an explicit user action. Visitors who do not meet this receive the configured fallback, which is a supported path rather than an error state.
Status
This is a proof of concept, marked beta. Its context scope is the current page and nothing else.
Live demo: https://netresearch.github.io/t3x-nr-browser-ai/
Installation
composer require netresearch/nr-browser-ai
vendor/bin/typo3 extension:setupPublication status
- TER: extensions.typo3.org/extension/nr_browser_ai
- Packagist: packagist.org/packages/netresearch/nr-browser-ai
Security
All release artifacts are signed with Sigstore keyless signing.
Verify signatures
cosign verify-blob \
--bundle nr_browser_ai-0.2.0.zip.sigstore.json \
--certificate-identity-regexp "https://github.com/netresearch/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
nr_browser_ai-0.2.0.zipVerify checksums
sha256sum -c checksums.txtSoftware Bill of Materials (SBOM)
SBOMs are provided in both SPDX and CycloneDX formats for supply chain transparency.