From 418e0ee025f5959c307b63e074562eaf5695cdf9 Mon Sep 17 00:00:00 2001 From: Kieron Lanning Date: Wed, 16 Sep 2026 17:30:02 +0100 Subject: [PATCH 1/4] docs: updated links to new docs in repos --- src/src/data/projects.yml | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/src/data/projects.yml b/src/src/data/projects.yml index 39bbb5b..a60b86c 100644 --- a/src/src/data/projects.yml +++ b/src/src/data/projects.yml @@ -15,10 +15,8 @@ projects: featured: true order: 10 docs: - source: wiki - exclude: - - _Sidebar.md - - _Footer.md + source: github-path + path: docs/wiki targetFrameworks: - net8.0 - net9.0 @@ -93,7 +91,10 @@ projects: featured: true order: 30 docs: - source: readme + source: github-path + path: docs/wiki + exclude: + - _Sidebar.md targetFrameworks: - net8.0 - net9.0 @@ -124,8 +125,9 @@ projects: order: 40 docs: source: github-path - path: docs - readmeAsIndex: true + path: docs/wiki + exclude: + - _Sidebar.md targetFrameworks: - net8.0 - net9.0 @@ -153,10 +155,9 @@ projects: order: 50 docs: source: github-path - path: docs - readmeAsIndex: true + path: docs/wiki exclude: - - README.md + - _Sidebar.md targetFrameworks: - net10.0 packages: @@ -176,7 +177,10 @@ projects: status: preview order: 55 docs: - source: readme + source: github-path + path: docs/wiki + exclude: + - _Sidebar.md packages: - id: AspireC4.Hosting description: Aspire hosting extension for the AspireC4 plugin, generating a dynamic LikeC4 architecture diagram for your Aspire application. @@ -196,8 +200,9 @@ projects: order: 60 docs: source: github-path - path: docs - readmeAsIndex: true + path: docs/wiki + exclude: + - _Sidebar.md targetFrameworks: - net10.0 packages: @@ -218,7 +223,10 @@ projects: status: preview order: 70 docs: - source: readme + source: github-path + path: docs/wiki + exclude: + - _Sidebar.md targetFrameworks: - msbuild packages: From 5f2730150b1c806181a9805a3659cb7a56d9c0be Mon Sep 17 00:00:00 2001 From: Kieron Lanning Date: Wed, 16 Sep 2026 21:26:16 +0100 Subject: [PATCH 2/4] feat: updated fixtures and project.yml --- justfile | 7 +- .../github/releases/aspire-resourcekit.json | 43 + src/fixtures/github/releases/aspirec4.json | 1238 +++++++++++++++++ .../releases/telemetry-sourcegenerator.json | 2 +- .../github/repos/aspire-resourcekit.json | 12 +- src/fixtures/github/repos/aspirec4.json | 154 ++ src/fixtures/github/repos/build.json | 10 +- .../github/repos/dotnet-project-sdk.json | 10 +- src/fixtures/github/repos/event-sourcing.json | 20 +- .../repos/sourcegeneratorframework.json | 16 +- .../repos/telemetry-sourcegenerator.json | 12 +- src/fixtures/github/repos/zodsharp.json | 6 +- src/fixtures/nuget/aspirec4.hosting.json | 18 + .../nuget/purview.aspire.resourcekit.json | 3 +- .../nuget/search/AspireC4.Hosting.json | 80 ++ src/fixtures/nuget/search/Purview.Build.json | 10 +- .../Purview.Telemetry.SourceGenerator.json | 6 +- src/fixtures/releases/index.json | 237 +++- src/src/data/projects.yml | 6 +- 19 files changed, 1812 insertions(+), 78 deletions(-) create mode 100644 src/fixtures/github/releases/aspirec4.json create mode 100644 src/fixtures/github/repos/aspirec4.json create mode 100644 src/fixtures/nuget/aspirec4.hosting.json create mode 100644 src/fixtures/nuget/search/AspireC4.Hosting.json diff --git a/justfile b/justfile index 7087255..6d42536 100644 --- a/justfile +++ b/justfile @@ -19,10 +19,15 @@ install: install-hooks: bunx lefthook install -# Refresh docs mirrors and release data (cache-first unless DATA_MODE=live). +# Refresh docs mirrors and release data (cache-first). data-sync: bun run data:sync +# Refresh docs mirrors and release data (live mode). +[env("DATA_MODE", "live")] +live-data-sync: + bun run data:sync + # Start the dev server (runs data sync first so docs are available). dev: bun run data:sync diff --git a/src/fixtures/github/releases/aspire-resourcekit.json b/src/fixtures/github/releases/aspire-resourcekit.json index b05cf08..f1de5cc 100644 --- a/src/fixtures/github/releases/aspire-resourcekit.json +++ b/src/fixtures/github/releases/aspire-resourcekit.json @@ -1,4 +1,47 @@ [ + { + "url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/releases/389553004", + "assets_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/releases/389553004/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspire-resourcekit/releases/389553004/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspire-resourcekit/releases/tag/v1.0.0-prerelease.28", + "id": 389553004, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOTZLmtM4XOBts", + "tag_name": "v1.0.0-prerelease.28", + "target_commitish": "main", + "name": "v1.0.0-prerelease.28", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-09-16T00:06:45Z", + "updated_at": "2026-09-16T00:08:56Z", + "published_at": "2026-09-16T00:08:56Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/tarball/v1.0.0-prerelease.28", + "zipball_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/zipball/v1.0.0-prerelease.28", + "body": "## What's Changed\n* fix: IsEnabled by @kieronlanning in https://github.com/purview-dev/aspire-resourcekit/pull/30\n\n\n**Full Changelog**: https://github.com/purview-dev/aspire-resourcekit/compare/v1.0.0-prerelease.27...v1.0.0-prerelease.28", + "mentions_count": 1 + }, { "url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/releases/389284500", "assets_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/releases/389284500/assets", diff --git a/src/fixtures/github/releases/aspirec4.json b/src/fixtures/github/releases/aspirec4.json new file mode 100644 index 0000000..40db013 --- /dev/null +++ b/src/fixtures/github/releases/aspirec4.json @@ -0,0 +1,1238 @@ +[ + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/388431840", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/388431840/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/388431840/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.5.3.1", + "id": 388431840, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4XJv_g", + "tag_name": "v13.5.3.1", + "target_commitish": "main", + "name": "v13.5.3.1", + "draft": false, + "immutable": true, + "prerelease": false, + "created_at": "2026-09-14T13:43:46Z", + "updated_at": "2026-09-14T13:45:18Z", + "published_at": "2026-09-14T13:45:18Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.5.3.1", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.5.3.1", + "body": "## What's Changed\n* docs: updated readme with badges by @kieronlanning in https://github.com/purview-dev/aspirec4/pull/37\n\n\n**Full Changelog**: https://github.com/purview-dev/aspirec4/compare/v13.5.3...v13.5.3.1", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/387963833", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/387963833/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/387963833/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.5.3", + "id": 387963833, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4XH9u5", + "tag_name": "v13.5.3", + "target_commitish": "main", + "name": "v13.5.3", + "draft": false, + "immutable": true, + "prerelease": false, + "created_at": "2026-09-13T16:41:11Z", + "updated_at": "2026-09-13T16:42:37Z", + "published_at": "2026-09-13T16:42:37Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.5.3", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.5.3", + "body": "## What's Changed\n* feat: rebuilt on new source gen framework by @kieronlanning in https://github.com/purview-dev/aspirec4/pull/34\n* chore: bumped version by @kieronlanning in https://github.com/purview-dev/aspirec4/pull/35\n* Fixing test during build by @kieronlanning in https://github.com/purview-dev/aspirec4/pull/36\n\n\n**Full Changelog**: https://github.com/purview-dev/aspirec4/compare/v13.3.5...v13.5.3", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/372372387", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/372372387/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/372372387/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.5", + "id": 372372387, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4WMfOj", + "tag_name": "v13.3.5", + "target_commitish": "4a0296ffecee2b80b4c6756bfc7f76afaabdc1a9", + "name": "v13.3.5", + "draft": false, + "immutable": true, + "prerelease": false, + "created_at": "2026-08-18T13:31:01Z", + "updated_at": "2026-08-18T13:33:10Z", + "published_at": "2026-08-18T13:33:10Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/519496415", + "id": 519496415, + "node_id": "RA_kwDOSXT2Zs4e9uLf", + "name": "AspireC4.Hosting.13.3.5.nupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 314122, + "digest": "sha256:794915a538a957141ef2ab9c3695b838c4a45b08debf2a4895d3c8f0d9cb1b00", + "download_count": 0, + "created_at": "2026-08-18T13:33:09Z", + "updated_at": "2026-08-18T13:33:09Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.5/AspireC4.Hosting.13.3.5.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/519496416", + "id": 519496416, + "node_id": "RA_kwDOSXT2Zs4e9uLg", + "name": "AspireC4.Hosting.13.3.5.snupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 87276, + "digest": "sha256:fc0431e8a1530cada07721dbae491fe19ee162aed217f71e22f2f864604314ea", + "download_count": 0, + "created_at": "2026-08-18T13:33:09Z", + "updated_at": "2026-08-18T13:33:09Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.5/AspireC4.Hosting.13.3.5.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.3.5", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.3.5", + "body": "### Improvements\n\n- source gen update - best practices to follow\n- mass refactor to support updated source gen package\n" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/337966350", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/337966350/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/337966350/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.2", + "id": 337966350, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4UJPUO", + "tag_name": "v13.3.2", + "target_commitish": "af534cead3f9fbd820cd3d431c39089191b2ea13", + "name": "v13.3.2", + "draft": false, + "immutable": true, + "prerelease": false, + "created_at": "2026-06-11T13:04:44Z", + "updated_at": "2026-06-11T13:07:42Z", + "published_at": "2026-06-11T13:07:42Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/444703937", + "id": 444703937, + "node_id": "RA_kwDOSXT2Zs4agaTB", + "name": "AspireC4.Hosting.13.3.2.nupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 150001, + "digest": "sha256:4e27f8e15a240134519748884a70bf9bdff6cd305c9daadadc5553340d7fac18", + "download_count": 0, + "created_at": "2026-06-11T13:07:40Z", + "updated_at": "2026-06-11T13:07:41Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.2/AspireC4.Hosting.13.3.2.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/444703933", + "id": 444703933, + "node_id": "RA_kwDOSXT2Zs4agaS9", + "name": "AspireC4.Hosting.13.3.2.snupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 84443, + "digest": "sha256:9f4dc31e40336fcb925f46a65bacef938815dd7cdb4639be910eb61ed958ed48", + "download_count": 0, + "created_at": "2026-06-11T13:07:40Z", + "updated_at": "2026-06-11T13:07:41Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.2/AspireC4.Hosting.13.3.2.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.3.2", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.3.2", + "body": "\n### Patch Changes\n\n- service release - using new Project Sdk" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/334624454", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/334624454/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/334624454/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.1", + "id": 334624454, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4T8fbG", + "tag_name": "v13.3.1", + "target_commitish": "598f363bc8f9022cf03b4041b2bb88dc510450f1", + "name": "v13.3.1", + "draft": false, + "immutable": true, + "prerelease": false, + "created_at": "2026-06-04T21:28:19Z", + "updated_at": "2026-06-04T21:30:49Z", + "published_at": "2026-06-04T21:30:49Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/438666253", + "id": 438666253, + "node_id": "RA_kwDOSXT2Zs4aJYQN", + "name": "AspireC4.Hosting.13.3.1.nupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 158052, + "digest": "sha256:1b1c3e36aede8989f7bb32b9a8f2250aff536318648d683376f38f30225a9139", + "download_count": 1, + "created_at": "2026-06-04T21:30:48Z", + "updated_at": "2026-06-04T21:30:48Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.1/AspireC4.Hosting.13.3.1.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/438666254", + "id": 438666254, + "node_id": "RA_kwDOSXT2Zs4aJYQO", + "name": "AspireC4.Hosting.13.3.1.snupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 84429, + "digest": "sha256:ae1bf80bff433950a0cb9529988f538b8fa4a56fe8fd720cb526d844c940ea21", + "download_count": 1, + "created_at": "2026-06-04T21:30:48Z", + "updated_at": "2026-06-04T21:30:48Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.1/AspireC4.Hosting.13.3.1.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.3.1", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.3.1", + "body": "\n### Patch Changes\n\n- ### Bug Fixes\n\n - prevent sync-over-async deadlock when async configure callback is used in TypeScript AppHost ([#26](https://github.com/kjldev/aspirec4/issues/26))" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/328478325", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/328478325/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/328478325/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.10", + "id": 328478325, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4TlC51", + "tag_name": "v13.3.0-prerelease.10", + "target_commitish": "392c8e6452d35597e34bd99d31a6a8c7f1a75a6a", + "name": "v13.3.0-prerelease.10", + "draft": false, + "immutable": true, + "prerelease": true, + "created_at": "2026-05-24T09:53:45Z", + "updated_at": "2026-05-24T09:56:19Z", + "published_at": "2026-05-24T09:56:19Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/428480553", + "id": 428480553, + "node_id": "RA_kwDOSXT2Zs4Zihgp", + "name": "AspireC4.Hosting.13.3.0-prerelease.10.nupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 156090, + "digest": "sha256:80077a5edd3176e43f703771e6d4224d3ca18ceb85ab50c83bab96be85d49a61", + "download_count": 1, + "created_at": "2026-05-24T09:56:18Z", + "updated_at": "2026-05-24T09:56:18Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.10/AspireC4.Hosting.13.3.0-prerelease.10.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/428480554", + "id": 428480554, + "node_id": "RA_kwDOSXT2Zs4Zihgq", + "name": "AspireC4.Hosting.13.3.0-prerelease.10.snupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 84096, + "digest": "sha256:cf19af0b85a3326d198540186185449480f85c97910b1b60d6a96fd0958c6bf8", + "download_count": 1, + "created_at": "2026-05-24T09:56:18Z", + "updated_at": "2026-05-24T09:56:18Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.10/AspireC4.Hosting.13.3.0-prerelease.10.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.3.0-prerelease.10", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.3.0-prerelease.10", + "body": "\n### Patch Changes\n\n- ### Bug Fixes\n\n - add missing build/AspireC4.Hosting.props for source generator ([#20](https://github.com/kjldev/aspirec4/issues/20))\n\n ### Changes\n\n - Updated for likec4 with hmrport config ([#24](https://github.com/kjldev/aspirec4/issues/24))\n - source-generator + other fixes ([#19](https://github.com/kjldev/aspirec4/issues/19))" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/326023996", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/326023996/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/326023996/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.9", + "id": 326023996, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4Tbrs8", + "tag_name": "v13.3.0-prerelease.9", + "target_commitish": "6d0408a7e639fc95ef24b912333b07c21333e2d2", + "name": "v13.3.0-prerelease.9", + "draft": false, + "immutable": true, + "prerelease": true, + "created_at": "2026-05-20T14:16:55Z", + "updated_at": "2026-05-20T14:25:50Z", + "published_at": "2026-05-20T14:25:50Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/425287587", + "id": 425287587, + "node_id": "RA_kwDOSXT2Zs4ZWV-j", + "name": "AspireC4.Hosting.13.3.0-prerelease.9.nupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 154837, + "digest": "sha256:f0d41a0fec8aaffe1d57c5d0a933c53570946f556d703bea877e1a6222c9141c", + "download_count": 1, + "created_at": "2026-05-20T14:25:48Z", + "updated_at": "2026-05-20T14:25:48Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.9/AspireC4.Hosting.13.3.0-prerelease.9.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/425287588", + "id": 425287588, + "node_id": "RA_kwDOSXT2Zs4ZWV-k", + "name": "AspireC4.Hosting.13.3.0-prerelease.9.snupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 83773, + "digest": "sha256:15a80c92e9325a276f6096483936a5a23cd93435c9bad387bc5a47dc0650bfb2", + "download_count": 1, + "created_at": "2026-05-20T14:25:48Z", + "updated_at": "2026-05-20T14:25:48Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.9/AspireC4.Hosting.13.3.0-prerelease.9.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.3.0-prerelease.9", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.3.0-prerelease.9", + "body": "\n### Minor Changes\n\n- ### Features\n\n - updated the source gen to have its own validation, rather than double loading\n - normalise metadata keys for case/punctuation-insensitive validation\n\n ### Bug Fixes\n\n - yarn dlx peer deps and deno node-modules-dir for e2e cli tests\n\n ### Changes" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/324434912", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/324434912/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/324434912/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.8", + "id": 324434912, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4TVnvg", + "tag_name": "v13.3.0-prerelease.8", + "target_commitish": "268a6f77d46f6ed4ce2296f3473262bea18bffd7", + "name": "v13.3.0-prerelease.8", + "draft": false, + "immutable": true, + "prerelease": true, + "created_at": "2026-05-18T16:59:58Z", + "updated_at": "2026-05-18T17:02:39Z", + "published_at": "2026-05-18T17:02:39Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/423464061", + "id": 423464061, + "node_id": "RA_kwDOSXT2Zs4ZPYx9", + "name": "AspireC4.Hosting.13.3.0-prerelease.8.nupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 156702, + "digest": "sha256:3a008309f7c27ce9777a8c1085287c55a7e84d6204a914541d0eb09f502341d3", + "download_count": 1, + "created_at": "2026-05-18T17:02:38Z", + "updated_at": "2026-05-18T17:02:38Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.8/AspireC4.Hosting.13.3.0-prerelease.8.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/423464062", + "id": 423464062, + "node_id": "RA_kwDOSXT2Zs4ZPYx-", + "name": "AspireC4.Hosting.13.3.0-prerelease.8.snupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 84035, + "digest": "sha256:239029aa6052800a783a4635ca99f4cde989c0aa27b3ee85a9af62e6fa97b061", + "download_count": 1, + "created_at": "2026-05-18T17:02:38Z", + "updated_at": "2026-05-18T17:02:38Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.8/AspireC4.Hosting.13.3.0-prerelease.8.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.3.0-prerelease.8", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.3.0-prerelease.8", + "body": "\n### Patch Changes\n\n- ### Bug Fixes\n\n - resolve nuget assembly name mismatch and beforestart hang\n\n ### Changes" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/323977179", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/323977179/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/323977179/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.7", + "id": 323977179, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4TT3_b", + "tag_name": "v13.3.0-prerelease.7", + "target_commitish": "5903dc06da61765bacebff0c33ac0784b3ebba43", + "name": "v13.3.0-prerelease.7", + "draft": false, + "immutable": true, + "prerelease": true, + "created_at": "2026-05-17T22:04:27Z", + "updated_at": "2026-05-17T22:07:15Z", + "published_at": "2026-05-17T22:07:15Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/422756421", + "id": 422756421, + "node_id": "RA_kwDOSXT2Zs4ZMsBF", + "name": "AspireC4.Hosting.13.3.0-prerelease.7.nupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 156015, + "digest": "sha256:f47acfb0e4bc559185b48b7e932a57b658a5e071539b6eab0ee976c40982ead5", + "download_count": 1, + "created_at": "2026-05-17T22:07:13Z", + "updated_at": "2026-05-17T22:07:14Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.7/AspireC4.Hosting.13.3.0-prerelease.7.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/422756422", + "id": 422756422, + "node_id": "RA_kwDOSXT2Zs4ZMsBG", + "name": "AspireC4.Hosting.13.3.0-prerelease.7.snupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 84477, + "digest": "sha256:5a2490e40ea4263a3eedd76c33d1577eae5545dc46a785d2491ec9cb74588400", + "download_count": 1, + "created_at": "2026-05-17T22:07:13Z", + "updated_at": "2026-05-17T22:07:14Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.7/AspireC4.Hosting.13.3.0-prerelease.7.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.3.0-prerelease.7", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.3.0-prerelease.7", + "body": "\n### Minor Changes\n\n- ### Features\n\n - bundle SG with runtime bridge via ModuleInitializer\n - redesign source generators with [LikeC4Registry] attribute\n - extend source generators with WithLikeC4Group support and ASPIREC4004 diagnostic\n - adding correct support for TypeScript app hosts\n\n ### Bug Fixes\n\n - resolve ASPIREEXPORT010/008 warnings on exported methods\n\n ### Changes" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/323127295", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/323127295/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/323127295/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.6", + "id": 323127295, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4TQof_", + "tag_name": "v13.3.0-prerelease.6", + "target_commitish": "1ca794782e7f6ad83b06e43b3969ce32e123d39d", + "name": "v13.3.0-prerelease.6", + "draft": false, + "immutable": true, + "prerelease": true, + "created_at": "2026-05-15T08:58:06Z", + "updated_at": "2026-05-15T09:00:02Z", + "published_at": "2026-05-15T09:00:02Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/420875372", + "id": 420875372, + "node_id": "RA_kwDOSXT2Zs4ZFgxs", + "name": "AspireC4.Hosting.13.3.0-prerelease.6.nupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 137293, + "digest": "sha256:077b6c1b1a665218e9d42adbbd7dc6a5b7cf7420d667a9c84b1534aadf23b7b9", + "download_count": 1, + "created_at": "2026-05-15T09:00:01Z", + "updated_at": "2026-05-15T09:00:01Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.6/AspireC4.Hosting.13.3.0-prerelease.6.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/420875371", + "id": 420875371, + "node_id": "RA_kwDOSXT2Zs4ZFgxr", + "name": "AspireC4.Hosting.13.3.0-prerelease.6.snupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 82401, + "digest": "sha256:255b90f6b1b189428229cdbc9a65636cb85c0450b8cd4232640abccb68e2b327", + "download_count": 1, + "created_at": "2026-05-15T09:00:01Z", + "updated_at": "2026-05-15T09:00:01Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.6/AspireC4.Hosting.13.3.0-prerelease.6.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.3.0-prerelease.6", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.3.0-prerelease.6", + "body": "\n> **Note:** versions `13.3.0-prerelease.4` and `13.3.0-prerelease.5` were never published.\n> Both tags were permanently tombstoned by GitHub's immutable-release feature after failed\n> release attempts during CD pipeline repairs. This version contains all changes originally\n> intended for `prerelease.4`.\n\n### Minor Changes\n\n- ### Features\n\n - adding first-pass source generator - very much a WIP\n - add KnownLikeC4Elements source generator\n - stable model generation across resource state changes\n - make WithRelationshipKindSpec strict param nullable with auto-detect\n - add technology support to relationship kind specifications\n - add strict mode validation to aspire c4 diagram options\n - add guards and context-aware release guide\n\n ### Bug Fixes\n\n - resolve build errors and update tests post-refactor\n - relationship kind technology uses no colon in dsl output\n - always show release guide; exit on blockers before proceeding\n - block release when branch is behind origin/main\n - validate unknown args and simplify justfile recipe\n - moved the Aspire browser token inclusion behind a AppHost options property\n - fix test extension views to use current resource element names\n - create GitHub release as draft before uploading assets to prevent immutable-release errors\n\n ### Changes\n\n - cd: releases are gated to main; workflow is enforced to reject non-main refs even on manual dispatch\n - cd: update GitHub Actions to Node.js 24-compatible versions (checkout@v6, setup-dotnet@v5, setup-node@v6)" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/321785433", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/321785433/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/321785433/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.3", + "id": 321785433, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4TLg5Z", + "tag_name": "v13.3.0-prerelease.3", + "target_commitish": "d0fd9eae5cc9a9c72549a8c5cbd45946ce93d415", + "name": "v13.3.0-prerelease.3", + "draft": false, + "immutable": true, + "prerelease": true, + "created_at": "2026-05-13T10:23:57Z", + "updated_at": "2026-05-13T10:36:11Z", + "published_at": "2026-05-13T10:26:17Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/419197455", + "id": 419197455, + "node_id": "RA_kwDOSXT2Zs4Y_HIP", + "name": "AspireC4.Hosting.13.3.0-prerelease.3.nupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 114149, + "digest": "sha256:ceec62d69d0623d0e1a93e05f18bf0e1727e65e6958f379d51cf57f6e44c7172", + "download_count": 1, + "created_at": "2026-05-13T10:26:19Z", + "updated_at": "2026-05-13T10:26:19Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.3/AspireC4.Hosting.13.3.0-prerelease.3.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/419197454", + "id": 419197454, + "node_id": "RA_kwDOSXT2Zs4Y_HIO", + "name": "AspireC4.Hosting.13.3.0-prerelease.3.snupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 64501, + "digest": "sha256:8ebbdbabea426a6f2a79379ac04f71588628ae2d2c62d55511915b91213cf34c", + "download_count": 1, + "created_at": "2026-05-13T10:26:19Z", + "updated_at": "2026-05-13T10:26:19Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.3/AspireC4.Hosting.13.3.0-prerelease.3.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.3.0-prerelease.3", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.3.0-prerelease.3", + "body": "\n### Minor Changes\n\n- ### Features\n\n - add guards and context-aware release guide\n\n ### Bug Fixes\n\n - always show release guide; exit on blockers before proceeding\n - block release when branch is behind origin/main\n - validate unknown args and simplify justfile recipe\n - moved the Aspire browser token inclusion behind a AppHost options property\n\n ### Changes" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/321745663", + "assets_url": "https://api.github.com/repos/purview-dev/aspirec4/releases/321745663/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspirec4/releases/321745663/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.2", + "id": 321745663, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOSXT2Zs4TLXL_", + "tag_name": "v13.3.0-prerelease.2", + "target_commitish": "8e2da7fbcc408315549f9d9d97a3c253cf717cc1", + "name": "v13.3.0-prerelease.2", + "draft": false, + "immutable": true, + "prerelease": true, + "created_at": "2026-05-13T09:03:17Z", + "updated_at": "2026-05-13T10:36:10Z", + "published_at": "2026-05-13T09:05:53Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/419146021", + "id": 419146021, + "node_id": "RA_kwDOSXT2Zs4Y-6kl", + "name": "AspireC4.Hosting.13.3.0-prerelease.2.nupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 113947, + "digest": "sha256:3f1e3a3ebbbc49151519372e400c99ba2147208941d4cd9817bad0357f01d1a7", + "download_count": 0, + "created_at": "2026-05-13T09:05:55Z", + "updated_at": "2026-05-13T09:05:55Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.2/AspireC4.Hosting.13.3.0-prerelease.2.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/aspirec4/releases/assets/419146020", + "id": 419146020, + "node_id": "RA_kwDOSXT2Zs4Y-6kk", + "name": "AspireC4.Hosting.13.3.0-prerelease.2.snupkg", + "label": "", + "uploader": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 64267, + "digest": "sha256:3590fa0c0ab0eb35ada32a298e0f963b1fde7ec548fcc8396780fb1c3bee9c8c", + "download_count": 0, + "created_at": "2026-05-13T09:05:55Z", + "updated_at": "2026-05-13T09:05:55Z", + "browser_download_url": "https://github.com/purview-dev/aspirec4/releases/download/v13.3.0-prerelease.2/AspireC4.Hosting.13.3.0-prerelease.2.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/aspirec4/tarball/v13.3.0-prerelease.2", + "zipball_url": "https://api.github.com/repos/purview-dev/aspirec4/zipball/v13.3.0-prerelease.2", + "body": "\n### Patch Changes\n\n- [#5](https://github.com/kjldev/aspirec4/pull/5) [`32b7cbd`](https://github.com/kjldev/aspirec4/commit/32b7cbdcbc7eddad915405b69cc9ee4aa47b33a1) Thanks [@kieronlanning](https://github.com/kieronlanning)! - ### Bug Fixes\n\n - Fix unit test `AddAspireC4_ExposesHttpAndHmrEndpoints` to always expect `null` HMR port (relay always active with `latest` image tag)\n - Fix `ValidatedDsl_*` unit tests failing in CI due to missing Node.js setup step\n\n ### Changes\n\n - Add `actions/setup-node@v6` to CI and CD workflows for reliable Node.js availability\n - Generate `.snupkg` symbol packages alongside `.nupkg` in `dotnet pack`\n - `just pack` now reads version from `package.json` instead of using the fallback from `Directory.Build.props`\n - Add `@changesets/cli` release flow: `just changeset` and `just release [prerelease]`" + } +] diff --git a/src/fixtures/github/releases/telemetry-sourcegenerator.json b/src/fixtures/github/releases/telemetry-sourcegenerator.json index ae55694..2e60003 100644 --- a/src/fixtures/github/releases/telemetry-sourcegenerator.json +++ b/src/fixtures/github/releases/telemetry-sourcegenerator.json @@ -1079,7 +1079,7 @@ "state": "uploaded", "size": 198724, "digest": null, - "download_count": 2, + "download_count": 3, "created_at": "2024-06-03T11:13:23Z", "updated_at": "2024-06-03T11:13:23Z", "browser_download_url": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/download/v1.0.10/Purview.Telemetry.SourceGenerator.1.0.10.symbols.nupkg.tar.xz" diff --git a/src/fixtures/github/repos/aspire-resourcekit.json b/src/fixtures/github/repos/aspire-resourcekit.json index 999fe18..fb19b30 100644 --- a/src/fixtures/github/repos/aspire-resourcekit.json +++ b/src/fixtures/github/repos/aspire-resourcekit.json @@ -66,21 +66,21 @@ "releases_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/deployments", "created_at": "2026-07-15T10:09:08Z", - "updated_at": "2026-09-15T15:57:07Z", - "pushed_at": "2026-09-15T15:59:20Z", + "updated_at": "2026-09-16T16:02:30Z", + "pushed_at": "2026-09-16T16:00:59Z", "git_url": "git://github.com/purview-dev/aspire-resourcekit.git", "ssh_url": "git@github.com:purview-dev/aspire-resourcekit.git", "clone_url": "https://github.com/purview-dev/aspire-resourcekit.git", "svn_url": "https://github.com/purview-dev/aspire-resourcekit", - "homepage": "", - "size": 4112, + "homepage": "https://purview.dev/projects/aspire-resourcekit/", + "size": 4123, "stargazers_count": 2, "watchers_count": 2, "language": "C#", "has_issues": true, - "has_projects": true, + "has_projects": false, "has_downloads": false, - "has_wiki": true, + "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, diff --git a/src/fixtures/github/repos/aspirec4.json b/src/fixtures/github/repos/aspirec4.json new file mode 100644 index 0000000..8abccb8 --- /dev/null +++ b/src/fixtures/github/repos/aspirec4.json @@ -0,0 +1,154 @@ +{ + "id": 1232402022, + "node_id": "R_kgDOSXT2Zg", + "name": "aspirec4", + "full_name": "purview-dev/aspirec4", + "private": false, + "owner": { + "login": "purview-dev", + "id": 96894084, + "node_id": "O_kgDOBcZ8hA", + "avatar_url": "https://avatars.githubusercontent.com/u/96894084?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/purview-dev", + "html_url": "https://github.com/purview-dev", + "followers_url": "https://api.github.com/users/purview-dev/followers", + "following_url": "https://api.github.com/users/purview-dev/following{/other_user}", + "gists_url": "https://api.github.com/users/purview-dev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/purview-dev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/purview-dev/subscriptions", + "organizations_url": "https://api.github.com/users/purview-dev/orgs", + "repos_url": "https://api.github.com/users/purview-dev/repos", + "events_url": "https://api.github.com/users/purview-dev/events{/privacy}", + "received_events_url": "https://api.github.com/users/purview-dev/received_events", + "type": "Organization", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/purview-dev/aspirec4", + "description": "Aspire extension that generates live LikeC4 C4 architecture diagrams from the Aspire resource graph, with a Roslyn source generator for compile-time validation of tags, kinds, groups, and metadata.", + "fork": false, + "url": "https://api.github.com/repos/purview-dev/aspirec4", + "forks_url": "https://api.github.com/repos/purview-dev/aspirec4/forks", + "keys_url": "https://api.github.com/repos/purview-dev/aspirec4/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/purview-dev/aspirec4/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/purview-dev/aspirec4/teams", + "hooks_url": "https://api.github.com/repos/purview-dev/aspirec4/hooks", + "issue_events_url": "https://api.github.com/repos/purview-dev/aspirec4/issues/events{/number}", + "events_url": "https://api.github.com/repos/purview-dev/aspirec4/events", + "assignees_url": "https://api.github.com/repos/purview-dev/aspirec4/assignees{/user}", + "branches_url": "https://api.github.com/repos/purview-dev/aspirec4/branches{/branch}", + "tags_url": "https://api.github.com/repos/purview-dev/aspirec4/tags", + "blobs_url": "https://api.github.com/repos/purview-dev/aspirec4/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/purview-dev/aspirec4/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/purview-dev/aspirec4/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/purview-dev/aspirec4/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/purview-dev/aspirec4/statuses/{sha}", + "languages_url": "https://api.github.com/repos/purview-dev/aspirec4/languages", + "stargazers_url": "https://api.github.com/repos/purview-dev/aspirec4/stargazers", + "contributors_url": "https://api.github.com/repos/purview-dev/aspirec4/contributors", + "subscribers_url": "https://api.github.com/repos/purview-dev/aspirec4/subscribers", + "subscription_url": "https://api.github.com/repos/purview-dev/aspirec4/subscription", + "commits_url": "https://api.github.com/repos/purview-dev/aspirec4/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/purview-dev/aspirec4/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/purview-dev/aspirec4/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/purview-dev/aspirec4/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/purview-dev/aspirec4/contents/{+path}", + "compare_url": "https://api.github.com/repos/purview-dev/aspirec4/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/purview-dev/aspirec4/merges", + "archive_url": "https://api.github.com/repos/purview-dev/aspirec4/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/purview-dev/aspirec4/downloads", + "issues_url": "https://api.github.com/repos/purview-dev/aspirec4/issues{/number}", + "pulls_url": "https://api.github.com/repos/purview-dev/aspirec4/pulls{/number}", + "milestones_url": "https://api.github.com/repos/purview-dev/aspirec4/milestones{/number}", + "notifications_url": "https://api.github.com/repos/purview-dev/aspirec4/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/purview-dev/aspirec4/labels{/name}", + "releases_url": "https://api.github.com/repos/purview-dev/aspirec4/releases{/id}", + "deployments_url": "https://api.github.com/repos/purview-dev/aspirec4/deployments", + "created_at": "2026-05-07T22:35:03Z", + "updated_at": "2026-09-16T16:08:46Z", + "pushed_at": "2026-09-16T16:08:42Z", + "git_url": "git://github.com/purview-dev/aspirec4.git", + "ssh_url": "git@github.com:purview-dev/aspirec4.git", + "clone_url": "https://github.com/purview-dev/aspirec4.git", + "svn_url": "https://github.com/purview-dev/aspirec4", + "homepage": "https://purview.dev/projects/aspirec4/", + "size": 10791, + "stargazers_count": 9, + "watchers_count": 9, + "language": "C#", + "has_issues": true, + "has_projects": false, + "has_downloads": false, + "has_wiki": false, + "has_pages": false, + "has_discussions": false, + "forks_count": 3, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 1, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [ + "architecture", + "architecture-as-code", + "architecture-diagrams", + "aspire", + "aspire-dashboard", + "aspire-dotnet", + "aspire-hosting", + "aspnetcore", + "c4", + "c4-model", + "developer-experience", + "devex", + "diagram", + "diagrams", + "dotnet", + "likec4", + "roslyn", + "source-generator", + "visualization" + ], + "visibility": "public", + "forks": 3, + "open_issues": 1, + "watchers": 9, + "default_branch": "main", + "temp_clone_token": null, + "custom_properties": {}, + "organization": { + "login": "purview-dev", + "id": 96894084, + "node_id": "O_kgDOBcZ8hA", + "avatar_url": "https://avatars.githubusercontent.com/u/96894084?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/purview-dev", + "html_url": "https://github.com/purview-dev", + "followers_url": "https://api.github.com/users/purview-dev/followers", + "following_url": "https://api.github.com/users/purview-dev/following{/other_user}", + "gists_url": "https://api.github.com/users/purview-dev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/purview-dev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/purview-dev/subscriptions", + "organizations_url": "https://api.github.com/users/purview-dev/orgs", + "repos_url": "https://api.github.com/users/purview-dev/repos", + "events_url": "https://api.github.com/users/purview-dev/events{/privacy}", + "received_events_url": "https://api.github.com/users/purview-dev/received_events", + "type": "Organization", + "user_view_type": "public", + "site_admin": false + }, + "network_count": 3, + "subscribers_count": 0 +} diff --git a/src/fixtures/github/repos/build.json b/src/fixtures/github/repos/build.json index 13e7022..38e36fd 100644 --- a/src/fixtures/github/repos/build.json +++ b/src/fixtures/github/repos/build.json @@ -66,21 +66,21 @@ "releases_url": "https://api.github.com/repos/purview-dev/build/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/build/deployments", "created_at": "2026-09-01T18:12:54Z", - "updated_at": "2026-09-14T12:27:53Z", - "pushed_at": "2026-09-14T12:28:41Z", + "updated_at": "2026-09-16T16:29:28Z", + "pushed_at": "2026-09-16T16:29:24Z", "git_url": "git://github.com/purview-dev/build.git", "ssh_url": "git@github.com:purview-dev/build.git", "clone_url": "https://github.com/purview-dev/build.git", "svn_url": "https://github.com/purview-dev/build", - "homepage": null, + "homepage": "https://purview.dev/projects/build/", "size": 185, "stargazers_count": 0, "watchers_count": 0, "language": "C#", "has_issues": true, - "has_projects": true, + "has_projects": false, "has_downloads": false, - "has_wiki": true, + "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, diff --git a/src/fixtures/github/repos/dotnet-project-sdk.json b/src/fixtures/github/repos/dotnet-project-sdk.json index b333a07..7ebdf10 100644 --- a/src/fixtures/github/repos/dotnet-project-sdk.json +++ b/src/fixtures/github/repos/dotnet-project-sdk.json @@ -66,21 +66,21 @@ "releases_url": "https://api.github.com/repos/purview-dev/dotnet-project-sdk/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/dotnet-project-sdk/deployments", "created_at": "2026-05-24T14:07:44Z", - "updated_at": "2026-09-15T08:10:30Z", - "pushed_at": "2026-09-15T08:11:21Z", + "updated_at": "2026-09-16T16:24:02Z", + "pushed_at": "2026-09-16T16:23:58Z", "git_url": "git://github.com/purview-dev/dotnet-project-sdk.git", "ssh_url": "git@github.com:purview-dev/dotnet-project-sdk.git", "clone_url": "https://github.com/purview-dev/dotnet-project-sdk.git", "svn_url": "https://github.com/purview-dev/dotnet-project-sdk", - "homepage": "", + "homepage": "https://purview.dev/projects/dotnet-project-sdk/", "size": 1359, "stargazers_count": 0, "watchers_count": 0, "language": "C#", "has_issues": true, - "has_projects": true, + "has_projects": false, "has_downloads": false, - "has_wiki": true, + "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, diff --git a/src/fixtures/github/repos/event-sourcing.json b/src/fixtures/github/repos/event-sourcing.json index d7cfa4b..88b852f 100644 --- a/src/fixtures/github/repos/event-sourcing.json +++ b/src/fixtures/github/repos/event-sourcing.json @@ -66,23 +66,23 @@ "releases_url": "https://api.github.com/repos/purview-dev/eventsourcing/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/eventsourcing/deployments", "created_at": "2024-04-28T15:19:40Z", - "updated_at": "2026-09-15T09:03:03Z", - "pushed_at": "2026-09-15T09:02:59Z", + "updated_at": "2026-09-16T15:21:27Z", + "pushed_at": "2026-09-16T15:11:45Z", "git_url": "git://github.com/purview-dev/eventsourcing.git", "ssh_url": "git@github.com:purview-dev/eventsourcing.git", "clone_url": "https://github.com/purview-dev/eventsourcing.git", "svn_url": "https://github.com/purview-dev/eventsourcing", - "homepage": "", - "size": 11499, - "stargazers_count": 3, - "watchers_count": 3, + "homepage": "https://purview.dev/event-sourcing/", + "size": 11528, + "stargazers_count": 4, + "watchers_count": 4, "language": "C#", "has_issues": true, - "has_projects": true, + "has_projects": false, "has_downloads": false, - "has_wiki": true, + "has_wiki": false, "has_pages": false, - "has_discussions": true, + "has_discussions": false, "forks_count": 0, "mirror_url": null, "archived": false, @@ -116,7 +116,7 @@ "visibility": "public", "forks": 0, "open_issues": 0, - "watchers": 3, + "watchers": 4, "default_branch": "main", "temp_clone_token": null, "custom_properties": {}, diff --git a/src/fixtures/github/repos/sourcegeneratorframework.json b/src/fixtures/github/repos/sourcegeneratorframework.json index a61e46f..d99fb05 100644 --- a/src/fixtures/github/repos/sourcegeneratorframework.json +++ b/src/fixtures/github/repos/sourcegeneratorframework.json @@ -66,21 +66,21 @@ "releases_url": "https://api.github.com/repos/purview-dev/sourcegeneratorframework/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/sourcegeneratorframework/deployments", "created_at": "2026-08-06T12:26:03Z", - "updated_at": "2026-09-14T12:49:39Z", - "pushed_at": "2026-09-14T12:53:47Z", + "updated_at": "2026-09-16T16:21:01Z", + "pushed_at": "2026-09-16T16:20:56Z", "git_url": "git://github.com/purview-dev/sourcegeneratorframework.git", "ssh_url": "git@github.com:purview-dev/sourcegeneratorframework.git", "clone_url": "https://github.com/purview-dev/sourcegeneratorframework.git", "svn_url": "https://github.com/purview-dev/sourcegeneratorframework", - "homepage": "", + "homepage": "https://purview.dev/projects/sourcegeneratorframework/", "size": 7985, - "stargazers_count": 1, - "watchers_count": 1, + "stargazers_count": 2, + "watchers_count": 2, "language": "C#", "has_issues": true, - "has_projects": true, + "has_projects": false, "has_downloads": false, - "has_wiki": true, + "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, @@ -121,7 +121,7 @@ "visibility": "public", "forks": 0, "open_issues": 0, - "watchers": 1, + "watchers": 2, "default_branch": "main", "temp_clone_token": null, "custom_properties": {}, diff --git a/src/fixtures/github/repos/telemetry-sourcegenerator.json b/src/fixtures/github/repos/telemetry-sourcegenerator.json index 2d74bb4..a359ec4 100644 --- a/src/fixtures/github/repos/telemetry-sourcegenerator.json +++ b/src/fixtures/github/repos/telemetry-sourcegenerator.json @@ -66,23 +66,23 @@ "releases_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/deployments", "created_at": "2024-03-04T18:31:56Z", - "updated_at": "2026-09-14T13:28:37Z", - "pushed_at": "2026-09-14T13:32:18Z", + "updated_at": "2026-09-16T15:25:13Z", + "pushed_at": "2026-09-16T15:25:09Z", "git_url": "git://github.com/purview-dev/telemetry-sourcegenerator.git", "ssh_url": "git@github.com:purview-dev/telemetry-sourcegenerator.git", "clone_url": "https://github.com/purview-dev/telemetry-sourcegenerator.git", "svn_url": "https://github.com/purview-dev/telemetry-sourcegenerator", - "homepage": "https://nuget.org/packages/Purview.Telemetry.SourceGenerator/", - "size": 7349, + "homepage": "https://purview.dev/projects/telemetry-sourcegenerator/", + "size": 7357, "stargazers_count": 35, "watchers_count": 35, "language": "C#", "has_issues": true, "has_projects": false, "has_downloads": false, - "has_wiki": true, + "has_wiki": false, "has_pages": false, - "has_discussions": true, + "has_discussions": false, "forks_count": 2, "mirror_url": null, "archived": false, diff --git a/src/fixtures/github/repos/zodsharp.json b/src/fixtures/github/repos/zodsharp.json index 2f6e206..58a0ad0 100644 --- a/src/fixtures/github/repos/zodsharp.json +++ b/src/fixtures/github/repos/zodsharp.json @@ -66,13 +66,13 @@ "releases_url": "https://api.github.com/repos/purview-dev/zodsharp/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/zodsharp/deployments", "created_at": "2026-07-04T22:19:44Z", - "updated_at": "2026-09-14T16:06:56Z", - "pushed_at": "2026-09-14T16:06:20Z", + "updated_at": "2026-09-16T15:54:50Z", + "pushed_at": "2026-09-16T15:54:46Z", "git_url": "git://github.com/purview-dev/zodsharp.git", "ssh_url": "git@github.com:purview-dev/zodsharp.git", "clone_url": "https://github.com/purview-dev/zodsharp.git", "svn_url": "https://github.com/purview-dev/zodsharp", - "homepage": "", + "homepage": "https://purview.dev/projects/zodsharp/", "size": 970, "stargazers_count": 1, "watchers_count": 1, diff --git a/src/fixtures/nuget/aspirec4.hosting.json b/src/fixtures/nuget/aspirec4.hosting.json new file mode 100644 index 0000000..e332536 --- /dev/null +++ b/src/fixtures/nuget/aspirec4.hosting.json @@ -0,0 +1,18 @@ +{ + "versions": [ + "13.3.0-prerelease.1", + "13.3.0-prerelease.2", + "13.3.0-prerelease.3", + "13.3.0-prerelease.6", + "13.3.0-prerelease.7", + "13.3.0-prerelease.8", + "13.3.0-prerelease.9", + "13.3.0-prerelease.10", + "13.3.1", + "13.3.2", + "13.3.3", + "13.3.5", + "13.5.3", + "13.5.3.1" + ] +} diff --git a/src/fixtures/nuget/purview.aspire.resourcekit.json b/src/fixtures/nuget/purview.aspire.resourcekit.json index 44585b1..a2e32f0 100644 --- a/src/fixtures/nuget/purview.aspire.resourcekit.json +++ b/src/fixtures/nuget/purview.aspire.resourcekit.json @@ -26,6 +26,7 @@ "1.0.0-prerelease.24", "1.0.0-prerelease.25", "1.0.0-prerelease.26", - "1.0.0-prerelease.27" + "1.0.0-prerelease.27", + "1.0.0-prerelease.28" ] } diff --git a/src/fixtures/nuget/search/AspireC4.Hosting.json b/src/fixtures/nuget/search/AspireC4.Hosting.json new file mode 100644 index 0000000..229cbf3 --- /dev/null +++ b/src/fixtures/nuget/search/AspireC4.Hosting.json @@ -0,0 +1,80 @@ +{ + "@context": { + "@vocab": "http://schema.nuget.org/schema#", + "@base": "https://api.nuget.org/v3/registration5-semver1/" + }, + "totalHits": 1, + "data": [ + { + "@id": "https://api.nuget.org/v3/registration5-semver1/aspirec4.hosting/index.json", + "@type": "Package", + "registration": "https://api.nuget.org/v3/registration5-semver1/aspirec4.hosting/index.json", + "id": "AspireC4.Hosting", + "version": "13.5.3.1", + "description": "Aspire hosting extension for the AspireC4 plugin, generating a dynamic LikeC4 architecture diagram for your Aspire application.", + "summary": "", + "title": "AspireC4.Hosting - Aspire LikeC4 Visualisation", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/aspirec4.hosting/13.5.3.1/icon", + "licenseUrl": "https://www.nuget.org/packages/AspireC4.Hosting/13.5.3.1/license", + "tags": [ + "aspire", + "dotnet", + "aspnetcore", + "c4", + "likec4", + "architecture", + "diagram", + "visualisation", + "visualization", + "polyglot" + ], + "authors": [ + "Purview Contributors" + ], + "owners": [ + "kieronlanning", + "KJL.dev" + ], + "totalDownloads": 1342, + "verified": false, + "packageTypes": [ + { + "name": "Dependency" + } + ], + "versions": [ + { + "version": "13.3.1", + "downloads": 123, + "@id": "https://api.nuget.org/v3/registration5-semver1/aspirec4.hosting/13.3.1.json" + }, + { + "version": "13.3.2", + "downloads": 310, + "@id": "https://api.nuget.org/v3/registration5-semver1/aspirec4.hosting/13.3.2.json" + }, + { + "version": "13.3.3", + "downloads": 107, + "@id": "https://api.nuget.org/v3/registration5-semver1/aspirec4.hosting/13.3.3.json" + }, + { + "version": "13.3.5", + "downloads": 120, + "@id": "https://api.nuget.org/v3/registration5-semver1/aspirec4.hosting/13.3.5.json" + }, + { + "version": "13.5.3", + "downloads": 48, + "@id": "https://api.nuget.org/v3/registration5-semver1/aspirec4.hosting/13.5.3.json" + }, + { + "version": "13.5.3.1", + "downloads": 50, + "@id": "https://api.nuget.org/v3/registration5-semver1/aspirec4.hosting/13.5.3.1.json" + } + ], + "vulnerabilities": [] + } + ] +} diff --git a/src/fixtures/nuget/search/Purview.Build.json b/src/fixtures/nuget/search/Purview.Build.json index a97f668..7503335 100644 --- a/src/fixtures/nuget/search/Purview.Build.json +++ b/src/fixtures/nuget/search/Purview.Build.json @@ -24,7 +24,7 @@ "owners": [ "kieronlanning" ], - "totalDownloads": 471, + "totalDownloads": 530, "verified": false, "packageTypes": [ { @@ -34,22 +34,22 @@ "versions": [ { "version": "0.2.1", - "downloads": 132, + "downloads": 141, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.build/0.2.1.json" }, { "version": "0.2.2", - "downloads": 81, + "downloads": 90, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.build/0.2.2.json" }, { "version": "0.2.3", - "downloads": 207, + "downloads": 216, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.build/0.2.3.json" }, { "version": "0.2.4", - "downloads": 51, + "downloads": 83, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.build/0.2.4.json" } ], diff --git a/src/fixtures/nuget/search/Purview.Telemetry.SourceGenerator.json b/src/fixtures/nuget/search/Purview.Telemetry.SourceGenerator.json index e9fc0c5..a4081f4 100644 --- a/src/fixtures/nuget/search/Purview.Telemetry.SourceGenerator.json +++ b/src/fixtures/nuget/search/Purview.Telemetry.SourceGenerator.json @@ -48,7 +48,7 @@ "kieronlanning", "KJL.dev" ], - "totalDownloads": 16175, + "totalDownloads": 16253, "verified": false, "packageTypes": [ { @@ -158,7 +158,7 @@ }, { "version": "3.2.4", - "downloads": 4375, + "downloads": 4399, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.telemetry.sourcegenerator/3.2.4.json" }, { @@ -178,7 +178,7 @@ }, { "version": "4.4.0", - "downloads": 550, + "downloads": 564, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.telemetry.sourcegenerator/4.4.0.json" } ], diff --git a/src/fixtures/releases/index.json b/src/fixtures/releases/index.json index 60630c3..a81e12c 100644 --- a/src/fixtures/releases/index.json +++ b/src/fixtures/releases/index.json @@ -1,13 +1,13 @@ { "schema": 1, - "retrievedAt": "2026-09-15T21:37:48.443Z", + "retrievedAt": "2026-09-16T16:33:38.150Z", "repos": { "purview-dev/telemetry-sourcegenerator": { "name": "telemetry-sourcegenerator", "fullName": "purview-dev/telemetry-sourcegenerator", "description": ".NET source generator for interface-based telemetry. Generates OpenTelemetry-aligned Activities, structured ILogger logging, and Metrics from interface methods with zero boilerplate.", "archived": false, - "homepage": "https://nuget.org/packages/Purview.Telemetry.SourceGenerator/", + "homepage": "https://purview.dev/projects/telemetry-sourcegenerator/", "topics": [ "activity", "c-sharp", @@ -33,15 +33,15 @@ "stargazersCount": 35, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-09-14T13:28:37Z", - "hasDiscussions": true + "updatedAt": "2026-09-16T15:25:13Z", + "hasDiscussions": false }, "purview-dev/eventsourcing": { "name": "eventsourcing", "fullName": "purview-dev/eventsourcing", "description": "A .NET event sourcing framework for building aggregate-based applications - provider-agnostic store facades, source-generated aggregates, transaction coordination, queryable snapshots and read models, and storage providers for SQL Server, PostgreSQL, MongoDB, Azure Storage, Azure Cosmos DB, and in-memory.", "archived": false, - "homepage": "", + "homepage": "https://purview.dev/event-sourcing/", "topics": [ "aggregates", "azure-cosmosdb", @@ -61,18 +61,18 @@ "sql-server", "transactions" ], - "stargazersCount": 3, + "stargazersCount": 4, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-09-15T09:03:03Z", - "hasDiscussions": true + "updatedAt": "2026-09-16T15:21:27Z", + "hasDiscussions": false }, "purview-dev/zodsharp": { "name": "zodsharp", "fullName": "purview-dev/zodsharp", "description": "High-performance, zero-allocation schema validation for C# — a Zod port with struct-based rules, a fluent API, JSON Schema interop, and compile-time source generation.", "archived": false, - "homepage": "", + "homepage": "https://purview.dev/projects/zodsharp/", "topics": [ "aspnetcore", "c-sharp", @@ -90,7 +90,7 @@ "stargazersCount": 1, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-09-14T16:06:56Z", + "updatedAt": "2026-09-16T15:54:50Z", "hasDiscussions": false }, "purview-dev/sourcegeneratorframework": { @@ -98,7 +98,7 @@ "fullName": "purview-dev/sourcegeneratorframework", "description": "A strongly typed framework for building, testing, and maintaining incremental C# source generators with Roslyn.", "archived": false, - "homepage": "", + "homepage": "https://purview.dev/projects/sourcegeneratorframework/", "topics": [ "analyzers", "code-generation", @@ -117,10 +117,10 @@ "source-generators", "testing" ], - "stargazersCount": 1, + "stargazersCount": 2, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-09-14T12:49:39Z", + "updatedAt": "2026-09-16T16:21:01Z", "hasDiscussions": false }, "purview-dev/aspire-resourcekit": { @@ -128,7 +128,7 @@ "fullName": "purview-dev/aspire-resourcekit", "description": "Source-generator-powered resource kits for .NET Aspire: turn AppHost resource composition into strongly typed, testable classes with generated host wiring, typed options, and enablement toggles for local, test, and publish modes.", "archived": false, - "homepage": "", + "homepage": "https://purview.dev/projects/aspire-resourcekit/", "topics": [ "apphost", "aspire", @@ -148,7 +148,40 @@ "stargazersCount": 2, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-09-15T15:57:07Z", + "updatedAt": "2026-09-16T16:02:30Z", + "hasDiscussions": false + }, + "purview-dev/aspirec4": { + "name": "aspirec4", + "fullName": "purview-dev/aspirec4", + "description": "Aspire extension that generates live LikeC4 C4 architecture diagrams from the Aspire resource graph, with a Roslyn source generator for compile-time validation of tags, kinds, groups, and metadata.", + "archived": false, + "homepage": "https://purview.dev/projects/aspirec4/", + "topics": [ + "architecture", + "architecture-as-code", + "architecture-diagrams", + "aspire", + "aspire-dashboard", + "aspire-dotnet", + "aspire-hosting", + "aspnetcore", + "c4", + "c4-model", + "developer-experience", + "devex", + "diagram", + "diagrams", + "dotnet", + "likec4", + "roslyn", + "source-generator", + "visualization" + ], + "stargazersCount": 9, + "openIssuesCount": 1, + "defaultBranch": "main", + "updatedAt": "2026-09-16T16:08:46Z", "hasDiscussions": false }, "purview-dev/build": { @@ -156,7 +189,7 @@ "fullName": "purview-dev/build", "description": "Shared build/test/release pipeline for purview-dev. A Modular Pipelines based .NET tool (Purview.Build) with a GitHub composite action and reusable workflows; consumers configure, the pipeline runs.", "archived": false, - "homepage": null, + "homepage": "https://purview.dev/projects/build/", "topics": [ "build-pipeline", "cd", @@ -174,7 +207,7 @@ "stargazersCount": 0, "openIssuesCount": 1, "defaultBranch": "main", - "updatedAt": "2026-09-14T12:27:53Z", + "updatedAt": "2026-09-16T16:29:28Z", "hasDiscussions": false }, "purview-dev/dotnet-project-sdk": { @@ -182,7 +215,7 @@ "fullName": "purview-dev/dotnet-project-sdk", "description": "A reusable MSBuild SDK providing convention-driven .NET project defaults, code style, analyzers, testing frameworks, package management, and agent tooling.", "archived": false, - "homepage": "", + "homepage": "https://purview.dev/projects/dotnet-project-sdk/", "topics": [ "central-package-management", "code-style", @@ -204,7 +237,7 @@ "stargazersCount": 0, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-09-15T08:10:30Z", + "updatedAt": "2026-09-16T16:24:02Z", "hasDiscussions": false }, "purview-dev/dotnet-logging-source-generators": { @@ -771,6 +804,15 @@ } ], "purview-dev/aspire-resourcekit": [ + { + "tagName": "v1.0.0-prerelease.28", + "name": "v1.0.0-prerelease.28", + "body": "## What's Changed\n* fix: IsEnabled by @kieronlanning in https://github.com/purview-dev/aspire-resourcekit/pull/30\n\n\n**Full Changelog**: https://github.com/purview-dev/aspire-resourcekit/compare/v1.0.0-prerelease.27...v1.0.0-prerelease.28", + "prerelease": false, + "draft": false, + "publishedAt": "2026-09-16T00:08:56Z", + "htmlUrl": "https://github.com/purview-dev/aspire-resourcekit/releases/tag/v1.0.0-prerelease.28" + }, { "tagName": "v1.0.0-prerelease.27", "name": "v1.0.0-prerelease.27", @@ -835,6 +877,116 @@ "htmlUrl": "https://github.com/purview-dev/aspire-resourcekit/releases/tag/v1.0.0-prerelease.21" } ], + "purview-dev/aspirec4": [ + { + "tagName": "v13.5.3.1", + "name": "v13.5.3.1", + "body": "## What's Changed\n* docs: updated readme with badges by @kieronlanning in https://github.com/purview-dev/aspirec4/pull/37\n\n\n**Full Changelog**: https://github.com/purview-dev/aspirec4/compare/v13.5.3...v13.5.3.1", + "prerelease": false, + "draft": false, + "publishedAt": "2026-09-14T13:45:18Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.5.3.1" + }, + { + "tagName": "v13.5.3", + "name": "v13.5.3", + "body": "## What's Changed\n* feat: rebuilt on new source gen framework by @kieronlanning in https://github.com/purview-dev/aspirec4/pull/34\n* chore: bumped version by @kieronlanning in https://github.com/purview-dev/aspirec4/pull/35\n* Fixing test during build by @kieronlanning in https://github.com/purview-dev/aspirec4/pull/36\n\n\n**Full Changelog**: https://github.com/purview-dev/aspirec4/compare/v13.3.5...v13.5.3", + "prerelease": false, + "draft": false, + "publishedAt": "2026-09-13T16:42:37Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.5.3" + }, + { + "tagName": "v13.3.5", + "name": "v13.3.5", + "body": "### Improvements\n\n- source gen update - best practices to follow\n- mass refactor to support updated source gen package\n", + "prerelease": false, + "draft": false, + "publishedAt": "2026-08-18T13:33:10Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.5" + }, + { + "tagName": "v13.3.2", + "name": "v13.3.2", + "body": "\n### Patch Changes\n\n- service release - using new Project Sdk", + "prerelease": false, + "draft": false, + "publishedAt": "2026-06-11T13:07:42Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.2" + }, + { + "tagName": "v13.3.1", + "name": "v13.3.1", + "body": "\n### Patch Changes\n\n- ### Bug Fixes\n\n - prevent sync-over-async deadlock when async configure callback is used in TypeScript AppHost ([#26](https://github.com/kjldev/aspirec4/issues/26))", + "prerelease": false, + "draft": false, + "publishedAt": "2026-06-04T21:30:49Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.1" + }, + { + "tagName": "v13.3.0-prerelease.10", + "name": "v13.3.0-prerelease.10", + "body": "\n### Patch Changes\n\n- ### Bug Fixes\n\n - add missing build/AspireC4.Hosting.props for source generator ([#20](https://github.com/kjldev/aspirec4/issues/20))\n\n ### Changes\n\n - Updated for likec4 with hmrport config ([#24](https://github.com/kjldev/aspirec4/issues/24))\n - source-generator + other fixes ([#19](https://github.com/kjldev/aspirec4/issues/19))", + "prerelease": true, + "draft": false, + "publishedAt": "2026-05-24T09:56:19Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.10" + }, + { + "tagName": "v13.3.0-prerelease.9", + "name": "v13.3.0-prerelease.9", + "body": "\n### Minor Changes\n\n- ### Features\n\n - updated the source gen to have its own validation, rather than double loading\n - normalise metadata keys for case/punctuation-insensitive validation\n\n ### Bug Fixes\n\n - yarn dlx peer deps and deno node-modules-dir for e2e cli tests\n\n ### Changes", + "prerelease": true, + "draft": false, + "publishedAt": "2026-05-20T14:25:50Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.9" + }, + { + "tagName": "v13.3.0-prerelease.8", + "name": "v13.3.0-prerelease.8", + "body": "\n### Patch Changes\n\n- ### Bug Fixes\n\n - resolve nuget assembly name mismatch and beforestart hang\n\n ### Changes", + "prerelease": true, + "draft": false, + "publishedAt": "2026-05-18T17:02:39Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.8" + }, + { + "tagName": "v13.3.0-prerelease.7", + "name": "v13.3.0-prerelease.7", + "body": "\n### Minor Changes\n\n- ### Features\n\n - bundle SG with runtime bridge via ModuleInitializer\n - redesign source generators with [LikeC4Registry] attribute\n - extend source generators with WithLikeC4Group support and ASPIREC4004 diagnostic\n - adding correct support for TypeScript app hosts\n\n ### Bug Fixes\n\n - resolve ASPIREEXPORT010/008 warnings on exported methods\n\n ### Changes", + "prerelease": true, + "draft": false, + "publishedAt": "2026-05-17T22:07:15Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.7" + }, + { + "tagName": "v13.3.0-prerelease.6", + "name": "v13.3.0-prerelease.6", + "body": "\n> **Note:** versions `13.3.0-prerelease.4` and `13.3.0-prerelease.5` were never published.\n> Both tags were permanently tombstoned by GitHub's immutable-release feature after failed\n> release attempts during CD pipeline repairs. This version contains all changes originally\n> intended for `prerelease.4`.\n\n### Minor Changes\n\n- ### Features\n\n - adding first-pass source generator - very much a WIP\n - add KnownLikeC4Elements source generator\n - stable model generation across resource state changes\n - make WithRelationshipKindSpec strict param nullable with auto-detect\n - add technology support to relationship kind specifications\n - add strict mode validation to aspire c4 diagram options\n - add guards and context-aware release guide\n\n ### Bug Fixes\n\n - resolve build errors and update tests post-refactor\n - relationship kind technology uses no colon in dsl output\n - always show release guide; exit on blockers before proceeding\n - block release when branch is behind origin/main\n - validate unknown args and simplify justfile recipe\n - moved the Aspire browser token inclusion behind a AppHost options property\n - fix test extension views to use current resource element names\n - create GitHub release as draft before uploading assets to prevent immutable-release errors\n\n ### Changes\n\n - cd: releases are gated to main; workflow is enforced to reject non-main refs even on manual dispatch\n - cd: update GitHub Actions to Node.js 24-compatible versions (checkout@v6, setup-dotnet@v5, setup-node@v6)", + "prerelease": true, + "draft": false, + "publishedAt": "2026-05-15T09:00:02Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.6" + }, + { + "tagName": "v13.3.0-prerelease.3", + "name": "v13.3.0-prerelease.3", + "body": "\n### Minor Changes\n\n- ### Features\n\n - add guards and context-aware release guide\n\n ### Bug Fixes\n\n - always show release guide; exit on blockers before proceeding\n - block release when branch is behind origin/main\n - validate unknown args and simplify justfile recipe\n - moved the Aspire browser token inclusion behind a AppHost options property\n\n ### Changes", + "prerelease": true, + "draft": false, + "publishedAt": "2026-05-13T10:26:17Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.3" + }, + { + "tagName": "v13.3.0-prerelease.2", + "name": "v13.3.0-prerelease.2", + "body": "\n### Patch Changes\n\n- [#5](https://github.com/kjldev/aspirec4/pull/5) [`32b7cbd`](https://github.com/kjldev/aspirec4/commit/32b7cbdcbc7eddad915405b69cc9ee4aa47b33a1) Thanks [@kieronlanning](https://github.com/kieronlanning)! - ### Bug Fixes\n\n - Fix unit test `AddAspireC4_ExposesHttpAndHmrEndpoints` to always expect `null` HMR port (relay always active with `latest` image tag)\n - Fix `ValidatedDsl_*` unit tests failing in CI due to missing Node.js setup step\n\n ### Changes\n\n - Add `actions/setup-node@v6` to CI and CD workflows for reliable Node.js availability\n - Generate `.snupkg` symbol packages alongside `.nupkg` in `dotnet pack`\n - `just pack` now reads version from `package.json` instead of using the fallback from `Directory.Build.props`\n - Add `@changesets/cli` release flow: `just changeset` and `just release [prerelease]`", + "prerelease": true, + "draft": false, + "publishedAt": "2026-05-13T09:05:53Z", + "htmlUrl": "https://github.com/purview-dev/aspirec4/releases/tag/v13.3.0-prerelease.2" + } + ], "purview-dev/build": [ { "tagName": "v0.2.4", @@ -1463,7 +1615,27 @@ "1.0.0-prerelease.24", "1.0.0-prerelease.25", "1.0.0-prerelease.26", - "1.0.0-prerelease.27" + "1.0.0-prerelease.27", + "1.0.0-prerelease.28" + ] + }, + "AspireC4.Hosting": { + "id": "AspireC4.Hosting", + "versions": [ + "13.3.0-prerelease.1", + "13.3.0-prerelease.2", + "13.3.0-prerelease.3", + "13.3.0-prerelease.6", + "13.3.0-prerelease.7", + "13.3.0-prerelease.8", + "13.3.0-prerelease.9", + "13.3.0-prerelease.10", + "13.3.1", + "13.3.2", + "13.3.3", + "13.3.5", + "13.5.3", + "13.5.3.1" ] }, "Purview.Build": { @@ -1542,7 +1714,7 @@ "id": "Purview.Telemetry.SourceGenerator", "version": "4.4.0", "description": ".NET Source Generator for interface-based telemetry generating tracing, logs, and metrics.", - "totalDownloads": 16175, + "totalDownloads": 16253, "tags": [ "logs", "log", @@ -1589,11 +1761,32 @@ "Purview.SourceGeneratorFramework.Testing": null, "Purview.SourceGeneratorFramework.Testing.TUnit": null, "Purview.Aspire.ResourceKit": null, + "AspireC4.Hosting": { + "id": "AspireC4.Hosting", + "version": "13.5.3.1", + "description": "Aspire hosting extension for the AspireC4 plugin, generating a dynamic LikeC4 architecture diagram for your Aspire application.", + "totalDownloads": 1342, + "tags": [ + "aspire", + "dotnet", + "aspnetcore", + "c4", + "likec4", + "architecture", + "diagram", + "visualisation", + "visualization", + "polyglot" + ], + "published": null, + "deprecated": false, + "listed": true + }, "Purview.Build": { "id": "Purview.Build", "version": "0.2.4", "description": "Shared build/test/release pipeline for purview-dev. A Modular Pipelines based .NET tool (Purview.Build) with a GitHub composite action and reusable workflows; consumers configure, the pipeline runs.", - "totalDownloads": 471, + "totalDownloads": 530, "tags": [], "published": null, "deprecated": false, diff --git a/src/src/data/projects.yml b/src/src/data/projects.yml index a60b86c..bb2179b 100644 --- a/src/src/data/projects.yml +++ b/src/src/data/projects.yml @@ -17,6 +17,8 @@ projects: docs: source: github-path path: docs/wiki + exclude: + - _Sidebar.md targetFrameworks: - net8.0 - net9.0 @@ -27,7 +29,7 @@ projects: primary: true targetFrameworks: - netstandard2.0 - discussions: true + discussions: false - id: event-sourcing name: Event Sourcing @@ -74,7 +76,7 @@ projects: description: ZodSharp adapter for aggregate save-time validation. related: - zodsharp - discussions: true + discussions: false - id: zodsharp name: ZodSharp From 9e7b254a66dc99cd676ed9a65000bb7b5bddd480 Mon Sep 17 00:00:00 2001 From: Kieron Lanning Date: Wed, 16 Sep 2026 21:28:00 +0100 Subject: [PATCH 3/4] fix: dsc for telemetry project --- src/tests/unit/releases.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/unit/releases.test.ts b/src/tests/unit/releases.test.ts index 041fd41..e91ac1a 100644 --- a/src/tests/unit/releases.test.ts +++ b/src/tests/unit/releases.test.ts @@ -34,7 +34,7 @@ describe('GitHub normalisation (real fixtures)', () => { ); expect(repo.fullName).toBe('purview-dev/telemetry-sourcegenerator'); expect(repo.archived).toBe(false); - expect(repo.hasDiscussions).toBe(true); + expect(repo.hasDiscussions).toBe(false); }); test('parses release fixtures including the prerelease-flag quirk', () => { From f60a519dac254615a3c870c2e8813fde220d90c6 Mon Sep 17 00:00:00 2001 From: Kieron Lanning Date: Wed, 16 Sep 2026 22:07:19 +0100 Subject: [PATCH 4/4] fix: auth to gh plus fallback --- src/scripts/sync-docs.ts | 7 ++++ src/src/lib/docs/aggregate.ts | 9 ++++- src/src/lib/docs/links.ts | 2 +- src/src/lib/github/token.ts | 57 +++++++++++++++++++++++++++++ src/src/lib/releases/github.ts | 3 +- src/tests/unit/docs.test.ts | 16 ++++++++ src/tests/unit/github-token.test.ts | 54 +++++++++++++++++++++++++++ 7 files changed, 144 insertions(+), 4 deletions(-) create mode 100644 src/src/lib/github/token.ts create mode 100644 src/tests/unit/github-token.test.ts diff --git a/src/scripts/sync-docs.ts b/src/scripts/sync-docs.ts index b2d5d7e..48f4611 100644 --- a/src/scripts/sync-docs.ts +++ b/src/scripts/sync-docs.ts @@ -7,9 +7,16 @@ import { loadProjects } from '../src/lib/manifest/load'; /** Fetch and write the aggregated documentation mirror. */ export async function syncDocs(): Promise<{ projects: number; pages: number }> { const projects = loadProjects(); + const projectsWithDocs = projects.filter((project) => project.docs); const aggregated = await aggregateDocs(projects); const manifest = writeDocs(aggregated); writeDocsManifest(manifest); + if (manifest.projects.length === 0 && projectsWithDocs.length > 0) { + throw new Error( + `Docs sync produced no pages for ${projectsWithDocs.length} project(s) with docs. ` + + 'Check GitHub API access (rate limits) and retry: run `gh auth login` or set GITHUB_TOKEN.', + ); + } const pages = manifest.projects.reduce((total, entry) => total + entry.pages.length, 0); console.log(`Docs synced: ${manifest.projects.length} projects, ${pages} pages.`); return { projects: manifest.projects.length, pages }; diff --git a/src/src/lib/docs/aggregate.ts b/src/src/lib/docs/aggregate.ts index 49d8bb5..70c77e3 100644 --- a/src/src/lib/docs/aggregate.ts +++ b/src/src/lib/docs/aggregate.ts @@ -6,6 +6,7 @@ import { mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'nod import { tmpdir } from 'node:os'; import { dirname, join, resolve } from 'node:path'; +import { resolveGitHubToken } from '../github/token'; import { getReleaseIndex } from '../releases/runtime'; import { OWNER } from '../site'; import { convertGithubAlerts } from './alerts'; @@ -50,13 +51,17 @@ async function githubJson(path: string): Promise { 'User-Agent': 'purview-dev-website', 'X-GitHub-Api-Version': '2022-11-28', }; - const token = process.env.GITHUB_TOKEN?.trim(); + const token = resolveGitHubToken(); if (token) { headers.Authorization = `Bearer ${token}`; } const response = await fetch(`https://api.github.com${path}`, { headers }); if (!response.ok) { - throw new Error(`GitHub API ${response.status} for ${path}`); + const detail = + response.status === 403 || response.status === 429 + ? ' (rate limited; run `gh auth login` or set GITHUB_TOKEN)' + : ''; + throw new Error(`GitHub API ${response.status} for ${path}${detail}`); } return response.json() as Promise; } diff --git a/src/src/lib/docs/links.ts b/src/src/lib/docs/links.ts index 9eb0757..db77644 100644 --- a/src/src/lib/docs/links.ts +++ b/src/src/lib/docs/links.ts @@ -130,7 +130,7 @@ function usableHash(hash: string, slug: string, context: DocLinkContext): string * - relative images are rewritten to the configured absolute `imageBase`. */ export function rewriteDocMarkdown(markdown: string, context: DocLinkContext): string { - const linkPattern = /!?\[([^\]]*)\]\(([^)\s]+)(?:\s+["'][^"']*["'])?\)/g; + const linkPattern = /!?\[([^\][]*(?:\[[^\][]*\][^\][]*)*)\]\(([^)\s]+)(?:\s+["'][^"']*["'])?\)/g; return markdown.replace(linkPattern, (match, label: string, target: string) => { const isImage = match.startsWith('!'); const { path, hash } = stripUrlSuffix(target); diff --git a/src/src/lib/github/token.ts b/src/src/lib/github/token.ts new file mode 100644 index 0000000..87428bf --- /dev/null +++ b/src/src/lib/github/token.ts @@ -0,0 +1,57 @@ +export interface GitHubTokenSources { + ghAuthToken: () => string | undefined; + env: Record; +} + +const TOKEN_ENV_VARS = ['GITHUB_TOKEN', 'GH_TOKEN'] as const; + +/** + * Resolve a GitHub authentication token from the provided sources, preferring + * the GitHub CLI, then the GITHUB_TOKEN/GH_TOKEN environment variables. + * Returns undefined when no token is available; callers fall back to + * unauthenticated requests. + */ +export function resolveGitHubTokenFrom(sources: GitHubTokenSources): string | undefined { + const fromGh = sources.ghAuthToken(); + if (fromGh) { + return fromGh; + } + for (const key of TOKEN_ENV_VARS) { + const value = sources.env[key]?.trim(); + if (value) { + return value; + } + } + return undefined; +} + +let cachedToken: string | undefined | null; + +function ghAuthToken(): string | undefined { + try { + const result = Bun.spawnSync(['gh', 'auth', 'token'], { timeout: 10_000 }); + if (result.exitCode === 0) { + const token = result.stdout.toString().trim(); + if (token) { + return token; + } + } + } catch { + // gh is not installed or could not be run; fall through to env vars. + } + return undefined; +} + +/** + * Resolve the GitHub authentication token for this process, preferring the + * GitHub CLI (`gh auth token`), then the GITHUB_TOKEN/GH_TOKEN environment + * variables, then unauthenticated. The result is memoized for the process. + */ +export function resolveGitHubToken(): string | undefined { + if (cachedToken !== undefined) { + return cachedToken ?? undefined; + } + const token = resolveGitHubTokenFrom({ ghAuthToken, env: process.env }); + cachedToken = token ?? null; + return token; +} diff --git a/src/src/lib/releases/github.ts b/src/src/lib/releases/github.ts index a919b3a..78f7753 100644 --- a/src/src/lib/releases/github.ts +++ b/src/src/lib/releases/github.ts @@ -5,6 +5,7 @@ import type { NuGetVersionIndex, } from './types'; +import { resolveGitHubToken } from '../github/token'; import { OWNER } from '../site'; const API = 'https://api.github.com'; @@ -23,7 +24,7 @@ export class ApiError extends Error { } function githubToken(): string | undefined { - return process.env.GITHUB_TOKEN?.trim() || undefined; + return resolveGitHubToken(); } async function githubRequest(path: string, token?: string): Promise { diff --git a/src/tests/unit/docs.test.ts b/src/tests/unit/docs.test.ts index 8277128..ade6b6b 100644 --- a/src/tests/unit/docs.test.ts +++ b/src/tests/unit/docs.test.ts @@ -104,6 +104,22 @@ describe('link rewriting', () => { expect(output).toBe('[Install]()'); }); + test('rewrites links whose label contains brackets (code spans)', () => { + const output = rewriteDocMarkdown( + 'See [`[Tag]`](Tags-and-Baggage.md).', + context({ knownSlugs: new Set(['index', 'tags-and-baggage']) }), + ); + expect(output).toBe('See [`[Tag]`]().'); + }); + + test('rewrites links whose label spans multiple lines', () => { + const output = rewriteDocMarkdown( + 'See [Source\nGenerator Behaviors](Source-Generator-Behaviors.md).', + context({ knownSlugs: new Set(['index', 'source-generator-behaviors']) }), + ); + expect(output).toBe('See [Source\nGenerator Behaviors]().'); + }); + test('rewrites extensionless wiki links to known pages', () => { const output = rewriteDocMarkdown('[Multi target](./Multi-Targeting)', context()); expect(output).toBe('[Multi target]()'); diff --git a/src/tests/unit/github-token.test.ts b/src/tests/unit/github-token.test.ts new file mode 100644 index 0000000..c83d71b --- /dev/null +++ b/src/tests/unit/github-token.test.ts @@ -0,0 +1,54 @@ +import { describe, expect, test } from 'bun:test'; + +import { resolveGitHubTokenFrom } from '../../src/lib/github/token'; + +function sources( + overrides: { + ghAuthToken?: string | undefined; + env?: Record; + } = {}, +): { + ghAuthToken: () => string | undefined; + env: Record; +} { + return { + ghAuthToken: () => overrides.ghAuthToken, + env: overrides.env ?? {}, + }; +} + +describe('resolveGitHubTokenFrom', () => { + test('prefers the GitHub CLI token', () => { + const token = resolveGitHubTokenFrom( + sources({ ghAuthToken: 'gho_cli', env: { GITHUB_TOKEN: 'env-token' } }), + ); + expect(token).toBe('gho_cli'); + }); + + test('falls back to GITHUB_TOKEN when gh has no token', () => { + const token = resolveGitHubTokenFrom(sources({ env: { GITHUB_TOKEN: 'env-token' } })); + expect(token).toBe('env-token'); + }); + + test('falls back to GH_TOKEN when GITHUB_TOKEN is absent', () => { + const token = resolveGitHubTokenFrom(sources({ env: { GH_TOKEN: 'gh-token' } })); + expect(token).toBe('gh-token'); + }); + + test('prefers GITHUB_TOKEN over GH_TOKEN', () => { + const token = resolveGitHubTokenFrom( + sources({ env: { GITHUB_TOKEN: 'primary', GH_TOKEN: 'secondary' } }), + ); + expect(token).toBe('primary'); + }); + + test('trims whitespace from environment tokens', () => { + const token = resolveGitHubTokenFrom(sources({ env: { GITHUB_TOKEN: ' padded ' } })); + expect(token).toBe('padded'); + }); + + test('returns undefined when no source is available', () => { + const token = resolveGitHubTokenFrom(sources({ env: {} })); + expect(token).toBeUndefined(); + }); +});