@jini-ai/ui 0.5.6 → 0.6.11

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 CHANGED
@@ -1,5 +1,101 @@
1
1
  # @jini-ai/ui
2
2
 
3
+ ## 0.6.11
4
+
5
+ ### Patch Changes
6
+
7
+ - Style variables no longer reference the deleted payments and charts packages.
8
+ - Updated dependencies
9
+ - Updated dependencies
10
+ - @jini-ai/core@0.6.11
11
+
12
+ ## 0.6.10
13
+
14
+ ### Patch Changes
15
+
16
+ - 72ea04d: Folded `@jini-ai/renderers-react` into `@jini-ai/ui` as an independently-importable, tree-shakeable
17
+ `./renderers` subpath, and retired the package.
18
+
19
+ Real (non-comment) imports of `@jini-ai/renderers-react` anywhere in the repo were exactly 3 files,
20
+ 2 symbols, all inside `@jini-ai/ui`'s own `features/html-viewer` — `openSandboxedPreviewInNewTab`
21
+ and `useSandboxBridge`. `@jini-ai/ui` was already the package's only real consumer, so a standalone
22
+ package bought nothing, the same reasoning that folded `@jini-ai/ui-core` into `./core` and
23
+ `@jini-ai/composio` into `@jini-ai/admin`. The whole `src/**` tree (registry, renderers, srcDoc
24
+ host, annotation-canvas, preview-modal-shell, i18n) moves to `packages/ui/src/renderers/` as one
25
+ `git mv`, unchanged in shape; `html-viewer`'s two consumers switch from the package-qualified
26
+ import to a relative one, since they're now in the same package.
27
+
28
+ **The `@jini-ai/renderers-react → @jini-ai/chat` dependency was dropped first, before the move,
29
+ not after.** `registry.ts` imported `ArtifactManifest`/`inferLegacyManifest` from `@jini-ai/chat`,
30
+ and `types.ts` re-exported five manifest types from there. `@jini-ai/chat` already depends on
31
+ `@jini-ai/ui`, so folding renderers-react into `ui` unchanged would have created a real `ui ↔ chat`
32
+ package cycle. The five manifest types (`ArtifactManifest`, `ArtifactKind`, `ArtifactRendererId`,
33
+ `ArtifactExportKind`, `ArtifactStatus`) are now defined locally in `types.ts`, copied verbatim from
34
+ `@jini-ai/chat`'s `src/core/util/types.ts` — a small duplicated-type cost, accepted because a
35
+ renderer package must not depend on a chat package.
36
+
37
+ **`resolveArtifactManifest` no longer infers a legacy manifest from a file's name/extension** — a
38
+ real, disclosed API behavior change. It now returns `file.manifest ?? null`. Manifest inference
39
+ (guessing kind/renderer from `.md`/`.html`/`.svg`/`.tsx`, etc.) is a caller concern that depends on
40
+ a product's own naming conventions, not something a generic renderer registry should do on a
41
+ caller's behalf; a caller that still wants that inference should resolve a manifest for the file
42
+ itself (see `@jini-ai/chat`'s `inferLegacyManifest`) before handing it to this registry. Verified
43
+ zero external callers of `RendererRegistry`/`resolveArtifactManifest`/`createDefaultRendererRegistry`
44
+ anywhere in Jini or Tovu before making this change — `@jini-ai/chat`'s own `RendererRegistry` is an
45
+ unrelated, locally-defined class in `artifact-types.ts`, and `@jini-ai/artifacts`' own
46
+ `resolveArtifactManifest` is an unrelated 3-argument function; both are same-name coincidences, not
47
+ real dependents. The four bundled renderers (`HtmlRenderer`, `MarkdownRenderer`, `SvgRenderer`,
48
+ `ReactComponentRenderer`) gate `canRender` on a resolvable manifest before falling back to any
49
+ `file.kind`/extension heuristic of their own, so this ripples into every test that exercised
50
+ default-registry routing via a bare file name with no explicit `manifest` — all updated to attach
51
+ one, with the extension-inference-specific assertions flipped to assert the removed behavior no
52
+ longer fires. No test was weakened or deleted: every changed assertion now tests the new,
53
+ documented contract, or restores a manifest to keep testing what it always meant to test.
54
+
55
+ **`@jini-ai/renderers-react` is retired, not versioned forward.** It was published (0.1.2), and
56
+ `packages/renderers-react` is deleted from this workspace. Deleting the source does not unpublish
57
+ anything, so whoever runs the next release should follow up with:
58
+
59
+ ```
60
+ npm deprecate @jini-ai/renderers-react "Merged into @jini-ai/ui; import from '@jini-ai/ui/renderers' instead."
61
+ ```
62
+
63
+ `@jini-ai/chat`'s dead `@jini-ai/renderers-react` dependency (declared, never imported — its own
64
+ `react/artifact-types.ts` defines a local placeholder registry instead, per its
65
+ `TODO(renderers-react)` header, left untouched here as out of scope) is removed from its
66
+ `package.json`, hence the accompanying patch bump.
67
+
68
+ - 4082999: Folded `@jini-ai/ui-core` into `@jini-ai/ui` as an independently-importable `./core` subpath.
69
+
70
+ `ui-core` was never a standalone concern — it was always the framework-free half (types, decision
71
+ rules, catalogs, host port contracts; no React, no DOM) of `@jini-ai/ui`'s own features, published
72
+ separately only because that pairing was undiscoverable without reading both trees side by side.
73
+ All 13 `ui-core` features move to their same-named `@jini-ai/ui` feature directory, alongside the
74
+ React half they were always paired with; `@jini-ai/ui/core` (`src/core.ts`) is the new entry point
75
+ that re-exports exactly what `@jini-ai/ui-core`'s own root barrel did. `react`/`react-dom` move
76
+ from required to optional peer dependencies (`peerDependenciesMeta`, matching `@jini-ai/admin`'s
77
+ existing `./core`/`./browser` split) so `./core` stays importable without installing React. The
78
+ no-DOM guard `ui-core`'s own `vitest.config.ts` provided by never configuring a `jsdom` environment
79
+ is now enforced by `environmentMatchGlobs` over the (unchanged) centralized `src/__tests__/`
80
+ subtree that used to be `ui-core`'s whole test suite, so a DOM-dependent test landing there still
81
+ fails loudly instead of silently inheriting this package's `jsdom` default.
82
+
83
+ **`@jini-ai/ui-core` is retired, not versioned forward.** `packages/ui-core` is deleted from this
84
+ workspace; nothing else in it depended on the package name directly (only on `@jini-ai/ui`, which
85
+ already re-exported everything ui-core had). It had no confirmed external consumers, so a
86
+ deprecation-stub package was judged not worth the ongoing maintenance of keeping a zombie package
87
+ alive and published indefinitely for a name nothing currently needs. It was still published
88
+ (`0.1.2`, `publishConfig.access: public`), so it is not silently orphaned: whoever runs the next
89
+ release should follow up with `npm deprecate @jini-ai/ui-core "Merged into @jini-ai/ui; import from
90
+ '@jini-ai/ui/core' instead."` against the npm registry.
91
+
92
+ - 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.
93
+ - ea8d883: Remove obsolete fetch-query build shims and replace prose checks with runtime and type contract coverage.
94
+ - Updated dependencies [22f0619]
95
+ - Updated dependencies [82ed2d3]
96
+ - Updated dependencies [5a3de86]
97
+ - @jini-ai/core@0.6.10
98
+
3
99
  ## 0.5.6 — 2026-10-22
