- TRY-IT: "Extensions (qbits)": what happens when an extension is installed, absent, too old or unknown; the noun table (esb, collab and the generated nouns); running qbit-collaboration's demo server on 8098 beside the sample server. - packages/core/src/extensions/README.md: registry.has()/require() and joinPresence for the TUI. - docs/extensions.md: every merged extension document with its version and repository commit. - server-findings #11: an emptied presence scope is sent without `viewers`. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2.4 KiB
Extension documents in the client
The client document (packages/ui-api-client/openapi/qqq-v1.json) is the sample server's live
document for core (QQQ 4.1.0-SNAPSHOT, develop 6ac64fc66, UI API 1.8.0, which already carries esb)
merged with the extension document each repository commits at src/main/resources/openapi/qqq-v1/.
Rebuild it with the sample server running:
npm run spec:merge-extensions && npm run generate # writes openapi/extension-sources.json too
Versions merged on 2026-10-31 (machine-readable copy: packages/ui-api-client/openapi/extension-sources.json):
| Extension | Version | Prefix | Operations | Repository at | Minimum the client needs |
|---|---|---|---|---|---|
| esb | 1.1.0 | /esb |
5 | qqq develop 6ac64fc66 (qqq-esb) |
1.1.0 (operationIds, UI-API-CHANGELOG) |
| health | 1.1.0 | /health |
4 | qqq develop 6ac64fc66 (qqq-middleware-javalin) |
1.1.0 (same) |
| alerts | 1.2.0 | /alerts |
6 | qbit-alerts develop a3fc6ac |
|
| assistant | 1.6.0 | /assistant |
16 | qbit-assistant develop bcf173f |
|
| collaboration | 1.1.0 | /qbit/collaboration |
45 | qbit-collaboration develop 03407ae |
1.1.0 (presence schemas, error contract) |
| data-analysis | 1.5.0 | /qbit/data-analysis |
21 | qbit-data-analysis develop 368d2c0 |
|
| db-performance | 1.0.0 | /qbit/db-performance |
4 | qbit-db-performance develop 4fd2c30 |
|
| edi | 1.1.0 | /qbit/edi |
4 | qbit-edi develop 75a4e6b |
|
| qa-capture | 1.0.0 | /qbit/qa-capture |
2 | qbit-qa-capture develop 1aee6cb |
|
| quick-search | 1.1.0 | /qbit/quick-search |
2 | qbit-quick-search develop bd50e1f |
|
| release-notes | 1.0.0 | /qbit/release-notes |
3 | qbit-release-notes develop 8fed18e |
|
| secured-data | 1.1.0 | /qbit/secured-data |
3 | qbit-secured-data develop 7b302ed |
|
| sql-workbench | 1.1.0 | /sql-workbench |
21 | qbit-sql-workbench develop a182076 |
202 operations in all, 136 from extensions. No extension document conflicted with core or another
(identical shared schemas such as BasicErrorResponseV1). There is no qbit-middleware-health: the
health extension lives in qqq's qqq-middleware-javalin. Other qbits in the workspace (authentik,
jobs, help, middleware-mcp, ...) register no UI API extension.
Minimums are only set where an extension's own docs state one; the rest accept any version the
server lists. Each extension's minimum and realtime channels live in
packages/core/src/extensions/registry.ts (FACTS).