@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.
Files changed (2) hide show
  1. package/CHANGELOG.md +87 -2
  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.5.6",
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/agent-runtime": "^0.4.12",
247
- "@jini-ai/core": "^0.4.9",
248
- "@jini-ai/platform": "^0.5.10",
249
- "@jini-ai/integrations": "^0.4.3",
250
- "@jini-ai/agentic": "^0.4.5"
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.4.9"
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.5.3",
271
- "@jini-ai/agentic": "^0.4.4",
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",