4
100
 
5
101
  - 2026-10-22: MCP-UI question cards follow dark hosts, optional useCachedLoader fetch, trust options, html-editor fallbacks removed, coverage.
@@ -81,7 +177,6 @@
81
177
  - Adopt shared kernel contracts and preserve the module rationale in neutral documentation.
82
178
  - BREAKING: replace package-local clock contracts with core Clock.nowMs().
83
179
 
84
-
85
180
  ### UI parity fixes
86
181
 
87
182
  - Keep replacement writes successful when an older read rejects, including their freshness timestamp.
@@ -122,7 +217,6 @@
122
217
  resolution hints move to the second object, including the renderer matching port.
123
218
  - Canvas chrome attributes change to `data-jini-*`; hosts selecting the old attributes must update.
124
219
 
125
-
126
220
  - Add generic admin widgets with opt-in `@jini-ai/ui/admin-widgets.css`, using the existing
127
221
  `--jini-*` tokens with standalone fallbacks. `TabBar` joins the existing `tab-strip` feature
128
222
  and shares its tablist shell; existing `TabStrip` exports and behavior remain available.
@@ -27,8 +27,8 @@
27
27
  --jini-warning: var(--jini-theme-dark-warning, #ebc36b);
28
28
  }
29
29
 
30
- /* Default chart palette — what `--jini-chart-1`..`-6` fall back to when a host sets none (see
31
- the private charts-recharts/src/chart-tokens.ts). Separate `-default-` names, so a host's own
30
+ /* Default chart palette — what `--jini-chart-1`..`-6` fall back to when a host sets none.
31
+ Separate `-default-` names, so a host's own
32
32
  `--jini-chart-N` always wins regardless of cascade order. Series 1 is the warm Claude orange, not
33
33
  the near-black `--jini-primary` ("Claude orange should be the default color", owner, 2026-10-05);
34
34
  2-6 are fixed-order categorical hues at matched lightness. Each mode was run through the dataviz
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.11",
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/agentic": "^0.6.11",
247
+ "@jini-ai/agent-runtime": "^0.6.11",
248
+ "@jini-ai/platform": "^0.6.11",
249
+ "@jini-ai/core": "^0.6.11",
250
+ "@jini-ai/integrations": "^0.6.11"
251
251
  },
252
252
  "dependencies": {
253
- "@jini-ai/core": "^0.4.9"
253
+ "@jini-ai/core": "^0.6.11"
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",