@jini-ai/ui 0.5.6 → 0.6.10
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.
- package/CHANGELOG.md +87 -2
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,92 @@
|
|
|
1
1
|
# @jini-ai/ui
|
|
2
2
|
|
|
3
|
+
## 0.6.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 72ea04d: Folded `@jini-ai/renderers-react` into `@jini-ai/ui` as an independently-importable, tree-shakeable
|
|
8
|
+
`./renderers` subpath, and retired the package.
|
|
9
|
+
|
|
10
|
+
Real (non-comment) imports of `@jini-ai/renderers-react` anywhere in the repo were exactly 3 files,
|
|
11
|
+
2 symbols, all inside `@jini-ai/ui`'s own `features/html-viewer` — `openSandboxedPreviewInNewTab`
|
|
12
|
+
and `useSandboxBridge`. `@jini-ai/ui` was already the package's only real consumer, so a standalone
|
|
13
|
+
package bought nothing, the same reasoning that folded `@jini-ai/ui-core` into `./core` and
|
|
14
|
+
`@jini-ai/composio` into `@jini-ai/admin`. The whole `src/**` tree (registry, renderers, srcDoc
|
|
15
|
+
host, annotation-canvas, preview-modal-shell, i18n) moves to `packages/ui/src/renderers/` as one
|
|
16
|
+
`git mv`, unchanged in shape; `html-viewer`'s two consumers switch from the package-qualified
|
|
17
|
+
import to a relative one, since they're now in the same package.
|
|
18
|
+
|
|
19
|
+
**The `@jini-ai/renderers-react → @jini-ai/chat` dependency was dropped first, before the move,
|
|
20
|
+
not after.** `registry.ts` imported `ArtifactManifest`/`inferLegacyManifest` from `@jini-ai/chat`,
|
|
21
|
+
and `types.ts` re-exported five manifest types from there. `@jini-ai/chat` already depends on
|
|
22
|
+
`@jini-ai/ui`, so folding renderers-react into `ui` unchanged would have created a real `ui ↔ chat`
|
|
23
|
+
package cycle. The five manifest types (`ArtifactManifest`, `ArtifactKind`, `ArtifactRendererId`,
|
|
24
|
+
`ArtifactExportKind`, `ArtifactStatus`) are now defined locally in `types.ts`, copied verbatim from
|
|
25
|
+
`@jini-ai/chat`'s `src/core/util/types.ts` — a small duplicated-type cost, accepted because a
|
|
26
|
+
renderer package must not depend on a chat package.
|
|
27
|
+
|
|
28
|
+
**`resolveArtifactManifest` no longer infers a legacy manifest from a file's name/extension** — a
|
|
29
|
+
real, disclosed API behavior change. It now returns `file.manifest ?? null`. Manifest inference
|
|
30
|
+
(guessing kind/renderer from `.md`/`.html`/`.svg`/`.tsx`, etc.) is a caller concern that depends on
|
|
31
|
+
a product's own naming conventions, not something a generic renderer registry should do on a
|
|
32
|
+
caller's behalf; a caller that still wants that inference should resolve a manifest for the file
|
|
33
|
+
itself (see `@jini-ai/chat`'s `inferLegacyManifest`) before handing it to this registry. Verified
|
|
34
|
+
zero external callers of `RendererRegistry`/`resolveArtifactManifest`/`createDefaultRendererRegistry`
|
|
35
|
+
anywhere in Jini or Tovu before making this change — `@jini-ai/chat`'s own `RendererRegistry` is an
|
|
36
|
+
unrelated, locally-defined class in `artifact-types.ts`, and `@jini-ai/artifacts`' own
|
|
37
|
+
`resolveArtifactManifest` is an unrelated 3-argument function; both are same-name coincidences, not
|
|
38
|
+
real dependents. The four bundled renderers (`HtmlRenderer`, `MarkdownRenderer`, `SvgRenderer`,
|
|
39
|
+
`ReactComponentRenderer`) gate `canRender` on a resolvable manifest before falling back to any
|
|
40
|
+
`file.kind`/extension heuristic of their own, so this ripples into every test that exercised
|
|
41
|
+
default-registry routing via a bare file name with no explicit `manifest` — all updated to attach
|
|
42
|
+
one, with the extension-inference-specific assertions flipped to assert the removed behavior no
|
|
43
|
+
longer fires. No test was weakened or deleted: every changed assertion now tests the new,
|
|
44
|
+
documented contract, or restores a manifest to keep testing what it always meant to test.
|
|
45
|
+
|
|
46
|
+
**`@jini-ai/renderers-react` is retired, not versioned forward.** It was published (0.1.2), and
|
|
47
|
+
`packages/renderers-react` is deleted from this workspace. Deleting the source does not unpublish
|
|
48
|
+
anything, so whoever runs the next release should follow up with:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
npm deprecate @jini-ai/renderers-react "Merged into @jini-ai/ui; import from '@jini-ai/ui/renderers' instead."
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`@jini-ai/chat`'s dead `@jini-ai/renderers-react` dependency (declared, never imported — its own
|
|
55
|
+
`react/artifact-types.ts` defines a local placeholder registry instead, per its
|
|
56
|
+
`TODO(renderers-react)` header, left untouched here as out of scope) is removed from its
|
|
57
|
+
`package.json`, hence the accompanying patch bump.
|
|
58
|
+
|
|
59
|
+
- 4082999: Folded `@jini-ai/ui-core` into `@jini-ai/ui` as an independently-importable `./core` subpath.
|
|
60
|
+
|
|
61
|
+
`ui-core` was never a standalone concern — it was always the framework-free half (types, decision
|
|
62
|
+
rules, catalogs, host port contracts; no React, no DOM) of `@jini-ai/ui`'s own features, published
|
|
63
|
+
separately only because that pairing was undiscoverable without reading both trees side by side.
|
|
64
|
+
All 13 `ui-core` features move to their same-named `@jini-ai/ui` feature directory, alongside the
|
|
65
|
+
React half they were always paired with; `@jini-ai/ui/core` (`src/core.ts`) is the new entry point
|
|
66
|
+
that re-exports exactly what `@jini-ai/ui-core`'s own root barrel did. `react`/`react-dom` move
|
|
67
|
+
from required to optional peer dependencies (`peerDependenciesMeta`, matching `@jini-ai/admin`'s
|
|
68
|
+
existing `./core`/`./browser` split) so `./core` stays importable without installing React. The
|
|
69
|
+
no-DOM guard `ui-core`'s own `vitest.config.ts` provided by never configuring a `jsdom` environment
|
|
70
|
+
is now enforced by `environmentMatchGlobs` over the (unchanged) centralized `src/__tests__/`
|
|
71
|
+
subtree that used to be `ui-core`'s whole test suite, so a DOM-dependent test landing there still
|
|
72
|
+
fails loudly instead of silently inheriting this package's `jsdom` default.
|
|
73
|
+
|
|
74
|
+
**`@jini-ai/ui-core` is retired, not versioned forward.** `packages/ui-core` is deleted from this
|
|
75
|
+
workspace; nothing else in it depended on the package name directly (only on `@jini-ai/ui`, which
|
|
76
|
+
already re-exported everything ui-core had). It had no confirmed external consumers, so a
|
|
77
|
+
deprecation-stub package was judged not worth the ongoing maintenance of keeping a zombie package
|
|
78
|
+
alive and published indefinitely for a name nothing currently needs. It was still published
|
|
79
|
+
(`0.1.2`, `publishConfig.access: public`), so it is not silently orphaned: whoever runs the next
|
|
80
|
+
release should follow up with `npm deprecate @jini-ai/ui-core "Merged into @jini-ai/ui; import from
|
|
81
|
+
'@jini-ai/ui/core' instead."` against the npm registry.
|
|
82
|
+
|
|
83
|
+
- 82ed2d3: Remove private fetch-query shims and point deprecated public type re-exports directly at core. Memory wired hooks require MemoryPortsProvider; deprecated REST/demo singletons remain explicit compatibility bindings pending a breaking-release removal.
|
|
84
|
+
- ea8d883: Remove obsolete fetch-query build shims and replace prose checks with runtime and type contract coverage.
|
|
85
|
+
- Updated dependencies [22f0619]
|
|
86
|
+
- Updated dependencies [82ed2d3]
|
|
87
|
+
- Updated dependencies [5a3de86]
|
|
88
|
+
- @jini-ai/core@0.6.10
|
|
89
|
+
|
|
3
90
|
## 0.5.6 — 2026-10-22
|
|
4
91
|
|
|
5
92
|
- 2026-10-22: MCP-UI question cards follow dark hosts, optional useCachedLoader fetch, trust options, html-editor fallbacks removed, coverage.
|
|
@@ -81,7 +168,6 @@
|
|
|
81
168
|
- Adopt shared kernel contracts and preserve the module rationale in neutral documentation.
|
|
82
169
|
- BREAKING: replace package-local clock contracts with core Clock.nowMs().
|
|
83
170
|
|
|
84
|
-
|
|
85
171
|
### UI parity fixes
|
|
86
172
|
|
|
87
173
|
- Keep replacement writes successful when an older read rejects, including their freshness timestamp.
|
|
@@ -122,7 +208,6 @@
|
|
|
122
208
|
resolution hints move to the second object, including the renderer matching port.
|
|
123
209
|
- Canvas chrome attributes change to `data-jini-*`; hosts selecting the old attributes must update.
|
|
124
210
|
|
|
125
|
-
|
|
126
211
|
- Add generic admin widgets with opt-in `@jini-ai/ui/admin-widgets.css`, using the existing
|
|
127
212
|
`--jini-*` tokens with standalone fallbacks. `TabBar` joins the existing `tab-strip` feature
|
|
128
213
|
and shares its tablist shell; existing `TabStrip` exports and behavior remain available.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jini-ai/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.10",
|
|
4
4
|
"description": "Generic, product-neutral React UI primitives and feature domains. Framework-free types, decision rules, catalogs, and host port contracts live behind ./core (no React, no DOM). The Excalidraw and Lexical editors live behind ./sketch-editor and ./lexical-rich-text-editor; the GrapesJS-backed inline HTML editor lives behind ./html-editor.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -243,14 +243,14 @@
|
|
|
243
243
|
"shiki": "^1.24.4",
|
|
244
244
|
"tailwind-merge": "^2.6.0",
|
|
245
245
|
"zod": "^3.25.76",
|
|
246
|
-
"@jini-ai/
|
|
247
|
-
"@jini-ai/
|
|
248
|
-
"@jini-ai/
|
|
249
|
-
"@jini-ai/
|
|
250
|
-
"@jini-ai/
|
|
246
|
+
"@jini-ai/integrations": "^0.6.10",
|
|
247
|
+
"@jini-ai/platform": "^0.6.10",
|
|
248
|
+
"@jini-ai/core": "^0.6.10",
|
|
249
|
+
"@jini-ai/agentic": "^0.6.10",
|
|
250
|
+
"@jini-ai/agent-runtime": "^0.6.10"
|
|
251
251
|
},
|
|
252
252
|
"dependencies": {
|
|
253
|
-
"@jini-ai/core": "^0.
|
|
253
|
+
"@jini-ai/core": "^0.6.10"
|
|
254
254
|
},
|
|
255
255
|
"peerDependencies": {
|
|
256
256
|
"@tanstack/react-query": "^5.0.0",
|
|
@@ -267,8 +267,8 @@
|
|
|
267
267
|
"lexical": "0.36.2",
|
|
268
268
|
"react": "^18.3.0 || ^19.0.0",
|
|
269
269
|
"react-dom": "^18.3.0 || ^19.0.0",
|
|
270
|
-
"@jini-ai/platform": "^0.
|
|
271
|
-
"@jini-ai/agentic": "^0.
|
|
270
|
+
"@jini-ai/platform": "^0.6.10",
|
|
271
|
+
"@jini-ai/agentic": "^0.6.10",
|
|
272
272
|
"class-variance-authority": "^0.7.1",
|
|
273
273
|
"clsx": "^2.1.1",
|
|
274
274
|
"micromark": "^4.0.0",
|