@ai-matrx/alchemy 0.1.1 → 0.1.3

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,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.3 — 2026-09-12
4
+
5
+ Refreshes the distribution with the compact Alchemy format palette, its
6
+ distinct action glyphs, native popover activation, and the design-system
7
+ 0.18.10 table and narrow-viewport Select corrections.
8
+
9
+ ### Consumer action
10
+
11
+ Update to 0.1.3. No host configuration changes are required.
12
+
13
+ ## 0.1.2
14
+
15
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
16
+ `git diff npm/alchemy/v0.1.1..npm/alchemy/v0.1.2 -- apps/shared/alchemy`).
17
+ No source changes intended and no consumer action required.
18
+
3
19
  ## 0.1.1 — 2026-09-12
4
20
 
5
21
  Proves the package's npm trusted-publisher path with the canonical GitHub Actions release workflow. Runtime behavior is unchanged from 0.1.0.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @ai-matrx/alchemy
2
2
 
3
- Alchemy is Matrx’s content-to-AI toolkit. **Alchemy Menu** is its small, reusable copy, preparation and export control. This distribution ships the canonical core, React controls, Matrx service adapter, CSS and SVG; it contains no parallel implementation.
3
+ Alchemy is Matrx’s content-to-AI toolkit. **Alchemy Menu** is its small, reusable copy, preparation and export control. This distribution ships the shared core, React controls, Matrx service adapter, CSS and SVG; it contains no parallel implementation.
4
4
 
5
5
  ## One menu, ready to use
6
6
 
@@ -28,11 +28,23 @@ The transparent icon opens ordinary copy, Markdown, formatted HTML with plain-te
28
28
 
29
29
  Preparation supports editable drafts, detail presets, structural reductions, omissions and undo. Supplying table rows adds relevant spreadsheet formats; registered exporters and page actions retain the same captured-source boundary. An absent AI provider leaves manual preparation available without showing dead AI controls.
30
30
 
31
+ ## Extend the shared menu
32
+
33
+ The Copy/Download selector uses one format palette. Additional formats use the same tiles; quick copy, preparation, alternate context, and page operations use shared groups. Supply capabilities and descriptors rather than rendering another menu.
34
+
35
+ - Use `human`, `json`, and `agent` getters for different representations of the same content.
36
+ - Use `export.sheetRows` and `export.sheetColumns` for a table; spreadsheet formats become available automatically.
37
+ - Use `export.items[].build` for a custom file's bytes, MIME type, extension, and optional filename. It appears in Download. An `onSelect` callback takes precedence over `build` and remains a page action.
38
+ - Use `aiVariants` for alternate sources, `aiCustom` for source settings, and `groomer` for per-section detail. They enter the same preparation workspace.
39
+ - Use the lower-level `ContentTransferMenu` and its capability provider for format adapters and projected page actions. `sourceFormats={false}` suppresses source formats in a file/action-only control; an action's `placement: "download"` places a genuine download in the palette.
40
+
41
+ Labels and hints wrap within the shared geometry. Preserve stable IDs, eligibility checks, capture boundaries, and honest outcomes. Do not add per-page Copy/Download lists, bypass the shared transport, or restyle the menu for a particular integration.
42
+
31
43
  ## Integrate Matrx services once
32
44
 
33
45
  `MatrxContentTransferProvider` from `@ai-matrx/alchemy/matrx/react` accepts the canonical transport, authenticated database read port, current organization getter and source application. It supplies the declared durable AI preparation job to descendant menus. The host supplies identity and its existing live-run renderer; the package owns preparation, cancellation, exact request recovery and provenance. Mount the provider at an identity boundary so changing user or organization cannot reuse another identity’s prepared run.
34
46
 
35
- For an exact mounted declared surface, use `createSurfaceTransferHandle` from `/core` and `ContentTransferSurfaceProvider` from `/react`. Bind its scope getter and mounted predicate to that instance. Never look up a same-named surface globally. Standard Matrx table row and toolbar adoption is being completed alongside initial publication. Custom tables can use the lower-level `ContentTransferMenu` source/table contract.
47
+ For an exact mounted declared surface, use `createSurfaceTransferHandle` from `/core` and `ContentTransferSurfaceProvider` from `/react`. Bind its scope getter and mounted predicate to that instance. Never look up a same-named surface globally. Standard Matrx tables include shared row and toolbar controls by default; `copy={false}` opts out. Custom tables can use the lower-level `ContentTransferMenu` source/table contract.
36
48
 
37
49
  ## Framework-neutral use
38
50
 
@@ -55,4 +67,4 @@ const artifact = serialize(createDraft(snapshot), "plain");
55
67
  | `/styles.css` | Self-contained menu and workspace styling. |
56
68
  | `/alchemy.svg` | The standalone glyph asset. |
57
69
 
58
- Initial publication is pending. Its registry installation canary requires the sibling kit, design-system and agents releases first.
70
+ The registry installation canary requires the sibling kit, design-system and agents releases first. Each distribution release copies the canonical design-system stylesheet and SVG at build time.
package/dist/styles.css CHANGED
@@ -36,6 +36,43 @@
36
36
  min-width: 18rem;
37
37
  max-width: min(24rem, calc(100vw - 2rem));
38
38
  }
