@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.
Files changed (78) hide show
  1. package/README.md +47 -6
  2. package/docs/api-v1.md +2 -1
  3. package/docs/react.md +52 -0
  4. package/docs/releases.md +22 -15
  5. package/generated/wasm/DrawMotive.TextGraph.Bridge.runtimeconfig.json +1 -1
  6. package/generated/wasm/DrawMotive.TextGraph.Bridge.wasm +0 -0
  7. package/generated/wasm/Graphics.Core.wasm +0 -0
  8. package/generated/wasm/Grpc.Core.Api.wasm +0 -0
  9. package/generated/wasm/HarfBuzzSharp.wasm +0 -0
  10. package/generated/wasm/Math.Core.wasm +0 -0
  11. package/generated/wasm/Microsoft.AspNetCore.Components.Web.wasm +0 -0
  12. package/generated/wasm/Microsoft.Extensions.DependencyInjection.Abstractions.wasm +0 -0
  13. package/generated/wasm/Microsoft.Extensions.DependencyInjection.wasm +0 -0
  14. package/generated/wasm/Microsoft.Extensions.Logging.Abstractions.wasm +0 -0
  15. package/generated/wasm/Microsoft.Extensions.Logging.wasm +0 -0
  16. package/generated/wasm/Microsoft.Extensions.Options.wasm +0 -0
  17. package/generated/wasm/Microsoft.Extensions.Primitives.wasm +0 -0
  18. package/generated/wasm/Polly.Core.wasm +0 -0
  19. package/generated/wasm/RBush.wasm +0 -0
  20. package/generated/wasm/SkiaSharp.HarfBuzz.wasm +0 -0
  21. package/generated/wasm/SkiaSharp.wasm +0 -0
  22. package/generated/wasm/System.Collections.Concurrent.wasm +0 -0
  23. package/generated/wasm/System.Collections.Immutable.wasm +0 -0
  24. package/generated/wasm/System.Collections.NonGeneric.wasm +0 -0
  25. package/generated/wasm/System.Collections.Specialized.wasm +0 -0
  26. package/generated/wasm/System.Collections.wasm +0 -0
  27. package/generated/wasm/System.ComponentModel.Annotations.wasm +0 -0
  28. package/generated/wasm/System.ComponentModel.Primitives.wasm +0 -0
  29. package/generated/wasm/System.ComponentModel.TypeConverter.wasm +0 -0
  30. package/generated/wasm/System.ComponentModel.wasm +0 -0
  31. package/generated/wasm/System.Console.wasm +0 -0
  32. package/generated/wasm/System.Diagnostics.StackTrace.wasm +0 -0
  33. package/generated/wasm/System.Diagnostics.Tracing.wasm +0 -0
  34. package/generated/wasm/System.IO.Compression.Brotli.wasm +0 -0
  35. package/generated/wasm/System.IO.Compression.wasm +0 -0
  36. package/generated/wasm/System.IO.Pipelines.wasm +0 -0
  37. package/generated/wasm/System.Linq.Expressions.wasm +0 -0
  38. package/generated/wasm/System.Linq.wasm +0 -0
  39. package/generated/wasm/System.Memory.wasm +0 -0
  40. package/generated/wasm/System.Net.Http.wasm +0 -0
  41. package/generated/wasm/System.Net.Primitives.wasm +0 -0
  42. package/generated/wasm/System.Numerics.Vectors.wasm +0 -0
  43. package/generated/wasm/System.ObjectModel.wasm +0 -0
  44. package/generated/wasm/System.Private.CoreLib.wasm +0 -0
  45. package/generated/wasm/System.Private.Uri.wasm +0 -0
  46. package/generated/wasm/System.Reflection.Emit.ILGeneration.wasm +0 -0
  47. package/generated/wasm/System.Reflection.Emit.wasm +0 -0
  48. package/generated/wasm/System.Reflection.Primitives.wasm +0 -0
  49. package/generated/wasm/System.Runtime.InteropServices.JavaScript.wasm +0 -0
  50. package/generated/wasm/System.Runtime.InteropServices.wasm +0 -0
  51. package/generated/wasm/System.Runtime.Intrinsics.wasm +0 -0
  52. package/generated/wasm/System.Runtime.Loader.wasm +0 -0
  53. package/generated/wasm/System.Runtime.Numerics.wasm +0 -0
  54. package/generated/wasm/System.Runtime.Serialization.Primitives.wasm +0 -0
  55. package/generated/wasm/System.Runtime.wasm +0 -0
  56. package/generated/wasm/System.Security.Cryptography.wasm +0 -0
  57. package/generated/wasm/System.Text.Encoding.Extensions.wasm +0 -0
  58. package/generated/wasm/System.Text.Encodings.Web.wasm +0 -0
  59. package/generated/wasm/System.Text.Json.wasm +0 -0
  60. package/generated/wasm/System.Text.RegularExpressions.wasm +0 -0
  61. package/generated/wasm/System.Threading.Channels.wasm +0 -0
  62. package/generated/wasm/System.Threading.Thread.wasm +0 -0
  63. package/generated/wasm/System.Threading.ThreadPool.wasm +0 -0
  64. package/generated/wasm/System.Threading.wasm +0 -0
  65. package/generated/wasm/System.wasm +0 -0
  66. package/generated/wasm/dotnet.boot.js +63 -63
  67. package/generated/wasm/dotnet.js +1 -1
  68. package/generated/wasm/dotnet.native.js +745 -22
  69. package/generated/wasm/dotnet.native.wasm +0 -0
  70. package/generated/wasm/dotnet.runtime.js +1 -1
  71. package/generated/wasm/netstandard.wasm +0 -0
  72. package/generated/wasm-manifest.js +77 -77
  73. package/generated/wasm-manifest.json +77 -77
  74. package/package.json +39 -7
  75. package/scripts/copy-assets.mjs +49 -0
  76. package/src/react/index.d.ts +19 -0
  77. package/src/react/index.js +56 -0
  78. 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@alpha
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
- Alpha releases require `@alpha` or an exact version such as `@0.1.0-alpha.1`. Once a stable release is available, `npm install @drawmotive/textgraph` installs the stable version.
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
- Additional language packages are not yet published.
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-zh-cn
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-zh-cn";
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-zh-cn` exports a `zhCN` descriptor for Simplified Chinese. The optional package is installed separately.
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.1.0` | `latest` | `npm install @drawmotive/textgraph` |
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`. Alpha releases never change `latest`. Until a real stable version exists, default installation has no matching stable version and fails; no placeholder stable version is published. Versions are immutable. To graduate an alpha, prepare and publish a new stable version instead of moving `latest` to an alpha.
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
- The scripts accept stable SemVer and `X.Y.Z-alpha.N`. Other channels require an explicit release-policy change. The Chinese font package has its own release lifecycle and is not published by this workflow.
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.1.0-alpha.1
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.1.0-alpha.1` alias runs the same command.
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 -- 0.1.0-alpha.2
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.1.0-alpha.2 -m "Release 0.1.0-alpha.2"
78
- git push origin main
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 the existing three-platform Node.js and three-browser tests, packs the tested checkout, and passes the artifact to the `npm` environment for publication. Stable releases use the same procedure with a version such as `0.1.0`; the script selects `latest` automatically. Never pass a custom dist-tag to bypass the release policy.
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.1.0-alpha.1 dist.integrity
89
- npm install @drawmotive/textgraph@0.1.0-alpha.1
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.1.0-alpha.1 -f tag=textgraph-v0.1.0-alpha.1
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
- If an alpha accidentally acquires `latest` outside this workflow, restore the previously verified stable version using `npm dist-tag add @drawmotive/textgraph@<STABLE_VERSION> latest`. If no stable version exists, remove only the accidental tag using `npm dist-tag rm @drawmotive/textgraph latest`. Confirm registry state before retrying. Do not unpublish or overwrite versions as a routine recovery step.
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.
@@ -4,7 +4,7 @@
4
4
  "includedFrameworks": [
5
5
  {
6
6
  "name": "Microsoft.NETCore.App",
7
- "version": "10.0.8"
7
+ "version": "10.0.12"
8
8
  }
9
9
  ],
10
10
  "wasmHostProperties": {
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