@drawmotive/textgraph 0.1.0-alpha.1 → 0.2.0
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/README.md +47 -6
- package/docs/api-v1.md +2 -1
- package/docs/react.md +52 -0
- package/docs/releases.md +22 -15
- package/generated/wasm/DrawMotive.TextGraph.Bridge.runtimeconfig.json +1 -1
- package/generated/wasm/DrawMotive.TextGraph.Bridge.wasm +0 -0
- package/generated/wasm/Graphics.Core.wasm +0 -0
- package/generated/wasm/Grpc.Core.Api.wasm +0 -0
- package/generated/wasm/HarfBuzzSharp.wasm +0 -0
- package/generated/wasm/Math.Core.wasm +0 -0
- package/generated/wasm/Microsoft.AspNetCore.Components.Web.wasm +0 -0
- package/generated/wasm/Microsoft.Extensions.DependencyInjection.Abstractions.wasm +0 -0
- package/generated/wasm/Microsoft.Extensions.DependencyInjection.wasm +0 -0
- package/generated/wasm/Microsoft.Extensions.Logging.Abstractions.wasm +0 -0
- package/generated/wasm/Microsoft.Extensions.Logging.wasm +0 -0
- package/generated/wasm/Microsoft.Extensions.Options.wasm +0 -0
- package/generated/wasm/Microsoft.Extensions.Primitives.wasm +0 -0
- package/generated/wasm/Polly.Core.wasm +0 -0
- package/generated/wasm/RBush.wasm +0 -0
- package/generated/wasm/SkiaSharp.HarfBuzz.wasm +0 -0
- package/generated/wasm/SkiaSharp.wasm +0 -0
- package/generated/wasm/System.Collections.Concurrent.wasm +0 -0
- package/generated/wasm/System.Collections.Immutable.wasm +0 -0
- package/generated/wasm/System.Collections.NonGeneric.wasm +0 -0
- package/generated/wasm/System.Collections.Specialized.wasm +0 -0
- package/generated/wasm/System.Collections.wasm +0 -0
- package/generated/wasm/System.ComponentModel.Annotations.wasm +0 -0
- package/generated/wasm/System.ComponentModel.Primitives.wasm +0 -0
- package/generated/wasm/System.ComponentModel.TypeConverter.wasm +0 -0
- package/generated/wasm/System.ComponentModel.wasm +0 -0
- package/generated/wasm/System.Console.wasm +0 -0
- package/generated/wasm/System.Diagnostics.StackTrace.wasm +0 -0
- package/generated/wasm/System.Diagnostics.Tracing.wasm +0 -0
- package/generated/wasm/System.IO.Compression.Brotli.wasm +0 -0
- package/generated/wasm/System.IO.Compression.wasm +0 -0
- package/generated/wasm/System.IO.Pipelines.wasm +0 -0
- package/generated/wasm/System.Linq.Expressions.wasm +0 -0
- package/generated/wasm/System.Linq.wasm +0 -0
- package/generated/wasm/System.Memory.wasm +0 -0
- package/generated/wasm/System.Net.Http.wasm +0 -0
- package/generated/wasm/System.Net.Primitives.wasm +0 -0
- package/generated/wasm/System.Numerics.Vectors.wasm +0 -0
- package/generated/wasm/System.ObjectModel.wasm +0 -0
- package/generated/wasm/System.Private.CoreLib.wasm +0 -0
- package/generated/wasm/System.Private.Uri.wasm +0 -0
- package/generated/wasm/System.Reflection.Emit.ILGeneration.wasm +0 -0
- package/generated/wasm/System.Reflection.Emit.wasm +0 -0
- package/generated/wasm/System.Reflection.Primitives.wasm +0 -0
- package/generated/wasm/System.Runtime.InteropServices.JavaScript.wasm +0 -0
- package/generated/wasm/System.Runtime.InteropServices.wasm +0 -0
- package/generated/wasm/System.Runtime.Intrinsics.wasm +0 -0
- package/generated/wasm/System.Runtime.Loader.wasm +0 -0
- package/generated/wasm/System.Runtime.Numerics.wasm +0 -0
- package/generated/wasm/System.Runtime.Serialization.Primitives.wasm +0 -0
- package/generated/wasm/System.Runtime.wasm +0 -0
- package/generated/wasm/System.Security.Cryptography.wasm +0 -0
- package/generated/wasm/System.Text.Encoding.Extensions.wasm +0 -0
- package/generated/wasm/System.Text.Encodings.Web.wasm +0 -0
- package/generated/wasm/System.Text.Json.wasm +0 -0
- package/generated/wasm/System.Text.RegularExpressions.wasm +0 -0
- package/generated/wasm/System.Threading.Channels.wasm +0 -0
- package/generated/wasm/System.Threading.Thread.wasm +0 -0
- package/generated/wasm/System.Threading.ThreadPool.wasm +0 -0
- package/generated/wasm/System.Threading.wasm +0 -0
- package/generated/wasm/System.wasm +0 -0
- package/generated/wasm/dotnet.boot.js +63 -63
- package/generated/wasm/dotnet.js +1 -1
- package/generated/wasm/dotnet.native.js +745 -22
- package/generated/wasm/dotnet.native.wasm +0 -0
- package/generated/wasm/dotnet.runtime.js +1 -1
- package/generated/wasm/netstandard.wasm +0 -0
- package/generated/wasm-manifest.js +77 -77
- package/generated/wasm-manifest.json +77 -77
- package/package.json +39 -7
- package/scripts/copy-assets.mjs +49 -0
- package/src/react/index.d.ts +19 -0
- package/src/react/index.js +56 -0
- package/src/react/runtime.js +37 -0
package/README.md
CHANGED
|
@@ -2,15 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
Render TextGraph diagrams as PNG images and validate diagram source.
|
|
4
4
|
|
|
5
|
+
> **[Report all TextGraph issues on GitHub →](https://github.com/drawmotive/textgraph/issues)**
|
|
6
|
+
> Bugs, feature requests, documentation, playground, SDK, fonts, Markdown, and VS Code issues all belong in this shared tracker.
|
|
7
|
+
|
|
5
8
|
## Installation
|
|
6
9
|
|
|
7
10
|
```bash
|
|
8
|
-
npm install @drawmotive/textgraph@
|
|
11
|
+
npm install @drawmotive/textgraph@0.2.0
|
|
9
12
|
```
|
|
10
13
|
|
|
11
14
|
Requires Node.js 22+ or a modern browser.
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
Version `0.2.0` is the first stable release. Install the exact version above or use `@latest` for the current stable release.
|
|
14
17
|
|
|
15
18
|
## Quickstart
|
|
16
19
|
|
|
@@ -46,10 +49,20 @@ const result = await textgraph.renderPng("A -> B", {
|
|
|
46
49
|
|
|
47
50
|
## Display in a browser
|
|
48
51
|
|
|
52
|
+
For a bundled application, copy the runtime into its public directory before development or build:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx textgraph-copy-assets public/textgraph/wasm
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The copy command and React entry below are available starting with `0.2.0`. The [repository samples](https://github.com/drawmotive/textgraph/tree/main/samples) install and run the SDK as a tarball.
|
|
59
|
+
|
|
49
60
|
```typescript
|
|
50
61
|
import { initializeTextGraph } from "@drawmotive/textgraph/browser";
|
|
51
62
|
|
|
52
|
-
const textgraph = await initializeTextGraph(
|
|
63
|
+
const textgraph = await initializeTextGraph({
|
|
64
|
+
resolveAsset: (asset) => new URL(`/textgraph/${asset.path}`, location.origin),
|
|
65
|
+
});
|
|
53
66
|
const result = await textgraph.renderPng("A -> B", {
|
|
54
67
|
encoding: "base64",
|
|
55
68
|
maxWidth: 1200,
|
|
@@ -65,17 +78,45 @@ if (result.success) {
|
|
|
65
78
|
await textgraph.dispose();
|
|
66
79
|
```
|
|
67
80
|
|
|
81
|
+
The npm package includes WASM, .NET runtime modules, fonts, and themes. Bundlers do not automatically deploy these dynamically loaded files. Re-copy assets after SDK updates and use an asset URL matching your deployment base path. Node loads assets from the installed package without this copy step.
|
|
82
|
+
|
|
83
|
+
## React
|
|
84
|
+
|
|
85
|
+
React 18.2+ and 19 use the same SDK through an optional entry; non-React users do not need React. Configure assets once and pass DSL to `TextGraph`:
|
|
86
|
+
|
|
87
|
+
```tsx
|
|
88
|
+
import { TextGraph, TextGraphProvider } from "@drawmotive/textgraph/react";
|
|
89
|
+
|
|
90
|
+
const options = {
|
|
91
|
+
resolveAsset: (asset) => new URL(`/textgraph/${asset.path}`, location.origin),
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
export function App() {
|
|
95
|
+
return (
|
|
96
|
+
<TextGraphProvider options={options}>
|
|
97
|
+
<TextGraph source={"A -> B"} alt="Flow diagram" />
|
|
98
|
+
</TextGraphProvider>
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Changing `source` updates the image. The provider shares one lazy runtime across diagrams and disposes it on unmount. See [React integration](docs/react.md) for loading, errors, rendering options, and server rendering.
|
|
104
|
+
|
|
105
|
+
## Runnable samples
|
|
106
|
+
|
|
107
|
+
The [samples directory](https://github.com/drawmotive/textgraph/tree/main/samples) contains browser JavaScript, React/Vite, Web Worker, and Node applications. Each installs a packed SDK and includes complete run instructions. Samples stay in the repository and are excluded from npm.
|
|
108
|
+
|
|
68
109
|
## Additional languages
|
|
69
110
|
|
|
70
|
-
|
|
111
|
+
All optional fonts share the `@drawmotive/textgraph-fonts` package, which is not yet published. Select the language descriptors needed by the application; `zhCN` provides Simplified Chinese coverage.
|
|
71
112
|
|
|
72
113
|
```bash
|
|
73
|
-
npm install @drawmotive/textgraph-fonts
|
|
114
|
+
npm install @drawmotive/textgraph-fonts
|
|
74
115
|
```
|
|
75
116
|
|
|
76
117
|
```typescript
|
|
77
118
|
import { initializeTextGraph } from "@drawmotive/textgraph";
|
|
78
|
-
import { zhCN } from "@drawmotive/textgraph-fonts
|
|
119
|
+
import { zhCN } from "@drawmotive/textgraph-fonts";
|
|
79
120
|
|
|
80
121
|
const textgraph = await initializeTextGraph({ languagePacks: [zhCN] });
|
|
81
122
|
const result = await textgraph.renderPng("A: 开始\nB: 完成\nA -> B");
|
package/docs/api-v1.md
CHANGED
|
@@ -42,7 +42,7 @@ Default rendering includes Noto Sans and Fuzzy Bubbles. Configure additional fon
|
|
|
42
42
|
|
|
43
43
|
The initializer copies byte arrays, URLs and descriptor arrays before asynchronous work, so later caller mutations cannot change rendering resources. Families must be unique across all packs and bundled defaults. Fallback families must name configured fonts. Descriptor validation performs no font I/O. Font contents are loaded and configured on first render; validate-only use does not read fonts or themes. Font-loading or configuration failures reject with `DrawMotiveError`; a later render can retry.
|
|
44
44
|
|
|
45
|
-
Bundled resource URLs use `resolveAsset`. Language-pack sources use their supplied URL directly and the platform data loader, including custom `fetch` or the network adapter for network URLs. `@drawmotive/textgraph-fonts
|
|
45
|
+
Bundled resource URLs use `resolveAsset`. Language-pack sources use their supplied URL directly and the platform data loader, including custom `fetch` or the network adapter for network URLs. All optional fonts share `@drawmotive/textgraph-fonts`, installed separately. It currently exports a `zhCN` descriptor for Simplified Chinese; additional language descriptors will use the same package. The package is not yet published.
|
|
46
46
|
|
|
47
47
|
## Lifecycle
|
|
48
48
|
|
|
@@ -57,6 +57,7 @@ Existing `loadRuntime`, `readonly` and `mutate` hooks remain for development com
|
|
|
57
57
|
- Node 22 or later: root or `/node`; runtime modules use installed-package `file:` URLs, data uses `node:fs/promises`. HTTP data can use injected fetch, but Node does not import remote HTTP JavaScript. Node `worker_threads` uses `/node`.
|
|
58
58
|
- Browser: `/browser` or browser conditional export. Modern Chromium, Firefox and WebKit with WebAssembly, ESM, fetch, BigInt and Web Crypto are tested. HTTPS or localhost is required for Web Crypto. Exact engine versions are pinned by the Playwright lockfile; historical minimum browser versions are not claimed.
|
|
59
59
|
- Browser module Web Worker: `/worker` inside a host-created Worker; no DOM, window, automatic RPC or Worker pool.
|
|
60
|
+
- React 18.2+ or 19: `/react` provides `TextGraph` and `TextGraphProvider` over the browser runtime. See [React integration](react.md). This entry is an unreleased addition after `0.1.0-alpha.1`.
|
|
60
61
|
|
|
61
62
|
Root condition precedence is worker/browser/node/default. Explicit entries avoid bundler ambiguity. Browser/Worker source graphs exclude Node imports.
|
|
62
63
|
|
package/docs/react.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# React integration
|
|
2
|
+
|
|
3
|
+
The `/react` entry is an unreleased addition after `0.1.0-alpha.1`. React is an optional peer dependency (`^18.2.0 || ^19.0.0`); applications without React use the ordinary SDK entries.
|
|
4
|
+
|
|
5
|
+
## Browser assets
|
|
6
|
+
|
|
7
|
+
Run `textgraph-copy-assets public/textgraph/wasm` in your application after installing the SDK, and again after updates. Put it in `predev` and `prebuild` scripts. Serve the public directory, then resolve assets to that URL:
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import { TextGraph, TextGraphProvider } from '@drawmotive/textgraph/react';
|
|
11
|
+
import type { TextGraphInitializeOptions } from '@drawmotive/textgraph';
|
|
12
|
+
|
|
13
|
+
const options: TextGraphInitializeOptions = {
|
|
14
|
+
resolveAsset: asset => new URL(`/textgraph/${asset.path}`, location.origin),
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export function Diagram({ source }: { source: string }) {
|
|
18
|
+
return (
|
|
19
|
+
<TextGraphProvider options={options}>
|
|
20
|
+
<TextGraph source={source} alt="Process flow"
|
|
21
|
+
renderOptions={{ scale: 2, maxWidth: 1200 }}
|
|
22
|
+
style={{ maxWidth: '100%', height: 'auto' }} />
|
|
23
|
+
</TextGraphProvider>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
For several diagrams, place a single provider around their common parent. Keep `options` stable using a module constant or `useMemo`; replacing it replaces the runtime, for example when changing language packs. Startup occurs only when a diagram mounts. StrictMode effect replay reuses startup, and final unmount disposes even an instance that is still initializing.
|
|
29
|
+
|
|
30
|
+
`TextGraph` can run without a provider when the SDK's default package-relative URLs are served intact. Each standalone component owns its runtime. Bundled applications should use a provider with explicit asset resolution.
|
|
31
|
+
|
|
32
|
+
Use your deployed base path instead of `/` for subdirectory hosting. The [React/Vite sample](https://github.com/drawmotive/textgraph/tree/main/samples/react-vite) demonstrates Vite's `BASE_URL`. No external CDN is needed. Assets follow the [SDK's MIME, CSP and offline requirements](api-v1.md#assets-csp-and-offline-operation); PNG data URLs need `img-src 'self' data:`.
|
|
33
|
+
|
|
34
|
+
## Component behavior
|
|
35
|
+
|
|
36
|
+
| Prop | Behavior |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| `source` | Required DSL string; changes trigger rendering. |
|
|
39
|
+
| `alt` | Image description; defaults to `TextGraph diagram`. |
|
|
40
|
+
| `renderOptions` | `scale`, `padding`, and `maxWidth`, with SDK defaults. |
|
|
41
|
+
| `loading` | React content shown with `role="status"`; defaults to `Rendering diagram…`. |
|
|
42
|
+
| Other image attributes | Passed to the successful `<img>`, including `className`, `style`, `width`, and `height`. |
|
|
43
|
+
|
|
44
|
+
The component owns `src`, encoding, and cancellation. While new input renders, old images are replaced by loading content. A stale result cannot replace newer input. DSL diagnostics and operational failures appear as escaped text with `role="alert"`; corrected input renders again. Changing only `alt` or image styles does not rerun layout.
|
|
45
|
+
|
|
46
|
+
An ordinary React render uses the browser main thread. Native layout already running cannot be preempted by cancellation; for heavy interactive workloads use the [Worker sample](https://github.com/drawmotive/textgraph/tree/main/samples/worker) to move SDK execution off the UI thread. The React component does not automatically create a Worker.
|
|
47
|
+
|
|
48
|
+
## Server rendering
|
|
49
|
+
|
|
50
|
+
The entry carries `'use client'`. Server rendering emits the same loading placeholder without starting WASM; the browser renders the diagram after hydration. In frameworks such as Next.js, place the provider and resolver function in your own client component, because functions cannot be passed across a server/client serialization boundary.
|
|
51
|
+
|
|
52
|
+
To deliver a finished image in the initial HTML, call `@drawmotive/textgraph/node` during server/build work, persist the PNG, and render a normal `<img>` with its URL. That workflow does not load WASM in the reader's browser.
|
package/docs/releases.md
CHANGED
|
@@ -7,11 +7,13 @@ Releases are selected deliberately and published by `.github/workflows/release.y
|
|
|
7
7
|
| Version | npm dist-tag | Installation |
|
|
8
8
|
| --- | --- | --- |
|
|
9
9
|
| `0.1.0-alpha.1` | `alpha` | `npm install @drawmotive/textgraph@alpha` |
|
|
10
|
-
| `0.
|
|
10
|
+
| `0.2.0` | `latest` | `npm install @drawmotive/textgraph` |
|
|
11
11
|
|
|
12
|
-
An exact prerelease version also works: `npm install @drawmotive/textgraph@0.1.0-alpha.1`.
|
|
12
|
+
An exact prerelease version also works: `npm install @drawmotive/textgraph@0.1.0-alpha.1`. npm assigns `latest` on a first publication even when another tag is specified. This default is accepted: `0.1.0-alpha.1` initially owned both `alpha` and `latest`. Subsequent alpha releases update `alpha` and preserve the existing default. A stable release updates `latest`.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
No stable release is required before publishing another alpha. The script verifies the existing default and immutable artifact integrity without attempting to delete tags. To graduate an alpha, prepare and publish a new stable version.
|
|
15
|
+
|
|
16
|
+
The scripts accept stable SemVer and `X.Y.Z-alpha.N`. Other channels require an explicit release-policy change. The shared optional `@drawmotive/textgraph-fonts` package has its own release lifecycle and is not published by this workflow.
|
|
15
17
|
|
|
16
18
|
## Account setup
|
|
17
19
|
|
|
@@ -20,6 +22,12 @@ The scripts accept stable SemVer and `X.Y.Z-alpha.N`. Other channels require an
|
|
|
20
22
|
3. Once the npm package exists, open its Settings and add a GitHub Actions trusted publisher: owner `drawmotive`, repository `textgraph`, workflow filename `release.yml`, environment `npm`.
|
|
21
23
|
4. The workflow uses a GitHub-hosted runner, Node.js 22, npm 11.11.1, and `id-token: write`. No long-lived npm token is needed for subsequent releases.
|
|
22
24
|
|
|
25
|
+
The trusted publisher for `drawmotive/textgraph`, `release.yml`, and environment `npm` is configured. To configure the equivalent account setting from a terminal, use npm 11.15.0+ (the older CLI omits permissions required by the current API):
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm trust github @drawmotive/textgraph --repo drawmotive/textgraph --file release.yml --env npm --allow-publish --yes
|
|
29
|
+
```
|
|
30
|
+
|
|
23
31
|
Trusted publishing requires npm 11.5.1+ and Node.js 22.14.0+. Publication from a public repository automatically includes provenance. A private repository does not produce public npm provenance; repository visibility is a separate owner decision. See [npm trusted publishers](https://docs.npmjs.com/trusted-publishers/).
|
|
24
32
|
|
|
25
33
|
## Prepare a version
|
|
@@ -27,15 +35,15 @@ Trusted publishing requires npm 11.5.1+ and Node.js 22.14.0+. Publication from a
|
|
|
27
35
|
Native builds belong to the private DrawMotive repository. Commit native source, resource, and bridge changes first, then run there:
|
|
28
36
|
|
|
29
37
|
```bash
|
|
30
|
-
npm run release:textgraph -- 0.
|
|
38
|
+
npm run release:textgraph -- 0.2.0
|
|
31
39
|
```
|
|
32
40
|
|
|
33
|
-
This updates the package and lock versions, builds Release assets from the recorded private source commit, generates matching JSON/ESM manifests, updates the root workspace lock, and verifies asset hashes. It does not commit, push, tag, or publish. The `just release-textgraph 0.
|
|
41
|
+
This updates the package and lock versions, builds Release assets from the recorded private source commit, generates matching JSON/ESM manifests, updates the root workspace lock, and verifies asset hashes. It does not commit, push, tag, or publish. The `just release-textgraph 0.2.0` alias runs the same command.
|
|
34
42
|
|
|
35
43
|
For a JavaScript-only release reusing already verified native bytes, run in this package:
|
|
36
44
|
|
|
37
45
|
```bash
|
|
38
|
-
npm run release:prepare --
|
|
46
|
+
npm run release:prepare -- VERSION_MATCHING_RELEASE_TARGET
|
|
39
47
|
npm run release:verify
|
|
40
48
|
```
|
|
41
49
|
|
|
@@ -59,7 +67,7 @@ Commit the package changes on the task branch, review them, and integrate accord
|
|
|
59
67
|
|
|
60
68
|
## First publication
|
|
61
69
|
|
|
62
|
-
When the package does not exist yet, its trusted publisher may not be configurable. Bootstrap the verified release once from an authenticated terminal:
|
|
70
|
+
When the package does not exist yet, its trusted publisher may not be configurable. Bootstrap the verified release once from an authenticated terminal; an initial alpha can also become the npm default:
|
|
63
71
|
|
|
64
72
|
```bash
|
|
65
73
|
npm login --registry=https://registry.npmjs.org/
|
|
@@ -74,27 +82,26 @@ If npm requires a one-time code, run with `NPM_CONFIG_OTP` set in the local term
|
|
|
74
82
|
After preparation, tests, and review, create the tag on the verified package commit:
|
|
75
83
|
|
|
76
84
|
```bash
|
|
77
|
-
git tag -a textgraph-v0.
|
|
78
|
-
git push origin
|
|
79
|
-
git push origin textgraph-v0.1.0-alpha.2
|
|
85
|
+
git tag -a textgraph-v0.2.0 -m "Release 0.2.0"
|
|
86
|
+
git push origin textgraph-v0.2.0
|
|
80
87
|
```
|
|
81
88
|
|
|
82
|
-
The release workflow resolves the tag to a commit, runs
|
|
89
|
+
The release workflow resolves the tag to a commit, runs Node.js and three-browser tests on Ubuntu, packs the tested checkout, and passes the artifact to the `npm` environment for publication. All CI and release jobs use `ubuntu-latest`; the browser suite covers Chromium, Firefox, and WebKit. Stable releases select `latest` automatically. Never pass a custom dist-tag to bypass the release policy.
|
|
83
90
|
|
|
84
91
|
## Verify publication and recover
|
|
85
92
|
|
|
86
93
|
```bash
|
|
87
94
|
npm view @drawmotive/textgraph dist-tags --json
|
|
88
|
-
npm view @drawmotive/textgraph@0.
|
|
89
|
-
npm install @drawmotive/textgraph@0.
|
|
95
|
+
npm view @drawmotive/textgraph@0.2.0 dist.integrity
|
|
96
|
+
npm install @drawmotive/textgraph@0.2.0
|
|
90
97
|
```
|
|
91
98
|
|
|
92
99
|
If a workflow fails before publishing, fix the configuration and rerun the same tag. For a manual dispatch, select the release tag as the workflow ref and supply the same tag as input; dispatching from `main` is rejected so OIDC and provenance identify the correct commit. For example:
|
|
93
100
|
|
|
94
101
|
```bash
|
|
95
|
-
gh workflow run release.yml --ref textgraph-v0.
|
|
102
|
+
gh workflow run release.yml --ref textgraph-v0.2.0 -f tag=textgraph-v0.2.0
|
|
96
103
|
```
|
|
97
104
|
|
|
98
105
|
If publication succeeded but a later check failed, the script accepts an identical registry artifact with the correct channel and refuses different bytes at the same version. Keep the original workflow artifact for diagnosing integrity differences.
|
|
99
106
|
|
|
100
|
-
|
|
107
|
+
The first alpha owning `latest` is expected and requires no repair. If a later publication unexpectedly changes an existing default, inspect registry state before retrying. Do not unpublish, overwrite versions, or delete tags as a routine recovery step.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|