39
+ .matrx-alchemy-palette {
40
+ width: min(18rem, calc(100vw - 2rem));
41
+ min-width: 0;
42
+ padding: 0.4375rem;
43
+ max-height: var(--radix-popover-content-available-height, 80dvh);
44
+ }
45
+ .matrx-alchemy-mode {
46
+ display: flex;
47
+ gap: 0.1875rem;
48
+ margin-bottom: 0.375rem;
49
+ padding: 0.1875rem;
50
+ border-radius: 0.5rem;
51
+ background: hsl(var(--muted, 240 5% 96%));
52
+ }
53
+ .matrx-alchemy-mode button {
54
+ flex: 1;
55
+ min-height: 2rem;
56
+ border: 0;
57
+ border-radius: 0.3125rem;
58
+ background: transparent;
59
+ color: inherit;
60
+ font: inherit;
61
+ font-size: 0.8125rem;
62
+ cursor: pointer;
63
+ }
64
+ .matrx-alchemy-mode button[aria-pressed="true"] { background: hsl(var(--background, 0 0% 100%)); box-shadow: 0 1px 2px hsl(var(--foreground, 240 10% 4%) / 0.12); }
65
+ .matrx-alchemy-palette-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.1875rem; }
66
+ .matrx-alchemy-palette-tile { display: grid; place-items: center; gap: 0.375rem; min-width: 0; min-height: 4.25rem; padding: 0.5rem 0.25rem; border: 0; border-radius: 0.375rem; background: transparent; color: inherit; font: inherit; font-size: 0.75rem; line-height: 1.2; text-align: center; overflow-wrap: anywhere; cursor: pointer; }
67
+ .matrx-alchemy-palette-glyph { width: 1.125rem; height: 1.125rem; color: hsl(var(--muted-foreground, 240 4% 46%)); flex: 0 0 auto; }
68
+ .matrx-alchemy-palette-section { display: grid; gap: 0.125rem; margin-top: 0.375rem; padding-top: 0.375rem; border-top: 1px solid hsl(var(--border, 240 6% 90%)); }
69
+ .matrx-alchemy-palette-section h3 { margin: 0.125rem 0.375rem; color: hsl(var(--muted-foreground, 240 4% 46%)); font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }
70
+ .matrx-alchemy-palette-row { display: flex; align-items: center; gap: 0.5rem; width: 100%; min-height: 2rem; padding: 0.375rem 0.5rem; border: 0; border-radius: 0.3125rem; background: transparent; color: inherit; font: inherit; font-size: 0.8125rem; line-height: 1.25; text-align: left; overflow-wrap: anywhere; cursor: pointer; }
71
+ .matrx-alchemy-palette-row > span { min-width: 0; }
72
+ .matrx-alchemy-palette-row-ai { color: hsl(var(--primary, 262 43% 51%)); }
73
+ .matrx-alchemy-palette :is(button:hover, button:focus-visible) { background: hsl(var(--accent, 240 5% 96%)); outline: none; }
74
+ .matrx-alchemy-palette :is(button:focus-visible) { box-shadow: 0 0 0 2px hsl(var(--ring, 240 5% 65%)); }
75
+ .matrx-alchemy-palette-status { margin: 0.25rem 0.375rem; color: hsl(var(--muted-foreground, 240 4% 46%)); font-size: 0.75rem; }
39
76
  .matrx-alchemy-notice,
40
77
  .matrx-alchemy-meta {
41
78
  font-size: 0.75rem;
@@ -237,39 +274,15 @@
237
274
  }
238
275
  .matrx-alchemy-menu {
239
276
  z-index: 10001;
240
- padding: 0.25rem;
241
- max-height: var(--radix-dropdown-menu-content-available-height, 80dvh);
277
+ padding: 0.4375rem;
278
+ max-height: var(--radix-popover-content-available-height, 80dvh);
242
279
  overflow: auto;
243
280
  overscroll-behavior: contain;
281
+ border-radius: 0.75rem;
244
282
  }
245
- .matrx-alchemy-menu [role="menuitem"] {
246
- display: flex;
247
- align-items: center;
248
- gap: 0.5rem;
249
- min-height: 2rem;
250
- padding: 0.375rem 0.5rem;
251
- border-radius: 0.25rem;
252
- font-size: 0.875rem;
253
- cursor: default;
254
- outline: none;
255
- user-select: none;
256
- }
257
- .matrx-alchemy-menu [role="menuitem"][data-highlighted] {
258
- background: hsl(var(--accent, 240 5% 96%));
259
- }
260
- .matrx-alchemy-menu [data-disabled] {
261
- opacity: 0.5;
262
- pointer-events: none;
263
- }
264
- .matrx-alchemy-menu [data-slot="dropdown-menu-label"] {
265
- padding: 0.375rem 0.5rem;
266
- font-size: 0.75rem;
267
- font-weight: 600;
268
- }
269
- .matrx-alchemy-menu [role="separator"] {
270
- height: 1px;
271
- margin: 0.25rem 0;
272
- background: hsl(var(--border, 240 6% 90%));
283
+ @media (pointer: coarse) {
284
+ .matrx-alchemy-palette :is(.matrx-alchemy-mode button, .matrx-alchemy-palette-row) { min-height: 2.75rem; }
285
+ .matrx-alchemy-palette-tile { min-height: 4.5rem; }
273
286
  }
274
287
  .matrx-alchemy-workspace {
275
288
  position: fixed;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-matrx/alchemy",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Matrx Alchemy: the complete Matrx copy, prepare-for-AI, and export experience, with framework-neutral core, React menu, glyph, styles and Matrx integration.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -124,8 +124,8 @@
124
124
  "*.css"
125
125
  ],
126
126
  "dependencies": {
127
- "@ai-matrx/design-system": "latest",
128
127
  "@ai-matrx/kit": "latest",
128
+ "@ai-matrx/design-system": "latest",
129
129
  "@ai-matrx/agents": "latest"
130
130
  },
131
131
  "scripts": {